@fundamental-ngx/core 0.34.3-rc.20 → 0.34.3-rc.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/action-bar/package.json +1 -1
- package/action-sheet/package.json +1 -1
- package/alert/package.json +1 -1
- package/avatar/package.json +1 -1
- package/avatar-group/package.json +1 -1
- package/bar/package.json +1 -1
- package/breadcrumb/package.json +1 -1
- package/busy-indicator/package.json +1 -1
- package/button/package.json +1 -1
- package/calendar/package.json +1 -1
- package/card/package.json +1 -1
- package/carousel/package.json +1 -1
- package/checkbox/package.json +1 -1
- package/combobox/package.json +1 -1
- package/date-picker/package.json +1 -1
- package/datetime/package.json +1 -1
- package/datetime-picker/package.json +1 -1
- package/dialog/package.json +1 -1
- package/dynamic-page/package.json +1 -1
- package/dynamic-side-content/package.json +1 -1
- package/esm2020/fixed-card-layout/fixed-card-layout.component.mjs +19 -4
- package/facets/package.json +1 -1
- package/feed-input/package.json +1 -1
- package/feed-list-item/package.json +1 -1
- package/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs +19 -3
- package/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs +18 -3
- package/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
- package/file-uploader/package.json +1 -1
- package/fixed-card-layout/esm2020/fixed-card-layout.component.mjs +19 -4
- package/fixed-card-layout/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs +19 -3
- package/fixed-card-layout/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
- package/fixed-card-layout/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs +18 -3
- package/fixed-card-layout/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
- package/fixed-card-layout/fixed-card-layout.component.d.ts +3 -1
- package/fixed-card-layout/package.json +1 -1
- package/flexible-column-layout/package.json +1 -1
- package/form/package.json +1 -1
- package/formatted-text/package.json +1 -1
- package/grid-list/package.json +1 -1
- package/icon/package.json +1 -1
- package/illustrated-message/package.json +1 -1
- package/infinite-scroll/package.json +1 -1
- package/info-label/package.json +1 -1
- package/inline-help/package.json +1 -1
- package/input-group/package.json +1 -1
- package/layout-grid/package.json +1 -1
- package/layout-panel/package.json +1 -1
- package/link/package.json +1 -1
- package/list/package.json +1 -1
- package/menu/package.json +1 -1
- package/message-box/package.json +1 -1
- package/message-strip/package.json +1 -1
- package/message-toast/package.json +1 -1
- package/micro-process-flow/package.json +1 -1
- package/mobile-mode/package.json +1 -1
- package/multi-input/package.json +1 -1
- package/nested-list/package.json +1 -1
- package/notification/package.json +1 -1
- package/object-identifier/package.json +1 -1
- package/object-marker/package.json +1 -1
- package/object-number/package.json +1 -1
- package/object-status/package.json +1 -1
- package/package.json +1 -1
- package/pagination/package.json +1 -1
- package/panel/package.json +1 -1
- package/popover/package.json +1 -1
- package/product-switch/package.json +1 -1
- package/progress-indicator/package.json +1 -1
- package/quick-view/package.json +1 -1
- package/radio/package.json +1 -1
- package/rating-indicator/package.json +1 -1
- package/resizable-card-layout/package.json +1 -1
- package/scroll-spy/package.json +1 -1
- package/scrollbar/package.json +1 -1
- package/segmented-button/package.json +1 -1
- package/select/package.json +1 -1
- package/shared/package.json +1 -1
- package/shellbar/package.json +1 -1
- package/side-navigation/package.json +1 -1
- package/slider/package.json +1 -1
- package/split-button/package.json +1 -1
- package/splitter/package.json +1 -1
- package/status-indicator/package.json +1 -1
- package/step-input/package.json +1 -1
- package/switch/package.json +1 -1
- package/table/package.json +1 -1
- package/tabs/package.json +1 -1
- package/text/package.json +1 -1
- package/tile/package.json +1 -1
- package/time/package.json +1 -1
- package/time-picker/package.json +1 -1
- package/timeline/package.json +1 -1
- package/title/package.json +1 -1
- package/token/package.json +1 -1
- package/toolbar/package.json +1 -1
- package/tree/package.json +1 -1
- package/upload-collection/package.json +1 -1
- package/utils/package.json +1 -1
- package/vertical-navigation/package.json +1 -1
- package/wizard/package.json +1 -1
package/action-bar/package.json
CHANGED
package/alert/package.json
CHANGED
package/avatar/package.json
CHANGED
package/bar/package.json
CHANGED
package/breadcrumb/package.json
CHANGED
package/button/package.json
CHANGED
package/calendar/package.json
CHANGED
package/card/package.json
CHANGED
package/carousel/package.json
CHANGED
package/checkbox/package.json
CHANGED
package/combobox/package.json
CHANGED
package/date-picker/package.json
CHANGED
package/datetime/package.json
CHANGED
package/dialog/package.json
CHANGED
|
@@ -15,6 +15,7 @@ const PX_IN_REM = 16;
|
|
|
15
15
|
const CARD_MINIMUM_WIDTH = 320; // 320px = 20rem
|
|
16
16
|
const CARD_GAP_WIDTH = 16; // 16px = 1rem
|
|
17
17
|
const DRAG_START_DELAY = 200; // in ms
|
|
18
|
+
const MAX_COLUMNS = 10;
|
|
18
19
|
let cardRank = 1;
|
|
19
20
|
export class CardDefinitionDirective {
|
|
20
21
|
/** @hidden */
|
|
@@ -52,6 +53,8 @@ export class FixedCardLayoutComponent {
|
|
|
52
53
|
this._rtlService = _rtlService;
|
|
53
54
|
/** Drag start delay in milliseconds, default to 200ms for safe scrolling on mobile with touchscreen */
|
|
54
55
|
this.dragStartDelay = DRAG_START_DELAY;
|
|
56
|
+
/** Limit the number of columns. Default is 10. */
|
|
57
|
+
this.maxColumns = MAX_COLUMNS;
|
|
55
58
|
/** Event to emit, when layout changes */
|
|
56
59
|
this.layoutChange = new EventEmitter();
|
|
57
60
|
/** Event to emit on Card dragged and dropped */
|
|
@@ -145,7 +148,13 @@ export class FixedCardLayoutComponent {
|
|
|
145
148
|
}
|
|
146
149
|
/** @hidden */
|
|
147
150
|
ngOnChanges(changes) {
|
|
148
|
-
if (
|
|
151
|
+
if (!this._cards?.length) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
if ('maxColumns' in changes) {
|
|
155
|
+
this.updateLayout();
|
|
156
|
+
}
|
|
157
|
+
else if ('columnsWidthConfig' in changes) {
|
|
149
158
|
this._setColumnsWidth();
|
|
150
159
|
}
|
|
151
160
|
}
|
|
@@ -163,7 +172,11 @@ export class FixedCardLayoutComponent {
|
|
|
163
172
|
}
|
|
164
173
|
/** Distribute cards on window resize */
|
|
165
174
|
updateLayout() {
|
|
166
|
-
|
|
175
|
+
if (!this._cards.length) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
const possibleNumberOfColumns = getNumberOfColumns(this._availableWidth, this.cardMinimumWidth);
|
|
179
|
+
this._numberOfColumns = Math.min(possibleNumberOfColumns, this._cards.length, this.maxColumns || MAX_COLUMNS, MAX_COLUMNS);
|
|
167
180
|
this.layoutChange.emit({
|
|
168
181
|
numberOfColumns: this._numberOfColumns,
|
|
169
182
|
screenSize: this._availableWidth
|
|
@@ -317,7 +330,7 @@ export class FixedCardLayoutComponent {
|
|
|
317
330
|
}
|
|
318
331
|
}
|
|
319
332
|
FixedCardLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: FixedCardLayoutComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
320
|
-
FixedCardLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: FixedCardLayoutComponent, selector: "fd-fixed-card-layout", inputs: { disableDragDrop: "disableDragDrop", dragStartDelay: "dragStartDelay", cardMinimumWidth: "cardMinimumWidth", columnsWidthConfig: "columnsWidthConfig" }, outputs: { layoutChange: "layoutChange", cardDraggedDropped: "cardDraggedDropped" }, host: { listeners: { "keydown": "handleKeydown($event)" }, classAttribute: "fd-fixed-card-layout" }, queries: [{ propertyName: "_cards", predicate: CardDefinitionDirective }], viewQueries: [{ propertyName: "_layout", first: true, predicate: ["layout"], descendants: true }, { propertyName: "_cardContainers", predicate: FixedCardLayoutItemComponent, descendants: true }, { propertyName: "_cardWrappers", predicate: ["dropList"], descendants: true, read: CdkDropList }], usesOnChanges: true, ngImport: i0, template: "<div\n #layout\n cdkDropListGroup\n fdDndKeyboardGroup\n class=\"fd-fixed-card-layout__card-layout fd-fixed-card-layout__card-layout--columns-{{ this._numberOfColumns }}\"\n [style.height]=\"_containerHeight + 'px'\"\n [groups]=\"_cardColumns\"\n orientation=\"horizontal\"\n [customMoveFn]=\"_customMoveFn\"\n [customTransferFn]=\"_customTransferFn\"\n [disableKeyboardDragDrop]=\"disableDragDrop\"\n [cdkDropListGroupDisabled]=\"disableDragDrop\"\n [attr.dir]=\"_dir\"\n>\n <div\n #dropList\n *ngFor=\"let card of _cardsArray; let cardIndex = index\"\n cdkDropList\n cdkDropListSortingDisabled\n class=\"fd-fixed-card-layout__card\"\n [class.fd-fixed-card-layout__card--single]=\"_singleItemColumns.has(card.fdCardDef)\"\n [style.min-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [style.max-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [cdkDropListData]=\"cardIndex\"\n [cdkDropListEnterPredicate]=\"_enterPredicate\"\n (cdkDropListEntered)=\"_onDropListEntered($event)\"\n (cdkDropListExited)=\"_onDropListExited()\"\n >\n <div\n cdkDrag\n fdDndKeyboardItem\n tabindex=\"0\"\n cdkDragPreviewClass=\"fd-fixed-card-layout__card-preview\"\n [cdkDragData]=\"card\"\n [cdkDragStartDelay]=\"dragStartDelay\"\n [itemIndex]=\"_itemIndexes.get(card.fdCardDef)\"\n [groupIndex]=\"_groupIndexes.get(card.fdCardDef)\"\n (cdkDragDropped)=\"_onDragDropped($event)\"\n (cdkDragStarted)=\"_setPlaceholderStyle(false)\"\n >\n <fd-fixed-card-layout-item>\n <ng-container *ngTemplateOutlet=\"card?.template\"> </ng-container>\n </fd-fixed-card-layout-item>\n\n <div *cdkDragPlaceholder class=\"fd-fixed-card-layout__card-placeholder\" [style]=\"_placeholderMargin\">\n <ng-container *ngTemplateOutlet=\"card?.template\"></ng-container>\n </div>\n </div>\n </div>\n\n <ng-container *ngFor=\"let column of _cardColumns; let last = last; let index = index\">\n <div *ngIf=\"!last\" class=\"fd-fixed-card-layout__clearfix\" [style.order]=\"index + 1\"></div>\n </ng-container>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.0-rc.8\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-fixed-card-layout{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0}.fd-fixed-card-layout:after,.fd-fixed-card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;margin-left:-1rem;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap;flex-direction:column;margin-top:-1rem}.fd-fixed-card-layout__card-layout:after,.fd-fixed-card-layout__card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card-layout{margin-right:-1rem;margin-left:0}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card{width:50%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(2n){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(2n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card{width:33.3333333333%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card{width:25%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card{width:20%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card{width:16.6666666667%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card{width:14.2857142857%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card{width:12.5%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card{width:11.1111111111%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n){order:9}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card{width:10%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n){order:10}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+9){order:9}.fd-fixed-card-layout__card,.fd-fixed-card-layout__card-placeholder{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;min-width:20rem;min-height:.0625rem}.fd-fixed-card-layout__card-placeholder:after,.fd-fixed-card-layout__card-placeholder:before,.fd-fixed-card-layout__card:after,.fd-fixed-card-layout__card:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{padding-left:1rem;order:1;padding-top:1rem}.fd-fixed-card-layout__card[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card{padding-right:1rem;padding-left:0}.fd-fixed-card-layout__card--single{flex-basis:100%}.fd-fixed-card-layout__card:empty{padding-top:0}.fd-fixed-card-layout__card-placeholder{opacity:.3;border:.125rem dashed var(--sapContent_DragAndDropActiveColor);cursor:grabbing}.fd-fixed-card-layout__card-preview{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;padding:0;margin:0;border:0;box-sizing:border-box;border-radius:var(--sapElement_BorderCornerRadius);box-shadow:var(--sapContent_Shadow2)}.fd-fixed-card-layout__card-preview:after,.fd-fixed-card-layout__card-preview:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__clearfix{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;width:0;flex-basis:100%}.fd-fixed-card-layout__clearfix:after,.fd-fixed-card-layout__clearfix:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{width:100%}.fd-fixed-card-layout__card-placeholder{width:100%;min-width:100%;max-width:100%}\n"], components: [{ type: i2.FixedCardLayoutItemComponent, selector: "fd-fixed-card-layout-item" }], directives: [{ type: i3.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { type: i1.DndKeyboardGroupDirective, selector: "[fdDndKeyboardGroup]", inputs: ["groups", "disableKeyboardDragDrop", "orientation", "customMoveFn", "customTransferFn"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i1.DndKeyboardItemDirective, selector: "[fdDndKeyboardItem]", inputs: ["itemIndex", "groupIndex"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
333
|
+
FixedCardLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: FixedCardLayoutComponent, selector: "fd-fixed-card-layout", inputs: { disableDragDrop: "disableDragDrop", dragStartDelay: "dragStartDelay", cardMinimumWidth: "cardMinimumWidth", columnsWidthConfig: "columnsWidthConfig", maxColumns: "maxColumns" }, outputs: { layoutChange: "layoutChange", cardDraggedDropped: "cardDraggedDropped" }, host: { listeners: { "keydown": "handleKeydown($event)" }, classAttribute: "fd-fixed-card-layout" }, queries: [{ propertyName: "_cards", predicate: CardDefinitionDirective }], viewQueries: [{ propertyName: "_layout", first: true, predicate: ["layout"], descendants: true }, { propertyName: "_cardContainers", predicate: FixedCardLayoutItemComponent, descendants: true }, { propertyName: "_cardWrappers", predicate: ["dropList"], descendants: true, read: CdkDropList }], usesOnChanges: true, ngImport: i0, template: "<div\n #layout\n cdkDropListGroup\n fdDndKeyboardGroup\n class=\"fd-fixed-card-layout__card-layout fd-fixed-card-layout__card-layout--columns-{{ this._numberOfColumns }}\"\n [style.height]=\"_containerHeight + 'px'\"\n [groups]=\"_cardColumns\"\n orientation=\"horizontal\"\n [customMoveFn]=\"_customMoveFn\"\n [customTransferFn]=\"_customTransferFn\"\n [disableKeyboardDragDrop]=\"disableDragDrop\"\n [cdkDropListGroupDisabled]=\"disableDragDrop\"\n [attr.dir]=\"_dir\"\n>\n <div\n #dropList\n *ngFor=\"let card of _cardsArray; let cardIndex = index\"\n cdkDropList\n cdkDropListSortingDisabled\n class=\"fd-fixed-card-layout__card\"\n [class.fd-fixed-card-layout__card--single]=\"_singleItemColumns.has(card.fdCardDef)\"\n [style.min-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [style.max-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [cdkDropListData]=\"cardIndex\"\n [cdkDropListEnterPredicate]=\"_enterPredicate\"\n (cdkDropListEntered)=\"_onDropListEntered($event)\"\n (cdkDropListExited)=\"_onDropListExited()\"\n >\n <div\n cdkDrag\n fdDndKeyboardItem\n tabindex=\"0\"\n cdkDragPreviewClass=\"fd-fixed-card-layout__card-preview\"\n [cdkDragData]=\"card\"\n [cdkDragStartDelay]=\"dragStartDelay\"\n [itemIndex]=\"_itemIndexes.get(card.fdCardDef)\"\n [groupIndex]=\"_groupIndexes.get(card.fdCardDef)\"\n (cdkDragDropped)=\"_onDragDropped($event)\"\n (cdkDragStarted)=\"_setPlaceholderStyle(false)\"\n >\n <fd-fixed-card-layout-item>\n <ng-container *ngTemplateOutlet=\"card?.template\"> </ng-container>\n </fd-fixed-card-layout-item>\n\n <div *cdkDragPlaceholder class=\"fd-fixed-card-layout__card-placeholder\" [style]=\"_placeholderMargin\">\n <ng-container *ngTemplateOutlet=\"card?.template\"></ng-container>\n </div>\n </div>\n </div>\n\n <ng-container *ngFor=\"let column of _cardColumns; let last = last; let index = index\">\n <div *ngIf=\"!last\" class=\"fd-fixed-card-layout__clearfix\" [style.order]=\"index + 1\"></div>\n </ng-container>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.0-rc.8\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-fixed-card-layout{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0}.fd-fixed-card-layout:after,.fd-fixed-card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;margin-left:-1rem;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap;flex-direction:column;margin-top:-1rem}.fd-fixed-card-layout__card-layout:after,.fd-fixed-card-layout__card-layout:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card-layout{margin-right:-1rem;margin-left:0}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card{width:50%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(2n){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(2n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card{width:33.3333333333%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card{width:25%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card{width:20%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card{width:16.6666666667%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card{width:14.2857142857%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card{width:12.5%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card{width:11.1111111111%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n){order:9}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card{width:10%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n){order:10}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n+9){order:9}.fd-fixed-card-layout__card,.fd-fixed-card-layout__card-placeholder{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;min-width:20rem;min-height:.0625rem}.fd-fixed-card-layout__card-placeholder:after,.fd-fixed-card-layout__card-placeholder:before,.fd-fixed-card-layout__card:after,.fd-fixed-card-layout__card:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{padding-left:1rem;order:1;padding-top:1rem}.fd-fixed-card-layout__card[dir=rtl],[dir=rtl] .fd-fixed-card-layout__card{padding-right:1rem;padding-left:0}.fd-fixed-card-layout__card--single{flex-basis:100%}.fd-fixed-card-layout__card:empty{padding-top:0}.fd-fixed-card-layout__card-placeholder{opacity:.3;border:.125rem dashed var(--sapContent_DragAndDropActiveColor);cursor:grabbing}.fd-fixed-card-layout__card-preview{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;padding:0;margin:0;border:0;box-sizing:border-box;border-radius:var(--sapElement_BorderCornerRadius);box-shadow:var(--sapContent_Shadow2)}.fd-fixed-card-layout__card-preview:after,.fd-fixed-card-layout__card-preview:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__clearfix{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;width:0;flex-basis:100%}.fd-fixed-card-layout__clearfix:after,.fd-fixed-card-layout__clearfix:before{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{width:100%}.fd-fixed-card-layout__card-placeholder{width:100%;min-width:100%;max-width:100%}\n"], components: [{ type: i2.FixedCardLayoutItemComponent, selector: "fd-fixed-card-layout-item" }], directives: [{ type: i3.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { type: i1.DndKeyboardGroupDirective, selector: "[fdDndKeyboardGroup]", inputs: ["groups", "disableKeyboardDragDrop", "orientation", "customMoveFn", "customTransferFn"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i1.DndKeyboardItemDirective, selector: "[fdDndKeyboardItem]", inputs: ["itemIndex", "groupIndex"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
321
334
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: FixedCardLayoutComponent, decorators: [{
|
|
322
335
|
type: Component,
|
|
323
336
|
args: [{ selector: 'fd-fixed-card-layout', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
@@ -333,6 +346,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
|
|
|
333
346
|
type: Input
|
|
334
347
|
}], columnsWidthConfig: [{
|
|
335
348
|
type: Input
|
|
349
|
+
}], maxColumns: [{
|
|
350
|
+
type: Input
|
|
336
351
|
}], layoutChange: [{
|
|
337
352
|
type: Output
|
|
338
353
|
}], cardDraggedDropped: [{
|
|
@@ -379,4 +394,4 @@ function adjustCardRank(draggedCard, replacedCard) {
|
|
|
379
394
|
draggedCard.fdCardDef = replacedCard.fdCardDef;
|
|
380
395
|
replacedCard.fdCardDef = draggedCardRank;
|
|
381
396
|
}
|
|
382
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZml4ZWQtY2FyZC1sYXlvdXQvZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZml4ZWQtY2FyZC1sYXlvdXQvZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFzQyxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxvQkFBb0IsRUFBZSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFFMUUsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQ3JCLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLENBQUMsZ0JBQWdCO0FBQ2hELE1BQU0sY0FBYyxHQUFH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QUFDO0FBRUQsNERBQTREO0FBQzVELFNBQVMsY0FBYyxDQUFDLFdBQW9DLEVBQUUsWUFBcUM7SUFDL0YsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztJQUM5QyxXQUFXLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7SUFDL0MsWUFBWSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQ2RrRHJhZywgQ2RrRHJhZ0Ryb3AsIENka0RyYWdFbnRlciwgQ2RrRHJvcExpc3QgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyByZXNpemVPYnNlcnZhYmxlLCBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEZpeGVkQ2FyZExheW91dEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2ZpeGVkLWNhcmQtbGF5b3V0LWl0ZW0vZml4ZWQtY2FyZC1sYXlvdXQtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHksIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuY29uc3QgUFhfSU5fUkVNID0gMTY7XG5jb25zdCBDQVJEX01JTklNVU1fV0lEVEggPSAzMjA7IC8vIDMyMHB4ID0gMjByZW1cbmNvbnN0IENBUkRfR0FQX1dJRFRIID0gMTY7IC8vIDE2cHggPSAxcmVtXG5jb25zdCBEUkFHX1NUQVJUX0RFTEFZID0gMjAwOyAvLyBpbiBtc1xuXG5sZXQgY2FyZFJhbmsgPSAxO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbZmRDYXJkRGVmXScgfSlcbmV4cG9ydCBjbGFzcyBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZSB7XG4gICAgLyoqXG4gICAgICogQmVoYXZlcyBsaWtlIHJhbmsgb2YgY2FyZC5cbiAgICAgKiBVc2VmdWwgaW4gY3JlYXRpbmcgbGF5b3V0IGFnYWluIGFmdGVyIGRyYWcgYW5kIGRyb3AuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZmRDYXJkRGVmKHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9mZENhcmREZWYgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBmZENhcmREZWYoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZkQ2FyZERlZjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZkQ2FyZERlZjogbnVtYmVyID0gY2FyZFJhbmsrKztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExheW91dCB7XG4gICAgbnVtYmVyT2ZDb2x1bW5zPzogbnVtYmVyO1xuICAgIHNjcmVlblNpemU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXJkRHJvcHBlZCB7XG4gICAgcHJldmlvdXNJbmRleDogbnVtYmVyO1xuICAgIGN1cnJlbnRJbmRleDogbnVtYmVyO1xuICAgIGxheW91dENvbHVtbnM6IG51bWJlcjtcbiAgICBpdGVtczogQ2FyZERlZmluaXRpb25EaXJlY3RpdmVbXTtcbn1cblxudHlwZSBDb2x1bW5zID0gMSB8IDIgfCAzIHwgNCB8IDUgfCA2IHwgNyB8IDggfCA5IHwgMTA7XG5cbmV4cG9ydCB0eXBlIENvbHVtbnNXaWR0aENvbmZpZyA9IHsgW0MgaW4gQ29sdW1uc10/OiBudW1iZXIgfTtcblxudHlwZSBDYXJkQ29sdW1uID0gQ2FyZERlZmluaXRpb25EaXJlY3RpdmVbXTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1maXhlZC1jYXJkLWxheW91dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpeGVkLWNhcmQtbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9maXhlZC1jYXJkLWxheW91dC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkLWZpeGVkLWNhcmQtbGF5b3V0J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgRml4ZWRDYXJkTGF5b3V0Q29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uQ2hhbmdlcywgT25EZXN0cm95XG57XG4gICAgLyoqIERyYWcgZHJvcCBiZWhhdmlvciBjYW4gYmUgZGlzYWJsZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVEcmFnRHJvcDogYm9vbGVhbjtcblxuICAgIC8qKiBEcmFnIHN0YXJ0IGRlbGF5IGluIG1pbGxpc2Vjb25kcywgZGVmYXVsdCB0byAyMDBtcyBmb3Igc2FmZSBzY3JvbGxpbmcgb24gbW9iaWxlIHdpdGggdG91Y2hzY3JlZW4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRyYWdTdGFydERlbGF5ID0gRFJBR19TVEFSVF9ERUxBWTtcblxuICAgIC8qKiBDYXJkJ3MgbWluaW11bSB3aWR0aCBpbiBwaXhlbHMuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY2FyZE1pbmltdW1XaWR0aCh2YWx1ZTogTnVtYmVySW5wdXQpIHtcbiAgICAgICAgY29uc3QgY29lcmNlZFZhbHVlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuXG4gICAgICAgIGlmIChjb2VyY2VkVmFsdWUgPCBDQVJEX01JTklNVU1fV0lEVEgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NhcmRNaW5pbXVtV2lkdGggPSBjb2VyY2VkVmFsdWU7XG5cbiAgICAgICAgLy8gSWYgY29tcG9uZW50IGlzIHJlYWR5LCBkbyB0aGUgcmVjYWxjdWxhdGlvbi5cbiAgICAgICAgaWYgKHRoaXMuX2xheW91dCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgY2FyZE1pbmltdW1XaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FyZE1pbmltdW1XaWR0aDtcbiAgICB9XG5cbiAgICAvKiogQ29uZmlnIHdpdGggdGhlIHdpZHRoIHJhdGlvcyB0aGF0IHNob3VsZCB0YWtlIGV2ZXJ5IGNvbHVtbi4gRmxleC1ncm93IHByaW5jaXBlLiBNaXNzZWQgdmFsdWVzIHNldCB0byAwLiBzKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbHVtbnNXaWR0aENvbmZpZzogQ29sdW1uc1dpZHRoQ29uZmlnO1xuXG4gICAgLyoqIEV2ZW50IHRvIGVtaXQsIHdoZW4gbGF5b3V0IGNoYW5nZXMgKi9cbiAgICBAT3V0cHV0KClcbiAgICBsYXlvdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxMYXlvdXQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxMYXlvdXQ+KCk7XG5cbiAgICAvKiogRXZlbnQgdG8gZW1pdCBvbiBDYXJkIGRyYWdnZWQgYW5kIGRyb3BwZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICBjYXJkRHJhZ2dlZERyb3BwZWQ6IEV2ZW50RW1pdHRlcjxDYXJkRHJvcHBlZD4gPSBuZXcgRXZlbnRFbWl0dGVyPENhcmREcm9wcGVkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKENhcmREZWZpbml0aW9uRGlyZWN0aXZlKVxuICAgIF9jYXJkczogUXVlcnlMaXN0PENhcmREZWZpbml0aW9uRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZHJlbihGaXhlZENhcmRMYXlvdXRJdGVtQ29tcG9uZW50KVxuICAgIF9jYXJkQ29udGFpbmVyczogUXVlcnlMaXN0PEZpeGVkQ2FyZExheW91dEl0ZW1Db21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKCdkcm9wTGlzdCcsIHsgcmVhZDogQ2RrRHJvcExpc3QgfSlcbiAgICBfY2FyZFdyYXBwZXJzOiBRdWVyeUxpc3Q8Q2RrRHJvcExpc3Q+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdsYXlvdXQnKVxuICAgIF9sYXlvdXQ6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jYXJkc0FycmF5OiBBcnJheTxDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiBOdW1iZXIgb2YgQ29sdW1ucyBpbiBsYXlvdXQgKi9cbiAgICBfbnVtYmVyT2ZDb2x1bW5zOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jYXJkQ29sdW1uczogQ2FyZENvbHVtbltdO1xuXG4gICAgLyoqIEBoaWRkZW4qL1xuICAgIF9jb250YWluZXJIZWlnaHQ6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuIGhhbmRsZXMgcnRsIHNlcnZpY2UgKi9cbiAgICBfZGlyID0gJ2x0cic7XG5cbiAgICAvKiogQGhpZGRlbiBmaXJzdCBudW1iZXIgaXMgdGhlIENhcmREZWZpbml0aW9uIHJhbmssIGkuZS4gaWQgKi9cbiAgICBfZ3JvdXBJbmRleGVzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuIGZpcnN0IG51bWJlciBpcyB0aGUgQ2FyZERlZmluaXRpb24gcmFuaywgaS5lLiBpZCAqL1xuICAgIF9pdGVtSW5kZXhlcyA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG5cbiAgICAvKiogQGhpZGRlbiBmaXJzdCBudW1iZXIgaXMgdGhlIENhcmREZWZpbml0aW9uIHJhbmssIGkuZS4gaWQgKi9cbiAgICBfc2luZ2xlSXRlbUNvbHVtbnMgPSBuZXcgU2V0PG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbHVtbnNXaWR0aCA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG5cbiAgICAvKiogQGhpZGRlbiBSZXR1cm4gYXZhaWxhYmxlIHdpZHRoIGZvciBmaXhlZCBjYXJkIGxheW91dCAqL1xuICAgIGdldCBfYXZhaWxhYmxlV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xheW91dC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3BsYWNlaG9sZGVyTWFyZ2luOiB7IFtrbGFzczogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ByZXZpb3VzTnVtYmVyT2ZDb2x1bW5zOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiBGb2N1c0tleU1hbmFnZXIgaW5zdGFuY2UgKi9cbiAgICBwcml2YXRlIF9rZXlib2FyZEV2ZW50c01hbmFnZXI6IEZvY3VzS2V5TWFuYWdlcjxGaXhlZENhcmRMYXlvdXRJdGVtQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FyZE1pbmltdW1XaWR0aCA9IENBUkRfTUlOSU1VTV9XSURUSDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2hvdWxkQ2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0ID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gY29tcG9uZW504oCZcyBkZXN0cnVjdGlvbiAoZm9yIHVuc3Vic2NyaWJpbmcpICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9ydGxTZXJ2aWNlOiBSdGxTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaWJlVG9SdGwoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25DYXJkc0NoYW5nZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wcm9jZXNzQ2FyZHMoKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25SZXNpemUoKTtcbiAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eVNldHVwKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVcGRhdGUgY29sdW1uIGxheW91dCB3aGVuIG9yaWVudGF0aW9uIG9mIHNjcmVlbiBjaGFuZ2VzLlxuICAgICAgICAgKiBhY3R1YWwgd2lkdGggaXMgcmV0dXJuZWQgd2hlbiB2aWV3IGlzIHN0YWJsZS4gSW4gQWZ0ZXJWaWV3SW5pdCwgY29ycmVjdCB2YWx1ZSBkb2VzIG5vdCBjb21lLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCdjb2x1bW5zV2lkdGhDb25maWcnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldENvbHVtbnNXaWR0aCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlcikge1xuICAgICAgICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRGlzdHJpYnV0ZSBjYXJkcyBvbiB3aW5kb3cgcmVzaXplICovXG4gICAgdXBkYXRlTGF5b3V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9udW1iZXJPZkNvbHVtbnMgPSBnZXROdW1iZXJPZkNvbHVtbnModGhpcy5fYXZhaWxhYmxlV2lkdGgsIHRoaXMuY2FyZE1pbmltdW1XaWR0aCk7XG5cbiAgICAgICAgdGhpcy5sYXlvdXRDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBudW1iZXJPZkNvbHVtbnM6IHRoaXMuX251bWJlck9mQ29sdW1ucyxcbiAgICAgICAgICAgIHNjcmVlblNpemU6IHRoaXMuX2F2YWlsYWJsZVdpZHRoXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLl9wcmV2aW91c051bWJlck9mQ29sdW1ucyAhPT0gdGhpcy5fbnVtYmVyT2ZDb2x1bW5zKSB7XG4gICAgICAgICAgICB0aGlzLl9wcmV2aW91c051bWJlck9mQ29sdW1ucyA9IHRoaXMuX251bWJlck9mQ29sdW1ucztcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbHVtbnMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NldENvbHVtbnNXaWR0aCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIENhbGN1bGF0ZSBjb250YWluZXIgaGVpZ2h0IGJhc2luZyBvbiB0aGUgY2FyZCB3cmFwcGVyIGNvbHVtbnMgKi9cbiAgICBfY2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0KGFkZGl0aW9uYWxTcGFjZTogbnVtYmVyID0gMCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgY29uc3Qgd3JhcHBlckNvbHVtbnMgPSB0aGlzLl9jYXJkQ29sdW1ucy5tYXAoKGNvbHVtbikgPT5cbiAgICAgICAgICAgIGNvbHVtbi5tYXAoXG4gICAgICAgICAgICAgICAgKGNhcmQpID0+IHRoaXMuX2NhcmRXcmFwcGVycy5maW5kKCh3cmFwcGVyKSA9PiB3cmFwcGVyLmdldFNvcnRlZEl0ZW1zKClbMF0uZGF0YSA9PT0gY2FyZCkuZWxlbWVudFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbnNIZWlnaHRzID0gd3JhcHBlckNvbHVtbnNcbiAgICAgICAgICAgIC5tYXAoKGNvbHVtbikgPT4gY29sdW1uLm1hcCgoY2FyZCkgPT4gY2FyZC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCkpXG4gICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IGNvbHVtbi5yZWR1Y2UoKGhlaWdodCwgY2FyZEhlaWdodCkgPT4gKGhlaWdodCArPSBjYXJkSGVpZ2h0KSwgMCkpO1xuXG4gICAgICAgIC8vICs0cHggYmVjYXVzZSBpdCdzIHRoZSB0b3AgJiBib3R0b20gYm9yZGVycyBvZiBjYXJkIHBsYWNlaG9sZGVyXG4gICAgICAgIHRoaXMuX2NvbnRhaW5lckhlaWdodCA9IE1hdGgubWF4KC4uLmNvbHVtbnNIZWlnaHRzKSArIDQgKyBhZGRpdGlvbmFsU3BhY2U7XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2VudGVyUHJlZGljYXRlID0gKF86IENka0RyYWcsIGRyb3A6IENka0Ryb3BMaXN0KTogYm9vbGVhbiA9PiB7XG4gICAgICAgIC8vIFdlIHNob3VsZCB1cGRhdGUgY29udGFpbmVyJ3MgaGVpZ2h0ICYgaXRzIGNoaWxkcmVuIHJlY3RzICh0byByZWFjdCB3aGVuIGRyYWcgbW92ZXMgaW50byB0aGUgbGlzdCkgYmVmb3JlIHdlIGVudGVyZWQgYW55IGRyb3AgbGlzdC5cbiAgICAgICAgLy8gVGhhdCdzIHdoeSBpdCdzIGRvbmUgaGVyZSBpbnN0ZWFkIG9mIGNka0Ryb3BMaXN0RW50ZXJlZC4gQXMgdGhpcyBwcmVkaWNhdGUgYmVpbmcgY2FsbGVkIG1hbnkgdGltZXMgaGVyZSBpcyB0aGUgb3B0aW1pemF0aW9uLlxuICAgICAgICBpZiAodGhpcy5fc2hvdWxkQ2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLl9zaG91bGRDYWxjdWxhdGVDb250YWluZXJIZWlnaHQgPSBmYWxzZTtcblxuICAgICAgICAgICAgLy8gUGxhY2Vob2xkZXIgZG9lc24ndCBoYXZlIG1hcmdpbiBzZXQgeWV0IGJ1dCB3ZSBuZWVkIHRvIGNvdW50IGl0XG4gICAgICAgICAgICAvLyBNYXJnaW4gd2lsbCBiZSBzZXQgb25seSBpZiB0aGVyZSBhcmUgYWxyZWFkeSBpdGVtcyBpbiBjb250YWluZXJcbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxTcGFjZSA9IGRyb3AuZ2V0U29ydGVkSXRlbXMoKS5sZW5ndGggPyBQWF9JTl9SRU0gOiAwO1xuXG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVDb250YWluZXJIZWlnaHQoYWRkaXRpb25hbFNwYWNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkRyb3BMaXN0RXhpdGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zaG91bGRDYWxjdWxhdGVDb250YWluZXJIZWlnaHQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uRHJvcExpc3RFbnRlcmVkKGV2ZW50OiBDZGtEcmFnRW50ZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVySXRlbUNhcmREZWYgPSAoZXZlbnQuY29udGFpbmVyLmdldFNvcnRlZEl0ZW1zKClbMF0uZGF0YSBhcyBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZSkuZmRDYXJkRGVmO1xuICAgICAgICBjb25zdCBkcmFnSXRlbUNhcmREZWYgPSAoZXZlbnQuaXRlbS5kYXRhIGFzIENhcmREZWZpbml0aW9uRGlyZWN0aXZlKS5mZENhcmREZWY7XG5cbiAgICAgICAgdGhpcy5fc2V0UGxhY2Vob2xkZXJTdHlsZShjb250YWluZXJJdGVtQ2FyZERlZiAhPT0gZHJhZ0l0ZW1DYXJkRGVmKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkRyYWdEcm9wcGVkKGV2ZW50OiBDZGtEcmFnRHJvcDxudW1iZXIsIG51bWJlcj4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmNvbnRhaW5lci5kYXRhID09PSBldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtb3ZlZENhcmQgPSBldmVudC5wcmV2aW91c0NvbnRhaW5lci5nZXRTb3J0ZWRJdGVtcygpWzBdLmRhdGE7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VkQ2FyZCA9IGV2ZW50LmNvbnRhaW5lci5nZXRTb3J0ZWRJdGVtcygpWzBdLmRhdGE7XG5cbiAgICAgICAgY29uc3QgbW92ZWRDYXJkQ29sdW1uID0gdGhpcy5fY2FyZENvbHVtbnMuZmluZCgoY29sdW1uKSA9PlxuICAgICAgICAgICAgY29sdW1uLmZpbmQoKGNhcmQpID0+IGNhcmQuZmRDYXJkRGVmID09PSBtb3ZlZENhcmQuZmRDYXJkRGVmKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCByZXBsYWNlZENhcmRDb2x1bW4gPSB0aGlzLl9jYXJkQ29sdW1ucy5maW5kKChjb2x1bW4pID0+XG4gICAgICAgICAgICBjb2x1bW4uZmluZCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYpXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gSWYgd2UgZHJhZ2dlZCB0aGUgY2FyZCBmcm9tIHRoZSBzYW1lIGNvbHVtbiBhcyB0aGUgY29sdW1uIHdlJ3JlIGRyb3BwaW5nIGludG9cbiAgICAgICAgLy8gVGhlcmUgbWF5IGJlIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSBvcmRlciBzaG91bGRuJ3QgY2hhbmdlIGJ1dCBzaW5jZSB0aGVyZSBhcmUgYSBkaWZmZXJlbnQgZHJvcCBsaXN0cyBpdCB3aWxsIGNoYW5nZVxuICAgICAgICAvLyBXZSBzaG91bGQgcHJldmVudCB0aGlzXG4gICAgICAgIGlmIChtb3ZlZENhcmRDb2x1bW4gPT09IHJlcGxhY2VkQ2FyZENvbHVtbiAmJiBtb3ZlZENhcmRDb2x1bW4ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICBpZiAobW92ZWRDYXJkLmZkQ2FyZERlZiA8IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYgJiYgZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSA8IGV2ZW50LmNvbnRhaW5lci5kYXRhKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobW92ZWRDYXJkLmZkQ2FyZERlZiA+IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYgJiYgZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSA+IGV2ZW50LmNvbnRhaW5lci5kYXRhKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcHJvY2Vzc0RyYWdEcm9wKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsIGV2ZW50LmNvbnRhaW5lci5kYXRhLCBtb3ZlZENhcmQsIHJlcGxhY2VkQ2FyZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gRm9yIHRoZSBrZXlib2FyZCBkcmFnJmRyb3AgZGlyZWN0aXZlICovXG4gICAgX2N1c3RvbU1vdmVGbiA9IChncm91cDogQ2FyZENvbHVtbiwgaW5kZXhGcm9tOiBudW1iZXIsIGluZGV4VG86IG51bWJlcik6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCBtb3ZlZENhcmQgPSBncm91cFtpbmRleEZyb21dO1xuICAgICAgICBjb25zdCByZXBsYWNlZENhcmQgPSBncm91cFtpbmRleFRvXTtcblxuICAgICAgICBjb25zdCBpbmRleEZyb21BcnJheSA9IHRoaXMuX2NhcmRzQXJyYXkuZmluZEluZGV4KChjYXJkKSA9PiBjYXJkLmZkQ2FyZERlZiA9PT0gbW92ZWRDYXJkLmZkQ2FyZERlZik7XG4gICAgICAgIGNvbnN0IGluZGV4VG9BcnJheSA9IHRoaXMuX2NhcmRzQXJyYXkuZmluZEluZGV4KChjYXJkKSA9PiBjYXJkLmZkQ2FyZERlZiA9PT0gcmVwbGFjZWRDYXJkLmZkQ2FyZERlZik7XG5cbiAgICAgICAgdGhpcy5fcHJvY2Vzc0RyYWdEcm9wKGluZGV4RnJvbUFycmF5LCBpbmRleFRvQXJyYXksIG1vdmVkQ2FyZCwgcmVwbGFjZWRDYXJkKTtcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gRm9yIHRoZSBrZXlib2FyZCBkcmFnJmRyb3AgZGlyZWN0aXZlICovXG4gICAgX2N1c3RvbVRyYW5zZmVyRm4gPSAocHJldkdyb3VwOiBDYXJkQ29sdW1uLCBuZXh0R3JvdXA6IENhcmRDb2x1bW4sIGluZGV4RnJvbTogbnVtYmVyLCBpbmRleFRvOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgbW92ZWRDYXJkID0gcHJldkdyb3VwW2luZGV4RnJvbV07XG4gICAgICAgIGNvbnN0IHJlcGxhY2VkQ2FyZCA9IG5leHRHcm91cFtpbmRleFRvXTtcblxuICAgICAgICBjb25zdCBpbmRleEZyb21BcnJheSA9IHRoaXMuX2NhcmRzQXJyYXkuZmluZEluZGV4KChjYXJkKSA9PiBjYXJkLmZkQ2FyZERlZiA9PT0gbW92ZWRDYXJkLmZkQ2FyZERlZik7XG4gICAgICAgIGNvbnN0IGluZGV4VG9BcnJheSA9IHRoaXMuX2NhcmRzQXJyYXkuZmluZEluZGV4KChjYXJkKSA9PiBjYXJkLmZkQ2FyZERlZiA9PT0gcmVwbGFjZWRDYXJkLmZkQ2FyZERlZik7XG5cbiAgICAgICAgdGhpcy5fcHJvY2Vzc0RyYWdEcm9wKGluZGV4RnJvbUFycmF5LCBpbmRleFRvQXJyYXksIG1vdmVkQ2FyZCwgcmVwbGFjZWRDYXJkKTtcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0UGxhY2Vob2xkZXJTdHlsZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9wbGFjZWhvbGRlck1hcmdpbiA9IHZhbHVlID8geyAnbWFyZ2luLWJvdHRvbSc6ICcxcmVtJyB9IDoge307XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQXJyYW5nZXMgY2FyZHMgb24gZHJvcCBvZiBkcmFnZ2VkIGNhcmQgKi9cbiAgICBwcml2YXRlIF9wcm9jZXNzRHJhZ0Ryb3AoXG4gICAgICAgIHByZXZJbmRleDogbnVtYmVyLFxuICAgICAgICBuZXdJbmRleDogbnVtYmVyLFxuICAgICAgICBwcmV2Q2FyZDogQ2FyZERlZmluaXRpb25EaXJlY3RpdmUsXG4gICAgICAgIG5ld0NhcmQ6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlXG4gICAgKTogdm9pZCB7XG4gICAgICAgIC8vIG1vdmVJdGVtSW5BcnJheSBmcm9tIENESyB3b24ndCB3b3JrIGFzIGl0IGNoYW5nZXMgb3JkZXIgb2Ygb3RoZXIgY2FyZHNcbiAgICAgICAgY29uc3QgcmVwbGFjZWRDYXJkID0gdGhpcy5fY2FyZHNBcnJheVtuZXdJbmRleF07XG4gICAgICAgIHRoaXMuX2NhcmRzQXJyYXlbbmV3SW5kZXhdID0gdGhpcy5fY2FyZHNBcnJheVtwcmV2SW5kZXhdO1xuICAgICAgICB0aGlzLl9jYXJkc0FycmF5W3ByZXZJbmRleF0gPSByZXBsYWNlZENhcmQ7XG5cbiAgICAgICAgYWRqdXN0Q2FyZFJhbmsocHJldkNhcmQsIG5ld0NhcmQpO1xuXG4gICAgICAgIHRoaXMuY2FyZERyYWdnZWREcm9wcGVkLmVtaXQoe1xuICAgICAgICAgICAgcHJldmlvdXNJbmRleDogcHJldkluZGV4LFxuICAgICAgICAgICAgY3VycmVudEluZGV4OiBuZXdJbmRleCxcbiAgICAgICAgICAgIGxheW91dENvbHVtbnM6IHRoaXMuX251bWJlck9mQ29sdW1ucyxcbiAgICAgICAgICAgIGl0ZW1zOiB0aGlzLl9jYXJkcy50b0FycmF5KClcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlQ29sdW1ucygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWNjZXNzaWJpbGl0eVNldHVwKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9rZXlib2FyZEV2ZW50c01hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyKHRoaXMuX2NhcmRDb250YWluZXJzKS53aXRoV3JhcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJ0bCBjaGFuZ2Ugc3Vic2NyaXB0aW9uICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9SdGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3J0bFNlcnZpY2U/LnJ0bC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpc1J0bCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZGlyID0gaXNSdGwgPyAncnRsJyA6ICdsdHInO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBMaXN0ZW4gd2luZG93IHJlc2l6ZSBhbmQgZGlzdHJpYnV0ZSBjYXJkcyBvbiBjb2x1bW4gY2hhbmdlICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25SZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHJlc2l6ZU9ic2VydmFibGUodGhpcy5fbGF5b3V0Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoNjApLCB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlTGF5b3V0KCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIExpc3RlbiBjYXJkIGNoYW5nZSBhbmQgZGlzdHJpYnV0ZSBjYXJkcyBvbiBjb2x1bW4gY2hhbmdlICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25DYXJkc0NoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FyZHMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc0NhcmRzKCk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDb2x1bW5zKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJlbmRlcnMgbGF5b3V0IG9uIGNvbHVtbiBjaGFuZ2VzICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlQ29sdW1ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0Q2FyZENvbHVtbnMoKTtcbiAgICAgICAgdGhpcy5fc2V0Q29sdW1uc1dpZHRoKGZhbHNlKTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcm9jZXNzQ2FyZHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhcmRzQXJyYXkgPSB0aGlzLl9jYXJkc1xuICAgICAgICAgICAgLnRvQXJyYXkoKVxuICAgICAgICAgICAgLnNvcnQoKGZpcnN0Q2FyZCwgc2Vjb25kQ2FyZCkgPT4gZmlyc3RDYXJkLmZkQ2FyZERlZiAtIHNlY29uZENhcmQuZmRDYXJkRGVmKTtcblxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBEaXN0cmlidXRlIGNhcmRzIGFtb25nIGNvbHVtbnMgdG8gYXJyYW5nZSB0aGVtIGluIFwiWlwiIGZsb3cgKi9cbiAgICBwcml2YXRlIF9zZXRDYXJkQ29sdW1ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZ3JvdXBJbmRleGVzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbiAgICAgICAgdGhpcy5faXRlbUluZGV4ZXMgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuICAgICAgICB0aGlzLl9zaW5nbGVJdGVtQ29sdW1ucyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbnM6IENhcmRDb2x1bW5bXSA9IG5ldyBBcnJheSh0aGlzLl9udW1iZXJPZkNvbHVtbnMpLmZpbGwoMCkubWFwKCgpID0+IG5ldyBBcnJheSgwKSk7XG5cbiAgICAgICAgdGhpcy5fY2FyZHNBcnJheS5mb3JFYWNoKChjYXJkLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyQ29sdW1uSW5kZXggPSBpICUgdGhpcy5fbnVtYmVyT2ZDb2x1bW5zO1xuICAgICAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gY29sdW1uc1tjdXJyQ29sdW1uSW5kZXhdLmxlbmd0aDtcblxuICAgICAgICAgICAgY29sdW1uc1tjdXJyQ29sdW1uSW5kZXhdLnB1c2goY2FyZCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2dyb3VwSW5kZXhlcy5zZXQoY2FyZC5mZENhcmREZWYsIGN1cnJDb2x1bW5JbmRleCk7XG4gICAgICAgICAgICB0aGlzLl9pdGVtSW5kZXhlcy5zZXQoY2FyZC5mZENhcmREZWYsIGl0ZW1JbmRleCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2NhcmRDb2x1bW5zID0gY29sdW1ucztcblxuICAgICAgICB0aGlzLl9jYXJkQ29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgIGlmIChjb2x1bW4ubGVuZ3RoID4gMCAmJiBjb2x1bW4ubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NpbmdsZUl0ZW1Db2x1bW5zLmFkZChjb2x1bW5bMF0uZmRDYXJkRGVmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRDb2x1bW5zV2lkdGgoZGV0ZWN0Q2hhbmdlcyA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29sdW1uc1dpZHRoID0gbmV3IE1hcCgpO1xuICAgICAgICBjb25zdCBjb25maWdQcmVzZW50ID1cbiAgICAgICAgICAgIHRoaXMuY29sdW1uc1dpZHRoQ29uZmlnICYmXG4gICAgICAgICAgICB0eXBlb2YgdGhpcy5jb2x1bW5zV2lkdGhDb25maWcgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmNvbHVtbnNXaWR0aENvbmZpZykubGVuZ3RoO1xuXG4gICAgICAgIGlmICghY29uZmlnUHJlc2VudCB8fCAhdGhpcy5fbGF5b3V0IHx8IHRoaXMuX251bWJlck9mQ29sdW1ucyA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZml4ZWRXaWR0aE1vZGlmaWVycyA9IGZpeFdpZHRoTW9kaWZpZXJzKHRoaXMuY29sdW1uc1dpZHRoQ29uZmlnLCB0aGlzLl9udW1iZXJPZkNvbHVtbnMpO1xuICAgICAgICBjb25zdCB0b3RhbFdpZHRoTW9kaWZpZXJzID0gZml4ZWRXaWR0aE1vZGlmaWVycy5yZWR1Y2UoKHN1bSwgd2lkdGgpID0+IChzdW0gKz0gd2lkdGgpLCAwKTtcbiAgICAgICAgY29uc3QgZnJlZVNwYWNlID0gdGhpcy5fYXZhaWxhYmxlV2lkdGggLSB0aGlzLmNhcmRNaW5pbXVtV2lkdGggKiB0aGlzLl9udW1iZXJPZkNvbHVtbnM7XG5cbiAgICAgICAgdGhpcy5fY2FyZENvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSBNYXRoLnJvdW5kKFxuICAgICAgICAgICAgICAgIHRoaXMuY2FyZE1pbmltdW1XaWR0aCArIChmcmVlU3BhY2UgLyB0b3RhbFdpZHRoTW9kaWZpZXJzKSAqIGZpeGVkV2lkdGhNb2RpZmllcnNbaW5kZXhdXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb2x1bW4uZm9yRWFjaCgoY2FyZCkgPT4gdGhpcy5fY29sdW1uc1dpZHRoLnNldChjYXJkLmZkQ2FyZERlZiwgY29sdW1uV2lkdGgpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqIEBoaWRkZW4gKi9cbmZ1bmN0aW9uIGZpeFdpZHRoTW9kaWZpZXJzKGNvbmZpZzogQ29sdW1uc1dpZHRoQ29uZmlnLCBudW1iZXJPZkNvbHVtbnM6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICBjb25zdCBtb2RpZmllcnMgPSBuZXcgQXJyYXkobnVtYmVyT2ZDb2x1bW5zKS5maWxsKDApO1xuXG4gICAgcmV0dXJuIG1vZGlmaWVycy5tYXAoKF8sIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbldpZHRoTW9kaWZpZXIgPSBjb25maWdbaW5kZXggKyAxXTtcblxuICAgICAgICBpZiAoIWNvbHVtbldpZHRoTW9kaWZpZXIgfHwgY29sdW1uV2lkdGhNb2RpZmllciA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbHVtbldpZHRoTW9kaWZpZXI7XG4gICAgfSk7XG59XG5cbi8qKiBAaGlkZGVuIFJldHVybnMgbnVtYmVyIG9mIGNvbHVtbnMgdGhhdCBjYW4gZml0IGluIGN1cnJlbnQgYXZhaWxhYmxlIHdpZHRoIGZvciBmZC1jYXJkLWxheW91dCAqL1xuZnVuY3Rpb24gZ2V0TnVtYmVyT2ZDb2x1bW5zKGNvbnRhaW5lcldpZHRoOiBudW1iZXIsIGNhcmRXaWR0aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb250YWluZXJXaWR0aCA9IGNvbnRhaW5lcldpZHRoIHx8IDE7XG4gICAgY2FyZFdpZHRoID0gY2FyZFdpZHRoIHx8IDE7XG5cbiAgICBjb25zdCBudW1iZXJPZkNhcmRzV2l0aE5vR2FwID0gTWF0aC5tYXgoTWF0aC5mbG9vcihjb250YWluZXJXaWR0aCAvIGNhcmRXaWR0aCksIDEpOyAvLyBFeGFtcGxlOiA5NjAgLyAzMjAgPSAzXG4gICAgY29uc3QgcmVxdWlyZWRXaWR0aFdpdGhHYXAgPSBudW1iZXJPZkNhcmRzV2l0aE5vR2FwICogY2FyZFdpZHRoICsgKG51bWJlck9mQ2FyZHNXaXRoTm9HYXAgLSAxKSAqIENBUkRfR0FQX1dJRFRIO1xuICAgIGNvbnN0IGNvbHVtbkNvdW50ID0gcmVxdWlyZWRXaWR0aFdpdGhHYXAgPiBjb250YWluZXJXaWR0aCA/IG51bWJlck9mQ2FyZHNXaXRoTm9HYXAgLSAxIDogbnVtYmVyT2ZDYXJkc1dpdGhOb0dhcDtcblxuICAgIHJldHVybiBNYXRoLm1heChjb2x1bW5Db3VudCwgMSk7XG59XG5cbi8qKiBAaGlkZGVuIE1ldGhvZCB0byB1cGRhdGUgcmFuayBhZnRlciBjYXJkcyBhcmUgZHJhZ2dlZCAqL1xuZnVuY3Rpb24gYWRqdXN0Q2FyZFJhbmsoZHJhZ2dlZENhcmQ6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlLCByZXBsYWNlZENhcmQ6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlKTogdm9pZCB7XG4gICAgY29uc3QgZHJhZ2dlZENhcmRSYW5rID0gZHJhZ2dlZENhcmQuZmRDYXJkRGVmO1xuICAgIGRyYWdnZWRDYXJkLmZkQ2FyZERlZiA9IHJlcGxhY2VkQ2FyZC5mZENhcmREZWY7XG4gICAgcmVwbGFjZWRDYXJkLmZkQ2FyZERlZiA9IGRyYWdnZWRDYXJkUmFuaztcbn1cbiIsIjxkaXZcbiAgICAjbGF5b3V0XG4gICAgY2RrRHJvcExpc3RHcm91cFxuICAgIGZkRG5kS2V5Ym9hcmRHcm91cFxuICAgIGNsYXNzPVwiZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmQtbGF5b3V0IGZkLWZpeGVkLWNhcmQtbGF5b3V0X19jYXJkLWxheW91dC0tY29sdW1ucy17eyB0aGlzLl9udW1iZXJPZkNvbHVtbnMgfX1cIlxuICAgIFtzdHlsZS5oZWlnaHRdPVwiX2NvbnRhaW5lckhlaWdodCArICdweCdcIlxuICAgIFtncm91cHNdPVwiX2NhcmRDb2x1bW5zXCJcbiAgICBvcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgIFtjdXN0b21Nb3ZlRm5dPVwiX2N1c3RvbU1vdmVGblwiXG4gICAgW2N1c3RvbVRyYW5zZmVyRm5dPVwiX2N1c3RvbVRyYW5zZmVyRm5cIlxuICAgIFtkaXNhYmxlS2V5Ym9hcmREcmFnRHJvcF09XCJkaXNhYmxlRHJhZ0Ryb3BcIlxuICAgIFtjZGtEcm9wTGlzdEdyb3VwRGlzYWJsZWRdPVwiZGlzYWJsZURyYWdEcm9wXCJcbiAgICBbYXR0ci5kaXJdPVwiX2RpclwiXG4+XG4gICAgPGRpdlxuICAgICAgICAjZHJvcExpc3RcbiAgICAgICAgKm5nRm9yPVwibGV0IGNhcmQgb2YgX2NhcmRzQXJyYXk7IGxldCBjYXJkSW5kZXggPSBpbmRleFwiXG4gICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgIGNka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkXG4gICAgICAgIGNsYXNzPVwiZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmRcIlxuICAgICAgICBbY2xhc3MuZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmQtLXNpbmdsZV09XCJfc2luZ2xlSXRlbUNvbHVtbnMuaGFzKGNhcmQuZmRDYXJkRGVmKVwiXG4gICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiX2NvbHVtbnNXaWR0aC5nZXQoY2FyZC5mZENhcmREZWYpXCJcbiAgICAgICAgW3N0eWxlLm1heC13aWR0aC5weF09XCJfY29sdW1uc1dpZHRoLmdldChjYXJkLmZkQ2FyZERlZilcIlxuICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImNhcmRJbmRleFwiXG4gICAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cIl9lbnRlclByZWRpY2F0ZVwiXG4gICAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwiX29uRHJvcExpc3RFbnRlcmVkKCRldmVudClcIlxuICAgICAgICAoY2RrRHJvcExpc3RFeGl0ZWQpPVwiX29uRHJvcExpc3RFeGl0ZWQoKVwiXG4gICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICBmZERuZEtleWJvYXJkSXRlbVxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIGNka0RyYWdQcmV2aWV3Q2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2FyZC1wcmV2aWV3XCJcbiAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjYXJkXCJcbiAgICAgICAgICAgIFtjZGtEcmFnU3RhcnREZWxheV09XCJkcmFnU3RhcnREZWxheVwiXG4gICAgICAgICAgICBbaXRlbUluZGV4XT1cIl9pdGVtSW5kZXhlcy5nZXQoY2FyZC5mZENhcmREZWYpXCJcbiAgICAgICAgICAgIFtncm91cEluZGV4XT1cIl9ncm91cEluZGV4ZXMuZ2V0KGNhcmQuZmRDYXJkRGVmKVwiXG4gICAgICAgICAgICAoY2RrRHJhZ0Ryb3BwZWQpPVwiX29uRHJhZ0Ryb3BwZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwiX3NldFBsYWNlaG9sZGVyU3R5bGUoZmFsc2UpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGZkLWZpeGVkLWNhcmQtbGF5b3V0LWl0ZW0+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhcmQ/LnRlbXBsYXRlXCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9mZC1maXhlZC1jYXJkLWxheW91dC1pdGVtPlxuXG4gICAgICAgICAgICA8ZGl2ICpjZGtEcmFnUGxhY2Vob2xkZXIgY2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2FyZC1wbGFjZWhvbGRlclwiIFtzdHlsZV09XCJfcGxhY2Vob2xkZXJNYXJnaW5cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FyZD8udGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBfY2FyZENvbHVtbnM7IGxldCBsYXN0ID0gbGFzdDsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFsYXN0XCIgY2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2xlYXJmaXhcIiBbc3R5bGUub3JkZXJdPVwiaW5kZXggKyAxXCI+PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|
|
397
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZml4ZWQtY2FyZC1sYXlvdXQvZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZml4ZWQtY2FyZC1sYXlvdXQvZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFzQyxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxvQkFBb0IsRUFBZSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFFMUUsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQ3JCLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLENBQUMsZ0JBQWdCO0FBQ2hELE1BQU0sY0FBYyxHQUFH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LElBQUksQ0FBQyxDQUFDO0lBQ3JDLFNBQVMsR0FBRyxTQUFTLElBQUksQ0FBQyxDQUFDO0lBRTNCLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtJQUM3RyxNQUFNLG9CQUFvQixHQUFHLHNCQUFzQixHQUFHLFNBQVMsR0FBRyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQztJQUNoSCxNQUFNLFdBQVcsR0FBRyxvQkFBb0IsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUM7SUFFaEgsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsNERBQTREO0FBQzVELFNBQVMsY0FBYyxDQUFDLFdBQW9DLEVBQUUsWUFBcUM7SUFDL0YsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztJQUM5QyxXQUFXLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7SUFDL0MsWUFBWSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQ2RrRHJhZywgQ2RrRHJhZ0Ryb3AsIENka0RyYWdFbnRlciwgQ2RrRHJvcExpc3QgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyByZXNpemVPYnNlcnZhYmxlLCBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEZpeGVkQ2FyZExheW91dEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2ZpeGVkLWNhcmQtbGF5b3V0LWl0ZW0vZml4ZWQtY2FyZC1sYXlvdXQtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHksIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuY29uc3QgUFhfSU5fUkVNID0gMTY7XG5jb25zdCBDQVJEX01JTklNVU1fV0lEVEggPSAzMjA7IC8vIDMyMHB4ID0gMjByZW1cbmNvbnN0IENBUkRfR0FQX1dJRFRIID0gMTY7IC8vIDE2cHggPSAxcmVtXG5jb25zdCBEUkFHX1NUQVJUX0RFTEFZID0gMjAwOyAvLyBpbiBtc1xuY29uc3QgTUFYX0NPTFVNTlMgPSAxMDtcblxubGV0IGNhcmRSYW5rID0gMTtcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2ZkQ2FyZERlZl0nIH0pXG5leHBvcnQgY2xhc3MgQ2FyZERlZmluaXRpb25EaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqIEJlaGF2ZXMgbGlrZSByYW5rIG9mIGNhcmQuXG4gICAgICogVXNlZnVsIGluIGNyZWF0aW5nIGxheW91dCBhZ2FpbiBhZnRlciBkcmFnIGFuZCBkcm9wLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZkQ2FyZERlZih2YWx1ZTogTnVtYmVySW5wdXQpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZmRDYXJkRGVmID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBnZXQgZmRDYXJkRGVmKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mZENhcmREZWY7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mZENhcmREZWY6IG51bWJlciA9IGNhcmRSYW5rKys7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYXlvdXQge1xuICAgIG51bWJlck9mQ29sdW1ucz86IG51bWJlcjtcbiAgICBzY3JlZW5TaXplOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FyZERyb3BwZWQge1xuICAgIHByZXZpb3VzSW5kZXg6IG51bWJlcjtcbiAgICBjdXJyZW50SW5kZXg6IG51bWJlcjtcbiAgICBsYXlvdXRDb2x1bW5zOiBudW1iZXI7XG4gICAgaXRlbXM6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlW107XG59XG5cbnR5cGUgQ29sdW1ucyA9IDEgfCAyIHwgMyB8IDQgfCA1IHwgNiB8IDcgfCA4IHwgOSB8IDEwO1xuXG5leHBvcnQgdHlwZSBDb2x1bW5zV2lkdGhDb25maWcgPSB7IFtDIGluIENvbHVtbnNdPzogbnVtYmVyIH07XG5cbnR5cGUgQ2FyZENvbHVtbiA9IENhcmREZWZpbml0aW9uRGlyZWN0aXZlW107XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtZml4ZWQtY2FyZC1sYXlvdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maXhlZC1jYXJkLWxheW91dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZC1maXhlZC1jYXJkLWxheW91dCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEZpeGVkQ2FyZExheW91dENvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkNoYW5nZXMsIE9uRGVzdHJveVxue1xuICAgIC8qKiBEcmFnIGRyb3AgYmVoYXZpb3IgY2FuIGJlIGRpc2FibGVkICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlRHJhZ0Ryb3A6IGJvb2xlYW47XG5cbiAgICAvKiogRHJhZyBzdGFydCBkZWxheSBpbiBtaWxsaXNlY29uZHMsIGRlZmF1bHQgdG8gMjAwbXMgZm9yIHNhZmUgc2Nyb2xsaW5nIG9uIG1vYmlsZSB3aXRoIHRvdWNoc2NyZWVuICovXG4gICAgQElucHV0KClcbiAgICBkcmFnU3RhcnREZWxheSA9IERSQUdfU1RBUlRfREVMQVk7XG5cbiAgICAvKiogQ2FyZCdzIG1pbmltdW0gd2lkdGggaW4gcGl4ZWxzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNhcmRNaW5pbXVtV2lkdGgodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcblxuICAgICAgICBpZiAoY29lcmNlZFZhbHVlIDwgQ0FSRF9NSU5JTVVNX1dJRFRIKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jYXJkTWluaW11bVdpZHRoID0gY29lcmNlZFZhbHVlO1xuXG4gICAgICAgIC8vIElmIGNvbXBvbmVudCBpcyByZWFkeSwgZG8gdGhlIHJlY2FsY3VsYXRpb24uXG4gICAgICAgIGlmICh0aGlzLl9sYXlvdXQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGNhcmRNaW5pbXVtV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhcmRNaW5pbXVtV2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIENvbmZpZyB3aXRoIHRoZSB3aWR0aCByYXRpb3MgdGhhdCBzaG91bGQgdGFrZSBldmVyeSBjb2x1bW4uIEZsZXgtZ3JvdyBwcmluY2lwZS4gTWlzc2VkIHZhbHVlcyBzZXQgdG8gMC4gcyovXG4gICAgQElucHV0KClcbiAgICBjb2x1bW5zV2lkdGhDb25maWc6IENvbHVtbnNXaWR0aENvbmZpZztcblxuICAgIC8qKiBMaW1pdCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMuIERlZmF1bHQgaXMgMTAuICovXG4gICAgQElucHV0KClcbiAgICBtYXhDb2x1bW5zID0gTUFYX0NPTFVNTlM7XG5cbiAgICAvKiogRXZlbnQgdG8gZW1pdCwgd2hlbiBsYXlvdXQgY2hhbmdlcyAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGxheW91dENoYW5nZTogRXZlbnRFbWl0dGVyPExheW91dD4gPSBuZXcgRXZlbnRFbWl0dGVyPExheW91dD4oKTtcblxuICAgIC8qKiBFdmVudCB0byBlbWl0IG9uIENhcmQgZHJhZ2dlZCBhbmQgZHJvcHBlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNhcmREcmFnZ2VkRHJvcHBlZDogRXZlbnRFbWl0dGVyPENhcmREcm9wcGVkPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FyZERyb3BwZWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oQ2FyZERlZmluaXRpb25EaXJlY3RpdmUpXG4gICAgX2NhcmRzOiBRdWVyeUxpc3Q8Q2FyZERlZmluaXRpb25EaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKEZpeGVkQ2FyZExheW91dEl0ZW1Db21wb25lbnQpXG4gICAgX2NhcmRDb250YWluZXJzOiBRdWVyeUxpc3Q8Rml4ZWRDYXJkTGF5b3V0SXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oJ2Ryb3BMaXN0JywgeyByZWFkOiBDZGtEcm9wTGlzdCB9KVxuICAgIF9jYXJkV3JhcHBlcnM6IFF1ZXJ5TGlzdDxDZGtEcm9wTGlzdD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2xheW91dCcpXG4gICAgX2xheW91dDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NhcmRzQXJyYXk6IEFycmF5PENhcmREZWZpbml0aW9uRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuIE51bWJlciBvZiBDb2x1bW5zIGluIGxheW91dCAqL1xuICAgIF9udW1iZXJPZkNvbHVtbnM6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NhcmRDb2x1bW5zOiBDYXJkQ29sdW1uW107XG5cbiAgICAvKiogQGhpZGRlbiovXG4gICAgX2NvbnRhaW5lckhlaWdodDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gaGFuZGxlcyBydGwgc2VydmljZSAqL1xuICAgIF9kaXIgPSAnbHRyJztcblxuICAgIC8qKiBAaGlkZGVuIGZpcnN0IG51bWJlciBpcyB0aGUgQ2FyZERlZmluaXRpb24gcmFuaywgaS5lLiBpZCAqL1xuICAgIF9ncm91cEluZGV4ZXMgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gZmlyc3QgbnVtYmVyIGlzIHRoZSBDYXJkRGVmaW5pdGlvbiByYW5rLCBpLmUuIGlkICovXG4gICAgX2l0ZW1JbmRleGVzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuIGZpcnN0IG51bWJlciBpcyB0aGUgQ2FyZERlZmluaXRpb24gcmFuaywgaS5lLiBpZCAqL1xuICAgIF9zaW5nbGVJdGVtQ29sdW1ucyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29sdW1uc1dpZHRoID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuIFJldHVybiBhdmFpbGFibGUgd2lkdGggZm9yIGZpeGVkIGNhcmQgbGF5b3V0ICovXG4gICAgZ2V0IF9hdmFpbGFibGVXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGF5b3V0Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcGxhY2Vob2xkZXJNYXJnaW46IHsgW2tsYXNzOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJldmlvdXNOdW1iZXJPZkNvbHVtbnM6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuIEZvY3VzS2V5TWFuYWdlciBpbnN0YW5jZSAqL1xuICAgIHByaXZhdGUgX2tleWJvYXJkRXZlbnRzTWFuYWdlcjogRm9jdXNLZXlNYW5hZ2VyPEZpeGVkQ2FyZExheW91dEl0ZW1Db21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYXJkTWluaW11bVdpZHRoID0gQ0FSRF9NSU5JTVVNX1dJRFRIO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaG91bGRDYWxjdWxhdGVDb250YWluZXJIZWlnaHQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuIEFuIFJ4SlMgU3ViamVjdCB0aGF0IHdpbGwga2lsbCB0aGUgZGF0YSBzdHJlYW0gdXBvbiBjb21wb25lbnTigJlzIGRlc3RydWN0aW9uIChmb3IgdW5zdWJzY3JpYmluZykgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2VcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb1J0bCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9saXN0ZW5PbkNhcmRzQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NDYXJkcygpO1xuICAgICAgICB0aGlzLl9saXN0ZW5PblJlc2l6ZSgpO1xuICAgICAgICB0aGlzLl9hY2Nlc3NpYmlsaXR5U2V0dXAoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVwZGF0ZSBjb2x1bW4gbGF5b3V0IHdoZW4gb3JpZW50YXRpb24gb2Ygc2NyZWVuIGNoYW5nZXMuXG4gICAgICAgICAqIGFjdHVhbCB3aWR0aCBpcyByZXR1cm5lZCB3aGVuIHZpZXcgaXMgc3RhYmxlLiBJbiBBZnRlclZpZXdJbml0LCBjb3JyZWN0IHZhbHVlIGRvZXMgbm90IGNvbWUuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2NhcmRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgnbWF4Q29sdW1ucycgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgICAgICAgfSBlbHNlIGlmICgnY29sdW1uc1dpZHRoQ29uZmlnJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRDb2x1bW5zV2lkdGgoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIGlmICh0aGlzLl9rZXlib2FyZEV2ZW50c01hbmFnZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIERpc3RyaWJ1dGUgY2FyZHMgb24gd2luZG93IHJlc2l6ZSAqL1xuICAgIHVwZGF0ZUxheW91dCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9jYXJkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBvc3NpYmxlTnVtYmVyT2ZDb2x1bW5zID0gZ2V0TnVtYmVyT2ZDb2x1bW5zKHRoaXMuX2F2YWlsYWJsZVdpZHRoLCB0aGlzLmNhcmRNaW5pbXVtV2lkdGgpO1xuXG4gICAgICAgIHRoaXMuX251bWJlck9mQ29sdW1ucyA9IE1hdGgubWluKFxuICAgICAgICAgICAgcG9zc2libGVOdW1iZXJPZkNvbHVtbnMsXG4gICAgICAgICAgICB0aGlzLl9jYXJkcy5sZW5ndGgsXG4gICAgICAgICAgICB0aGlzLm1heENvbHVtbnMgfHwgTUFYX0NPTFVNTlMsXG4gICAgICAgICAgICBNQVhfQ09MVU1OU1xuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMubGF5b3V0Q2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgbnVtYmVyT2ZDb2x1bW5zOiB0aGlzLl9udW1iZXJPZkNvbHVtbnMsXG4gICAgICAgICAgICBzY3JlZW5TaXplOiB0aGlzLl9hdmFpbGFibGVXaWR0aFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNOdW1iZXJPZkNvbHVtbnMgIT09IHRoaXMuX251bWJlck9mQ29sdW1ucykge1xuICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNOdW1iZXJPZkNvbHVtbnMgPSB0aGlzLl9udW1iZXJPZkNvbHVtbnM7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDb2x1bW5zKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zZXRDb2x1bW5zV2lkdGgoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBDYWxjdWxhdGUgY29udGFpbmVyIGhlaWdodCBiYXNpbmcgb24gdGhlIGNhcmQgd3JhcHBlciBjb2x1bW5zICovXG4gICAgX2NhbGN1bGF0ZUNvbnRhaW5lckhlaWdodChhZGRpdGlvbmFsU3BhY2U6IG51bWJlciA9IDApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIGNvbnN0IHdyYXBwZXJDb2x1bW5zID0gdGhpcy5fY2FyZENvbHVtbnMubWFwKChjb2x1bW4pID0+XG4gICAgICAgICAgICBjb2x1bW4ubWFwKFxuICAgICAgICAgICAgICAgIChjYXJkKSA9PiB0aGlzLl9jYXJkV3JhcHBlcnMuZmluZCgod3JhcHBlcikgPT4gd3JhcHBlci5nZXRTb3J0ZWRJdGVtcygpWzBdLmRhdGEgPT09IGNhcmQpLmVsZW1lbnRcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBjb2x1bW5zSGVpZ2h0cyA9IHdyYXBwZXJDb2x1bW5zXG4gICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IGNvbHVtbi5tYXAoKGNhcmQpID0+IGNhcmQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpKVxuICAgICAgICAgICAgLm1hcCgoY29sdW1uKSA9PiBjb2x1bW4ucmVkdWNlKChoZWlnaHQsIGNhcmRIZWlnaHQpID0+IChoZWlnaHQgKz0gY2FyZEhlaWdodCksIDApKTtcblxuICAgICAgICAvLyArNHB4IGJlY2F1c2UgaXQncyB0aGUgdG9wICYgYm90dG9tIGJvcmRlcnMgb2YgY2FyZCBwbGFjZWhvbGRlclxuICAgICAgICB0aGlzLl9jb250YWluZXJIZWlnaHQgPSBNYXRoLm1heCguLi5jb2x1bW5zSGVpZ2h0cykgKyA0ICsgYWRkaXRpb25hbFNwYWNlO1xuXG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9lbnRlclByZWRpY2F0ZSA9IChfOiBDZGtEcmFnLCBkcm9wOiBDZGtEcm9wTGlzdCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICAvLyBXZSBzaG91bGQgdXBkYXRlIGNvbnRhaW5lcidzIGhlaWdodCAmIGl0cyBjaGlsZHJlbiByZWN0cyAodG8gcmVhY3Qgd2hlbiBkcmFnIG1vdmVzIGludG8gdGhlIGxpc3QpIGJlZm9yZSB3ZSBlbnRlcmVkIGFueSBkcm9wIGxpc3QuXG4gICAgICAgIC8vIFRoYXQncyB3aHkgaXQncyBkb25lIGhlcmUgaW5zdGVhZCBvZiBjZGtEcm9wTGlzdEVudGVyZWQuIEFzIHRoaXMgcHJlZGljYXRlIGJlaW5nIGNhbGxlZCBtYW55IHRpbWVzIGhlcmUgaXMgdGhlIG9wdGltaXphdGlvbi5cbiAgICAgICAgaWYgKHRoaXMuX3Nob3VsZENhbGN1bGF0ZUNvbnRhaW5lckhlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5fc2hvdWxkQ2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0ID0gZmFsc2U7XG5cbiAgICAgICAgICAgIC8vIFBsYWNlaG9sZGVyIGRvZXNuJ3QgaGF2ZSBtYXJnaW4gc2V0IHlldCBidXQgd2UgbmVlZCB0byBjb3VudCBpdFxuICAgICAgICAgICAgLy8gTWFyZ2luIHdpbGwgYmUgc2V0IG9ubHkgaWYgdGhlcmUgYXJlIGFscmVhZHkgaXRlbXMgaW4gY29udGFpbmVyXG4gICAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsU3BhY2UgPSBkcm9wLmdldFNvcnRlZEl0ZW1zKCkubGVuZ3RoID8gUFhfSU5fUkVNIDogMDtcblxuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0KGFkZGl0aW9uYWxTcGFjZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25Ecm9wTGlzdEV4aXRlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2hvdWxkQ2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkRyb3BMaXN0RW50ZXJlZChldmVudDogQ2RrRHJhZ0VudGVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckl0ZW1DYXJkRGVmID0gKGV2ZW50LmNvbnRhaW5lci5nZXRTb3J0ZWRJdGVtcygpWzBdLmRhdGEgYXMgQ2FyZERlZmluaXRpb25EaXJlY3RpdmUpLmZkQ2FyZERlZjtcbiAgICAgICAgY29uc3QgZHJhZ0l0ZW1DYXJkRGVmID0gKGV2ZW50Lml0ZW0uZGF0YSBhcyBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZSkuZmRDYXJkRGVmO1xuXG4gICAgICAgIHRoaXMuX3NldFBsYWNlaG9sZGVyU3R5bGUoY29udGFpbmVySXRlbUNhcmREZWYgIT09IGRyYWdJdGVtQ2FyZERlZik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25EcmFnRHJvcHBlZChldmVudDogQ2RrRHJhZ0Ryb3A8bnVtYmVyLCBudW1iZXI+KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5jb250YWluZXIuZGF0YSA9PT0gZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbW92ZWRDYXJkID0gZXZlbnQucHJldmlvdXNDb250YWluZXIuZ2V0U29ydGVkSXRlbXMoKVswXS5kYXRhO1xuICAgICAgICBjb25zdCByZXBsYWNlZENhcmQgPSBldmVudC5jb250YWluZXIuZ2V0U29ydGVkSXRlbXMoKVswXS5kYXRhO1xuXG4gICAgICAgIGNvbnN0IG1vdmVkQ2FyZENvbHVtbiA9IHRoaXMuX2NhcmRDb2x1bW5zLmZpbmQoKGNvbHVtbikgPT5cbiAgICAgICAgICAgIGNvbHVtbi5maW5kKChjYXJkKSA9PiBjYXJkLmZkQ2FyZERlZiA9PT0gbW92ZWRDYXJkLmZkQ2FyZERlZilcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcmVwbGFjZWRDYXJkQ29sdW1uID0gdGhpcy5fY2FyZENvbHVtbnMuZmluZCgoY29sdW1uKSA9PlxuICAgICAgICAgICAgY29sdW1uLmZpbmQoKGNhcmQpID0+IGNhcmQuZmRDYXJkRGVmID09PSByZXBsYWNlZENhcmQuZmRDYXJkRGVmKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIElmIHdlIGRyYWdnZWQgdGhlIGNhcmQgZnJvbSB0aGUgc2FtZSBjb2x1bW4gYXMgdGhlIGNvbHVtbiB3ZSdyZSBkcm9wcGluZyBpbnRvXG4gICAgICAgIC8vIFRoZXJlIG1heSBiZSBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgb3JkZXIgc2hvdWxkbid0IGNoYW5nZSBidXQgc2luY2UgdGhlcmUgYXJlIGEgZGlmZmVyZW50IGRyb3AgbGlzdHMgaXQgd2lsbCBjaGFuZ2VcbiAgICAgICAgLy8gV2Ugc2hvdWxkIHByZXZlbnQgdGhpc1xuICAgICAgICBpZiAobW92ZWRDYXJkQ29sdW1uID09PSByZXBsYWNlZENhcmRDb2x1bW4gJiYgbW92ZWRDYXJkQ29sdW1uLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgaWYgKG1vdmVkQ2FyZC5mZENhcmREZWYgPCByZXBsYWNlZENhcmQuZmRDYXJkRGVmICYmIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEgPCBldmVudC5jb250YWluZXIuZGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1vdmVkQ2FyZC5mZENhcmREZWYgPiByZXBsYWNlZENhcmQuZmRDYXJkRGVmICYmIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEgPiBldmVudC5jb250YWluZXIuZGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NEcmFnRHJvcChldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLCBldmVudC5jb250YWluZXIuZGF0YSwgbW92ZWRDYXJkLCByZXBsYWNlZENhcmQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEZvciB0aGUga2V5Ym9hcmQgZHJhZyZkcm9wIGRpcmVjdGl2ZSAqL1xuICAgIF9jdXN0b21Nb3ZlRm4gPSAoZ3JvdXA6IENhcmRDb2x1bW4sIGluZGV4RnJvbTogbnVtYmVyLCBpbmRleFRvOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgbW92ZWRDYXJkID0gZ3JvdXBbaW5kZXhGcm9tXTtcbiAgICAgICAgY29uc3QgcmVwbGFjZWRDYXJkID0gZ3JvdXBbaW5kZXhUb107XG5cbiAgICAgICAgY29uc3QgaW5kZXhGcm9tQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IG1vdmVkQ2FyZC5mZENhcmREZWYpO1xuICAgICAgICBjb25zdCBpbmRleFRvQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYpO1xuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NEcmFnRHJvcChpbmRleEZyb21BcnJheSwgaW5kZXhUb0FycmF5LCBtb3ZlZENhcmQsIHJlcGxhY2VkQ2FyZCk7XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuIEZvciB0aGUga2V5Ym9hcmQgZHJhZyZkcm9wIGRpcmVjdGl2ZSAqL1xuICAgIF9jdXN0b21UcmFuc2ZlckZuID0gKHByZXZHcm91cDogQ2FyZENvbHVtbiwgbmV4dEdyb3VwOiBDYXJkQ29sdW1uLCBpbmRleEZyb206IG51bWJlciwgaW5kZXhUbzogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IG1vdmVkQ2FyZCA9IHByZXZHcm91cFtpbmRleEZyb21dO1xuICAgICAgICBjb25zdCByZXBsYWNlZENhcmQgPSBuZXh0R3JvdXBbaW5kZXhUb107XG5cbiAgICAgICAgY29uc3QgaW5kZXhGcm9tQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IG1vdmVkQ2FyZC5mZENhcmREZWYpO1xuICAgICAgICBjb25zdCBpbmRleFRvQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYpO1xuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NEcmFnRHJvcChpbmRleEZyb21BcnJheSwgaW5kZXhUb0FycmF5LCBtb3ZlZENhcmQsIHJlcGxhY2VkQ2FyZCk7XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldFBsYWNlaG9sZGVyU3R5bGUodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcGxhY2Vob2xkZXJNYXJnaW4gPSB2YWx1ZSA/IHsgJ21hcmdpbi1ib3R0b20nOiAnMXJlbScgfSA6IHt9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEFycmFuZ2VzIGNhcmRzIG9uIGRyb3Agb2YgZHJhZ2dlZCBjYXJkICovXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc0RyYWdEcm9wKFxuICAgICAgICBwcmV2SW5kZXg6IG51bWJlcixcbiAgICAgICAgbmV3SW5kZXg6IG51bWJlcixcbiAgICAgICAgcHJldkNhcmQ6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlLFxuICAgICAgICBuZXdDYXJkOiBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZVxuICAgICk6IHZvaWQge1xuICAgICAgICAvLyBtb3ZlSXRlbUluQXJyYXkgZnJvbSBDREsgd29uJ3Qgd29yayBhcyBpdCBjaGFuZ2VzIG9yZGVyIG9mIG90aGVyIGNhcmRzXG4gICAgICAgIGNvbnN0IHJlcGxhY2VkQ2FyZCA9IHRoaXMuX2NhcmRzQXJyYXlbbmV3SW5kZXhdO1xuICAgICAgICB0aGlzLl9jYXJkc0FycmF5W25ld0luZGV4XSA9IHRoaXMuX2NhcmRzQXJyYXlbcHJldkluZGV4XTtcbiAgICAgICAgdGhpcy5fY2FyZHNBcnJheVtwcmV2SW5kZXhdID0gcmVwbGFjZWRDYXJkO1xuXG4gICAgICAgIGFkanVzdENhcmRSYW5rKHByZXZDYXJkLCBuZXdDYXJkKTtcblxuICAgICAgICB0aGlzLmNhcmREcmFnZ2VkRHJvcHBlZC5lbWl0KHtcbiAgICAgICAgICAgIHByZXZpb3VzSW5kZXg6IHByZXZJbmRleCxcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleDogbmV3SW5kZXgsXG4gICAgICAgICAgICBsYXlvdXRDb2x1bW5zOiB0aGlzLl9udW1iZXJPZkNvbHVtbnMsXG4gICAgICAgICAgICBpdGVtczogdGhpcy5fY2FyZHMudG9BcnJheSgpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3VwZGF0ZUNvbHVtbnMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjY2Vzc2liaWxpdHlTZXR1cCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyID0gbmV3IEZvY3VzS2V5TWFuYWdlcih0aGlzLl9jYXJkQ29udGFpbmVycykud2l0aFdyYXAoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSdGwgY2hhbmdlIHN1YnNjcmlwdGlvbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmliZVRvUnRsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ydGxTZXJ2aWNlPy5ydGwucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoaXNSdGwpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2RpciA9IGlzUnRsID8gJ3J0bCcgOiAnbHRyJztcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTGlzdGVuIHdpbmRvdyByZXNpemUgYW5kIGRpc3RyaWJ1dGUgY2FyZHMgb24gY29sdW1uIGNoYW5nZSAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uUmVzaXplKCk6IHZvaWQge1xuICAgICAgICByZXNpemVPYnNlcnZhYmxlKHRoaXMuX2xheW91dC5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDYwKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZUxheW91dCgpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBMaXN0ZW4gY2FyZCBjaGFuZ2UgYW5kIGRpc3RyaWJ1dGUgY2FyZHMgb24gY29sdW1uIGNoYW5nZSAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uQ2FyZHNDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhcmRzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NDYXJkcygpO1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ29sdW1ucygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZW5kZXJzIGxheW91dCBvbiBjb2x1bW4gY2hhbmdlcyAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZUNvbHVtbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldENhcmRDb2x1bW5zKCk7XG4gICAgICAgIHRoaXMuX3NldENvbHVtbnNXaWR0aChmYWxzZSk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNvbnRhaW5lckhlaWdodCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc0NhcmRzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYXJkc0FycmF5ID0gdGhpcy5fY2FyZHNcbiAgICAgICAgICAgIC50b0FycmF5KClcbiAgICAgICAgICAgIC5zb3J0KChmaXJzdENhcmQsIHNlY29uZENhcmQpID0+IGZpcnN0Q2FyZC5mZENhcmREZWYgLSBzZWNvbmRDYXJkLmZkQ2FyZERlZik7XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gRGlzdHJpYnV0ZSBjYXJkcyBhbW9uZyBjb2x1bW5zIHRvIGFycmFuZ2UgdGhlbSBpbiBcIlpcIiBmbG93ICovXG4gICAgcHJpdmF0ZSBfc2V0Q2FyZENvbHVtbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2dyb3VwSW5kZXhlcyA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG4gICAgICAgIHRoaXMuX2l0ZW1JbmRleGVzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbiAgICAgICAgdGhpcy5fc2luZ2xlSXRlbUNvbHVtbnMgPSBuZXcgU2V0PG51bWJlcj4oKTtcblxuICAgICAgICBjb25zdCBjb2x1bW5zOiBDYXJkQ29sdW1uW10gPSBuZXcgQXJyYXkodGhpcy5fbnVtYmVyT2ZDb2x1bW5zKS5maWxsKDApLm1hcCgoKSA9PiBuZXcgQXJyYXkoMCkpO1xuXG4gICAgICAgIHRoaXMuX2NhcmRzQXJyYXkuZm9yRWFjaCgoY2FyZCwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VyckNvbHVtbkluZGV4ID0gaSAlIHRoaXMuX251bWJlck9mQ29sdW1ucztcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IGNvbHVtbnNbY3VyckNvbHVtbkluZGV4XS5sZW5ndGg7XG5cbiAgICAgICAgICAgIGNvbHVtbnNbY3VyckNvbHVtbkluZGV4XS5wdXNoKGNhcmQpO1xuXG4gICAgICAgICAgICB0aGlzLl9ncm91cEluZGV4ZXMuc2V0KGNhcmQuZmRDYXJkRGVmLCBjdXJyQ29sdW1uSW5kZXgpO1xuICAgICAgICAgICAgdGhpcy5faXRlbUluZGV4ZXMuc2V0KGNhcmQuZmRDYXJkRGVmLCBpdGVtSW5kZXgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jYXJkQ29sdW1ucyA9IGNvbHVtbnM7XG5cbiAgICAgICAgdGhpcy5fY2FyZENvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29sdW1uLmxlbmd0aCA+IDAgJiYgY29sdW1uLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaW5nbGVJdGVtQ29sdW1ucy5hZGQoY29sdW1uWzBdLmZkQ2FyZERlZik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0Q29sdW1uc1dpZHRoKGRldGVjdENoYW5nZXMgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbHVtbnNXaWR0aCA9IG5ldyBNYXAoKTtcblxuICAgICAgICBjb25zdCBjb25maWdQcmVzZW50ID1cbiAgICAgICAgICAgIHRoaXMuY29sdW1uc1dpZHRoQ29uZmlnICYmXG4gICAgICAgICAgICB0eXBlb2YgdGhpcy5jb2x1bW5zV2lkdGhDb25maWcgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmNvbHVtbnNXaWR0aENvbmZpZykubGVuZ3RoO1xuXG4gICAgICAgIGlmICghY29uZmlnUHJlc2VudCB8fCAhdGhpcy5fbGF5b3V0IHx8IHRoaXMuX251bWJlck9mQ29sdW1ucyA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZml4ZWRXaWR0aE1vZGlmaWVycyA9IGZpeFdpZHRoTW9kaWZpZXJzKHRoaXMuY29sdW1uc1dpZHRoQ29uZmlnLCB0aGlzLl9udW1iZXJPZkNvbHVtbnMpO1xuICAgICAgICBjb25zdCB0b3RhbFdpZHRoTW9kaWZpZXJzID0gZml4ZWRXaWR0aE1vZGlmaWVycy5yZWR1Y2UoKHN1bSwgd2lkdGgpID0+IChzdW0gKz0gd2lkdGgpLCAwKTtcbiAgICAgICAgY29uc3QgZnJlZVNwYWNlID0gdGhpcy5fYXZhaWxhYmxlV2lkdGggLSB0aGlzLmNhcmRNaW5pbXVtV2lkdGggKiB0aGlzLl9udW1iZXJPZkNvbHVtbnM7XG5cbiAgICAgICAgdGhpcy5fY2FyZENvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSBNYXRoLnJvdW5kKFxuICAgICAgICAgICAgICAgIHRoaXMuY2FyZE1pbmltdW1XaWR0aCArIChmcmVlU3BhY2UgLyB0b3RhbFdpZHRoTW9kaWZpZXJzKSAqIGZpeGVkV2lkdGhNb2RpZmllcnNbaW5kZXhdXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb2x1bW4uZm9yRWFjaCgoY2FyZCkgPT4gdGhpcy5fY29sdW1uc1dpZHRoLnNldChjYXJkLmZkQ2FyZERlZiwgY29sdW1uV2lkdGgpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqIEBoaWRkZW4gKi9cbmZ1bmN0aW9uIGZpeFdpZHRoTW9kaWZpZXJzKGNvbmZpZzogQ29sdW1uc1dpZHRoQ29uZmlnLCBudW1iZXJPZkNvbHVtbnM6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICBjb25zdCBtb2RpZmllcnMgPSBuZXcgQXJyYXkobnVtYmVyT2ZDb2x1bW5zKS5maWxsKDApO1xuXG4gICAgcmV0dXJuIG1vZGlmaWVycy5tYXAoKF8sIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbldpZHRoTW9kaWZpZXIgPSBjb25maWdbaW5kZXggKyAxXTtcblxuICAgICAgICBpZiAoIWNvbHVtbldpZHRoTW9kaWZpZXIgfHwgY29sdW1uV2lkdGhNb2RpZmllciA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbHVtbldpZHRoTW9kaWZpZXI7XG4gICAgfSk7XG59XG5cbi8qKiBAaGlkZGVuIFJldHVybnMgbnVtYmVyIG9mIGNvbHVtbnMgdGhhdCBjYW4gZml0IGluIGN1cnJlbnQgYXZhaWxhYmxlIHdpZHRoIGZvciBmZC1jYXJkLWxheW91dCAqL1xuZnVuY3Rpb24gZ2V0TnVtYmVyT2ZDb2x1bW5zKGNvbnRhaW5lcldpZHRoOiBudW1iZXIsIGNhcmRXaWR0aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb250YWluZXJXaWR0aCA9IGNvbnRhaW5lcldpZHRoIHx8IDE7XG4gICAgY2FyZFdpZHRoID0gY2FyZFdpZHRoIHx8IDE7XG5cbiAgICBjb25zdCBudW1iZXJPZkNhcmRzV2l0aE5vR2FwID0gTWF0aC5tYXgoTWF0aC5mbG9vcihjb250YWluZXJXaWR0aCAvIGNhcmRXaWR0aCksIDEpOyAvLyBFeGFtcGxlOiA5NjAgLyAzMjAgPSAzXG4gICAgY29uc3QgcmVxdWlyZWRXaWR0aFdpdGhHYXAgPSBudW1iZXJPZkNhcmRzV2l0aE5vR2FwICogY2FyZFdpZHRoICsgKG51bWJlck9mQ2FyZHNXaXRoTm9HYXAgLSAxKSAqIENBUkRfR0FQX1dJRFRIO1xuICAgIGNvbnN0IGNvbHVtbkNvdW50ID0gcmVxdWlyZWRXaWR0aFdpdGhHYXAgPiBjb250YWluZXJXaWR0aCA/IG51bWJlck9mQ2FyZHNXaXRoTm9HYXAgLSAxIDogbnVtYmVyT2ZDYXJkc1dpdGhOb0dhcDtcblxuICAgIHJldHVybiBNYXRoLm1heChjb2x1bW5Db3VudCwgMSk7XG59XG5cbi8qKiBAaGlkZGVuIE1ldGhvZCB0byB1cGRhdGUgcmFuayBhZnRlciBjYXJkcyBhcmUgZHJhZ2dlZCAqL1xuZnVuY3Rpb24gYWRqdXN0Q2FyZFJhbmsoZHJhZ2dlZENhcmQ6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlLCByZXBsYWNlZENhcmQ6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlKTogdm9pZCB7XG4gICAgY29uc3QgZHJhZ2dlZENhcmRSYW5rID0gZHJhZ2dlZENhcmQuZmRDYXJkRGVmO1xuICAgIGRyYWdnZWRDYXJkLmZkQ2FyZERlZiA9IHJlcGxhY2VkQ2FyZC5mZENhcmREZWY7XG4gICAgcmVwbGFjZWRDYXJkLmZkQ2FyZERlZiA9IGRyYWdnZWRDYXJkUmFuaztcbn1cbiIsIjxkaXZcbiAgICAjbGF5b3V0XG4gICAgY2RrRHJvcExpc3RHcm91cFxuICAgIGZkRG5kS2V5Ym9hcmRHcm91cFxuICAgIGNsYXNzPVwiZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmQtbGF5b3V0IGZkLWZpeGVkLWNhcmQtbGF5b3V0X19jYXJkLWxheW91dC0tY29sdW1ucy17eyB0aGlzLl9udW1iZXJPZkNvbHVtbnMgfX1cIlxuICAgIFtzdHlsZS5oZWlnaHRdPVwiX2NvbnRhaW5lckhlaWdodCArICdweCdcIlxuICAgIFtncm91cHNdPVwiX2NhcmRDb2x1bW5zXCJcbiAgICBvcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgIFtjdXN0b21Nb3ZlRm5dPVwiX2N1c3RvbU1vdmVGblwiXG4gICAgW2N1c3RvbVRyYW5zZmVyRm5dPVwiX2N1c3RvbVRyYW5zZmVyRm5cIlxuICAgIFtkaXNhYmxlS2V5Ym9hcmREcmFnRHJvcF09XCJkaXNhYmxlRHJhZ0Ryb3BcIlxuICAgIFtjZGtEcm9wTGlzdEdyb3VwRGlzYWJsZWRdPVwiZGlzYWJsZURyYWdEcm9wXCJcbiAgICBbYXR0ci5kaXJdPVwiX2RpclwiXG4+XG4gICAgPGRpdlxuICAgICAgICAjZHJvcExpc3RcbiAgICAgICAgKm5nRm9yPVwibGV0IGNhcmQgb2YgX2NhcmRzQXJyYXk7IGxldCBjYXJkSW5kZXggPSBpbmRleFwiXG4gICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgIGNka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkXG4gICAgICAgIGNsYXNzPVwiZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmRcIlxuICAgICAgICBbY2xhc3MuZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmQtLXNpbmdsZV09XCJfc2luZ2xlSXRlbUNvbHVtbnMuaGFzKGNhcmQuZmRDYXJkRGVmKVwiXG4gICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiX2NvbHVtbnNXaWR0aC5nZXQoY2FyZC5mZENhcmREZWYpXCJcbiAgICAgICAgW3N0eWxlLm1heC13aWR0aC5weF09XCJfY29sdW1uc1dpZHRoLmdldChjYXJkLmZkQ2FyZERlZilcIlxuICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImNhcmRJbmRleFwiXG4gICAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cIl9lbnRlclByZWRpY2F0ZVwiXG4gICAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwiX29uRHJvcExpc3RFbnRlcmVkKCRldmVudClcIlxuICAgICAgICAoY2RrRHJvcExpc3RFeGl0ZWQpPVwiX29uRHJvcExpc3RFeGl0ZWQoKVwiXG4gICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICBmZERuZEtleWJvYXJkSXRlbVxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIGNka0RyYWdQcmV2aWV3Q2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2FyZC1wcmV2aWV3XCJcbiAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjYXJkXCJcbiAgICAgICAgICAgIFtjZGtEcmFnU3RhcnREZWxheV09XCJkcmFnU3RhcnREZWxheVwiXG4gICAgICAgICAgICBbaXRlbUluZGV4XT1cIl9pdGVtSW5kZXhlcy5nZXQoY2FyZC5mZENhcmREZWYpXCJcbiAgICAgICAgICAgIFtncm91cEluZGV4XT1cIl9ncm91cEluZGV4ZXMuZ2V0KGNhcmQuZmRDYXJkRGVmKVwiXG4gICAgICAgICAgICAoY2RrRHJhZ0Ryb3BwZWQpPVwiX29uRHJhZ0Ryb3BwZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwiX3NldFBsYWNlaG9sZGVyU3R5bGUoZmFsc2UpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGZkLWZpeGVkLWNhcmQtbGF5b3V0LWl0ZW0+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhcmQ/LnRlbXBsYXRlXCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9mZC1maXhlZC1jYXJkLWxheW91dC1pdGVtPlxuXG4gICAgICAgICAgICA8ZGl2ICpjZGtEcmFnUGxhY2Vob2xkZXIgY2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2FyZC1wbGFjZWhvbGRlclwiIFtzdHlsZV09XCJfcGxhY2Vob2xkZXJNYXJnaW5cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FyZD8udGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBfY2FyZENvbHVtbnM7IGxldCBsYXN0ID0gbGFzdDsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFsYXN0XCIgY2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2xlYXJmaXhcIiBbc3R5bGUub3JkZXJdPVwiaW5kZXggKyAxXCI+PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|
package/facets/package.json
CHANGED
package/feed-input/package.json
CHANGED