blob: 8aed2b6fba3baa06565239c8cd64db144cd53493 [file] [log] [blame]
{"version":3,"file":"flex-layout-flex.umd.min.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/lib/utils/layout-validator.ts","../../src/lib/flex/layout-gap/layout-gap.ts","../../src/lib/utils/object-extend.ts","../../src/lib/flex/layout/layout.ts","../../src/lib/flex/flex/flex.ts","../../src/lib/flex/flex-order/flex-order.ts","../../src/lib/flex/flex-offset/flex-offset.ts","../../src/lib/flex/flex-align/flex-align.ts","../../src/lib/flex/flex-fill/flex-fill.ts","../../src/lib/flex/layout-align/layout-align.ts","../../src/lib/flex/module.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport const INLINE = 'inline';\nexport const LAYOUT_VALUES = ['row', 'column', 'row-reverse', 'column-reverse'];\n\n/**\n * Validate the direction|'direction wrap' value and then update the host's inline flexbox styles\n */\nexport function buildLayoutCSS(value: string) {\n let [direction, wrap, isInline] = validateValue(value);\n return buildCSS(direction, wrap, isInline);\n }\n\n/**\n * Validate the value to be one of the acceptable value options\n * Use default fallback of 'row'\n */\nexport function validateValue(value: string): [string, string, boolean] {\n value = value ? value.toLowerCase() : '';\n let [direction, wrap, inline] = value.split(' ');\n\n // First value must be the `flex-direction`\n if (!LAYOUT_VALUES.find(x => x === direction)) {\n direction = LAYOUT_VALUES[0];\n }\n\n if (wrap === INLINE) {\n wrap = (inline !== INLINE) ? inline : '';\n inline = INLINE;\n }\n\n return [direction, validateWrapValue(wrap), !!inline];\n}\n\n/**\n * Determine if the validated, flex-direction value specifies\n * a horizontal/row flow.\n */\nexport function isFlowHorizontal(value: string): boolean {\n let [flow, ] = validateValue(value);\n return flow.indexOf('row') > -1;\n}\n\n/**\n * Convert layout-wrap='<value>' to expected flex-wrap style\n */\nexport function validateWrapValue(value: string) {\n if (!!value) {\n switch (value.toLowerCase()) {\n case 'reverse':\n case 'wrap-reverse':\n case 'reverse-wrap':\n value = 'wrap-reverse';\n break;\n\n case 'no':\n case 'none':\n case 'nowrap':\n value = 'nowrap';\n break;\n\n // All other values fallback to 'wrap'\n default:\n value = 'wrap';\n break;\n }\n }\n return value;\n}\n\n/**\n * Build the CSS that should be assigned to the element instance\n * BUG:\n * 1) min-height on a column flex container won’t apply to its flex item children in IE 10-11.\n * Use height instead if possible; height : <xxx>vh;\n *\n * This way any padding or border specified on the child elements are\n * laid out and drawn inside that element's specified width and height.\n */\nfunction buildCSS(direction: string, wrap: string | null = null, inline = false) {\n return {\n 'display': inline ? 'inline-flex' : 'flex',\n 'box-sizing': 'border-box',\n 'flex-direction': direction,\n 'flex-wrap': !!wrap ? wrap : null\n };\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {\n Directive,\n ElementRef,\n OnDestroy,\n NgZone,\n Injectable,\n AfterContentInit,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {LAYOUT_VALUES} from '../../utils/layout-validator';\n\nexport interface LayoutGapParent {\n directionality: string;\n items: HTMLElement[];\n layout: string;\n}\n\nconst CLEAR_MARGIN_CSS = {\n 'margin-left': null,\n 'margin-right': null,\n 'margin-top': null,\n 'margin-bottom': null\n};\n\n@Injectable({providedIn: 'root'})\nexport class LayoutGapStyleBuilder extends StyleBuilder {\n constructor(private _styler: StyleUtils) {\n super();\n }\n\n buildStyles(gapValue: string, parent: LayoutGapParent) {\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n\n // Add the margin to the host element\n return buildGridMargin(gapValue, parent.directionality);\n } else {\n return {};\n }\n }\n\n sideEffect(gapValue: string, _styles: StyleDefinition, parent: LayoutGapParent) {\n const items = parent.items;\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n // For each `element` children, set the padding\n const paddingStyles = buildGridPadding(gapValue, parent.directionality);\n this._styler.applyStyleToElements(paddingStyles, parent.items);\n } else {\n const lastItem = items.pop()!;\n\n // For each `element` children EXCEPT the last,\n // set the margin right/bottom styles...\n const gapCss = buildGapCSS(gapValue, parent);\n this._styler.applyStyleToElements(gapCss, items);\n\n // Clear all gaps for all visible elements\n this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [lastItem]);\n }\n }\n}\n\nconst inputs = [\n 'fxLayoutGap', 'fxLayoutGap.xs', 'fxLayoutGap.sm', 'fxLayoutGap.md',\n 'fxLayoutGap.lg', 'fxLayoutGap.xl', 'fxLayoutGap.lt-sm', 'fxLayoutGap.lt-md',\n 'fxLayoutGap.lt-lg', 'fxLayoutGap.lt-xl', 'fxLayoutGap.gt-xs', 'fxLayoutGap.gt-sm',\n 'fxLayoutGap.gt-md', 'fxLayoutGap.gt-lg'\n];\nconst selector = `\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n`;\n\n/**\n * 'layout-padding' styling directive\n * Defines padding of child elements in a layout container\n */\n@Directive()\nexport class LayoutGapDirective extends BaseDirective2 implements AfterContentInit, OnDestroy {\n protected layout = 'row'; // default flex-direction\n protected DIRECTIVE_KEY = 'layout-gap';\n protected observerSubject = new Subject<void>();\n\n /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */\n protected get childrenNodes(): HTMLElement[] {\n const obj = this.nativeElement.children;\n const buffer: any[] = [];\n\n // iterate backwards ensuring that length is an UInt32\n for (let i = obj.length; i--;) {\n buffer[i] = obj[i];\n }\n return buffer;\n }\n\n constructor(elRef: ElementRef,\n protected zone: NgZone,\n protected directionality: Directionality,\n protected styleUtils: StyleUtils,\n styleBuilder: LayoutGapStyleBuilder,\n marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n const extraTriggers = [this.directionality.change, this.observerSubject.asObservable()];\n this.init(extraTriggers);\n this.marshal\n .trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterContentInit() {\n this.buildChildObservable();\n this.triggerUpdate();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Cache the parent container 'flex-direction' and update the 'margin' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n // Make sure to filter out 'wrap' option\n const direction = layout.split(' ');\n this.layout = direction[0];\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n // Gather all non-hidden Element nodes\n const items = this.childrenNodes\n .filter(el => el.nodeType === 1 && this.willDisplay(el))\n .sort((a, b) => {\n const orderA = +this.styler.lookupStyle(a, 'order');\n const orderB = +this.styler.lookupStyle(b, 'order');\n if (isNaN(orderA) || isNaN(orderB) || orderA === orderB) {\n return 0;\n } else {\n return orderA > orderB ? 1 : -1;\n }\n });\n\n if (items.length > 0) {\n const directionality = this.directionality.value;\n const layout = this.layout;\n if (layout === 'row' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheRowRtl;\n } else if (layout === 'row' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheRowLtr;\n } else if (layout === 'column' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheColumnRtl;\n } else if (layout === 'column' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheColumnLtr;\n }\n this.addStyles(value, {directionality, items, layout});\n }\n }\n\n /** We need to override clearStyles because in most cases mru isn't populated */\n protected clearStyles() {\n const gridMode = Object.keys(this.mru).length > 0;\n const childrenStyle = gridMode ? 'padding' :\n getMarginType(this.directionality.value, this.layout);\n\n // If there are styles on the parent remove them\n if (gridMode) {\n super.clearStyles();\n }\n\n // Then remove the children styles too\n this.styleUtils.applyStyleToElements({[childrenStyle]: ''}, this.childrenNodes);\n }\n\n /** Determine if an element will show or hide based on current activation */\n protected willDisplay(source: HTMLElement): boolean {\n const value = this.marshal.getValue(source, 'show-hide');\n return value === true ||\n (value === undefined && this.styleUtils.lookupStyle(source, 'display') !== 'none');\n }\n\n protected buildChildObservable(): void {\n this.zone.runOutsideAngular(() => {\n if (typeof MutationObserver !== 'undefined') {\n this.observer = new MutationObserver((mutations: MutationRecord[]) => {\n const validatedChanges = (it: MutationRecord): boolean => {\n return (it.addedNodes && it.addedNodes.length > 0) ||\n (it.removedNodes && it.removedNodes.length > 0);\n };\n\n // update gap styles only for child 'added' or 'removed' events\n if (mutations.some(validatedChanges)) {\n this.observerSubject.next();\n }\n });\n this.observer.observe(this.nativeElement, {childList: true});\n }\n });\n }\n\n protected observer?: MutationObserver;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutGapDirective extends LayoutGapDirective {\n protected inputs = inputs;\n}\n\nconst layoutGapCacheRowRtl: Map<string, StyleDefinition> = new Map();\nconst layoutGapCacheColumnRtl: Map<string, StyleDefinition> = new Map();\nconst layoutGapCacheRowLtr: Map<string, StyleDefinition> = new Map();\nconst layoutGapCacheColumnLtr: Map<string, StyleDefinition> = new Map();\n\nconst GRID_SPECIFIER = ' grid';\n\nfunction buildGridPadding(value: string, directionality: string): StyleDefinition {\n const [between, below] = value.split(' ');\n const bottom = below || between;\n let paddingRight = '0px', paddingBottom = bottom, paddingLeft = '0px';\n\n if (directionality === 'rtl') {\n paddingLeft = between;\n } else {\n paddingRight = between;\n }\n\n return {'padding': `0px ${paddingRight} ${paddingBottom} ${paddingLeft}`};\n}\n\nfunction buildGridMargin(value: string, directionality: string): StyleDefinition {\n const [between, below] = value.split(' ');\n const bottom = below || between;\n const minus = (str: string) => `-${str}`;\n let marginRight = '0px', marginBottom = minus(bottom), marginLeft = '0px';\n\n if (directionality === 'rtl') {\n marginLeft = minus(between);\n } else {\n marginRight = minus(between);\n }\n\n return {'margin': `0px ${marginRight} ${marginBottom} ${marginLeft}`};\n}\n\nfunction getMarginType(directionality: string, layout: string) {\n switch (layout) {\n case 'column':\n return 'margin-bottom';\n case 'column-reverse':\n return 'margin-top';\n case 'row':\n return directionality === 'rtl' ? 'margin-left' : 'margin-right';\n case 'row-reverse':\n return directionality === 'rtl' ? 'margin-right' : 'margin-left';\n default :\n return directionality === 'rtl' ? 'margin-left' : 'margin-right';\n }\n}\n\nfunction buildGapCSS(gapValue: string,\n parent: {directionality: string, layout: string}): StyleDefinition {\n const key = getMarginType(parent.directionality, parent.layout);\n const margins: {[key: string]: string | null} = {...CLEAR_MARGIN_CSS};\n margins[key] = gapValue;\n return margins;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Extends an object with the *enumerable* and *own* properties of one or more source objects,\n * similar to Object.assign.\n *\n * @param dest The object which will have properties copied to it.\n * @param sources The source objects from which properties will be copied.\n */\nexport function extendObject(dest: any, ...sources: any[]): any {\n if (dest == null) {\n throw TypeError('Cannot convert undefined or null to object');\n }\n\n for (let source of sources) {\n if (source != null) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n dest[key] = source[key];\n }\n }\n }\n }\n\n return dest;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Directive, ElementRef, OnChanges, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nimport {buildLayoutCSS} from '../../utils/layout-validator';\n\n@Injectable({providedIn: 'root'})\nexport class LayoutStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildLayoutCSS(input);\n }\n}\n\nconst inputs = [\n 'fxLayout', 'fxLayout.xs', 'fxLayout.sm', 'fxLayout.md',\n 'fxLayout.lg', 'fxLayout.xl', 'fxLayout.lt-sm', 'fxLayout.lt-md',\n 'fxLayout.lt-lg', 'fxLayout.lt-xl', 'fxLayout.gt-xs', 'fxLayout.gt-sm',\n 'fxLayout.gt-md', 'fxLayout.gt-lg'\n];\nconst selector = `\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],\n [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],\n [fxLayout.gt-md], [fxLayout.gt-lg]\n`;\n\n/**\n * 'layout' flexbox styling directive\n * Defines the positioning flow direction for the child elements: row or column\n * Optional values: column or row (default)\n * @see https://css-tricks.com/almanac/properties/f/flex-direction/\n *\n */\n@Directive()\nexport class LayoutDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'layout';\n\n constructor(elRef: ElementRef,\n styleUtils: StyleUtils,\n styleBuilder: LayoutStyleBuilder,\n marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = layoutCache;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutDirective extends LayoutDirective {\n protected inputs = inputs;\n}\n\nconst layoutCache: Map<string, StyleDefinition> = new Map();\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Directive, ElementRef, Inject, Injectable, Input, OnInit} from '@angular/core';\nimport {\n BaseDirective2,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n StyleUtils,\n validateBasis,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\ninterface FlexBuilderParent {\n direction: string;\n hasWrap: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexStyleBuilder extends StyleBuilder {\n constructor(@Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions) {\n super();\n }\n buildStyles(input: string, parent: FlexBuilderParent) {\n let [grow, shrink, ...basisParts]: (string|number)[] = input.split(' ');\n let basis = basisParts.join(' ');\n\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const direction = (parent.direction.indexOf('column') > -1) ? 'column' : 'row';\n\n const max = isFlowHorizontal(direction) ? 'max-width' : 'max-height';\n const min = isFlowHorizontal(direction) ? 'min-width' : 'min-height';\n\n const hasCalc = String(basis).indexOf('calc') > -1;\n const usingCalc = hasCalc || (basis === 'auto');\n const isPercent = String(basis).indexOf('%') > -1 && !hasCalc;\n const hasUnits = String(basis).indexOf('px') > -1 || String(basis).indexOf('rem') > -1 ||\n String(basis).indexOf('em') > -1 || String(basis).indexOf('vw') > -1 ||\n String(basis).indexOf('vh') > -1;\n\n let isValue = (hasCalc || hasUnits);\n\n grow = (grow == '0') ? 0 : grow;\n shrink = (shrink == '0') ? 0 : shrink;\n\n // make box inflexible when shrink and grow are both zero\n // should not set a min when the grow is zero\n // should not set a max when the shrink is zero\n const isFixed = !grow && !shrink;\n\n let css: {[key: string]: string | number | null} = {};\n\n // flex-basis allows you to specify the initial/starting main-axis size of the element,\n // before anything else is computed. It can either be a percentage or an absolute value.\n // It is, however, not the breaking point for flex-grow/shrink properties\n //\n // flex-grow can be seen as this:\n // 0: Do not stretch. Either size to element's content width, or obey 'flex-basis'.\n // 1: (Default value). Stretch; will be the same size to all other flex items on\n // the same row since they have a default value of 1.\n // ≥2 (integer n): Stretch. Will be n times the size of other elements\n // with 'flex-grow: 1' on the same row.\n\n // Use `null` to clear existing styles.\n const clearStyles = {\n 'max-width': null,\n 'max-height': null,\n 'min-width': null,\n 'min-height': null\n };\n switch (basis || '') {\n case '':\n const useColumnBasisZero = this.layoutConfig.useColumnBasisZero !== false;\n basis = direction === 'row' ? '0%' : (useColumnBasisZero ? '0.000000001px' : 'auto');\n break;\n case 'initial': // default\n case 'nogrow':\n grow = 0;\n basis = 'auto';\n break;\n case 'grow':\n basis = '100%';\n break;\n case 'noshrink':\n shrink = 0;\n basis = 'auto';\n break;\n case 'auto':\n break;\n case 'none':\n grow = 0;\n shrink = 0;\n basis = 'auto';\n break;\n default:\n // Defaults to percentage sizing unless `px` is explicitly set\n if (!isValue && !isPercent && !isNaN(basis as any)) {\n basis = basis + '%';\n }\n\n // Fix for issue 280\n if (basis === '0%') {\n isValue = true;\n }\n\n if (basis === '0px') {\n basis = '0%';\n }\n\n // fix issue #5345\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': isValue ? basis : '100%'\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${isValue ? basis : '100%'}`\n });\n }\n\n break;\n }\n\n if (!(css['flex'] || css['flex-grow'])) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n }\n\n // Fix for issues 277, 534, and 728\n if (basis !== '0%' && basis !== '0px' && basis !== '0.000000001px' && basis !== 'auto') {\n css[min] = isFixed || (isValue && grow) ? basis : null;\n css[max] = isFixed || (!usingCalc && shrink) ? basis : null;\n }\n\n // Fix for issue 528\n if (!css[min] && !css[max]) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n } else {\n // Fix for issue 660\n if (parent.hasWrap) {\n css[hasCalc ? 'flex-basis' : 'flex'] = css[max] ?\n (hasCalc ? css[max] : `${grow} ${shrink} ${css[max]}`) :\n (hasCalc ? css[min] : `${grow} ${shrink} ${css[min]}`);\n }\n }\n\n return extendObject(css, {'box-sizing': 'border-box'}) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxFlex', 'fxFlex.xs', 'fxFlex.sm', 'fxFlex.md',\n 'fxFlex.lg', 'fxFlex.xl', 'fxFlex.lt-sm', 'fxFlex.lt-md',\n 'fxFlex.lt-lg', 'fxFlex.lt-xl', 'fxFlex.gt-xs', 'fxFlex.gt-sm',\n 'fxFlex.gt-md', 'fxFlex.gt-lg'\n];\nconst selector = `\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n`;\n\n/**\n * Directive to control the size of a flex item using flex-basis, flex-grow, and flex-shrink.\n * Corresponds to the css `flex` shorthand property.\n *\n * @see https://css-tricks.com/snippets/css/a-guide-to-flexbox/\n */\n@Directive()\nexport class FlexDirective extends BaseDirective2 implements OnInit {\n\n protected DIRECTIVE_KEY = 'flex';\n protected direction?: string = undefined;\n protected wrap?: boolean = undefined;\n\n\n @Input('fxShrink')\n get shrink(): string { return this.flexShrink; }\n set shrink(value: string) {\n this.flexShrink = value || '1';\n this.triggerReflow();\n }\n\n @Input('fxGrow')\n get grow(): string { return this.flexGrow; }\n set grow(value: string) {\n this.flexGrow = value || '1';\n this.triggerReflow();\n }\n\n protected flexGrow = '1';\n protected flexShrink = '1';\n\n constructor(elRef: ElementRef,\n styleUtils: StyleUtils,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n styleBuilder: FlexStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n ngOnInit() {\n if (this.parentElement) {\n this.marshal.trackValue(this.parentElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n this.marshal.trackValue(this.nativeElement, 'layout-align')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerReflow.bind(this));\n }\n }\n\n /**\n * Caches the parent container's 'flex-direction' and updates the element's style.\n * Used as a handler for layout change events from the parent flex container.\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n const layoutParts = layout.split(' ');\n this.direction = layoutParts[0];\n this.wrap = layoutParts[1] !== undefined && layoutParts[1] === 'wrap';\n this.triggerUpdate();\n }\n\n /** Input to this is exclusively the basis input value */\n protected updateWithValue(value: string) {\n const addFlexToParent = this.layoutConfig.addFlexToParent !== false;\n if (this.direction === undefined) {\n this.direction = this.getFlexFlowDirection(this.parentElement!, addFlexToParent);\n }\n if (this.wrap === undefined) {\n this.wrap = this.hasWrap(this.parentElement!);\n }\n const direction = this.direction;\n const isHorizontal = direction.startsWith('row');\n const hasWrap = this.wrap;\n if (isHorizontal && hasWrap) {\n this.styleCache = flexRowWrapCache;\n } else if (isHorizontal && !hasWrap) {\n this.styleCache = flexRowCache;\n } else if (!isHorizontal && hasWrap) {\n this.styleCache = flexColumnWrapCache;\n } else if (!isHorizontal && !hasWrap) {\n this.styleCache = flexColumnCache;\n }\n const basis = String(value).replace(';', '');\n const parts = validateBasis(basis, this.flexGrow, this.flexShrink);\n this.addStyles(parts.join(' '), {direction, hasWrap});\n }\n\n /** Trigger a style reflow, usually based on a shrink/grow input event */\n protected triggerReflow() {\n const activatedValue = this.activatedValue;\n if (activatedValue !== undefined) {\n const parts = validateBasis(activatedValue + '', this.flexGrow, this.flexShrink);\n this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, parts.join(' '));\n }\n }\n}\n\n@Directive({inputs, selector})\nexport class DefaultFlexDirective extends FlexDirective {\n protected inputs = inputs;\n}\n\nconst flexRowCache: Map<string, StyleDefinition> = new Map();\nconst flexColumnCache: Map<string, StyleDefinition> = new Map();\nconst flexRowWrapCache: Map<string, StyleDefinition> = new Map();\nconst flexColumnWrapCache: Map<string, StyleDefinition> = new Map();\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Directive, ElementRef, OnChanges, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexOrderStyleBuilder extends StyleBuilder {\n buildStyles(value: string) {\n return {order: (value && parseInt(value, 10)) || ''};\n }\n}\n\nconst inputs = [\n 'fxFlexOrder', 'fxFlexOrder.xs', 'fxFlexOrder.sm', 'fxFlexOrder.md',\n 'fxFlexOrder.lg', 'fxFlexOrder.xl', 'fxFlexOrder.lt-sm', 'fxFlexOrder.lt-md',\n 'fxFlexOrder.lt-lg', 'fxFlexOrder.lt-xl', 'fxFlexOrder.gt-xs', 'fxFlexOrder.gt-sm',\n 'fxFlexOrder.gt-md', 'fxFlexOrder.gt-lg'\n];\nconst selector = `\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n`;\n\n/**\n * 'flex-order' flexbox styling directive\n * Configures the positional ordering of the element in a sorted layout container\n * @see https://css-tricks.com/almanac/properties/o/order/\n */\n@Directive()\nexport class FlexOrderDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'flex-order';\n\n constructor(elRef: ElementRef,\n styleUtils: StyleUtils,\n styleBuilder: FlexOrderStyleBuilder,\n marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexOrderCache;\n}\n\nconst flexOrderCache: Map<string, StyleDefinition> = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexOrderDirective extends FlexOrderDirective {\n protected inputs = inputs;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Directive, ElementRef, OnChanges, Injectable} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface FlexOffsetParent {\n layout: string;\n isRtl: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexOffsetStyleBuilder extends StyleBuilder {\n buildStyles(offset: string, parent: FlexOffsetParent) {\n if (offset === '') {\n offset = '0';\n }\n const isPercent = String(offset).indexOf('%') > -1;\n const isPx = String(offset).indexOf('px') > -1;\n if (!isPx && !isPercent && !isNaN(+offset)) {\n offset = offset + '%';\n }\n const horizontalLayoutKey = parent.isRtl ? 'margin-right' : 'margin-left';\n const styles: StyleDefinition = isFlowHorizontal(parent.layout) ?\n {[horizontalLayoutKey]: `${offset}`} : {'margin-top': `${offset}`};\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexOffset', 'fxFlexOffset.xs', 'fxFlexOffset.sm', 'fxFlexOffset.md',\n 'fxFlexOffset.lg', 'fxFlexOffset.xl', 'fxFlexOffset.lt-sm', 'fxFlexOffset.lt-md',\n 'fxFlexOffset.lt-lg', 'fxFlexOffset.lt-xl', 'fxFlexOffset.gt-xs', 'fxFlexOffset.gt-sm',\n 'fxFlexOffset.gt-md', 'fxFlexOffset.gt-lg'\n];\nconst selector = `\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n`;\n\n/**\n * 'flex-offset' flexbox styling directive\n * Configures the 'margin-left' of the element in a layout container\n */\n@Directive()\nexport class FlexOffsetDirective extends BaseDirective2 implements OnChanges {\n protected DIRECTIVE_KEY = 'flex-offset';\n\n constructor(elRef: ElementRef,\n protected directionality: Directionality,\n styleBuilder: FlexOffsetStyleBuilder,\n marshal: MediaMarshaller,\n styler: StyleUtils) {\n super(elRef, styleBuilder, styler, marshal);\n this.init([this.directionality.change]);\n // Parent DOM `layout-gap` with affect the nested child with `flex-offset`\n if (this.parentElement) {\n this.marshal\n .trackValue(this.parentElement, 'layout-gap')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerUpdate.bind(this));\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Using the current fxFlexOffset value, update the inline CSS\n * NOTE: this will assign `margin-left` if the parent flex-direction == 'row',\n * otherwise `margin-top` is used for the offset.\n */\n protected updateWithValue(value: string|number = ''): void {\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const layout = this.getFlexFlowDirection(this.parentElement!, true);\n const isRtl = this.directionality.value === 'rtl';\n if (layout === 'row' && isRtl) {\n this.styleCache = flexOffsetCacheRowRtl;\n } else if (layout === 'row' && !isRtl) {\n this.styleCache = flexOffsetCacheRowLtr;\n } else if (layout === 'column' && isRtl) {\n this.styleCache = flexOffsetCacheColumnRtl;\n } else if (layout === 'column' && !isRtl) {\n this.styleCache = flexOffsetCacheColumnLtr;\n }\n this.addStyles(value + '', {layout, isRtl});\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultFlexOffsetDirective extends FlexOffsetDirective {\n protected inputs = inputs;\n}\n\nconst flexOffsetCacheRowRtl: Map<string, StyleDefinition> = new Map();\nconst flexOffsetCacheColumnRtl: Map<string, StyleDefinition> = new Map();\nconst flexOffsetCacheRowLtr: Map<string, StyleDefinition> = new Map();\nconst flexOffsetCacheColumnLtr: Map<string, StyleDefinition> = new Map();\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Directive, ElementRef, Injectable} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n input = input || 'stretch';\n const styles: StyleDefinition = {};\n\n // Cross-axis\n switch (input) {\n case 'start':\n styles['align-self'] = 'flex-start';\n break;\n case 'end':\n styles['align-self'] = 'flex-end';\n break;\n default:\n styles['align-self'] = input;\n break;\n }\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexAlign', 'fxFlexAlign.xs', 'fxFlexAlign.sm', 'fxFlexAlign.md',\n 'fxFlexAlign.lg', 'fxFlexAlign.xl', 'fxFlexAlign.lt-sm', 'fxFlexAlign.lt-md',\n 'fxFlexAlign.lt-lg', 'fxFlexAlign.lt-xl', 'fxFlexAlign.gt-xs', 'fxFlexAlign.gt-sm',\n 'fxFlexAlign.gt-md', 'fxFlexAlign.gt-lg'\n];\nconst selector = `\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n`;\n\n/**\n * 'flex-align' flexbox styling directive\n * Allows element-specific overrides for cross-axis alignments in a layout container\n * @see https://css-tricks.com/almanac/properties/a/align-self/\n */\n@Directive()\nexport class FlexAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex-align';\n\n constructor(elRef: ElementRef,\n styleUtils: StyleUtils,\n styleBuilder: FlexAlignStyleBuilder,\n marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexAlignCache;\n}\n\nconst flexAlignCache: Map<string, StyleDefinition> = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexAlignDirective extends FlexAlignDirective {\n protected inputs = inputs;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Directive, ElementRef, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nconst FLEX_FILL_CSS = {\n 'margin': 0,\n 'width': '100%',\n 'height': '100%',\n 'min-width': '100%',\n 'min-height': '100%'\n};\n\n@Injectable({providedIn: 'root'})\nexport class FlexFillStyleBuilder extends StyleBuilder {\n buildStyles(_input: string) {\n return FLEX_FILL_CSS;\n }\n}\n\n/**\n * 'fxFill' flexbox styling directive\n * Maximizes width and height of element in a layout container\n *\n * NOTE: fxFill is NOT responsive API!!\n */\n@Directive({selector: `[fxFill], [fxFlexFill]`})\nexport class FlexFillDirective extends BaseDirective2 {\n constructor(elRef: ElementRef,\n styleUtils: StyleUtils,\n styleBuilder: FlexFillStyleBuilder,\n marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.addStyles('');\n }\n\n protected styleCache = flexFillCache;\n}\n\nconst flexFillCache: Map<string, StyleDefinition> = new Map();\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Directive, ElementRef, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {LAYOUT_VALUES, isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface LayoutAlignParent {\n layout: string;\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class LayoutAlignStyleBuilder extends StyleBuilder {\n buildStyles(align: string, parent: LayoutAlignParent) {\n const css: StyleDefinition = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['justify-content'] = 'center';\n break;\n case 'space-around':\n css['justify-content'] = 'space-around';\n break;\n case 'space-between':\n css['justify-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['justify-content'] = 'space-evenly';\n break;\n case 'end':\n case 'flex-end':\n css['justify-content'] = 'flex-end';\n break;\n case 'start':\n case 'flex-start':\n default :\n css['justify-content'] = 'flex-start'; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'flex-start':\n css['align-items'] = css['align-content'] = 'flex-start';\n break;\n case 'center':\n css['align-items'] = css['align-content'] = 'center';\n break;\n case 'end':\n case 'flex-end':\n css['align-items'] = css['align-content'] = 'flex-end';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n css['align-items'] = 'stretch';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n css['align-items'] = 'stretch';\n break;\n case 'baseline':\n css['align-content'] = 'stretch';\n css['align-items'] = 'baseline';\n break;\n case 'stretch':\n default : // 'stretch'\n css['align-items'] = css['align-content'] = 'stretch'; // default cross axis\n break;\n }\n\n return extendObject(css, {\n 'display' : parent.inline ? 'inline-flex' : 'flex',\n 'flex-direction' : parent.layout,\n 'box-sizing' : 'border-box',\n 'max-width': crossAxis === 'stretch' ?\n !isFlowHorizontal(parent.layout) ? '100%' : null : null,\n 'max-height': crossAxis === 'stretch' ?\n isFlowHorizontal(parent.layout) ? '100%' : null : null,\n }) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxLayoutAlign', 'fxLayoutAlign.xs', 'fxLayoutAlign.sm', 'fxLayoutAlign.md',\n 'fxLayoutAlign.lg', 'fxLayoutAlign.xl', 'fxLayoutAlign.lt-sm', 'fxLayoutAlign.lt-md',\n 'fxLayoutAlign.lt-lg', 'fxLayoutAlign.lt-xl', 'fxLayoutAlign.gt-xs', 'fxLayoutAlign.gt-sm',\n 'fxLayoutAlign.gt-md', 'fxLayoutAlign.gt-lg'\n];\nconst selector = `\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n`;\n\n/**\n * 'layout-align' flexbox styling directive\n * Defines positioning of child elements along main and cross axis in a layout container\n * Optional values: {main-axis} values or {main-axis cross-axis} value pairs\n *\n * @see https://css-tricks.com/almanac/properties/j/justify-content/\n * @see https://css-tricks.com/almanac/properties/a/align-items/\n * @see https://css-tricks.com/almanac/properties/a/align-content/\n */\n@Directive()\nexport class LayoutAlignDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'layout-align';\n protected layout = 'row'; // default flex-direction\n protected inline = false; // default inline value\n\n constructor(elRef: ElementRef,\n styleUtils: StyleUtils,\n styleBuilder: LayoutAlignStyleBuilder,\n marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n this.marshal.trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n const layout = this.layout || 'row';\n const inline = this.inline;\n if (layout === 'row' && inline) {\n this.styleCache = layoutAlignHorizontalInlineCache;\n } else if (layout === 'row' && !inline) {\n this.styleCache = layoutAlignHorizontalCache;\n } else if (layout === 'row-reverse' && inline) {\n this.styleCache = layoutAlignHorizontalRevInlineCache;\n } else if (layout === 'row-reverse' && !inline) {\n this.styleCache = layoutAlignHorizontalRevCache;\n } else if (layout === 'column' && inline) {\n this.styleCache = layoutAlignVerticalInlineCache;\n } else if (layout === 'column' && !inline) {\n this.styleCache = layoutAlignVerticalCache;\n } else if (layout === 'column-reverse' && inline) {\n this.styleCache = layoutAlignVerticalRevInlineCache;\n } else if (layout === 'column-reverse' && !inline) {\n this.styleCache = layoutAlignVerticalRevCache;\n }\n this.addStyles(value, {layout, inline});\n }\n\n /**\n * Cache the parent container 'flex-direction' and update the 'flex' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layoutKeys: string[] = matcher.value.split(' ');\n this.layout = layoutKeys[0];\n this.inline = matcher.value.includes('inline');\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutAlignDirective extends LayoutAlignDirective {\n protected inputs = inputs;\n}\n\nconst layoutAlignHorizontalCache: Map<string, StyleDefinition> = new Map();\nconst layoutAlignVerticalCache: Map<string, StyleDefinition> = new Map();\nconst layoutAlignHorizontalRevCache: Map<string, StyleDefinition> = new Map();\nconst layoutAlignVerticalRevCache: Map<string, StyleDefinition> = new Map();\nconst layoutAlignHorizontalInlineCache: Map<string, StyleDefinition> = new Map();\nconst layoutAlignVerticalInlineCache: Map<string, StyleDefinition> = new Map();\nconst layoutAlignHorizontalRevInlineCache: Map<string, StyleDefinition> = new Map();\nconst layoutAlignVerticalRevInlineCache: Map<string, StyleDefinition> = new Map();\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultLayoutDirective} from './layout/layout';\nimport {DefaultLayoutGapDirective} from './layout-gap/layout-gap';\nimport {DefaultFlexDirective} from './flex/flex';\nimport {DefaultFlexOrderDirective} from './flex-order/flex-order';\nimport {DefaultFlexOffsetDirective} from './flex-offset/flex-offset';\nimport {DefaultFlexAlignDirective} from './flex-align/flex-align';\nimport {FlexFillDirective} from './flex-fill/flex-fill';\nimport {DefaultLayoutAlignDirective} from './layout-align/layout-align';\n\n\nconst ALL_DIRECTIVES = [\n DefaultLayoutDirective,\n DefaultLayoutGapDirective,\n DefaultLayoutAlignDirective,\n DefaultFlexOrderDirective,\n DefaultFlexOffsetDirective,\n FlexFillDirective,\n DefaultFlexAlignDirective,\n DefaultFlexDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the Flex API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule, BidiModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class FlexModule {\n}\n"],"names":["__extends","d","b","__","this","constructor","extendStatics","prototype","Object","create","__spreadArrays","s","i","il","arguments","length","r","Array","k","a","j","jl","buildLayoutCSS","value","_a","validateValue","buildCSS","toLowerCase","split","direction","wrap","inline","LAYOUT_VALUES","find","x","INLINE","validateWrapValue","isFlowHorizontal","indexOf","display","box-sizing","flex-direction","flex-wrap","buildGridPadding","directionality","between","below","bottom","paddingRight","paddingBottom","paddingLeft","padding","buildGridMargin","minus","str","marginRight","marginBottom","marginLeft","margin","getMarginType","layout","buildGapCSS","gapValue","parent","key","margins","__assign","CLEAR_MARGIN_CSS","extendObject","dest","sources","_i","TypeError","sources_1","source","hasOwnProperty","setPrototypeOf","__proto__","p","assign","t","n","call","apply","LayoutStyleBuilder","_super","buildStyles","input","type","Injectable","args","providedIn","StyleBuilder","inputs","LayoutDirective","elRef","styleUtils","styleBuilder","marshal","_this","DIRECTIVE_KEY","styleCache","layoutCache","init","Directive","ElementRef","StyleUtils","MediaMarshaller","BaseDirective2","DefaultLayoutDirective","selector","Map","margin-left","margin-right","margin-top","margin-bottom","LayoutGapStyleBuilder","_styler","endsWith","GRID_SPECIFIER","slice","sideEffect","_styles","items","paddingStyles","applyStyleToElements","lastItem","pop","gapCss","LayoutGapDirective","zone","observerSubject","Subject","extraTriggers","change","asObservable","trackValue","nativeElement","pipe","takeUntil","destroySubject","subscribe","onLayoutChange","bind","defineProperty","obj","children","buffer","ngAfterContentInit","buildChildObservable","triggerUpdate","ngOnDestroy","observer","disconnect","matcher","updateWithValue","childrenNodes","filter","el","nodeType","willDisplay","sort","orderA","styler","lookupStyle","orderB","isNaN","layoutGapCacheRowRtl","layoutGapCacheRowLtr","layoutGapCacheColumnRtl","layoutGapCacheColumnLtr","addStyles","clearStyles","gridMode","keys","mru","childrenStyle","getValue","undefined","runOutsideAngular","MutationObserver","mutations","validatedChanges","it","addedNodes","removedNodes","some","next","observe","childList","NgZone","Directionality","DefaultLayoutGapDirective","FlexStyleBuilder","layoutConfig","grow","shrink","basisParts","basis","join","max","min","hasCalc","String","usingCalc","isPercent","hasUnits","isValue","isFixed","css","max-width","max-height","min-width","min-height","useColumnBasisZero","flex-grow","flex-shrink","flex-basis","flex","hasWrap","decorators","Inject","LAYOUT_CONFIG","FlexDirective","flexGrow","flexShrink","triggerReflow","ngOnInit","parentElement","layoutParts","addFlexToParent","getFlexFlowDirection","isHorizontal","startsWith","flexRowWrapCache","flexRowCache","flexColumnWrapCache","flexColumnCache","replace","parts","validateBasis","activatedValue","updateElement","Input","DefaultFlexDirective","FlexOrderStyleBuilder","order","parseInt","FlexOrderDirective","flexOrderCache","DefaultFlexOrderDirective","FlexOffsetStyleBuilder","offset","horizontalLayoutKey","isRtl","FlexOffsetDirective","flexOffsetCacheRowRtl","flexOffsetCacheColumnRtl","flexOffsetCacheColumnLtr","flexOffsetCacheRowLtr","DefaultFlexOffsetDirective","FlexAlignStyleBuilder","styles","FlexAlignDirective","flexAlignCache","DefaultFlexAlignDirective","FLEX_FILL_CSS","width","height","FlexFillStyleBuilder","_input","FlexFillDirective","flexFillCache","LayoutAlignStyleBuilder","align","mainAxis","crossAxis","LayoutAlignDirective","layoutAlignHorizontalInlineCache","layoutAlignHorizontalRevInlineCache","layoutAlignVerticalInlineCache","layoutAlignVerticalRevInlineCache","layoutAlignVerticalRevCache","layoutAlignVerticalCache","layoutAlignHorizontalRevCache","layoutAlignHorizontalCache","layoutKeys","includes","DefaultLayoutAlignDirective","ALL_DIRECTIVES","FlexModule","NgModule","imports","CoreModule","BidiModule","declarations","exports"],"mappings":";;;;;;;gkBAuBA,SAAgBA,GAAUC,EAAGC,GAEzB,QAASC,KAAOC,KAAKC,YAAcJ,EADnCK,EAAcL,EAAGC,GAEjBD,EAAEM,UAAkB,OAANL,EAAaM,OAAOC,OAAOP,IAAMC,EAAGI,UAAYL,EAAEK,UAAW,GAAIJ,IA8HnF,QAAgBO,KACZ,IAAK,GAAIC,GAAI,EAAGC,EAAI,EAAGC,EAAKC,UAAUC,OAAQH,EAAIC,EAAID,IAAKD,GAAKG,UAAUF,GAAGG,MAC7E,KAAK,GAAIC,GAAIC,MAAMN,GAAIO,EAAI,EAAGN,EAAI,EAAGA,EAAIC,EAAID,IACzC,IAAK,GAAIO,GAAIL,UAAUF,GAAIQ,EAAI,EAAGC,EAAKF,EAAEJ,OAAQK,EAAIC,EAAID,IAAKF,IAC1DF,EAAEE,GAAKC,EAAEC,EACjB,OAAOJ,GChJX,QAAgBM,GAAeC,GACzB,GAAAC,GAA8BC,EAAcF,EAChD,OAAOG,GADTF,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAQA,QAAgBC,GAAcF,GAC5BA,EAAQA,EAAQA,EAAMI,cAAgB,EAClC,IAAAH,GAA4BD,EAAMK,MAAM,KAAvCC,EAAPL,EAAA,GAAkBM,EAAlBN,EAAA,GAAwBO,EAAxBP,EAAA,EAYE,OATKQ,GAAcC,KAAI,SAACC,GAAK,MAAAA,KAAML,MACjCA,EAAYG,EAAc,IAGxBF,IAASK,IACXL,EAAQC,IAAWI,EAAUJ,EAAS,GACtCA,EAASI,IAGHN,EAAWO,EAAkBN,KAASC,GAOhD,QAAgBM,GAAiBd,GAE/B,MADeE,GAAcF,GAA/B,GACce,QAAQ,QAAU,EAMhC,QAAgBF,GAAkBb,GAChC,GAAMA,EACJ,OAAQA,EAAMI,eACZ,IAAK,UACL,IAAK,eACL,IAAK,eACHJ,EAAQ,cACR,MAEF,KAAK,KACL,IAAK,OACL,IAAK,SACHA,EAAQ,QACR,MAGF,SACEA,EAAQ,OAId,MAAOA,GAYT,QAASG,GAASG,EAAmBC,EAA4BC,GAC/D,WADF,KAAAD,IAAqCA,EAArC,UAAA,KAAAC,IAAiEA,GAAjE,IAEIQ,QAAWR,EAAS,cAAgB,OACpCS,aAAc,aACdC,iBAAkBZ,EAClBa,YAAeZ,GAAc,MCoKjC,QAASa,GAAiBpB,EAAeqB,GACjC,GAAApB,GAAmBD,EAAMK,MAAM,KAA9BiB,EAATrB,EAAA,GAAkBsB,EAAlBtB,EAAA,GACQuB,EAASD,GAASD,EACpBG,EAAe,MAAOC,EAAgBF,EAAQG,EAAc,KAQhE,OANuB,QAAnBN,EACFM,EAAcL,EAEdG,EAAeH,GAGTM,QAAW,OAAOH,EAA5B,IAA4CC,EAA5C,IAA6DC,GAG7D,QAASE,GAAgB7B,EAAeqB,GAChC,GAAApB,GAAmBD,EAAMK,MAAM,KAA9BiB,EAATrB,EAAA,GAAkBsB,EAAlBtB,EAAA,GACQuB,EAASD,GAASD,EAClBQ,EAAK,SAAIC,GAAgB,MAAA,IAAIA,GAC/BC,EAAc,MAAOC,EAAeH,EAAMN,GAASU,EAAa,KAQpE,OANuB,QAAnBb,EACFa,EAAaJ,EAAMR,GAEnBU,EAAcF,EAAMR,IAGda,OAAU,OAAOH,EAA3B,IAA0CC,EAA1C,IAA0DC,GAG1D,QAASE,GAAcf,EAAwBgB,GAC7C,OAAQA,GACN,IAAK,SACH,MAAO,eACT,KAAK,iBACH,MAAO,YACT,KAAK,MACH,MAA0B,QAAnBhB,EAA2B,cAAgB,cACpD,KAAK,cACH,MAA0B,QAAnBA,EAA2B,eAAiB,aACrD,SACE,MAA0B,QAAnBA,EAA2B,cAAgB,gBAIxD,QAASiB,GAAYC,EACAC,GACrB,GAAQC,GAAML,EAAcI,EAAOnB,eAAgBmB,EAAOH,QAClDK,EAARC,KAAsDC,EAEpD,OADAF,GAAQD,GAAOF,EACRG,EChST,QAAgBG,GAAaC,GAA7B,IAAwC,GAAxCC,MAAAC,EAAA,EAAwCA,EAAxCzD,UAAAC,OAAwCwD,IAAAD,EAAxCC,EAAA,GAAAzD,UAAAyD,EACE,IAAY,MAARF,EACF,KAAMG,WAAU,6CAGlB,KAAmB,GAArBhD,GAAA,EAAqBiD,EAArBH,EAAqB9C,EAArBiD,EAAA1D,OAAqBS,IAAS,CAAvB,GAAIkD,GAAXD,EAAAjD,EACI,IAAc,MAAVkD,EACF,IAAK,GAAIV,KAAOU,GACVA,EAAOC,eAAeX,KACxBK,EAAKL,GAAOU,EAAOV,IAM3B,MAAOK,GHbT,GAAI/D,GAAgB,SAASL,EAAGC,GAI5B,OAHAI,EAAgBE,OAAOoE,iBAChBC,uBAA2B5D,QAAS,SAAUhB,EAAGC,GAAKD,EAAE4E,UAAY3E,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI4E,KAAK5E,GAAOA,EAAEyE,eAAeG,KAAI7E,EAAE6E,GAAK5E,EAAE4E,MACpD7E,EAAGC,IASjBgE,EAAW,WAQlB,MAPAA,GAAW1D,OAAOuE,QAAU,SAAkBC,GAC1C,IAAK,GAAIrE,GAAGC,EAAI,EAAGqE,EAAInE,UAAUC,OAAQH,EAAIqE,EAAGrE,IAAK,CACjDD,EAAIG,UAAUF,EACd,KAAK,GAAIkE,KAAKnE,GAAOH,OAAOD,UAAUoE,eAAeO,KAAKvE,EAAGmE,KAAIE,EAAEF,GAAKnE,EAAEmE,IAE9E,MAAOE,IAEJd,EAASiB,MAAM/E,KAAMU,YC9BnBqB,EAAS,SACTH,GAAiB,MAAO,SAAU,cAAe,kBGU9DoD,EAAA,SAAAC,GAAA,QAAAD,oDAlBA,MAmBwCpF,GAAxCoF,EAAAC,GACED,EAAF7E,UAAA+E,YAAE,SAAYC,GACV,MAAOjE,GAAeiE,8GAH1BC,KAACC,EAAAA,WAADC,OAAaC,WAAY,WAlBzBP,GAmBwCQ,EAAAA,cAMlCC,GACJ,WAAY,cAAe,cAAe,cAC1C,cAAe,cAAe,iBAAkB,iBAChD,iBAAkB,iBAAkB,iBAAkB,iBACtD,iBAAkB,kBAgBpBC,EAAA,SAAAT,GAKE,QAAFS,GAAcC,EACAC,EACAC,EACAC,GAHZ,GAAFC,GAIId,EAJJH,KAAA9E,KAIU2F,EAAOE,EAAcD,EAAYE,IAJ3C9F,WAFY+F,GAAZC,cAA4B,SAUhBD,EAAZE,WAAyBC,EAHrBH,EAAKI,SAIT,MAbqCvG,GAArC8F,EAAAT,kBADAG,KAACgB,EAAAA,gDAtCDhB,KAAmBiB,EAAAA,aAKnBjB,KAAEkB,EAAAA,aAwCFlB,KAA4BJ,IAvC5BI,KAAEmB,EAAAA,mBA8CFb,GAbqCc,EAAAA,gBAerCC,EAAA,SAAAxB,GAAA,QAAAwB,KAAA,GAAAV,GAAA,OAAAd,GAAAA,EAAAF,MAAA/E,KAAAU,YAAAV,WAEY+F,GAAZN,OAAqBA,IACrB,MAF4C7F,GAA5C6G,EAAAxB,kBADAG,KAACgB,EAAAA,UAADd,OAAYoB,SA9BK,uPA8BKjB,OAAtBA,MAGAgB,GAF4Cf,GAItCQ,EAA4C,GAAIS,KF/BhD5C,GACJ6C,cAAe,KACfC,eAAgB,KAChBC,aAAc,KACdC,gBAAiB,MAGnBC,EAAA,SAAA/B,GAEE,QAAF+B,GAAsBC,GAApB,GAAFlB,GACId,EADJH,KAAA9E,OAAAA,WAAsB+F,GAAtBkB,QAAsBA,IA5CtB,MA2C2CrH,GAA3CoH,EAAA/B,GAKE+B,EAAF7G,UAAA+E,YAAE,SAAYxB,EAAkBC,GAC5B,MAAID,GAASwD,SAASC,IACpBzD,EAAWA,EAAS0D,MAAM,EAAG1D,EAASxB,QAAQiF,IAGvCnE,EAAgBU,EAAUC,EAAOnB,qBAM5CwE,EAAF7G,UAAAkH,WAAE,SAAW3D,EAAkB4D,EAA0B3D,GACzD,GAAU4D,GAAQ5D,EAAO4D,KACrB,IAAI7D,EAASwD,SAASC,GAAiB,CACrCzD,EAAWA,EAAS0D,MAAM,EAAG1D,EAASxB,QAAQiF,GAEpD,IAAYK,GAAgBjF,EAAiBmB,EAAUC,EAAOnB,eACxDxC,MAAKiH,QAAQQ,qBAAqBD,EAAe7D,EAAO4D,WACnD,CACX,GAAYG,GAAWH,EAAMI,MAIjBC,EAASnE,EAAYC,EAAUC,EACrC3D,MAAKiH,QAAQQ,qBAAqBG,EAAQL,GAG1CvH,KAAKiH,QAAQQ,qBAAqB1D,GAAmB2D,0IAjC3DtC,KAACC,EAAAA,WAADC,OAAaC,WAAY,+CAtBzBH,KAAEkB,EAAAA,cApBFU,GA2C2CxB,EAAAA,cAqCrCC,GACJ,cAAe,iBAAkB,iBAAkB,iBACnD,iBAAkB,iBAAkB,oBAAqB,oBACzD,oBAAqB,oBAAqB,oBAAqB,oBAC/D,oBAAqB,qBAavBoC,EAAA,SAAA5C,GAkBE,QAAF4C,GAAclC,EACUmC,EACAtF,EACAoD,EACVC,EACAC,GALZ,GAAFC,GAMId,EANJH,KAAA9E,KAMU2F,EAAOE,EAAcD,EAAYE,IAN3C9F,IACwB+F,GAAxB+B,KAAwBA,EACA/B,EAAxBvD,eAAwBA,EACAuD,EAAxBH,WAAwBA,EAnBZG,EAAZvC,OAAqB,MACTuC,EAAZC,cAA4B,aAChBD,EAAZgC,gBAA8B,GAAIC,GAAAA,OAqBlC,IAAUC,IAAiBlC,EAAKvD,eAAe0F,OAAQnC,EAAKgC,gBAAgBI,sBACxEpC,GAAKI,KAAK8B,GACVlC,EAAKD,QACFsC,WAAWrC,EAAKsC,cAAe,UAC/BC,KAAKC,EAAAA,UAAUxC,EAAKyC,iBACpBC,UAAU1C,EAAK2C,eAAeC,KAAK5C,MAgH1C,MA7IwCnG,GAAxCiI,EAAA5C,GAME7E,OAAFwI,eAAgBf,EAAhB1H,UAAA,qBAAE,WAKE,IAAK,GAJC0I,GAAM7I,KAAKqI,cAAcS,SACzBC,KAGGvI,EAAIqI,EAAIlI,OAAQH,KACvBuI,EAAOvI,GAAKqI,EAAIrI,EAElB,OAAOuI,oCAsBTlB,EAAF1H,UAAA6I,mBAAE,WACEhJ,KAAKiJ,uBACLjJ,KAAKkJ,iBAGPrB,EAAF1H,UAAAgJ,YAAE,WACElE,EAAJ9E,UAAUgJ,YAAVrE,KAAA9E,MACQA,KAAKoJ,UACPpJ,KAAKoJ,SAASC,cAWRxB,EAAZ1H,UAAAuI,eAAE,SAAyBY,GAAzB,GAAFvD,GAAA/F,KACUwD,EAAiB8F,EAAQnI,MAEzBM,EAAY+B,EAAOhC,MAAM,IAC/BxB,MAAKwD,OAAS/B,EAAU,GACnBG,EAAcC,KAAI,SAACC,GAAK,MAAAA,KAAMiE,EAAKvC,WACtCxD,KAAKwD,OAAS,OAEhBxD,KAAKkJ,iBAMGrB,EAAZ1H,UAAAoJ,gBAAE,SAA0BpI,GAA1B,GAAF4E,GAAA/F,KAEUuH,EAAQvH,KAAKwJ,cAChBC,OAAM,SAACC,GAAM,MAAgB,KAAhBA,EAAGC,UAAkB5D,EAAK6D,YAAYF,KACnDG,KAAI,SAAE9I,EAAGjB,GAChB,GAAcgK,IAAU/D,EAAKgE,OAAOC,YAAYjJ,EAAG,SACrCkJ,GAAUlE,EAAKgE,OAAOC,YAAYlK,EAAG,QAC3C,OAAIoK,OAAMJ,IAAWI,MAAMD,IAAWH,IAAWG,EACxC,EAEAH,EAASG,EAAS,GAAK,GAIpC,IAAI1C,EAAM5G,OAAS,EAAG,CAC1B,GAAY6B,GAAiBxC,KAAKwC,eAAerB,MACrCqC,EAASxD,KAAKwD,MACL,SAAXA,GAAuC,QAAnBhB,EACtBxC,KAAKiG,WAAakE,EACE,QAAX3G,GAAuC,QAAnBhB,EAC7BxC,KAAKiG,WAAamE,EACE,WAAX5G,GAA0C,QAAnBhB,EAChCxC,KAAKiG,WAAaoE,EACE,WAAX7G,GAA0C,QAAnBhB,IAChCxC,KAAKiG,WAAaqE,GAEpBtK,KAAKuK,UAAUpJ,GAAQqB,eAA7BA,EAA6C+E,MAA7CA,EAAoD/D,OAApDA,MAKYqE,EAAZ1H,UAAAqK,YAAE,iBACQC,EAAWrK,OAAOsK,KAAK1K,KAAK2K,KAAKhK,OAAS,EAC1CiK,EAAgBH,EAAW,UAC/BlH,EAAcvD,KAAKwC,eAAerB,MAAOnB,KAAKwD,OAG5CiH,IACFxF,EAAN9E,UAAYqK,YAAZ1F,KAAA9E,MAIIA,KAAK4F,WAAW6B,sBAApBrG,KAA0CA,EAACwJ,GAAgB,GAA3DxJ,GAAgEpB,KAAKwJ,gBAIzD3B,EAAZ1H,UAAAyJ,YAAE,SAAsBtF,GACxB,GAAUnD,GAAQnB,KAAK8F,QAAQ+E,SAASvG,EAAQ,YAC5C,QAAiB,IAAVnD,OACM2J,KAAV3J,GAA0E,SAAnDnB,KAAK4F,WAAWoE,YAAY1F,EAAQ,YAGtDuD,EAAZ1H,UAAA8I,qBAAE,WAAA,GAAFlD,GAAA/F,IACIA,MAAK8H,KAAKiD,kBAAiB,WACO,mBAArBC,oBACTjF,EAAKqD,SAAW,GAAI4B,kBAAgB,SAAEC,GAC9C,GAAgBC,GAAgB,SAAIC,GACxB,MAAQA,GAAGC,YAAcD,EAAGC,WAAWzK,OAAS,GAC7CwK,EAAGE,cAAgBF,EAAGE,aAAa1K,OAAS,EAI7CsK,GAAUK,KAAKJ,IACjBnF,EAAKgC,gBAAgBwD,SAGzBxF,EAAKqD,SAASoC,QAAQzF,EAAKsC,eAAgBoD,WAAW,uBAxI9DrG,KAACgB,EAAAA,gDAxFDhB,KAAEiB,EAAAA,aAEFjB,KAAEsG,EAAAA,SAIFtG,KAAQuG,EAAAA,iBAKRvG,KAAEkB,EAAAA,aAmGFlB,KAA4B4B,IAlG5B5B,KAAEmB,EAAAA,mBA0NFsB,GA7IwCrB,EAAAA,gBA+IxCoF,EAAA,SAAA3G,GAAA,QAAA2G,KAAA,GAAA7F,GAAA,OAAAd,GAAAA,EAAAF,MAAA/E,KAAAU,YAAAV,WAEY+F,GAAZN,OAAqBA,IACrB,MAF+C7F,GAA/CgM,EAAA3G,kBADAG,KAACgB,EAAAA,UAADd,OAAYoB,SA3JK,iSA2JKjB,OAAtBA,MAGAmG,GAF+C/D,GAIzCsC,EAAqD,GAAIxD,KACzD0D,EAAwD,GAAI1D,KAC5DyD,EAAqD,GAAIzD,KACzD2D,EAAwD,GAAI3D,KAE5DQ,EAAiB,QG9NvB0E,EAAA,SAAA5G,GAEE,QAAF4G,GAA+CC,GAA7C,GAAF/F,GACId,EADJH,KAAA9E,OAAAA,WAA+C+F,GAA/C+F,aAA+CA,IA/B/C,MA8BsClM,GAAtCiM,EAAA5G,GAIE4G,EAAF1L,UAAA+E,YAAE,SAAYC,EAAexB,GACrB,GAAAvC,GAAmD+D,EAAM3D,MAAM,KAA9DuK,EAAT3K,EAAA,GAAe4K,EAAf5K,EAAA,GAA0B6K,EAA1B7K,EAAAgG,MAAA,GACQ8E,EAAQD,EAAWE,KAAK,KAGtB1K,EAAakC,EAAOlC,UAAUS,QAAQ,WAAa,EAAK,SAAW,MAEnEkK,EAAMnK,EAAiBR,GAAa,YAAc,aAClD4K,EAAMpK,EAAiBR,GAAa,YAAc,aAElD6K,EAAUC,OAAOL,GAAOhK,QAAQ,SAAW,EAC3CsK,EAAYF,GAAsB,SAAVJ,EACxBO,EAAYF,OAAOL,GAAOhK,QAAQ,MAAQ,IAAMoK,EAChDI,EAAWH,OAAOL,GAAOhK,QAAQ,OAAS,GAAKqK,OAAOL,GAAOhK,QAAQ,QAAU,GACnFqK,OAAOL,GAAOhK,QAAQ,OAAS,GAAKqK,OAAOL,GAAOhK,QAAQ,OAAS,GACnEqK,OAAOL,GAAOhK,QAAQ,OAAS,EAE7ByK,EAAWL,GAAWI,CAE1BX,GAAgB,KAARA,EAAe,EAAIA,EAC3BC,EAAoB,KAAVA,EAAiB,EAAIA,CAKnC,IAAUY,IAAWb,IAASC,EAEtBa,KAcErC,GACJsC,YAAa,KACbC,aAAc,KACdC,YAAa,KACbC,aAAc,KAEhB,QAAQf,GAAS,IACf,IAAK,GACX,GAAcgB,IAA8D,IAAzClN,KAAK8L,aAAaoB,kBAC7ChB,GAAsB,QAAdzK,EAAsB,KAAQyL,EAAqB,gBAAkB,MAC7E,MACF,KAAK,UACL,IAAK,SACHnB,EAAO,EACPG,EAAQ,MACR,MACF,KAAK,OACHA,EAAQ,MACR,MACF,KAAK,WACHF,EAAS,EACTE,EAAQ,MACR,MACF,KAAK,OACH,KACF,KAAK,OACHH,EAAO,EACPC,EAAS,EACTE,EAAQ,MACR,MACF,SAEOS,GAAYF,GAAcvC,MAAK,KAClCgC,GAAgB,KAIJ,OAAVA,IACFS,GAAU,GAGE,QAAVT,IACFA,EAAQ,MAKRW,EADEP,EACItI,EAAawG,GACjB2C,YAAapB,EACbqB,cAAepB,EACfqB,aAAcV,EAAUT,EAAQ,SAG5BlI,EAAawG,GACjB8C,KAAWvB,EAAvB,IAA+BC,EAA/B,KAAyCW,EAAUT,EAAQ,UAiDvD,MA1CMW,GAAU,MAAKA,EAAI,eAErBA,EADEP,EACItI,EAAawG,GACjB2C,YAAapB,EACbqB,cAAepB,EACfqB,aAAcnB,IAGVlI,EAAawG,GACjB8C,KAAWvB,EAArB,IAA6BC,EAA7B,IAAuCE,KAMrB,OAAVA,GAA4B,QAAVA,GAA6B,kBAAVA,GAAuC,SAAVA,IACpEW,EAAIR,GAAOO,GAAYD,GAAWZ,EAAQG,EAAQ,KAClDW,EAAIT,GAAOQ,IAAaJ,GAAaR,EAAUE,EAAQ,MAIpDW,EAAIR,IAASQ,EAAIT,GAchBzI,EAAO4J,UACTV,EAAIP,EAAU,aAAe,QAAUO,EAAIT,GACxCE,EAAUO,EAAIT,GAAUL,EAAnC,IAA2CC,EAA3C,IAAqDa,EAAIT,GAC9CE,EAAUO,EAAIR,GAAUN,EAAnC,IAA2CC,EAA3C,IAAqDa,EAAIR,IAfjDQ,EADEP,EACItI,EAAawG,GACjB2C,YAAapB,EACbqB,cAAepB,EACfqB,aAAcnB,IAGVlI,EAAawG,GACjB8C,KAAWvB,EAArB,IAA6BC,EAA7B,IAAuCE,IAY5BlI,EAAa6I,GAAMzK,aAAc,uJArJ5CgD,KAACC,EAAAA,WAADC,OAAaC,WAAY,+CAEzBH,SAAA0F,GAAA0C,aAAApI,KAAeqI,EAAAA,OAAfnI,MAAsBoI,EAAAA,oBA/BtB7B,GA8BsCrG,EAAAA,cAwJhCC,GACJ,SAAU,YAAa,YAAa,YACpC,YAAa,YAAa,eAAgB,eAC1C,eAAgB,eAAgB,eAAgB,eAChD,eAAgB,gBAelBkI,EAAA,SAAA1I,GAyBE,QAAF0I,GAAchI,EACAC,EACiCkG,EACjCjG,EACUC,GAJtB,GAAFC,GAKId,EALJH,KAAA9E,KAKU2F,EAAOE,EAAcD,EAAYE,IAL3C9F,WAE+C+F,GAA/C+F,aAA+CA,EAEvB/F,EAAxBD,QAAwBA,EA1BZC,EAAZC,cAA4B,OAChBD,EAAZtE,cAAiCqJ,GACrB/E,EAAZrE,SAA6BoJ,GAiBjB/E,EAAZ6H,SAAuB,IACX7H,EAAZ8H,WAAyB,IAQrB9H,EAAKI,SA4DT,MA1FmCvG,GAAnC+N,EAAA1I,GAOE7E,OAAFwI,eACM+E,EADNxN,UAAA,cAAE,WACuB,MAAOH,MAAK6N,gBACnC,SAAW1M,GACTnB,KAAK6N,WAAa1M,GAAS,IAC3BnB,KAAK8N,iDAGP1N,OAAFwI,eACM+E,EADNxN,UAAA,YAAE,WACqB,MAAOH,MAAK4N,cACjC,SAASzM,GACPnB,KAAK4N,SAAWzM,GAAS,IACzBnB,KAAK8N,iDAePH,EAAFxN,UAAA4N,SAAE,WACM/N,KAAKgO,gBACPhO,KAAK8F,QAAQsC,WAAWpI,KAAKgO,cAAe,UACzC1F,KAAKC,EAAAA,UAAUvI,KAAKwI,iBACpBC,UAAUzI,KAAK0I,eAAeC,KAAK3I,OACtCA,KAAK8F,QAAQsC,WAAWpI,KAAKqI,cAAe,gBACzCC,KAAKC,EAAAA,UAAUvI,KAAKwI,iBACpBC,UAAUzI,KAAK8N,cAAcnF,KAAK3I,SAQ/B2N,EAAZxN,UAAAuI,eAAE,SAAyBY,GAC3B,GAAU9F,GAAiB8F,EAAQnI,MACzB8M,EAAczK,EAAOhC,MAAM,IACjCxB,MAAKyB,UAAYwM,EAAY,GAC7BjO,KAAK0B,SAA0BoJ,KAAnBmD,EAAY,IAAuC,SAAnBA,EAAY,GACxDjO,KAAKkJ,iBAIGyE,EAAZxN,UAAAoJ,gBAAE,SAA0BpI,GAC5B,GAAU+M,IAAwD,IAAtClO,KAAK8L,aAAaoC,oBACnBpD,KAAnB9K,KAAKyB,YACPzB,KAAKyB,UAAYzB,KAAKmO,qBAAqBnO,KAAkB,cAAGkO,QAEhDpD,KAAd9K,KAAK0B,OACP1B,KAAK0B,KAAO1B,KAAKuN,QAAQvN,KAAkB,eAEjD,IAAUyB,GAAYzB,KAAKyB,UACjB2M,EAAe3M,EAAU4M,WAAW,OACpCd,EAAUvN,KAAK0B,IACjB0M,IAAgBb,EAClBvN,KAAKiG,WAAaqI,EACTF,IAAiBb,EAC1BvN,KAAKiG,WAAasI,GACRH,GAAgBb,EAC1BvN,KAAKiG,WAAauI,EACRJ,GAAiBb,IAC3BvN,KAAKiG,WAAawI,EAExB,IAAUvC,GAAQK,OAAOpL,GAAOuN,QAAQ,IAAK,IACnCC,EAAQC,EAAAA,cAAc1C,EAAOlM,KAAK4N,SAAU5N,KAAK6N,WACvD7N,MAAKuK,UAAUoE,EAAMxC,KAAK,MAAO1K,UAArCA,EAAgD8L,QAAhDA,KAIYI,EAAZxN,UAAA2N,cAAE,WACF,GAAUe,GAAiB7O,KAAK6O,cAC5B,QAAuB/D,KAAnB+D,EAA8B,CACtC,GAAYF,GAAQC,EAAAA,cAAcC,EAAiB,GAAI7O,KAAK4N,SAAU5N,KAAK6N,WACrE7N,MAAK8F,QAAQgJ,cAAc9O,KAAKqI,cAAerI,KAAKgG,cAAe2I,EAAMxC,KAAK,uBAxFpF/G,KAACgB,EAAAA,gDAlMDhB,KAAmBiB,EAAAA,aAKnBjB,KAAEkB,EAAAA,aAwNFlB,SAAA0F,GAAA0C,aAAApI,KAAeqI,EAAAA,OAAfnI,MAAsBoI,EAAAA,mBACtBtI,KAA4ByG,IArN5BzG,KAAEmB,EAAAA,qCAiMFyF,SAAA5G,KAAG2J,EAAAA,MAAHzJ,MAAS,cAOTyG,OAAA3G,KAAG2J,EAAAA,MAAHzJ,MAAS,aA4ETqI,GA1FmCnH,EAAAA,gBA4FnCwI,EAAA,SAAA/J,GAAA,QAAA+J,KAAA,GAAAjJ,GAAA,OAAAd,GAAAA,EAAAF,MAAA/E,KAAAU,YAAAV,WAEY+F,GAAZN,OAAqBA,IACrB,MAF0C7F,GAA1CoP,EAAA/J,kBADAG,KAACgB,EAAAA,UAADd,OAAYG,OAAZA,EAAoBiB,SA1GH,+NA6GjBsI,GAF0CrB,GAIpCY,EAA6C,GAAI5H,KACjD8H,EAAgD,GAAI9H,KACpD2H,EAAiD,GAAI3H,KACrD6H,EAAoD,GAAI7H,KC9R9DsI,EAAA,SAAAhK,GAAA,QAAAgK,oDAhBA,MAiB2CrP,GAA3CqP,EAAAhK,GACEgK,EAAF9O,UAAA+E,YAAE,SAAY/D,GACV,OAAQ+N,MAAQ/N,GAASgO,SAAShO,EAAO,KAAQ,+GAHrDiE,KAACC,EAAAA,WAADC,OAAaC,WAAY,WAhBzB0J,GAiB2CzJ,EAAAA,cAMrCC,GACJ,cAAe,iBAAkB,iBAAkB,iBACnD,iBAAkB,iBAAkB,oBAAqB,oBACzD,oBAAqB,oBAAqB,oBAAqB,oBAC/D,oBAAqB,qBAcvB2J,EAAA,SAAAnK,GAKE,QAAFmK,GAAczJ,EACAC,EACAC,EACAC,GAHZ,GAAFC,GAIId,EAJJH,KAAA9E,KAIU2F,EAAOE,EAAcD,EAAYE,IAJ3C9F,WAFY+F,GAAZC,cAA4B,aAUhBD,EAAZE,WAAyBoJ,EAHrBtJ,EAAKI,SAIT,MAbwCvG,GAAxCwP,EAAAnK,kBADAG,KAACgB,EAAAA,gDAlCDhB,KAAmBiB,EAAAA,aAKnBjB,KAAEkB,EAAAA,aAoCFlB,KAA4B6J,IAnC5B7J,KAAEmB,EAAAA,mBA0CF6I,GAbwC5I,EAAAA,gBAelC6I,EAA+C,GAAI1I,KAEzD2I,EAAA,SAAArK,GAAA,QAAAqK,KAAA,GAAAvJ,GAAA,OAAAd,GAAAA,EAAAF,MAAA/E,KAAAU,YAAAV,WAEY+F,GAAZN,OAAqBA,IACrB,MAF+C7F,GAA/C0P,EAAArK,kBADAG,KAACgB,EAAAA,UAADd,OAAYoB,SA9BK,iSA8BKjB,OAAtBA,MAGA6J,GAF+CF,GCnC/CG,EAAA,SAAAtK,GAAA,QAAAsK,oDAzBA,MA0B4C3P,GAA5C2P,EAAAtK,GACEsK,EAAFpP,UAAA+E,YAAE,SAAYsK,EAAgB7L,QACX,MAAX6L,IACFA,EAAS,IAEf,IAAU/C,GAAYF,OAAOiD,GAAQtN,QAAQ,MAAQ,CACpCqK,QAAOiD,GAAQtN,QAAQ,OAAS,GAC/BuK,GAAcvC,OAAOsF,KACjCA,GAAkB,IAExB,IAAUC,GAAsB9L,EAAO+L,MAAQ,eAAiB,aAI5D,OAHgCzN,GAAiB0B,EAAOH,SAA5DpC,KACOA,EAACqO,GAAsB,GAAGD,EADjCpO,IAC8C0F,aAAc,GAAG0I,8GAb/DpK,KAACC,EAAAA,WAADC,OAAaC,WAAY,WAzBzBgK,GA0B4C/J,EAAAA,cAkBtCC,GACJ,eAAgB,kBAAmB,kBAAmB,kBACtD,kBAAmB,kBAAmB,qBAAsB,qBAC5D,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,sBAaxBkK,EAAA,SAAA1K,GAIE,QAAF0K,GAAchK,EACUnD,EACVqD,EACAC,EACAiE,GAJZ,GAAFhE,GAKId,EALJH,KAAA9E,KAKU2F,EAAOE,EAAckE,EAAQjE,IALvC9F,WACwB+F,GAAxBvD,eAAwBA,EAHZuD,EAAZC,cAA4B,cAQxBD,EAAKI,MAAMJ,EAAKvD,eAAe0F,SAE3BnC,EAAKiI,eACPjI,EAAKD,QACFsC,WAAWrC,EAAKiI,cAAe,cAC/B1F,KAAKC,EAAAA,UAAUxC,EAAKyC,iBACpBC,UAAU1C,EAAKmD,cAAcP,KAAK5C,MA4B3C,MA3CyCnG,GAAzC+P,EAAA1K,GA4BY0K,EAAZxP,UAAAoJ,gBAAE,SAA0BpI,OAA5B,KAAAA,IAA4BA,EAA5B,GAEA,IAAUqC,GAASxD,KAAKmO,qBAAqBnO,KAAkB,eAAG,GACxD0P,EAAsC,QAA9B1P,KAAKwC,eAAerB,KACnB,SAAXqC,GAAoBkM,EACtB1P,KAAKiG,WAAa2J,GACE,QAAXpM,GAAqBkM,EAEV,WAAXlM,GAAuBkM,EAChC1P,KAAKiG,WAAa4J,GACE,WAAXrM,GAAwBkM,IACjC1P,KAAKiG,WAAa6J,IAJlB9P,KAAKiG,WAAa8J,GAMpB/P,KAAKuK,UAAUpJ,EAAQ,IAAKqC,OAAhCA,EAAwCkM,MAAxCA,oBA1CAtK,KAACgB,EAAAA,gDAtDDhB,KAAmBiB,EAAAA,aACnBjB,KAAQuG,EAAAA,iBA2DRvG,KAA4BmK,IAzD5BnK,KAAEmB,EAAAA,kBAIFnB,KAAEkB,EAAAA,cA2FFqJ,GA3CyCnJ,EAAAA,gBA6CzCwJ,EAAA,SAAA/K,GAAA,QAAA+K,KAAA,GAAAjK,GAAA,OAAAd,GAAAA,EAAAF,MAAA/E,KAAAU,YAAAV,WAEY+F,GAAZN,OAAqBA,IACrB,MAFgD7F,GAAhDoQ,EAAA/K,kBADAG,KAACgB,EAAAA,UAADd,OAAYoB,SAzDK,+SAyDKjB,OAAtBA,MAGAuK,GAFgDL,GAI1CC,GAAsD,GAAIjJ,KAC1DkJ,GAAyD,GAAIlJ,KAC7DoJ,GAAsD,GAAIpJ,KAC1DmJ,GAAyD,GAAInJ,KCnGnEsJ,GAAA,SAAAhL,GAAA,QAAAgL,oDAhBA,MAiB2CrQ,GAA3CqQ,EAAAhL,GACEgL,EAAF9P,UAAA+E,YAAE,SAAYC,GACVA,EAAQA,GAAS,SACrB,IAAU+K,KAGN,QAAQ/K,GACN,IAAK,QACH+K,EAAO,cAAgB,YACvB,MACF,KAAK,MACHA,EAAO,cAAgB,UACvB,MACF,SACEA,EAAO,cAAgB/K,EAI3B,MAAO+K,8GAnBX9K,KAACC,EAAAA,WAADC,OAAaC,WAAY,WAhBzB0K,GAiB2CzK,EAAAA,cAsBrCC,IACJ,cAAe,iBAAkB,iBAAkB,iBACnD,iBAAkB,iBAAkB,oBAAqB,oBACzD,oBAAqB,oBAAqB,oBAAqB,oBAC/D,oBAAqB,qBAcvB0K,GAAA,SAAAlL,GAKE,QAAFkL,GAAcxK,EACAC,EACAC,EACAC,GAHZ,GAAFC,GAIId,EAJJH,KAAA9E,KAIU2F,EAAOE,EAAcD,EAAYE,IAJ3C9F,WAFY+F,GAAZC,cAA4B,aAUhBD,EAAZE,WAAyBmK,GAHrBrK,EAAKI,SAIT,MAbwCvG,GAAxCuQ,EAAAlL,kBADAG,KAACgB,EAAAA,gDAlDDhB,KAAmBiB,EAAAA,aAMnBjB,KAAEkB,EAAAA,aAmDFlB,KAA4B6K,KAvD5B7K,KAAEmB,EAAAA,mBA8DF4J,GAbwC3J,EAAAA,gBAelC4J,GAA+C,GAAIzJ,KAEzD0J,GAAA,SAAApL,GAAA,QAAAoL,KAAA,GAAAtK,GAAA,OAAAd,GAAAA,EAAAF,MAAA/E,KAAAU,YAAAV,WAEY+F,GAAZN,OAAqBA,KACrB,MAF+C7F,GAA/CyQ,EAAApL,kBADAG,KAACgB,EAAAA,UAADd,OAAYoB,SA9BK,iSA8BKjB,OAAtBA,OAGA4K,GAF+CF,IC5DzCG,IACJhN,OAAU,EACViN,MAAS,OACTC,OAAU,OACVxD,YAAa,OACbC,aAAc,QAGhBwD,GAAA,SAAAxL,GAAA,QAAAwL,oDAxBA,MAyB0C7Q,GAA1C6Q,EAAAxL,GACEwL,EAAFtQ,UAAA+E,YAAE,SAAYwL,GACV,MAAOJ,+GAHXlL,KAACC,EAAAA,WAADC,OAAaC,WAAY,WAxBzBkL,GAyB0CjL,EAAAA,cAY1CmL,GAAA,SAAA1L,GAEE,QAAF0L,GAAchL,EACAC,EACAC,EACAC,GAHZ,GAAFC,GAIId,EAJJH,KAAA9E,KAIU2F,EAAOE,EAAcD,EAAYE,IAJ3C9F,WAQY+F,GAAZE,WAAyB2K,GAHrB7K,EAAKwE,UAAU,MAInB,MAVuC3K,GAAvC+Q,EAAA1L,kBADAG,KAACgB,EAAAA,UAADd,OAAYoB,SAAU,iEA9BtBtB,KAAmBiB,EAAAA,aAKnBjB,KAAEkB,EAAAA,aA6BFlB,KAA4BqL,KA5B5BrL,KAAEmB,EAAAA,mBAmCFoK,GAVuCnK,EAAAA,gBAYjCoK,GAA8C,GAAIjK,KCxBxDkK,GAAA,SAAA5L,GAAA,QAAA4L,oDA1BA,MA2B6CjR,GAA7CiR,EAAA5L,GACE4L,EAAF1Q,UAAA+E,YAAE,SAAY4L,EAAenN,GAC7B,GAAUkJ,MAA2BzL,EAAwB0P,EAAMtP,MAAM,KAAnCuP,EAAtC3P,EAAA,GAAgD4P,EAAhD5P,EAAA,EAGI,QAAQ2P,GACN,IAAK,SACHlE,EAAI,mBAAqB,QACzB,MACF,KAAK,eACHA,EAAI,mBAAqB,cACzB,MACF,KAAK,gBACHA,EAAI,mBAAqB,eACzB,MACF,KAAK,eACHA,EAAI,mBAAqB,cACzB,MACF,KAAK,MACL,IAAK,WACHA,EAAI,mBAAqB,UACzB,MACF,KAAK,QACL,IAAK,aACL,QACEA,EAAI,mBAAqB,aAK7B,OAAQmE,GACN,IAAK,QACL,IAAK,aACHnE,EAAI,eAAiBA,EAAI,iBAAmB,YAC5C,MACF,KAAK,SACHA,EAAI,eAAiBA,EAAI,iBAAmB,QAC5C,MACF,KAAK,MACL,IAAK,WACHA,EAAI,eAAiBA,EAAI,iBAAmB,UAC5C,MACF,KAAK,gBACHA,EAAI,iBAAmB,gBACvBA,EAAI,eAAiB,SACrB,MACF,KAAK,eACHA,EAAI,iBAAmB,eACvBA,EAAI,eAAiB,SACrB,MACF,KAAK,WACHA,EAAI,iBAAmB,UACvBA,EAAI,eAAiB,UACrB,MACF,KAAK,UACL,QACEA,EAAI,eAAiBA,EAAI,iBAAmB,UAIhD,MAAO7I,GAAa6I,GAClB1K,QAAYwB,EAAOhC,OAAS,cAAgB,OAC5CU,iBAAmBsB,EAAOH,OAC1BpB,aAAe,aACf0K,YAA2B,YAAdkE,EACV/O,EAAiB0B,EAAOH,QAAmB,KAAT,OAAgB,KACrDuJ,aAA4B,YAAdiE,GACZ/O,EAAiB0B,EAAOH,QAAU,OAAgB,kHApE1D4B,KAACC,EAAAA,WAADC,OAAaC,WAAY,WA1BzBsL,GA2B6CrL,EAAAA,cAwEvCC,IACJ,gBAAiB,mBAAoB,mBAAoB,mBACzD,mBAAoB,mBAAoB,sBAAuB,sBAC/D,sBAAuB,sBAAuB,sBAAuB,sBACrE,sBAAuB,uBAkBzBwL,GAAA,SAAAhM,GAME,QAAFgM,GAActL,EACAC,EACAC,EACAC,GAHZ,GAAFC,GAIId,EAJJH,KAAA9E,KAIU2F,EAAOE,EAAcD,EAAYE,IAJ3C9F,WAJY+F,GAAZC,cAA4B,eAChBD,EAAZvC,OAAqB,MACTuC,EAAZpE,QAAqB,EAOjBoE,EAAKI,OACLJ,EAAKD,QAAQsC,WAAWrC,EAAKsC,cAAe,UACzCC,KAAKC,EAAAA,UAAUxC,EAAKyC,iBACpBC,UAAU1C,EAAK2C,eAAeC,KAAK5C,MA6C1C,MA1D0CnG,GAA1CqR,EAAAhM,GAuBYgM,EAAZ9Q,UAAAoJ,gBAAE,SAA0BpI,GAC5B,GAAUqC,GAASxD,KAAKwD,QAAU,MACxB7B,EAAS3B,KAAK2B,MACL,SAAX6B,GAAoB7B,EACtB3B,KAAKiG,WAAaiL,GACE,QAAX1N,GAAqB7B,EAEV,gBAAX6B,GAA4B7B,EACrC3B,KAAKiG,WAAakL,GACE,gBAAX3N,GAA6B7B,EAElB,WAAX6B,GAAuB7B,EAChC3B,KAAKiG,WAAamL,GACE,WAAX5N,GAAwB7B,EAEb,mBAAX6B,GAA+B7B,EACxC3B,KAAKiG,WAAaoL,GACE,mBAAX7N,GAAgC7B,IACzC3B,KAAKiG,WAAaqL,IAJlBtR,KAAKiG,WAAasL,GAJlBvR,KAAKiG,WAAauL,GAJlBxR,KAAKiG,WAAawL,GAcpBzR,KAAKuK,UAAUpJ,GAAQqC,OAA3BA,EAAmC7B,OAAnCA,KAMYsP,EAAZ9Q,UAAAuI,eAAE,SAAyBY,GAAzB,GAAFvD,GAAA/F,KACU0R,EAAuBpI,EAAQnI,MAAMK,MAAM,IACjDxB,MAAKwD,OAASkO,EAAW,GACzB1R,KAAK2B,OAAS2H,EAAQnI,MAAMwQ,SAAS,UAChC/P,EAAcC,KAAI,SAACC,GAAK,MAAAA,KAAMiE,EAAKvC,WACtCxD,KAAKwD,OAAS,OAEhBxD,KAAKkJ,gCAzDT9D,KAACgB,EAAAA,gDAlHDhB,KAAmBiB,EAAAA,aAKnBjB,KAAEkB,EAAAA,aAqHFlB,KAA4ByL,KApH5BzL,KAAEmB,EAAAA,mBAuKF0K,GA1D0CzK,EAAAA,gBA4D1CoL,GAAA,SAAA3M,GAAA,QAAA2M,KAAA,GAAA7L,GAAA,OAAAd,GAAAA,EAAAF,MAAA/E,KAAAU,YAAAV,WAEY+F,GAAZN,OAAqBA,KACrB,MAFiD7F,GAAjDgS,EAAA3M,kBADAG,KAACgB,EAAAA,UAADd,OAAYoB,SA7EK,6TA6EKjB,OAAtBA,OAGAmM,GAFiDX,IAI3CQ,GAA2D,GAAI9K,KAC/D4K,GAAyD,GAAI5K,KAC7D6K,GAA8D,GAAI7K,KAClE2K,GAA4D,GAAI3K,KAChEuK,GAAiE,GAAIvK,KACrEyK,GAA+D,GAAIzK,KACnEwK,GAAoE,GAAIxK,KACxE0K,GAAkE,GAAI1K,KC7KtEkL,IACJpL,EACAmF,EACAgG,GACAtC,EACAU,EACAW,GACAN,GACArB,GASF8C,GAAA,WAAA,QAAAA,MAMA,sBANA1M,KAAC2M,EAAAA,SAADzM,OACE0M,SAAUC,EAAAA,WAAYC,EAAAA,YACtBC,aAAF7R,EAAoBuR,IAClBO,QAAF9R,EAAeuR,QAGfC"}