@fundamental-ngx/core 0.33.2-rc.1 → 0.33.2-rc.2
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/base/dialog-ref-base.class.d.ts +1 -1
- package/dialog/esm2020/base/dialog-ref-base.class.mjs +2 -2
- package/dialog/fesm2015/fundamental-ngx-core-dialog.mjs +1 -1
- package/dialog/fesm2015/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/dialog/fesm2020/fundamental-ngx-core-dialog.mjs +1 -1
- package/dialog/fesm2020/fundamental-ngx-core-dialog.mjs.map +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/dialog/base/dialog-ref-base.class.mjs +2 -2
- package/esm2020/message-toast/message-toast-utils/message-toast-ref.mjs +1 -1
- package/esm2020/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs +1 -1
- package/esm2020/utils/directives/overflow-list/overflow-list.directive.mjs +1 -1
- 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-dialog.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-message-toast.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-dialog.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-message-toast.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
- package/file-uploader/package.json +1 -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/esm2020/message-toast-utils/message-toast-ref.mjs +1 -1
- package/message-toast/fesm2015/fundamental-ngx-core-message-toast.mjs.map +1 -1
- package/message-toast/fesm2020/fundamental-ngx-core-message-toast.mjs.map +1 -1
- package/message-toast/message-toast-utils/message-toast-ref.d.ts +1 -2
- 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 +2 -2
- 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/esm2020/resizable-card-layout/resizable-card-layout.component.mjs +1 -1
- package/resizable-card-layout/fesm2015/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
- package/resizable-card-layout/fesm2020/fundamental-ngx-core-resizable-card-layout.mjs.map +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/esm2020/directives/overflow-list/overflow-list.directive.mjs +1 -1
- package/utils/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
- package/utils/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
- package/utils/package.json +2 -2
- package/vertical-navigation/package.json +1 -1
- package/wizard/package.json +1 -1
package/esm2020/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs
CHANGED
|
@@ -524,4 +524,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
|
|
|
524
524
|
type: HostListener,
|
|
525
525
|
args: ['window:resize']
|
|
526
526
|
}] } });
|
|
527
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLWNhcmQtbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3Jlc2l6YWJsZS1jYXJkLWxheW91dC9yZXNpemFibGUtY2FyZC1sYXlvdXQvcmVzaXphYmxlLWNhcmQtbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3Jlc2l6YWJsZS1jYXJkLWxheW91dC9yZXNpemFibGUtY2FyZC1sYXlvdXQvcmVzaXphYmxlLWNhcmQtbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUNILG9CQUFvQixFQUNwQixHQUFHLEVBRUgsMEJBQTBCLEVBRTFCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDekIsTUFBTSxxREFBcUQsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQVl6RCxNQUFNLE9BQU8sNEJBQTRCO0lBa0VyQyxZQUNxQixHQUFzQixFQUN0QixXQUF1QixFQUNYLFdBQXVCO1FBRm5DLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ1gsZ0JBQVcs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LENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDdEYsQ0FBQzs7eUhBcmxCUSw0QkFBNEI7NkdBQTVCLDRCQUE0Qix1YUE4QnBCLDBCQUEwQiw2QkN6RS9DLGdQQVNBOzJGRGtDYSw0QkFBNEI7a0JBUHhDLFNBQVM7K0JBQ0ksMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzswQkF1RWhDLFFBQVE7NENBbEViLFlBQVk7c0JBRFgsS0FBSztnQkFLTixVQUFVO3NCQURULE1BQU07Z0JBS1AsUUFBUTtzQkFEUCxNQUFNO2dCQUtQLE9BQU87c0JBRE4sTUFBTTtnQkFLUCxpQkFBaUI7c0JBRGhCLE1BQU07Z0JBS1Asa0JBQWtCO3NCQURqQixNQUFNO2dCQUtQLFlBQVk7c0JBRFgsTUFBTTtnQkFLUCxlQUFlO3NCQURkLGVBQWU7dUJBQUMsMEJBQTBCO2dCQWtGM0MsYUFBYTtzQkFEWixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFhbkMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb2N1c0tleU1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgaG9yaXpvbnRhbFJlc2l6ZVN0ZXAsXG4gICAgZ2FwLFxuICAgIFJlc2l6ZWRFdmVudCxcbiAgICBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudCxcbiAgICBSZXNpemFibGVDYXJkSXRlbUNvbmZpZyxcbiAgICB2ZXJ0aWNhbFJlc2l6ZVN0ZXAsXG4gICAgaG9yaXpvbnRhbFJlc2l6ZU9mZnNldFxufSBmcm9tICcuL3Jlc2l6YWJsZS1jYXJkLWl0ZW0vcmVzaXphYmxlLWNhcmQtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5cbmV4cG9ydCB0eXBlIExheW91dFNpemUgPSAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnO1xuZXhwb3J0IHR5cGUgUmVzaXphYmxlQ2FyZExheW91dENvbmZpZyA9IEFycmF5PFJlc2l6YWJsZUNhcmRJdGVtQ29uZmlnPjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1yZXNpemFibGUtY2FyZC1sYXlvdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAncmVzaXphYmxlLWNhcmQtbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yZXNpemFibGUtY2FyZC1sYXlvdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFJlc2l6YWJsZUNhcmRMYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIE9iamVjdCBmb3Igc2V0dGluZyBlYWNoIGNhcmQgcHJvcGVydHkgKi9cbiAgICBASW5wdXQoKVxuICAgIGxheW91dENvbmZpZzogUmVzaXphYmxlQ2FyZExheW91dENvbmZpZztcblxuICAgIC8qKiBFbWl0cyB3aGVuIGNhcmQgcmVzaXplIGlzIHJlYWNoZWQgdG8gb25lIG5ldyBzdGVwIGluIGhvcml6b250YWwgb3IgdmVydGljYWwgZGlyZWN0aW9uICovXG4gICAgQE91dHB1dCgpXG4gICAgc3RlcENoYW5nZTogRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIGNhcmQgaXMgc3RpbGwgcmVzaXppbmcgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZXNpemluZzogRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIGNhcmQgcmVzaXplIGlzIGNvbXBsZXRlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlc2l6ZWQ6IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBjYXJkIGhlaWdodCBpcyByZWR1Y2VkIHRvIHNob3cgb25seSBoZWFkZXIgKi9cbiAgICBAT3V0cHV0KClcbiAgICBtaW5pSGVhZGVyUmVhY2hlZDogRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIG1pbmltdW0gaGVpZ2h0IG9mIGNhcmQgY29udGVudCBhcmVhIGlzIHJlYWNoZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICBtaW5pQ29udGVudFJlYWNoZWQ6IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBsYXlvdXQgY2hhbmdlcyAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGxheW91dENoYW5nZTogRXZlbnRFbWl0dGVyPFJlc2l6YWJsZUNhcmRMYXlvdXRDb25maWc+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNpemFibGVDYXJkTGF5b3V0Q29uZmlnPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50KVxuICAgIHJlc2l6ZUNhcmRJdGVtczogUXVlcnlMaXN0PFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50PjtcblxuICAgIC8qKiB3aWR0aCBmb3IgbGF5b3V0ICovXG4gICAgbGF5b3V0V2lkdGg6IG51bWJlcjtcblxuICAgIC8qKiBoZWlnaHQgZm9yIGxheW91dCAqL1xuICAgIGxheW91dEhlaWdodDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gTnVtYmVyIG9mIGNvbHVtbnMgaW4gbGF5b3V0LiBjb25zaWRlcmluZyAxIGNvbHVtbiB3aWR0aCAyMHJlbSAqL1xuICAgIHByaXZhdGUgX2NvbHVtbnM6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuIExheW91dCBwYWRkaW5nLiB3aWxsIGJlIGFkZGVkIHRvIGZpcnN0IGNhcmQgcGFkZGluZyBpbiBldmVyeSByb3cgKi9cbiAgICBwcml2YXRlIF9wYWRkaW5nTGVmdDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gU3RvcmVzIGhlaWdodCBvZiBlYWNoIGNvbHVtbiBvbiBjYXJkIGFycmFuZ2VtZW50ICovXG4gICAgcHJpdmF0ZSBfY29sdW1uc0hlaWdodDogQXJyYXk8bnVtYmVyPjtcblxuICAgIC8qKiBAaGlkZGVuIEF2YWlsYWJsZSBzY3JlZW4gbGF5b3V0ICovXG4gICAgcHJpdmF0ZSBfbGF5b3V0OiBMYXlvdXRTaXplO1xuXG4gICAgLyoqIEBoaWRkZW4gU3RvcmVzIHNvcnRlZCBjYXJkIGJlZm9yZSBwbGFjaW5nIGluIGxheW91dCAqL1xuICAgIHByaXZhdGUgX3NvcnRlZENhcmRzOiBBcnJheTxSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiBGb2N1c0tleU1hbmFnZXIgaW5zdGFuY2UgKi9cbiAgICBwcml2YXRlIF9rZXlib2FyZEV2ZW50c01hbmFnZXI6IEZvY3VzS2V5TWFuYWdlcjxSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGF5b3V0U2hpZnRlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kaXJlY3Rpb25Qb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2VcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb2x1bW5zSGVpZ2h0ID0gbmV3IEFycmF5KHRoaXMuX2NvbHVtbnMpO1xuICAgICAgICB0aGlzLl9jb2x1bW5zSGVpZ2h0LmZpbGwoMCk7XG4gICAgICAgIC8vIGluaXRpYWxpc2UgdmFsdWUgMFxuXG4gICAgICAgIHRoaXMuX3N1YnNjcmliZVRvUnRsKCk7XG5cbiAgICAgICAgLy8gZGV0ZWN0IGluaXRpYWwgd2luZG93IHNpemUgYW5kIHNldCBsYXlvdXRcbiAgICAgICAgdGhpcy5fY3JlYXRlTGF5b3V0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRpYWxTZXR1cCgpO1xuICAgICAgICAvLyBsaXN0ZW4gZm9yIHF1ZXJ5LWxpc3QgY2hhbmdlXG4gICAgICAgIHRoaXMucmVzaXplQ2FyZEl0ZW1zPy5mb3JFYWNoKChjYXJkKSA9PiB7XG4gICAgICAgICAgICBjYXJkPy52ZXJpZnlVcGRhdGVDYXJkV2lkdGgodGhpcy5sYXlvdXRTaXplKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yZXNpemVDYXJkSXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hcnJhbmdlQ2FyZHModGhpcy5yZXNpemVDYXJkSXRlbXM/LnRvQXJyYXkoKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFycmFuZ2VDYXJkcyh0aGlzLnJlc2l6ZUNhcmRJdGVtcz8udG9BcnJheSgpKTtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlTZXR1cCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBoYW5kbGVzIGtleWJvYXJkIGFjY2Vzc2liaWxpdHkgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoIXRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5hY3RpdmVJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9rZXlib2FyZEV2ZW50c01hbmFnZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gICAgb25SZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NyZWF0ZUxheW91dCgpO1xuICAgIH1cblxuICAgIC8qKiByZXR1cm4gbGF5b3V0IHNpemUgKi9cbiAgICBnZXQgbGF5b3V0U2l6ZSgpOiBMYXlvdXRTaXplIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xheW91dDtcbiAgICB9XG5cbiAgICAvKiogc2V0IGxheW91dCBzaXplLiBhdmFpbGFibGUgb3B0aW9ucyBhcmUgJ3NtJywgJ21kJywgJ2xnJyBhbmQgJ3hsJyAqL1xuICAgIHNldCBsYXlvdXRTaXplKGxheW91dFNpemU6IExheW91dFNpemUpIHtcbiAgICAgICAgdGhpcy5fbGF5b3V0ID0gbGF5b3V0U2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcnJhbmdlcyBjYXJkcyBpbiBsYXlvdXQgYmFzZWQgb24gcmFuaywgd2lkdGggYW5kIGhlaWdodCBvZiBjYXJkXG4gICAgICogQHBhcmFtIGNhcmRzOiBBcnJheSBvZiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudFxuICAgICAqL1xuICAgIGFycmFuZ2VDYXJkcyhjYXJkczogQXJyYXk8UmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQ+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbHVtbnNIZWlnaHQgPSBuZXcgQXJyYXkodGhpcy5fY29sdW1ucyk7XG4gICAgICAgIHRoaXMuX2NvbHVtbnNIZWlnaHQuZmlsbCgwKTtcbiAgICAgICAgLy8gc29ydCBiYXNlZCBvbiB0aGUgY2FyZCByYW5rXG4gICAgICAgIHRoaXMuX3NvcnRlZENhcmRzID0gY2FyZHM/LnNvcnQodGhpcy5fc29ydENhcmRzKTtcblxuICAgICAgICB0aGlzLl9zb3J0ZWRDYXJkcz8uZm9yRWFjaCgoY2FyZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3NldENhcmRQb3NpdGlvblZhbHVlcyhjYXJkLCBpbmRleCk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDb2x1bW5zSGVpZ2h0KGNhcmQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5sYXlvdXRIZWlnaHQgPSBNYXRoLm1heC5hcHBseShudWxsLCB0aGlzLl9jb2x1bW5zSGVpZ2h0KSArIHZlcnRpY2FsUmVzaXplU3RlcDtcblxuICAgICAgICB0aGlzLl9lbWl0TGF5b3V0Q2hhbmdlKCk7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgc2hpZnRpbmcgb2YgY2FyZHMgd2l0aCBhbmltYXRpb24sIHdoaWxlIGNhcmQgaXMgc3RpbGwgcmVzaXppbmcuXG4gICAgICogQHBhcmFtIGV2ZW50OiBSZXNpemVkRXZlbnRcbiAgICAgKi9cbiAgICBjYXJkUmVzaXppbmcoZXZlbnQ6IFJlc2l6ZWRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlc2l6aW5nLmVtaXQoZXZlbnQpO1xuICAgICAgICB0aGlzLl9oYW5kbGVIb3Jpem9udGFsUmVzaXplKGV2ZW50KTtcbiAgICAgICAgdGhpcy5faGFuZGxlVmVydGljYWxSZXNpemUoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgYXJyYW5nZW1lbnQgb2YgY2FyZHMgaW4gbGF5b3V0XG4gICAgICogQHBhcmFtIGV2ZW50OiBSZXNpemVkRXZlbnRcbiAgICAgKi9cbiAgICBjYXJkUmVzaXplQ29tcGxldGUoZXZlbnQ6IFJlc2l6ZWRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9sYXlvdXRTaGlmdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYXJyYW5nZUNhcmRzKHRoaXMucmVzaXplQ2FyZEl0ZW1zLnRvQXJyYXkoKSk7XG4gICAgICAgIHRoaXMucmVzaXplZC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGVsZW1lbnRSZWYoKTogRWxlbWVudFJlZjxSZXNpemFibGVDYXJkTGF5b3V0Q29tcG9uZW50PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmO1xuICAgIH1cblxuICAgIHVwZGF0ZUxheW91dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNpemVDYXJkSXRlbXM/LmZvckVhY2goKGNhcmQpID0+IHtcbiAgICAgICAgICAgIGNhcmQ/LnZlcmlmeVVwZGF0ZUNhcmRXaWR0aCh0aGlzLmxheW91dFNpemUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hcnJhbmdlQ2FyZHModGhpcy5yZXNpemVDYXJkSXRlbXM/LnRvQXJyYXkoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbWV0aG9kIHRvIGdldCBzY3JlZW4gd2lkdGhcbiAgICAgKiBAcmV0dXJucyBXaW5kb3cgd2lkdGggaW4gcHhcbiAgICAgKi9cbiAgICBnZXRXaWR0aEF2YWlsYWJsZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU3Vic2NyaWJlIHRvIGV2ZW50cyBmcm9tIGl0ZW1zICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbFNldHVwKCk6IHZvaWQge1xuICAgICAgICAvLyBsaXN0ZW4gZm9yIHJlc2l6aW5nIGV2ZW50IG9mIGNhcmQgaXRlbVxuICAgICAgICB0aGlzLnJlc2l6ZUNhcmRJdGVtcz8uZm9yRWFjaCgocmVzaXplQ2FyZEl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXlvdXRDb25maWcgJiYgdGhpcy5sYXlvdXRDb25maWcubGVuZ3RoID49IGluZGV4ICsgMSkge1xuICAgICAgICAgICAgICAgIHJlc2l6ZUNhcmRJdGVtLmNvbmZpZyA9IHRoaXMubGF5b3V0Q29uZmlnW2luZGV4XTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzaXplQ2FyZEl0ZW0ucmVzaXppbmdcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBSZXNpemVkRXZlbnQpID0+IHRoaXMuY2FyZFJlc2l6aW5nKGV2ZW50KSk7XG5cbiAgICAgICAgICAgIC8vIGxpc3RlbiBmb3IgcmVzaXplIGNvbXBsZXRlIGV2ZW50IG9mIGNhcmQgaXRlbVxuICAgICAgICAgICAgcmVzaXplQ2FyZEl0ZW0ucmVzaXplZFxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFJlc2l6ZWRFdmVudCkgPT4gdGhpcy5jYXJkUmVzaXplQ29tcGxldGUoZXZlbnQpKTtcblxuICAgICAgICAgICAgLy8gbGlzdGVuIGZvciBtaW5pLWhlYWRlciBoZWlnaHQgZXZlbnQgb2YgY2FyZCBpdGVtXG4gICAgICAgICAgICByZXNpemVDYXJkSXRlbS5taW5pSGVhZGVyUmVhY2hlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQ6IFJlc2l6ZWRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWluaUhlYWRlclJlYWNoZWQuZW1pdChldmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIGxpc3RlbiBmb3IgbWluaS1jb250ZW50IGhlaWdodCBldmVudCBvZiBjYXJkIGl0ZW1cbiAgICAgICAgICAgIHJlc2l6ZUNhcmRJdGVtLm1pbmlDb250ZW50UmVhY2hlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQ6IFJlc2l6ZWRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWluaUNvbnRlbnRSZWFjaGVkLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcENoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjY2Vzc2liaWxpdHlTZXR1cCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyID0gbmV3IEZvY3VzS2V5TWFuYWdlcih0aGlzLnJlc2l6ZUNhcmRJdGVtcykud2l0aFdyYXAoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBjcmVhdGUgbGF5b3V0IGJhc2VkIG9uIGxheW91dCBzaXplICovXG4gICAgcHJpdmF0ZSBfY3JlYXRlTGF5b3V0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzY3JlZW5XaWR0aCA9IHRoaXMuZ2V0V2lkdGhBdmFpbGFibGUoKTtcbiAgICAgICAgY29uc3QgcHJldkxheW91dFNpemUgPSB0aGlzLmxheW91dFNpemU7XG5cbiAgICAgICAgaWYgKHNjcmVlbldpZHRoID4gMCAmJiBzY3JlZW5XaWR0aCA8PSA2NTYgJiYgcHJldkxheW91dFNpemUgIT09ICdzbScpIHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0U2l6ZSA9ICdzbSc7XG4gICAgICAgICAgICB0aGlzLl9zZXRMYXlvdXRDb2x1bW5zKHRoaXMubGF5b3V0U2l6ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHNjcmVlbldpZHRoID4gNjU2ICYmIHNjcmVlbldpZHRoIDw9IDk3NSAmJiBwcmV2TGF5b3V0U2l6ZSAhPT0gJ21kJykge1xuICAgICAgICAgICAgdGhpcy5sYXlvdXRTaXplID0gJ21kJztcbiAgICAgICAgICAgIHRoaXMuX3NldExheW91dENvbHVtbnModGhpcy5sYXlvdXRTaXplKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NyZWVuV2lkdGggPiA5NzUgJiYgc2NyZWVuV2lkdGggPD0gMTM1OSAmJiBwcmV2TGF5b3V0U2l6ZSAhPT0gJ2xnJykge1xuICAgICAgICAgICAgdGhpcy5sYXlvdXRTaXplID0gJ2xnJztcbiAgICAgICAgICAgIHRoaXMuX3NldExheW91dENvbHVtbnModGhpcy5sYXlvdXRTaXplKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NyZWVuV2lkdGggPiAxMzU5ICYmIHByZXZMYXlvdXRTaXplICE9PSAneGwnKSB7XG4gICAgICAgICAgICB0aGlzLmxheW91dFNpemUgPSAneGwnO1xuICAgICAgICAgICAgdGhpcy5fc2V0TGF5b3V0Q29sdW1ucyh0aGlzLmxheW91dFNpemUpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEVtaXQgbGF5b3V0Q2hhbmdlIGV2ZW50IHdpdGggdXBkYXRlZCBjYXJkIGRpbWVuc2lvbnMgKi9cbiAgICBwcml2YXRlIF9lbWl0TGF5b3V0Q2hhbmdlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBsYXRlc3RDYXJkQ29uZmlnOiBSZXNpemFibGVDYXJkTGF5b3V0Q29uZmlnID0gW107XG4gICAgICAgIHRoaXMucmVzaXplQ2FyZEl0ZW1zPy5mb3JFYWNoKChjYXJkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjYXJkQ29uZmlnOiBSZXNpemFibGVDYXJkSXRlbUNvbmZpZyA9IHt9O1xuICAgICAgICAgICAgY2FyZENvbmZpZy5jYXJkV2lkdGhDb2xTcGFuID0gY2FyZC5jYXJkV2lkdGhDb2xTcGFuO1xuICAgICAgICAgICAgY2FyZENvbmZpZy5jYXJkSGVpZ2h0Um93U3BhbiA9IGNhcmQuY2FyZEhlaWdodFJvd1NwYW47XG4gICAgICAgICAgICBjYXJkQ29uZmlnLnJhbmsgPSBjYXJkLnJhbms7XG4gICAgICAgICAgICBjYXJkQ29uZmlnLnRpdGxlID0gY2FyZC50aXRsZTtcbiAgICAgICAgICAgIGNhcmRDb25maWcuY2FyZE1pbmlDb250ZW50Um93U3BhbiA9IGNhcmQuY2FyZE1pbmlDb250ZW50Um93U3BhbjtcbiAgICAgICAgICAgIGNhcmRDb25maWcuY2FyZE1pbmlIZWFkZXJSb3dTcGFuID0gY2FyZC5jYXJkTWluaUhlYWRlclJvd1NwYW47XG4gICAgICAgICAgICBjYXJkQ29uZmlnLnJlc2l6YWJsZSA9IGNhcmQucmVzaXphYmxlO1xuICAgICAgICAgICAgbGF0ZXN0Q2FyZENvbmZpZy5wdXNoKGNhcmRDb25maWcpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5sYXlvdXRDaGFuZ2UuZW1pdChsYXRlc3RDYXJkQ29uZmlnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIFNldHMgbnVtYmVyIG9mIGNvbHVtbiBpbiBsYXlvdXQsIGJhc2VkIG9uIExheW91dFNpemUgcGFzc2VkXG4gICAgICogQHBhcmFtIGxheW91dFNpemU6IEF2YWlsYWJsZSBvcHRpb25zIGFyZSAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2V0TGF5b3V0Q29sdW1ucyhsYXlvdXRTaXplOiBMYXlvdXRTaXplKTogdm9pZCB7XG4gICAgICAgIGxldCBsYXlvdXRXaWR0aERlZmF1bHQ6IG51bWJlcjtcblxuICAgICAgICBzd2l0Y2ggKGxheW91dFNpemUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NtJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9jb2x1bW5zID0gMTtcbiAgICAgICAgICAgICAgICB0aGlzLl9wYWRkaW5nTGVmdCA9IDg7XG4gICAgICAgICAgICAgICAgbGF5b3V0V2lkdGhEZWZhdWx0ID0gdGhpcy5fY29sdW1ucyAqIGhvcml6b250YWxSZXNpemVTdGVwICsgMiAqIHRoaXMuX3BhZGRpbmdMZWZ0O1xuICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0V2lkdGggPSBsYXlvdXRXaWR0aERlZmF1bHQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5fY29sdW1ucyA9IDI7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFkZGluZ0xlZnQgPSAxNjtcbiAgICAgICAgICAgICAgICBsYXlvdXRXaWR0aERlZmF1bHQgPSB0aGlzLl9jb2x1bW5zICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXAgKyAyICogdGhpcy5fcGFkZGluZ0xlZnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXRXaWR0aCA9IGxheW91dFdpZHRoRGVmYXVsdCArIGdhcDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xnJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9jb2x1bW5zID0gMztcbiAgICAgICAgICAgICAgICB0aGlzLl9wYWRkaW5nTGVmdCA9IDE2O1xuICAgICAgICAgICAgICAgIGxheW91dFdpZHRoRGVmYXVsdCA9IHRoaXMuX2NvbHVtbnMgKiBob3Jpem9udGFsUmVzaXplU3RlcCArIDIgKiB0aGlzLl9wYWRkaW5nTGVmdDtcbiAgICAgICAgICAgICAgICB0aGlzLmxheW91dFdpZHRoID0gbGF5b3V0V2lkdGhEZWZhdWx0ICsgMiAqIGdhcDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3hsJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9jb2x1bW5zID0gNDtcbiAgICAgICAgICAgICAgICB0aGlzLl9wYWRkaW5nTGVmdCA9IDQ4O1xuICAgICAgICAgICAgICAgIGxheW91dFdpZHRoRGVmYXVsdCA9IHRoaXMuX2NvbHVtbnMgKiBob3Jpem9udGFsUmVzaXplU3RlcCArIDIgKiB0aGlzLl9wYWRkaW5nTGVmdDtcbiAgICAgICAgICAgICAgICB0aGlzLmxheW91dFdpZHRoID0gbGF5b3V0V2lkdGhEZWZhdWx0ICsgMyAqIGdhcDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5fY29sdW1ucyA9IDQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFkZGluZ0xlZnQgPSA0ODtcbiAgICAgICAgICAgICAgICBsYXlvdXRXaWR0aERlZmF1bHQgPSB0aGlzLl9jb2x1bW5zICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXAgKyAyICogdGhpcy5fcGFkZGluZ0xlZnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXRXaWR0aCA9IGxheW91dFdpZHRoRGVmYXVsdCArIDMgKiBnYXA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIE1ldGhvZCB0byBoYW5kbGUgY2FyZCB2ZXJ0aWNhbCByZXNpemUgYW5kIHRyaWdnZXIgdGhlIGxheW91dCBjaGFuZ2VcbiAgICAgKiBAcGFyYW0gZXZlbnQ6IFJlc2l6ZWRFdmVudFxuICAgICAqL1xuICAgIHByaXZhdGUgX2hhbmRsZVZlcnRpY2FsUmVzaXplKGV2ZW50OiBSZXNpemVkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmNhcmQuY2FyZEhlaWdodFJvd1NwYW4gIT09IGV2ZW50LmNhcmQucHJldmlvdXNDYXJkSGVpZ2h0Um93U3Bhbikge1xuICAgICAgICAgICAgdGhpcy5hcnJhbmdlQ2FyZHModGhpcy5fc29ydGVkQ2FyZHMpO1xuICAgICAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB0aGlzLnN0ZXBDaGFuZ2UuZW1pdChldmVudC5jYXJkLmdldFJlc2l6ZWRFdmVudE9iamVjdCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gTWV0aG9kIHRvIGhhbmRsZSBjYXJkIGhvcml6b250YWwgcmVzaXplIGFuZCB0cmlnZ2VyIHRoZSBsYXlvdXQgY2hhbmdlXG4gICAgICogQHBhcmFtIGV2ZW50IDogUmVzaXplZEV2ZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlSG9yaXpvbnRhbFJlc2l6ZShldmVudDogUmVzaXplZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8vIHdoZW4gaW5jcmVhc2luZyB3aWR0aCBoaXQgdGhlIG9mZnNldCwgc2hvdyBleHRlbmRlZCBib3JkZXIgYW5kIHN0YXJ0IHB1c2hpbmcgZG93biBib3JkZXIgY2FyZHNcbiAgICAgICAgLy8gd2hlbiB3aWR0aCBpcyBkZWNyZWFzaW5nICwgc2hvdyBleHRlbmRlZCBib3JkZXIgdGlsbCBpdCByZWFjaGVzIHRvIG9mZnNldC5cbiAgICAgICAgY29uc3QgY2FyZFdpZHRoQ2hhbmdlID0gZXZlbnQuY2FyZFdpZHRoIC0gZXZlbnQucHJldkNhcmRXaWR0aDtcbiAgICAgICAgY29uc3QgY3VycmVudFJlc2l6aW5nSXRlbUluZGV4ID0gdGhpcy5fc29ydGVkQ2FyZHM/LmZpbmRJbmRleCgoeCkgPT4geC5yYW5rID09PSBldmVudC5jYXJkLnJhbmspO1xuXG4gICAgICAgIGlmIChldmVudC5jYXJkV2lkdGggPiBldmVudC5wcmV2Q2FyZFdpZHRoKSB7XG4gICAgICAgICAgICAvLyB3aGVuIGluY3JlYXNpbmcgc2l6ZVxuICAgICAgICAgICAgLy8gY2FyZCB3aWR0aCBpbmNyZWFzaW5nIGN1cnJlbnRseVxuICAgICAgICAgICAgaWYgKGV2ZW50LmNhcmQuY2FyZFN0YXRlID09PSAxICYmIGNhcmRXaWR0aENoYW5nZSA+IGhvcml6b250YWxSZXNpemVPZmZzZXQgKyBnYXAgJiYgIXRoaXMuX2xheW91dFNoaWZ0ZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBpbmRleCBvZiB0aGlzIGNhcmQsIHRoZW4gZ2V0IG5leHQgY2FyZC4gZXhjaGFuZ2UgcmFua3NcbiAgICAgICAgICAgICAgICB0aGlzLl9zb3J0ZWRDYXJkcy5mb3JFYWNoKChjYXJkOiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiBjdXJyZW50UmVzaXppbmdJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGFyZSBzb21lIGNhcmRzIG9uIHNhbWUgaGVpZ2h0LiBtYWtlIHRoZSBjdXJyZW50IGNhcmQgcmFuayBoaWdoZXIgdGhhbiB0aGVzZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBuZXh0IGluZGV4IHdoZXJlIGl0IHdpbGwgZml0LiB1bnRpbCBhbnkgY2FyZCBoYXMgbGVzcyBjb2x1bW4gc3BhbiB0aGFuIHRvdGFsIGNvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIG9ubHkgaW4gbmV4dCB0b3AsIG9uZSBjYXJkIGlzIHRha2luZyBmdWxsIGNvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkLnN0YXJ0aW5nQ29sdW1uUG9zaXRpb24gKyBjYXJkLmNhcmRXaWR0aENvbFNwYW4gPT09IHRoaXMuX2NvbHVtbnMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkLmNhcmRXaWR0aENvbFNwYW4gIT09IHRoaXMuX2NvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldCBjYXJkcyB3aXRoIHRvcCA+IGN1cnJlbnQgdG9wICwgYnV0IG1pbmltdW0gb2YgaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBleGNoYW5nZSByYW5rIHdpdGggdGhlc2UgY2FyZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21vdmVDYXJkRG93bihpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sYXlvdXRTaGlmdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycmFuZ2VDYXJkcyh0aGlzLl9zb3J0ZWRDYXJkcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQoZXZlbnQuY2FyZC5nZXRSZXNpemVkRXZlbnRPYmplY3QoKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGV2ZW50LmNhcmQuY2FyZFN0YXRlID09PSAtMSAmJlxuICAgICAgICAgICAgICAgIGNhcmRXaWR0aENoYW5nZSA8IGhvcml6b250YWxSZXNpemVPZmZzZXQgKyBnYXAgJiZcbiAgICAgICAgICAgICAgICB0aGlzLl9sYXlvdXRTaGlmdGVkXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAvLyBjYXJkIHdpZHRoIGRlY3JlYXNpbmcgY3VycmVudGx5XG4gICAgICAgICAgICAgICAgLy8gbW92ZSB1cCB0aGUgY2FyZHMsIGlmIGl0IHdhcyBzaGlmdGVkIHdoaWxlIGluY3JlYXNpbmcgdGhlIHdpZHRoXG4gICAgICAgICAgICAgICAgdGhpcy5fc29ydGVkQ2FyZHMuZm9yRWFjaCgoY2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY2FyZC5yYW5rID0gY2FyZC5wcmV2UmFuayA/IGNhcmQucHJldlJhbmsgOiBjYXJkLnJhbms7XG4gICAgICAgICAgICAgICAgICAgIGNhcmQucHJldlJhbmsgPSAwO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xheW91dFNoaWZ0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycmFuZ2VDYXJkcyh0aGlzLl9zb3J0ZWRDYXJkcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQoZXZlbnQuY2FyZC5nZXRSZXNpemVkRXZlbnRPYmplY3QoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY2FyZFdpZHRoIDwgZXZlbnQucHJldkNhcmRXaWR0aCkge1xuICAgICAgICAgICAgLy8gd2hlbiBkZWNyZWFzaW5nIHNpemVcbiAgICAgICAgICAgIGlmIChldmVudC5jYXJkLmNhcmRTdGF0ZSA9PT0gLTEgJiYgLWNhcmRXaWR0aENoYW5nZSA+IGhvcml6b250YWxSZXNpemVPZmZzZXQgJiYgIXRoaXMuX2xheW91dFNoaWZ0ZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBjYXJkIHdpZHRoIGRlY3JlYXNpbmcgY3VycmVudGx5XG4gICAgICAgICAgICAgICAgdGhpcy5fbGF5b3V0U2hpZnRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJhbmdlQ2FyZHModGhpcy5fc29ydGVkQ2FyZHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcENoYW5nZS5lbWl0KGV2ZW50LmNhcmQuZ2V0UmVzaXplZEV2ZW50T2JqZWN0KCkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5jYXJkLmNhcmRTdGF0ZSA9PT0gMSAmJiAtY2FyZFdpZHRoQ2hhbmdlIDwgaG9yaXpvbnRhbFJlc2l6ZU9mZnNldCAmJiB0aGlzLl9sYXlvdXRTaGlmdGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gY2FyZCB3aWR0aCBpbmNyZWFzaW5nIGN1cnJlbnRseVxuICAgICAgICAgICAgICAgIHRoaXMuX2xheW91dFNoaWZ0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycmFuZ2VDYXJkcyh0aGlzLl9zb3J0ZWRDYXJkcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQoZXZlbnQuY2FyZC5nZXRSZXNpemVkRXZlbnRPYmplY3QoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIE1ldGhvZCB0byBtb3ZlIGNhcmQgZG93biwgd2hlbiBhbm90aGVyIGNhcmQgd2lkdGggaXMgaW5jcmVhc2luZ1xuICAgICAqIE1ldGhvZCB0byBsb29wIHRpbGwgdGhpcy5fY29sdW1ucyAtMSBwb3NpdGlvbnMgYW5kIGV4Y2hhbmdlIHRoZSByYW5rXG4gICAgICogQHBhcmFtIGN1cnJlbnRDYXJkSW5kZXg6IEluZGV4IG9mIGN1cnJlbnQgY2FyZFxuICAgICAqL1xuXG4gICAgcHJpdmF0ZSBfbW92ZUNhcmREb3duKGN1cnJlbnRDYXJkSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyB0YWtpbmcgd2lkdGggb2YgYWRqYWNlbnQgY2FyZCBjb2wtc3BhbiBpbnRvIGFjY291bnRcblxuICAgICAgICAvLyBlZzogNCBjb2x1bW5zIC0gMiBjb2woYWRqYWNlbnQgY2FyZCkgPSAyIHBvc2l0aW9ucyBjYW4gZXhjaGFuZ2UgcmFua3NcbiAgICAgICAgY29uc3QgY3VycmVudENhcmQ6IFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50ID0gdGhpcy5fc29ydGVkQ2FyZHNbY3VycmVudENhcmRJbmRleF07XG4gICAgICAgIGxldCBjYXJkOiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudDtcblxuICAgICAgICAvLyB1bm9jY3VwaWVkUG9zaXRpb25zIHBvc2l0aW9ucyBsZWZ0IGFmdGVyIGN1cnJlbnRDYXJkIG9jY3VwaWVzIGluIG5leHQgcm93LlxuICAgICAgICBsZXQgdW5vY2N1cGllZFBvc2l0aW9ucyA9IHRoaXMuX2NvbHVtbnMgLSBjdXJyZW50Q2FyZC5jYXJkV2lkdGhDb2xTcGFuO1xuXG4gICAgICAgIGN1cnJlbnRDYXJkLnByZXZSYW5rID0gY3VycmVudENhcmQucmFuaztcblxuICAgICAgICBsZXQgaW5kZXggPSAxO1xuICAgICAgICB3aGlsZSAodW5vY2N1cGllZFBvc2l0aW9ucyA+IDApIHtcbiAgICAgICAgICAgIC8vIGNvbXBhcmUgZnJvbSBuZXh0IGNhcmRcbiAgICAgICAgICAgIGNhcmQgPSB0aGlzLl9zb3J0ZWRDYXJkc1tpbmRleCArIGN1cnJlbnRDYXJkSW5kZXhdO1xuICAgICAgICAgICAgaWYgKGNhcmQgJiYgdW5vY2N1cGllZFBvc2l0aW9ucyA+PSBjYXJkLmNhcmRXaWR0aENvbFNwYW4pIHtcbiAgICAgICAgICAgICAgICBjYXJkLnByZXZSYW5rID0gY2FyZC5yYW5rO1xuICAgICAgICAgICAgICAgIGNhcmQucmFuayAtPSAxO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRDYXJkLnJhbmsgPSBjYXJkLnByZXZSYW5rO1xuICAgICAgICAgICAgICAgIHVub2NjdXBpZWRQb3NpdGlvbnMgLT0gY2FyZC5jYXJkV2lkdGhDb2xTcGFuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB1bm9jY3VwaWVkUG9zaXRpb25zID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluZGV4ICs9IDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIHVwZGF0ZXMgYXJyYXkgd2l0aCBuZXcgY29sdW1uIGhlaWdodHNcbiAgICAgKiBAcGFyYW0gY2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIF91cGRhdGVDb2x1bW5zSGVpZ2h0KGNhcmQ6IFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbHVtbnNTdGFydCA9IE1hdGguZmxvb3IoY2FyZFt0aGlzLl9kaXJlY3Rpb25Qb3NpdGlvbl0gLyBob3Jpem9udGFsUmVzaXplU3RlcCk7XG5cbiAgICAgICAgLy8gR2V0IHdpZHRoIG9mIGN1cnJlbnQgY2FyZCByZXNpemluZyBhbmQgYXNzaWduIHdpZHRoIGhlcmUgZm9yIHRoYXQgY2FyZFxuICAgICAgICBjb25zdCBjYXJkQmFzZUNvbFNwYW4gPSBNYXRoLmZsb29yKGNhcmQuY2FyZFdpZHRoIC8gaG9yaXpvbnRhbFJlc2l6ZVN0ZXApO1xuXG4gICAgICAgIC8vIHRpbGwgd2hpY2ggY29sdW1ucyBjYXJkIHNwYW5zXG4gICAgICAgIGNvbnN0IGNvbHVtbnNTcGFuID1cbiAgICAgICAgICAgIGNhcmQuY2FyZFdpZHRoIC0gY2FyZEJhc2VDb2xTcGFuICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXAgLSBjYXJkQmFzZUNvbFNwYW4gKiBnYXAgPiBob3Jpem9udGFsUmVzaXplT2Zmc2V0XG4gICAgICAgICAgICAgICAgPyBjYXJkQmFzZUNvbFNwYW4gKyAxXG4gICAgICAgICAgICAgICAgOiBjYXJkQmFzZUNvbFNwYW47XG5cbiAgICAgICAgY29uc3QgY29sdW1uSGVpZ2h0ID0gY2FyZC5jYXJkSGVpZ2h0ICsgY2FyZC50b3A7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5zU3BhbjsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLl9jb2x1bW5zSGVpZ2h0W2kgKyBjb2x1bW5zU3RhcnRdID0gY29sdW1uSGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbHVtbnNTdGFydCA9PT0gY29sdW1uc1NwYW4pIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbHVtbnNIZWlnaHRbY29sdW1uc1N0YXJ0XSA9IGNvbHVtbkhlaWdodDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gVHJ5IHRvIHNldCBjYXJkIGF0IGF2YWlsYWJsZSBoZWlnaHRzXG4gICAgICogQHBhcmFtIGNhcmQgOiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudFxuICAgICAqIEBwYXJhbSBpbmRleCA6IGluZGV4IHZhbHVlIG9mIGNhcmQgaW4gYXJyYXkgb2YgUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9zZXRDYXJkUG9zaXRpb25WYWx1ZXMoY2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICBjYXJkW3RoaXMuX2RpcmVjdGlvblBvc2l0aW9uXSA9IDAgKyB0aGlzLl9wYWRkaW5nTGVmdDtcbiAgICAgICAgICAgIGNhcmQudG9wID0gMDtcbiAgICAgICAgICAgIGNhcmQuc3RhcnRpbmdDb2x1bW5Qb3NpdGlvbiA9IDA7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1bmlxdWVIZWlnaHRzID0gdGhpcy5fZ2V0U29ydGVkVW5pcXVlSGVpZ2h0cygpO1xuICAgICAgICBsZXQgY2FyZFBvc2l0aW9uZWQgPSBmYWxzZTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHVuaXF1ZUhlaWdodHMubGVuZ3RoICYmICFjYXJkUG9zaXRpb25lZDsgaSsrKSB7XG4gICAgICAgICAgICBjYXJkUG9zaXRpb25lZCA9IHRoaXMuX2lzUG9zaXRpb25TZXRTdWNjZXNzKHVuaXF1ZUhlaWdodHNbaV0sIGNhcmQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiB0cnkgdG8gc2V0IGNhcmQgYXQgZ2l2ZW4gaGVpZ2h0LlxuICAgICAqIEBwYXJhbSBoZWlnaHQgOiBoZWlnaHQgYXQgd2hpY2ggY2FyZCBpcyBnZXR0aW5nIHBvc2l0aW9uZWQuXG4gICAgICogQHBhcmFtIGNhcmQgOiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudFxuICAgICAqIEByZXR1cm5zIEl0IHJldHVybnMgdHJ1ZSB3aGVuIGNhcmQgcG9zaXRpb24gaWQgZm91bmQgb3RoZXJ3aXNlIGl0IHJldHVybnMgZmFsc2UuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaXNQb3NpdGlvblNldFN1Y2Nlc3MoaGVpZ2h0OiBudW1iZXIsIGNhcmQ6IFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGNvbHVtblBvc2l0aW9ucyA9IFtdO1xuICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbkhlaWdodCBvZiB0aGlzLl9jb2x1bW5zSGVpZ2h0KSB7XG4gICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgaWYgKGNvbHVtbkhlaWdodCA9PT0gaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgY29sdW1uUG9zaXRpb25zLnB1c2goaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGNoZWNrIGZvciBlYWNoIGNhcmQgcG9zaXRpb24sIHN0YXJ0aW5nIGZyb20gbGVmdG1vc3RcbiAgICAgICAgbGV0IGlzRml0dGluZyA9IGZhbHNlO1xuICAgICAgICBsZXQgc3RhcnRpbmdDb2x1bW5Qb3NpdGlvbiA9IC0xO1xuXG4gICAgICAgIC8vIHRyeSB0byBmaXQgYXMgbGVmdCAob3IgcmlnaHQgaWYgUnRsKSBhcyBwb3NzaWJsZSBmcm9tIHRoZSBjb2x1bW4gcG9zaXRpb25cbiAgICAgICAgc3RhcnRpbmdDb2x1bW5Qb3NpdGlvbiA9IHRoaXMuX2ZpdENhcmRDb2x1bW5Qb3NpdGlvbihjYXJkLCBjb2x1bW5Qb3NpdGlvbnMsIGhlaWdodCk7XG4gICAgICAgIGlmIChzdGFydGluZ0NvbHVtblBvc2l0aW9uICE9PSAtMSkge1xuICAgICAgICAgICAgaXNGaXR0aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGNhcmRbdGhpcy5fZGlyZWN0aW9uUG9zaXRpb25dID1cbiAgICAgICAgICAgICAgICBzdGFydGluZ0NvbHVtblBvc2l0aW9uICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXAgK1xuICAgICAgICAgICAgICAgIHRoaXMuX3BhZGRpbmdMZWZ0ICtcbiAgICAgICAgICAgICAgICAoc3RhcnRpbmdDb2x1bW5Qb3NpdGlvbiA+IDAgPyBnYXAgKiBzdGFydGluZ0NvbHVtblBvc2l0aW9uIDogMCk7XG4gICAgICAgICAgICBjYXJkLnRvcCA9IGhlaWdodCArIChoZWlnaHQgPiAwID8gdmVydGljYWxSZXNpemVTdGVwIDogMCk7XG4gICAgICAgICAgICBjYXJkLnN0YXJ0aW5nQ29sdW1uUG9zaXRpb24gPSBzdGFydGluZ0NvbHVtblBvc2l0aW9uO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0ZpdHRpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBUcnkgdG8gc3RhcnQgY2FyZCBwb3NpdGlvbiBmcm9tIGxlZnQgbW9zdCBmaXQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIGNhcmQgOiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudFxuICAgICAqIEBwYXJhbSBjb2x1bW5Qb3NpdGlvbnMgOiBBcnJheSBvZiBhdmFpbGFibGUgcG9zaXRpb25zIGZvciBjYXJkcy5cbiAgICAgKiBAcGFyYW0gaGVpZ2h0IDogaGVpZ2h0IGF0IHdoaWNoIGZpeGluZyB0aGUgY2FyZFxuICAgICAqIEByZXR1cm5zIDogcmV0dXJucyBzdGFydGluZyBjb2x1bW4gcG9zaXRpb24gd2hlcmUgY2FyZCB3aWxsIGZpdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9maXRDYXJkQ29sdW1uUG9zaXRpb24oXG4gICAgICAgIGNhcmQ6IFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50LFxuICAgICAgICBjb2x1bW5Qb3NpdGlvbnM6IEFycmF5PG51bWJlcj4sXG4gICAgICAgIGhlaWdodDogbnVtYmVyXG4gICAgKTogbnVtYmVyIHtcbiAgICAgICAgLy8gY2hlY2sgZm9yIGVhY2ggY2FyZCBwb3NpdGlvbiwgc3RhcnRpbmcgZnJvbSBsZWZ0bW9zdFxuICAgICAgICBsZXQgaXNGaXR0aW5nID0gZmFsc2U7XG4gICAgICAgIGxldCBzdGFydGluZ0NvbHVtblBvc2l0aW9uID0gLTE7XG5cbiAgICAgICAgLy8gc3RhcnQgZnJvbSBwcmV2aW91cyBpbmRleGVzXG4gICAgICAgIGNvbnN0IGNhcmRCYXNlQ29sU3BhbiA9IE1hdGguZmxvb3IoY2FyZC5jYXJkV2lkdGggLyBob3Jpem9udGFsUmVzaXplU3RlcCk7XG4gICAgICAgIGNvbnN0IGNhcmRDb2xTcGFuID1cbiAgICAgICAgICAgIGNhcmQuY2FyZFdpZHRoIC0gY2FyZEJhc2VDb2xTcGFuICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXAgLSBjYXJkQmFzZUNvbFNwYW4gKiBnYXAgPiBob3Jpem9udGFsUmVzaXplT2Zmc2V0XG4gICAgICAgICAgICAgICAgPyBjYXJkQmFzZUNvbFNwYW4gKyAxXG4gICAgICAgICAgICAgICAgOiBjYXJkQmFzZUNvbFNwYW47XG4gICAgICAgIC8vIHRyeSB0byBzZXQgdG93YXJkcyBsZWZ0IGZyb20gYXZhaWxhYmxlIGNhcmQgcG9zaXRpb25cbiAgICAgICAgLy8gZWcuIFsxLCAyLCAzLCA0XSBjb2x1bW5zUG9zaXRpb25zXG4gICAgICAgIGZvciAoY29uc3QgY29sdW1uUG9zaXRpb24gb2YgY29sdW1uUG9zaXRpb25zKSB7XG4gICAgICAgICAgICBpZiAoaXNGaXR0aW5nKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHN0YXJ0aW5nUG9zaXRpb24gdmFsdWVzIHdpbGwgYmUgMSwgMiwgMywgNFxuICAgICAgICAgICAgLy8gdHJ5IHRvIGZpdCBhcyBsZWZ0IGFzIHBvc3NpYmxlXG4gICAgICAgICAgICBsZXQgc3RhcnRpbmdQb3NpdGlvbiA9IGNvbHVtblBvc2l0aW9uIC0gKGNhcmRDb2xTcGFuIC0gMSk7XG4gICAgICAgICAgICBzdGFydGluZ1Bvc2l0aW9uID0gc3RhcnRpbmdQb3NpdGlvbiA+IDAgPyBzdGFydGluZ1Bvc2l0aW9uIDogMTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSBzdGFydGluZ1Bvc2l0aW9uOyBpbmRleCA8PSBjb2x1bW5Qb3NpdGlvbiAmJiAhaXNGaXR0aW5nOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgc3BhbiA9IDA7IHNwYW4gPCBjYXJkQ29sU3Bhbjsgc3BhbisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jb2x1bW5zSGVpZ2h0W2luZGV4ICsgc3BhbiAtIDFdIDw9IGhlaWdodCAmJiBjYXJkQ29sU3BhbiArIGluZGV4IC0gMSA8PSB0aGlzLl9jb2x1bW5zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0ZpdHRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRpbmdDb2x1bW5Qb3NpdGlvbiA9IGluZGV4IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRml0dGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRpbmdDb2x1bW5Qb3NpdGlvbiA9IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0YXJ0aW5nQ29sdW1uUG9zaXRpb247XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gcmV0dXJucyBzb3J0ZWQgdW5pcXVlIGhlaWdodCBvZiBjb2x1bW5zICovXG4gICAgcHJpdmF0ZSBfZ2V0U29ydGVkVW5pcXVlSGVpZ2h0cygpOiBudW1iZXJbXSB7XG4gICAgICAgIGNvbnN0IHRlbXBBcnJheSA9IHRoaXMuX2NvbHVtbnNIZWlnaHQuc2xpY2UoKTtcbiAgICAgICAgY29uc3Qgc29ydGVkQ29sdW1uc0hlaWdodEFycmF5ID0gdGVtcEFycmF5LnNvcnQoY29tcGFyZXIpO1xuICAgICAgICBjb25zdCB1bmlxdWVIZWlnaHRzID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBzb3J0ZWRIZWlnaHQgb2Ygc29ydGVkQ29sdW1uc0hlaWdodEFycmF5KSB7XG4gICAgICAgICAgICBpZiAodW5pcXVlSGVpZ2h0cy5pbmRleE9mKHNvcnRlZEhlaWdodCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdW5pcXVlSGVpZ2h0cy5wdXNoKHNvcnRlZEhlaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gY29tcGFyZXIoZmlyc3Q6IG51bWJlciwgc2Vjb25kOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICAgICAgcmV0dXJuIGZpcnN0IC0gc2Vjb25kO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmlxdWVIZWlnaHRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQ29tcGFyYXRvciB0byBzb3J0IGNhcmQgYmFzZWQgb24gcmFuay5cbiAgICAgKiBAcGFyYW0gZmlyc3RDYXJkIDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnRcbiAgICAgKiBAcGFyYW0gc2Vjb25kQ2FyZCA6IFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50XG4gICAgICogQHJldHVybnMgOiByZXR1cm5zIGRpZmZlcmVuY2UgYmV0d2VlbiBmaXJzdCBjYXJkIHJhbmsgYW5kIG90aGVyIGNhcmQgcmFuay5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9zb3J0Q2FyZHMoZmlyc3RDYXJkOiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudCwgc2Vjb25kQ2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZmlyc3RDYXJkLnJhbmsgLSBzZWNvbmRDYXJkLnJhbms7XG4gICAgfVxuXG4gICAgLyoqIGdldCB2YWx1ZSBmb3IgcnRsICovXG4gICAgcHJpdmF0ZSBnZXQgX2lzUnRsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnRsU2VydmljZT8ucnRsLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUnRsIGNoYW5nZSBzdWJzY3JpcHRpb24gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpYmVUb1J0bCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVmcmVzaERpcmVjdGlvbiA9IChpc1J0bCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZGlyZWN0aW9uUG9zaXRpb24gPSBpc1J0bCA/ICdyaWdodCcgOiAnbGVmdCc7XG4gICAgICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmVmcmVzaERpcmVjdGlvbih0aGlzLl9pc1J0bCk7XG4gICAgICAgIHRoaXMuX3J0bFNlcnZpY2U/LnJ0bC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZShyZWZyZXNoRGlyZWN0aW9uKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgI2xheW91dFxuICAgIGNsYXNzPVwiZmQtcmVzaXphYmxlLWNhcmQtbGF5b3V0XCJcbiAgICBbY2xhc3NdPVwiJ2ZkLXJlc2l6YWJsZS1jYXJkLWxheW91dC0tJyArIGxheW91dFNpemVcIlxuICAgIFtzdHlsZS53aWR0aC5weF09XCJsYXlvdXRXaWR0aFwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJsYXlvdXRIZWlnaHRcIlxuPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
|
|
527
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLWNhcmQtbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3Jlc2l6YWJsZS1jYXJkLWxheW91dC9yZXNpemFibGUtY2FyZC1sYXlvdXQvcmVzaXphYmxlLWNhcmQtbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3Jlc2l6YWJsZS1jYXJkLWxheW91dC9yZXNpemFibGUtY2FyZC1sYXlvdXQvcmVzaXphYmxlLWNhcmQtbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUNILG9CQUFvQixFQUNwQixHQUFHLEVBRUgsMEJBQTBCLEVBRTFCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDekIsTUFBTSxxREFBcUQsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQVl6RCxNQUFNLE9BQU8sNEJBQTRCO0lBa0VyQyxZQUNxQixHQUFzQixFQUN0QixXQUF1QixFQUNYLFdBQXVCO1FBRm5DLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ1gsZ0JBQVcs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LENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDdEYsQ0FBQzs7eUhBcmxCUSw0QkFBNEI7NkdBQTVCLDRCQUE0Qix1YUE4QnBCLDBCQUEwQiw2QkN6RS9DLGdQQVNBOzJGRGtDYSw0QkFBNEI7a0JBUHhDLFNBQVM7K0JBQ0ksMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzswQkF1RWhDLFFBQVE7NENBbEViLFlBQVk7c0JBRFgsS0FBSztnQkFLTixVQUFVO3NCQURULE1BQU07Z0JBS1AsUUFBUTtzQkFEUCxNQUFNO2dCQUtQLE9BQU87c0JBRE4sTUFBTTtnQkFLUCxpQkFBaUI7c0JBRGhCLE1BQU07Z0JBS1Asa0JBQWtCO3NCQURqQixNQUFNO2dCQUtQLFlBQVk7c0JBRFgsTUFBTTtnQkFLUCxlQUFlO3NCQURkLGVBQWU7dUJBQUMsMEJBQTBCO2dCQWtGM0MsYUFBYTtzQkFEWixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFhbkMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb2N1c0tleU1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgaG9yaXpvbnRhbFJlc2l6ZVN0ZXAsXG4gICAgZ2FwLFxuICAgIFJlc2l6ZWRFdmVudCxcbiAgICBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudCxcbiAgICBSZXNpemFibGVDYXJkSXRlbUNvbmZpZyxcbiAgICB2ZXJ0aWNhbFJlc2l6ZVN0ZXAsXG4gICAgaG9yaXpvbnRhbFJlc2l6ZU9mZnNldFxufSBmcm9tICcuL3Jlc2l6YWJsZS1jYXJkLWl0ZW0vcmVzaXphYmxlLWNhcmQtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5cbmV4cG9ydCB0eXBlIExheW91dFNpemUgPSAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnO1xuZXhwb3J0IHR5cGUgUmVzaXphYmxlQ2FyZExheW91dENvbmZpZyA9IEFycmF5PFJlc2l6YWJsZUNhcmRJdGVtQ29uZmlnPjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1yZXNpemFibGUtY2FyZC1sYXlvdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAncmVzaXphYmxlLWNhcmQtbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yZXNpemFibGUtY2FyZC1sYXlvdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFJlc2l6YWJsZUNhcmRMYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIE9iamVjdCBmb3Igc2V0dGluZyBlYWNoIGNhcmQgcHJvcGVydHkgKi9cbiAgICBASW5wdXQoKVxuICAgIGxheW91dENvbmZpZzogUmVzaXphYmxlQ2FyZExheW91dENvbmZpZztcblxuICAgIC8qKiBFbWl0cyB3aGVuIGNhcmQgcmVzaXplIGlzIHJlYWNoZWQgdG8gb25lIG5ldyBzdGVwIGluIGhvcml6b250YWwgb3IgdmVydGljYWwgZGlyZWN0aW9uICovXG4gICAgQE91dHB1dCgpXG4gICAgc3RlcENoYW5nZTogRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIGNhcmQgaXMgc3RpbGwgcmVzaXppbmcgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZXNpemluZzogRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIGNhcmQgcmVzaXplIGlzIGNvbXBsZXRlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlc2l6ZWQ6IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBjYXJkIGhlaWdodCBpcyByZWR1Y2VkIHRvIHNob3cgb25seSBoZWFkZXIgKi9cbiAgICBAT3V0cHV0KClcbiAgICBtaW5pSGVhZGVyUmVhY2hlZDogRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlc2l6ZWRFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIG1pbmltdW0gaGVpZ2h0IG9mIGNhcmQgY29udGVudCBhcmVhIGlzIHJlYWNoZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICBtaW5pQ29udGVudFJlYWNoZWQ6IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBsYXlvdXQgY2hhbmdlcyAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGxheW91dENoYW5nZTogRXZlbnRFbWl0dGVyPFJlc2l6YWJsZUNhcmRMYXlvdXRDb25maWc+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNpemFibGVDYXJkTGF5b3V0Q29uZmlnPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50KVxuICAgIHJlc2l6ZUNhcmRJdGVtczogUXVlcnlMaXN0PFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50PjtcblxuICAgIC8qKiB3aWR0aCBmb3IgbGF5b3V0ICovXG4gICAgbGF5b3V0V2lkdGg6IG51bWJlcjtcblxuICAgIC8qKiBoZWlnaHQgZm9yIGxheW91dCAqL1xuICAgIGxheW91dEhlaWdodDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gTnVtYmVyIG9mIGNvbHVtbnMgaW4gbGF5b3V0LiBjb25zaWRlcmluZyAxIGNvbHVtbiB3aWR0aCAyMHJlbSAqL1xuICAgIHByaXZhdGUgX2NvbHVtbnM6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuIExheW91dCBwYWRkaW5nLiB3aWxsIGJlIGFkZGVkIHRvIGZpcnN0IGNhcmQgcGFkZGluZyBpbiBldmVyeSByb3cgKi9cbiAgICBwcml2YXRlIF9wYWRkaW5nTGVmdDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gU3RvcmVzIGhlaWdodCBvZiBlYWNoIGNvbHVtbiBvbiBjYXJkIGFycmFuZ2VtZW50ICovXG4gICAgcHJpdmF0ZSBfY29sdW1uc0hlaWdodDogQXJyYXk8bnVtYmVyPjtcblxuICAgIC8qKiBAaGlkZGVuIEF2YWlsYWJsZSBzY3JlZW4gbGF5b3V0ICovXG4gICAgcHJpdmF0ZSBfbGF5b3V0OiBMYXlvdXRTaXplO1xuXG4gICAgLyoqIEBoaWRkZW4gU3RvcmVzIHNvcnRlZCBjYXJkIGJlZm9yZSBwbGFjaW5nIGluIGxheW91dCAqL1xuICAgIHByaXZhdGUgX3NvcnRlZENhcmRzOiBBcnJheTxSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiBGb2N1c0tleU1hbmFnZXIgaW5zdGFuY2UgKi9cbiAgICBwcml2YXRlIF9rZXlib2FyZEV2ZW50c01hbmFnZXI6IEZvY3VzS2V5TWFuYWdlcjxSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGF5b3V0U2hpZnRlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kaXJlY3Rpb25Qb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2VcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb2x1bW5zSGVpZ2h0ID0gbmV3IEFycmF5KHRoaXMuX2NvbHVtbnMpO1xuICAgICAgICB0aGlzLl9jb2x1bW5zSGVpZ2h0LmZpbGwoMCk7XG4gICAgICAgIC8vIGluaXRpYWxpc2UgdmFsdWUgMFxuXG4gICAgICAgIHRoaXMuX3N1YnNjcmliZVRvUnRsKCk7XG5cbiAgICAgICAgLy8gZGV0ZWN0IGluaXRpYWwgd2luZG93IHNpemUgYW5kIHNldCBsYXlvdXRcbiAgICAgICAgdGhpcy5fY3JlYXRlTGF5b3V0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRpYWxTZXR1cCgpO1xuICAgICAgICAvLyBsaXN0ZW4gZm9yIHF1ZXJ5LWxpc3QgY2hhbmdlXG4gICAgICAgIHRoaXMucmVzaXplQ2FyZEl0ZW1zPy5mb3JFYWNoKChjYXJkKSA9PiB7XG4gICAgICAgICAgICBjYXJkPy52ZXJpZnlVcGRhdGVDYXJkV2lkdGgodGhpcy5sYXlvdXRTaXplKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yZXNpemVDYXJkSXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hcnJhbmdlQ2FyZHModGhpcy5yZXNpemVDYXJkSXRlbXM/LnRvQXJyYXkoKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFycmFuZ2VDYXJkcyh0aGlzLnJlc2l6ZUNhcmRJdGVtcz8udG9BcnJheSgpKTtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlTZXR1cCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBoYW5kbGVzIGtleWJvYXJkIGFjY2Vzc2liaWxpdHkgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoIXRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5hY3RpdmVJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9rZXlib2FyZEV2ZW50c01hbmFnZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gICAgb25SZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NyZWF0ZUxheW91dCgpO1xuICAgIH1cblxuICAgIC8qKiByZXR1cm4gbGF5b3V0IHNpemUgKi9cbiAgICBnZXQgbGF5b3V0U2l6ZSgpOiBMYXlvdXRTaXplIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xheW91dDtcbiAgICB9XG5cbiAgICAvKiogc2V0IGxheW91dCBzaXplLiBhdmFpbGFibGUgb3B0aW9ucyBhcmUgJ3NtJywgJ21kJywgJ2xnJyBhbmQgJ3hsJyAqL1xuICAgIHNldCBsYXlvdXRTaXplKGxheW91dFNpemU6IExheW91dFNpemUpIHtcbiAgICAgICAgdGhpcy5fbGF5b3V0ID0gbGF5b3V0U2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcnJhbmdlcyBjYXJkcyBpbiBsYXlvdXQgYmFzZWQgb24gcmFuaywgd2lkdGggYW5kIGhlaWdodCBvZiBjYXJkXG4gICAgICogQHBhcmFtIGNhcmRzOiBBcnJheSBvZiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudFxuICAgICAqL1xuICAgIGFycmFuZ2VDYXJkcyhjYXJkczogQXJyYXk8UmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQ+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbHVtbnNIZWlnaHQgPSBuZXcgQXJyYXkodGhpcy5fY29sdW1ucyk7XG4gICAgICAgIHRoaXMuX2NvbHVtbnNIZWlnaHQuZmlsbCgwKTtcbiAgICAgICAgLy8gc29ydCBiYXNlZCBvbiB0aGUgY2FyZCByYW5rXG4gICAgICAgIHRoaXMuX3NvcnRlZENhcmRzID0gY2FyZHM/LnNvcnQodGhpcy5fc29ydENhcmRzKTtcblxuICAgICAgICB0aGlzLl9zb3J0ZWRDYXJkcz8uZm9yRWFjaCgoY2FyZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3NldENhcmRQb3NpdGlvblZhbHVlcyhjYXJkLCBpbmRleCk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDb2x1bW5zSGVpZ2h0KGNhcmQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5sYXlvdXRIZWlnaHQgPSBNYXRoLm1heC5hcHBseShudWxsLCB0aGlzLl9jb2x1bW5zSGVpZ2h0KSArIHZlcnRpY2FsUmVzaXplU3RlcDtcblxuICAgICAgICB0aGlzLl9lbWl0TGF5b3V0Q2hhbmdlKCk7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgc2hpZnRpbmcgb2YgY2FyZHMgd2l0aCBhbmltYXRpb24sIHdoaWxlIGNhcmQgaXMgc3RpbGwgcmVzaXppbmcuXG4gICAgICogQHBhcmFtIGV2ZW50OiBSZXNpemVkRXZlbnRcbiAgICAgKi9cbiAgICBjYXJkUmVzaXppbmcoZXZlbnQ6IFJlc2l6ZWRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlc2l6aW5nLmVtaXQoZXZlbnQpO1xuICAgICAgICB0aGlzLl9oYW5kbGVIb3Jpem9udGFsUmVzaXplKGV2ZW50KTtcbiAgICAgICAgdGhpcy5faGFuZGxlVmVydGljYWxSZXNpemUoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgYXJyYW5nZW1lbnQgb2YgY2FyZHMgaW4gbGF5b3V0XG4gICAgICogQHBhcmFtIGV2ZW50OiBSZXNpemVkRXZlbnRcbiAgICAgKi9cbiAgICBjYXJkUmVzaXplQ29tcGxldGUoZXZlbnQ6IFJlc2l6ZWRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9sYXlvdXRTaGlmdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYXJyYW5nZUNhcmRzKHRoaXMucmVzaXplQ2FyZEl0ZW1zLnRvQXJyYXkoKSk7XG4gICAgICAgIHRoaXMucmVzaXplZC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGVsZW1lbnRSZWYoKTogRWxlbWVudFJlZjxSZXNpemFibGVDYXJkTGF5b3V0Q29tcG9uZW50PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmO1xuICAgIH1cblxuICAgIHVwZGF0ZUxheW91dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNpemVDYXJkSXRlbXM/LmZvckVhY2goKGNhcmQpID0+IHtcbiAgICAgICAgICAgIGNhcmQ/LnZlcmlmeVVwZGF0ZUNhcmRXaWR0aCh0aGlzLmxheW91dFNpemUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hcnJhbmdlQ2FyZHModGhpcy5yZXNpemVDYXJkSXRlbXM/LnRvQXJyYXkoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbWV0aG9kIHRvIGdldCBzY3JlZW4gd2lkdGhcbiAgICAgKiBAcmV0dXJucyBXaW5kb3cgd2lkdGggaW4gcHhcbiAgICAgKi9cbiAgICBnZXRXaWR0aEF2YWlsYWJsZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU3Vic2NyaWJlIHRvIGV2ZW50cyBmcm9tIGl0ZW1zICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbFNldHVwKCk6IHZvaWQge1xuICAgICAgICAvLyBsaXN0ZW4gZm9yIHJlc2l6aW5nIGV2ZW50IG9mIGNhcmQgaXRlbVxuICAgICAgICB0aGlzLnJlc2l6ZUNhcmRJdGVtcz8uZm9yRWFjaCgocmVzaXplQ2FyZEl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXlvdXRDb25maWcgJiYgdGhpcy5sYXlvdXRDb25maWcubGVuZ3RoID49IGluZGV4ICsgMSkge1xuICAgICAgICAgICAgICAgIHJlc2l6ZUNhcmRJdGVtLmNvbmZpZyA9IHRoaXMubGF5b3V0Q29uZmlnW2luZGV4XTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzaXplQ2FyZEl0ZW0ucmVzaXppbmdcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBSZXNpemVkRXZlbnQpID0+IHRoaXMuY2FyZFJlc2l6aW5nKGV2ZW50KSk7XG5cbiAgICAgICAgICAgIC8vIGxpc3RlbiBmb3IgcmVzaXplIGNvbXBsZXRlIGV2ZW50IG9mIGNhcmQgaXRlbVxuICAgICAgICAgICAgcmVzaXplQ2FyZEl0ZW0ucmVzaXplZFxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFJlc2l6ZWRFdmVudCkgPT4gdGhpcy5jYXJkUmVzaXplQ29tcGxldGUoZXZlbnQpKTtcblxuICAgICAgICAgICAgLy8gbGlzdGVuIGZvciBtaW5pLWhlYWRlciBoZWlnaHQgZXZlbnQgb2YgY2FyZCBpdGVtXG4gICAgICAgICAgICByZXNpemVDYXJkSXRlbS5taW5pSGVhZGVyUmVhY2hlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQ6IFJlc2l6ZWRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWluaUhlYWRlclJlYWNoZWQuZW1pdChldmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIGxpc3RlbiBmb3IgbWluaS1jb250ZW50IGhlaWdodCBldmVudCBvZiBjYXJkIGl0ZW1cbiAgICAgICAgICAgIHJlc2l6ZUNhcmRJdGVtLm1pbmlDb250ZW50UmVhY2hlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQ6IFJlc2l6ZWRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWluaUNvbnRlbnRSZWFjaGVkLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcENoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjY2Vzc2liaWxpdHlTZXR1cCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyID0gbmV3IEZvY3VzS2V5TWFuYWdlcih0aGlzLnJlc2l6ZUNhcmRJdGVtcykud2l0aFdyYXAoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBjcmVhdGUgbGF5b3V0IGJhc2VkIG9uIGxheW91dCBzaXplICovXG4gICAgcHJpdmF0ZSBfY3JlYXRlTGF5b3V0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzY3JlZW5XaWR0aCA9IHRoaXMuZ2V0V2lkdGhBdmFpbGFibGUoKTtcbiAgICAgICAgY29uc3QgcHJldkxheW91dFNpemUgPSB0aGlzLmxheW91dFNpemU7XG5cbiAgICAgICAgaWYgKHNjcmVlbldpZHRoID4gMCAmJiBzY3JlZW5XaWR0aCA8PSA2NTYgJiYgcHJldkxheW91dFNpemUgIT09ICdzbScpIHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0U2l6ZSA9ICdzbSc7XG4gICAgICAgICAgICB0aGlzLl9zZXRMYXlvdXRDb2x1bW5zKHRoaXMubGF5b3V0U2l6ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHNjcmVlbldpZHRoID4gNjU2ICYmIHNjcmVlbldpZHRoIDw9IDk3NSAmJiBwcmV2TGF5b3V0U2l6ZSAhPT0gJ21kJykge1xuICAgICAgICAgICAgdGhpcy5sYXlvdXRTaXplID0gJ21kJztcbiAgICAgICAgICAgIHRoaXMuX3NldExheW91dENvbHVtbnModGhpcy5sYXlvdXRTaXplKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NyZWVuV2lkdGggPiA5NzUgJiYgc2NyZWVuV2lkdGggPD0gMTM1OSAmJiBwcmV2TGF5b3V0U2l6ZSAhPT0gJ2xnJykge1xuICAgICAgICAgICAgdGhpcy5sYXlvdXRTaXplID0gJ2xnJztcbiAgICAgICAgICAgIHRoaXMuX3NldExheW91dENvbHVtbnModGhpcy5sYXlvdXRTaXplKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NyZWVuV2lkdGggPiAxMzU5ICYmIHByZXZMYXlvdXRTaXplICE9PSAneGwnKSB7XG4gICAgICAgICAgICB0aGlzLmxheW91dFNpemUgPSAneGwnO1xuICAgICAgICAgICAgdGhpcy5fc2V0TGF5b3V0Q29sdW1ucyh0aGlzLmxheW91dFNpemUpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEVtaXQgbGF5b3V0Q2hhbmdlIGV2ZW50IHdpdGggdXBkYXRlZCBjYXJkIGRpbWVuc2lvbnMgKi9cbiAgICBwcml2YXRlIF9lbWl0TGF5b3V0Q2hhbmdlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBsYXRlc3RDYXJkQ29uZmlnOiBSZXNpemFibGVDYXJkTGF5b3V0Q29uZmlnID0gW107XG4gICAgICAgIHRoaXMucmVzaXplQ2FyZEl0ZW1zPy5mb3JFYWNoKChjYXJkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjYXJkQ29uZmlnOiBSZXNpemFibGVDYXJkSXRlbUNvbmZpZyA9IHt9O1xuICAgICAgICAgICAgY2FyZENvbmZpZy5jYXJkV2lkdGhDb2xTcGFuID0gY2FyZC5jYXJkV2lkdGhDb2xTcGFuO1xuICAgICAgICAgICAgY2FyZENvbmZpZy5jYXJkSGVpZ2h0Um93U3BhbiA9IGNhcmQuY2FyZEhlaWdodFJvd1NwYW47XG4gICAgICAgICAgICBjYXJkQ29uZmlnLnJhbmsgPSBjYXJkLnJhbms7XG4gICAgICAgICAgICBjYXJkQ29uZmlnLnRpdGxlID0gY2FyZC50aXRsZTtcbiAgICAgICAgICAgIGNhcmRDb25maWcuY2FyZE1pbmlDb250ZW50Um93U3BhbiA9IGNhcmQuY2FyZE1pbmlDb250ZW50Um93U3BhbjtcbiAgICAgICAgICAgIGNhcmRDb25maWcuY2FyZE1pbmlIZWFkZXJSb3dTcGFuID0gY2FyZC5jYXJkTWluaUhlYWRlclJvd1NwYW47XG4gICAgICAgICAgICBjYXJkQ29uZmlnLnJlc2l6YWJsZSA9IGNhcmQucmVzaXphYmxlO1xuICAgICAgICAgICAgbGF0ZXN0Q2FyZENvbmZpZy5wdXNoKGNhcmRDb25maWcpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5sYXlvdXRDaGFuZ2UuZW1pdChsYXRlc3RDYXJkQ29uZmlnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIFNldHMgbnVtYmVyIG9mIGNvbHVtbiBpbiBsYXlvdXQsIGJhc2VkIG9uIExheW91dFNpemUgcGFzc2VkXG4gICAgICogQHBhcmFtIGxheW91dFNpemU6IEF2YWlsYWJsZSBvcHRpb25zIGFyZSAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2V0TGF5b3V0Q29sdW1ucyhsYXlvdXRTaXplOiBMYXlvdXRTaXplKTogdm9pZCB7XG4gICAgICAgIGxldCBsYXlvdXRXaWR0aERlZmF1bHQ6IG51bWJlcjtcblxuICAgICAgICBzd2l0Y2ggKGxheW91dFNpemUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NtJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9jb2x1bW5zID0gMTtcbiAgICAgICAgICAgICAgICB0aGlzLl9wYWRkaW5nTGVmdCA9IDg7XG4gICAgICAgICAgICAgICAgbGF5b3V0V2lkdGhEZWZhdWx0ID0gdGhpcy5fY29sdW1ucyAqIGhvcml6b250YWxSZXNpemVTdGVwICsgMiAqIHRoaXMuX3BhZGRpbmdMZWZ0O1xuICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0V2lkdGggPSBsYXlvdXRXaWR0aERlZmF1bHQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5fY29sdW1ucyA9IDI7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFkZGluZ0xlZnQgPSAxNjtcbiAgICAgICAgICAgICAgICBsYXlvdXRXaWR0aERlZmF1bHQgPSB0aGlzLl9jb2x1bW5zICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXAgKyAyICogdGhpcy5fcGFkZGluZ0xlZnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXRXaWR0aCA9IGxheW91dFdpZHRoRGVmYXVsdCArIGdhcDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xnJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9jb2x1bW5zID0gMztcbiAgICAgICAgICAgICAgICB0aGlzLl9wYWRkaW5nTGVmdCA9IDE2O1xuICAgICAgICAgICAgICAgIGxheW91dFdpZHRoRGVmYXVsdCA9IHRoaXMuX2NvbHVtbnMgKiBob3Jpem9udGFsUmVzaXplU3RlcCArIDIgKiB0aGlzLl9wYWRkaW5nTGVmdDtcbiAgICAgICAgICAgICAgICB0aGlzLmxheW91dFdpZHRoID0gbGF5b3V0V2lkdGhEZWZhdWx0ICsgMiAqIGdhcDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3hsJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9jb2x1bW5zID0gNDtcbiAgICAgICAgICAgICAgICB0aGlzLl9wYWRkaW5nTGVmdCA9IDQ4O1xuICAgICAgICAgICAgICAgIGxheW91dFdpZHRoRGVmYXVsdCA9IHRoaXMuX2NvbHVtbnMgKiBob3Jpem9udGFsUmVzaXplU3RlcCArIDIgKiB0aGlzLl9wYWRkaW5nTGVmdDtcbiAgICAgICAgICAgICAgICB0aGlzLmxheW91dFdpZHRoID0gbGF5b3V0V2lkdGhEZWZhdWx0ICsgMyAqIGdhcDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5fY29sdW1ucyA9IDQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFkZGluZ0xlZnQgPSA0ODtcbiAgICAgICAgICAgICAgICBsYXlvdXRXaWR0aERlZmF1bHQgPSB0aGlzLl9jb2x1bW5zICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXAgKyAyICogdGhpcy5fcGFkZGluZ0xlZnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXRXaWR0aCA9IGxheW91dFdpZHRoRGVmYXVsdCArIDMgKiBnYXA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIE1ldGhvZCB0byBoYW5kbGUgY2FyZCB2ZXJ0aWNhbCByZXNpemUgYW5kIHRyaWdnZXIgdGhlIGxheW91dCBjaGFuZ2VcbiAgICAgKiBAcGFyYW0gZXZlbnQ6IFJlc2l6ZWRFdmVudFxuICAgICAqL1xuICAgIHByaXZhdGUgX2hhbmRsZVZlcnRpY2FsUmVzaXplKGV2ZW50OiBSZXNpemVkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmNhcmQuY2FyZEhlaWdodFJvd1NwYW4gIT09IGV2ZW50LmNhcmQucHJldmlvdXNDYXJkSGVpZ2h0Um93U3Bhbikge1xuICAgICAgICAgICAgdGhpcy5hcnJhbmdlQ2FyZHModGhpcy5fc29ydGVkQ2FyZHMpO1xuICAgICAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB0aGlzLnN0ZXBDaGFuZ2UuZW1pdChldmVudC5jYXJkLmdldFJlc2l6ZWRFdmVudE9iamVjdCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gTWV0aG9kIHRvIGhhbmRsZSBjYXJkIGhvcml6b250YWwgcmVzaXplIGFuZCB0cmlnZ2VyIHRoZSBsYXlvdXQgY2hhbmdlXG4gICAgICogQHBhcmFtIGV2ZW50IDogUmVzaXplZEV2ZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlSG9yaXpvbnRhbFJlc2l6ZShldmVudDogUmVzaXplZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8vIHdoZW4gaW5jcmVhc2luZyB3aWR0aCBoaXQgdGhlIG9mZnNldCwgc2hvdyBleHRlbmRlZCBib3JkZXIgYW5kIHN0YXJ0IHB1c2hpbmcgZG93biBib3JkZXIgY2FyZHNcbiAgICAgICAgLy8gd2hlbiB3aWR0aCBpcyBkZWNyZWFzaW5nICwgc2hvdyBleHRlbmRlZCBib3JkZXIgdGlsbCBpdCByZWFjaGVzIHRvIG9mZnNldC5cbiAgICAgICAgY29uc3QgY2FyZFdpZHRoQ2hhbmdlID0gZXZlbnQuY2FyZFdpZHRoIC0gZXZlbnQucHJldkNhcmRXaWR0aDtcbiAgICAgICAgY29uc3QgY3VycmVudFJlc2l6aW5nSXRlbUluZGV4ID0gdGhpcy5fc29ydGVkQ2FyZHM/LmZpbmRJbmRleCgoeCkgPT4geC5yYW5rID09PSBldmVudC5jYXJkLnJhbmspO1xuXG4gICAgICAgIGlmIChldmVudC5jYXJkV2lkdGggPiBldmVudC5wcmV2Q2FyZFdpZHRoKSB7XG4gICAgICAgICAgICAvLyB3aGVuIGluY3JlYXNpbmcgc2l6ZVxuICAgICAgICAgICAgLy8gY2FyZCB3aWR0aCBpbmNyZWFzaW5nIGN1cnJlbnRseVxuICAgICAgICAgICAgaWYgKGV2ZW50LmNhcmQuY2FyZFN0YXRlID09PSAxICYmIGNhcmRXaWR0aENoYW5nZSA+IGhvcml6b250YWxSZXNpemVPZmZzZXQgKyBnYXAgJiYgIXRoaXMuX2xheW91dFNoaWZ0ZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBpbmRleCBvZiB0aGlzIGNhcmQsIHRoZW4gZ2V0IG5leHQgY2FyZC4gZXhjaGFuZ2UgcmFua3NcbiAgICAgICAgICAgICAgICB0aGlzLl9zb3J0ZWRDYXJkcy5mb3JFYWNoKChjYXJkOiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiBjdXJyZW50UmVzaXppbmdJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGFyZSBzb21lIGNhcmRzIG9uIHNhbWUgaGVpZ2h0LiBtYWtlIHRoZSBjdXJyZW50IGNhcmQgcmFuayBoaWdoZXIgdGhhbiB0aGVzZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBuZXh0IGluZGV4IHdoZXJlIGl0IHdpbGwgZml0LiB1bnRpbCBhbnkgY2FyZCBoYXMgbGVzcyBjb2x1bW4gc3BhbiB0aGFuIHRvdGFsIGNvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIG9ubHkgaW4gbmV4dCB0b3AsIG9uZSBjYXJkIGlzIHRha2luZyBmdWxsIGNvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkLnN0YXJ0aW5nQ29sdW1uUG9zaXRpb24gKyBjYXJkLmNhcmRXaWR0aENvbFNwYW4gPT09IHRoaXMuX2NvbHVtbnMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkLmNhcmRXaWR0aENvbFNwYW4gIT09IHRoaXMuX2NvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldCBjYXJkcyB3aXRoIHRvcCA+IGN1cnJlbnQgdG9wICwgYnV0IG1pbmltdW0gb2YgaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBleGNoYW5nZSByYW5rIHdpdGggdGhlc2UgY2FyZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21vdmVDYXJkRG93bihpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sYXlvdXRTaGlmdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycmFuZ2VDYXJkcyh0aGlzLl9zb3J0ZWRDYXJkcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQoZXZlbnQuY2FyZC5nZXRSZXNpemVkRXZlbnRPYmplY3QoKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGV2ZW50LmNhcmQuY2FyZFN0YXRlID09PSAtMSAmJlxuICAgICAgICAgICAgICAgIGNhcmRXaWR0aENoYW5nZSA8IGhvcml6b250YWxSZXNpemVPZmZzZXQgKyBnYXAgJiZcbiAgICAgICAgICAgICAgICB0aGlzLl9sYXlvdXRTaGlmdGVkXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAvLyBjYXJkIHdpZHRoIGRlY3JlYXNpbmcgY3VycmVudGx5XG4gICAgICAgICAgICAgICAgLy8gbW92ZSB1cCB0aGUgY2FyZHMsIGlmIGl0IHdhcyBzaGlmdGVkIHdoaWxlIGluY3JlYXNpbmcgdGhlIHdpZHRoXG4gICAgICAgICAgICAgICAgdGhpcy5fc29ydGVkQ2FyZHMuZm9yRWFjaCgoY2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY2FyZC5yYW5rID0gY2FyZC5wcmV2UmFuayA/IGNhcmQucHJldlJhbmsgOiBjYXJkLnJhbms7XG4gICAgICAgICAgICAgICAgICAgIGNhcmQucHJldlJhbmsgPSAwO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xheW91dFNoaWZ0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycmFuZ2VDYXJkcyh0aGlzLl9zb3J0ZWRDYXJkcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQoZXZlbnQuY2FyZC5nZXRSZXNpemVkRXZlbnRPYmplY3QoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY2FyZFdpZHRoIDwgZXZlbnQucHJldkNhcmRXaWR0aCkge1xuICAgICAgICAgICAgLy8gd2hlbiBkZWNyZWFzaW5nIHNpemVcbiAgICAgICAgICAgIGlmIChldmVudC5jYXJkLmNhcmRTdGF0ZSA9PT0gLTEgJiYgLWNhcmRXaWR0aENoYW5nZSA+IGhvcml6b250YWxSZXNpemVPZmZzZXQgJiYgIXRoaXMuX2xheW91dFNoaWZ0ZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBjYXJkIHdpZHRoIGRlY3JlYXNpbmcgY3VycmVudGx5XG4gICAgICAgICAgICAgICAgdGhpcy5fbGF5b3V0U2hpZnRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJhbmdlQ2FyZHModGhpcy5fc29ydGVkQ2FyZHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcENoYW5nZS5lbWl0KGV2ZW50LmNhcmQuZ2V0UmVzaXplZEV2ZW50T2JqZWN0KCkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5jYXJkLmNhcmRTdGF0ZSA9PT0gMSAmJiAtY2FyZFdpZHRoQ2hhbmdlIDwgaG9yaXpvbnRhbFJlc2l6ZU9mZnNldCAmJiB0aGlzLl9sYXlvdXRTaGlmdGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gY2FyZCB3aWR0aCBpbmNyZWFzaW5nIGN1cnJlbnRseVxuICAgICAgICAgICAgICAgIHRoaXMuX2xheW91dFNoaWZ0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycmFuZ2VDYXJkcyh0aGlzLl9zb3J0ZWRDYXJkcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQoZXZlbnQuY2FyZC5nZXRSZXNpemVkRXZlbnRPYmplY3QoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIE1ldGhvZCB0byBtb3ZlIGNhcmQgZG93biwgd2hlbiBhbm90aGVyIGNhcmQgd2lkdGggaXMgaW5jcmVhc2luZ1xuICAgICAqIE1ldGhvZCB0byBsb29wIHRpbGwgdGhpcy5fY29sdW1ucyAtMSBwb3NpdGlvbnMgYW5kIGV4Y2hhbmdlIHRoZSByYW5rXG4gICAgICogQHBhcmFtIGN1cnJlbnRDYXJkSW5kZXg6IEluZGV4IG9mIGN1cnJlbnQgY2FyZFxuICAgICAqL1xuXG4gICAgcHJpdmF0ZSBfbW92ZUNhcmREb3duKGN1cnJlbnRDYXJkSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyB0YWtpbmcgd2lkdGggb2YgYWRqYWNlbnQgY2FyZCBjb2wtc3BhbiBpbnRvIGFjY291bnRcblxuICAgICAgICAvLyBlZzogNCBjb2x1bW5zIC0gMiBjb2woYWRqYWNlbnQgY2FyZCkgPSAyIHBvc2l0aW9ucyBjYW4gZXhjaGFuZ2UgcmFua3NcbiAgICAgICAgY29uc3QgY3VycmVudENhcmQ6IFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50ID0gdGhpcy5fc29ydGVkQ2FyZHNbY3VycmVudENhcmRJbmRleF07XG4gICAgICAgIGxldCBjYXJkOiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudDtcblxuICAgICAgICAvLyB1bm9jY3VwaWVkUG9zaXRpb25zIHBvc2l0aW9ucyBsZWZ0IGFmdGVyIGN1cnJlbnRDYXJkIG9jY3VwaWVzIGluIG5leHQgcm93LlxuICAgICAgICBsZXQgdW5vY2N1cGllZFBvc2l0aW9ucyA9IHRoaXMuX2NvbHVtbnMgLSBjdXJyZW50Q2FyZC5jYXJkV2lkdGhDb2xTcGFuO1xuXG4gICAgICAgIGN1cnJlbnRDYXJkLnByZXZSYW5rID0gY3VycmVudENhcmQucmFuaztcblxuICAgICAgICBsZXQgaW5kZXggPSAxO1xuICAgICAgICB3aGlsZSAodW5vY2N1cGllZFBvc2l0aW9ucyA+IDApIHtcbiAgICAgICAgICAgIC8vIGNvbXBhcmUgZnJvbSBuZXh0IGNhcmRcbiAgICAgICAgICAgIGNhcmQgPSB0aGlzLl9zb3J0ZWRDYXJkc1tpbmRleCArIGN1cnJlbnRDYXJkSW5kZXhdO1xuICAgICAgICAgICAgaWYgKGNhcmQgJiYgdW5vY2N1cGllZFBvc2l0aW9ucyA+PSBjYXJkLmNhcmRXaWR0aENvbFNwYW4pIHtcbiAgICAgICAgICAgICAgICBjYXJkLnByZXZSYW5rID0gY2FyZC5yYW5rO1xuICAgICAgICAgICAgICAgIGNhcmQucmFuayAtPSAxO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRDYXJkLnJhbmsgPSBjYXJkLnByZXZSYW5rO1xuICAgICAgICAgICAgICAgIHVub2NjdXBpZWRQb3NpdGlvbnMgLT0gY2FyZC5jYXJkV2lkdGhDb2xTcGFuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB1bm9jY3VwaWVkUG9zaXRpb25zID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluZGV4ICs9IDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIHVwZGF0ZXMgYXJyYXkgd2l0aCBuZXcgY29sdW1uIGhlaWdodHNcbiAgICAgKiBAcGFyYW0gY2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIF91cGRhdGVDb2x1bW5zSGVpZ2h0KGNhcmQ6IFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbHVtbnNTdGFydCA9IE1hdGguZmxvb3IoY2FyZFt0aGlzLl9kaXJlY3Rpb25Qb3NpdGlvbl0gLyBob3Jpem9udGFsUmVzaXplU3RlcCk7XG5cbiAgICAgICAgLy8gR2V0IHdpZHRoIG9mIGN1cnJlbnQgY2FyZCByZXNpemluZyBhbmQgYXNzaWduIHdpZHRoIGhlcmUgZm9yIHRoYXQgY2FyZFxuICAgICAgICBjb25zdCBjYXJkQmFzZUNvbFNwYW4gPSBNYXRoLmZsb29yKGNhcmQuY2FyZFdpZHRoIC8gaG9yaXpvbnRhbFJlc2l6ZVN0ZXApO1xuXG4gICAgICAgIC8vIHRpbGwgd2hpY2ggY29sdW1ucyBjYXJkIHNwYW5zXG4gICAgICAgIGNvbnN0IGNvbHVtbnNTcGFuID1cbiAgICAgICAgICAgIGNhcmQuY2FyZFdpZHRoIC0gY2FyZEJhc2VDb2xTcGFuICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXAgLSBjYXJkQmFzZUNvbFNwYW4gKiBnYXAgPiBob3Jpem9udGFsUmVzaXplT2Zmc2V0XG4gICAgICAgICAgICAgICAgPyBjYXJkQmFzZUNvbFNwYW4gKyAxXG4gICAgICAgICAgICAgICAgOiBjYXJkQmFzZUNvbFNwYW47XG5cbiAgICAgICAgY29uc3QgY29sdW1uSGVpZ2h0ID0gY2FyZC5jYXJkSGVpZ2h0ICsgY2FyZC50b3A7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5zU3BhbjsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLl9jb2x1bW5zSGVpZ2h0W2kgKyBjb2x1bW5zU3RhcnRdID0gY29sdW1uSGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbHVtbnNTdGFydCA9PT0gY29sdW1uc1NwYW4pIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbHVtbnNIZWlnaHRbY29sdW1uc1N0YXJ0XSA9IGNvbHVtbkhlaWdodDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gVHJ5IHRvIHNldCBjYXJkIGF0IGF2YWlsYWJsZSBoZWlnaHRzXG4gICAgICogQHBhcmFtIGNhcmQgOiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudFxuICAgICAqIEBwYXJhbSBpbmRleCA6IGluZGV4IHZhbHVlIG9mIGNhcmQgaW4gYXJyYXkgb2YgUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9zZXRDYXJkUG9zaXRpb25WYWx1ZXMoY2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICBjYXJkW3RoaXMuX2RpcmVjdGlvblBvc2l0aW9uXSA9IDAgKyB0aGlzLl9wYWRkaW5nTGVmdDtcbiAgICAgICAgICAgIGNhcmQudG9wID0gMDtcbiAgICAgICAgICAgIGNhcmQuc3RhcnRpbmdDb2x1bW5Qb3NpdGlvbiA9IDA7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1bmlxdWVIZWlnaHRzID0gdGhpcy5fZ2V0U29ydGVkVW5pcXVlSGVpZ2h0cygpO1xuICAgICAgICBsZXQgY2FyZFBvc2l0aW9uZWQgPSBmYWxzZTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHVuaXF1ZUhlaWdodHMubGVuZ3RoICYmICFjYXJkUG9zaXRpb25lZDsgaSsrKSB7XG4gICAgICAgICAgICBjYXJkUG9zaXRpb25lZCA9IHRoaXMuX2lzUG9zaXRpb25TZXRTdWNjZXNzKHVuaXF1ZUhlaWdodHNbaV0sIGNhcmQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiB0cnkgdG8gc2V0IGNhcmQgYXQgZ2l2ZW4gaGVpZ2h0LlxuICAgICAqIEBwYXJhbSBoZWlnaHQgOiBoZWlnaHQgYXQgd2hpY2ggY2FyZCBpcyBnZXR0aW5nIHBvc2l0aW9uZWQuXG4gICAgICogQHBhcmFtIGNhcmQgOiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudFxuICAgICAqIEByZXR1cm5zIEl0IHJldHVybnMgdHJ1ZSB3aGVuIGNhcmQgcG9zaXRpb24gaWQgZm91bmQgb3RoZXJ3aXNlIGl0IHJldHVybnMgZmFsc2UuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaXNQb3NpdGlvblNldFN1Y2Nlc3MoaGVpZ2h0OiBudW1iZXIsIGNhcmQ6IFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGNvbHVtblBvc2l0aW9ucyA9IFtdO1xuICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbkhlaWdodCBvZiB0aGlzLl9jb2x1bW5zSGVpZ2h0KSB7XG4gICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgaWYgKGNvbHVtbkhlaWdodCA9PT0gaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgY29sdW1uUG9zaXRpb25zLnB1c2goaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGNoZWNrIGZvciBlYWNoIGNhcmQgcG9zaXRpb24sIHN0YXJ0aW5nIGZyb20gbGVmdG1vc3RcbiAgICAgICAgbGV0IGlzRml0dGluZyA9IGZhbHNlO1xuICAgICAgICBsZXQgc3RhcnRpbmdDb2x1bW5Qb3NpdGlvbiA9IC0xO1xuXG4gICAgICAgIC8vIHRyeSB0byBmaXQgYXMgbGVmdCAob3IgcmlnaHQgaWYgUnRsKSBhcyBwb3NzaWJsZSBmcm9tIHRoZSBjb2x1bW4gcG9zaXRpb25cbiAgICAgICAgc3RhcnRpbmdDb2x1bW5Qb3NpdGlvbiA9IHRoaXMuX2ZpdENhcmRDb2x1bW5Qb3NpdGlvbihjYXJkLCBjb2x1bW5Qb3NpdGlvbnMsIGhlaWdodCk7XG4gICAgICAgIGlmIChzdGFydGluZ0NvbHVtblBvc2l0aW9uICE9PSAtMSkge1xuICAgICAgICAgICAgaXNGaXR0aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGNhcmRbdGhpcy5fZGlyZWN0aW9uUG9zaXRpb25dID1cbiAgICAgICAgICAgICAgICBzdGFydGluZ0NvbHVtblBvc2l0aW9uICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXAgK1xuICAgICAgICAgICAgICAgIHRoaXMuX3BhZGRpbmdMZWZ0ICtcbiAgICAgICAgICAgICAgICAoc3RhcnRpbmdDb2x1bW5Qb3NpdGlvbiA+IDAgPyBnYXAgKiBzdGFydGluZ0NvbHVtblBvc2l0aW9uIDogMCk7XG4gICAgICAgICAgICBjYXJkLnRvcCA9IGhlaWdodCArIChoZWlnaHQgPiAwID8gdmVydGljYWxSZXNpemVTdGVwIDogMCk7XG4gICAgICAgICAgICBjYXJkLnN0YXJ0aW5nQ29sdW1uUG9zaXRpb24gPSBzdGFydGluZ0NvbHVtblBvc2l0aW9uO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0ZpdHRpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBUcnkgdG8gc3RhcnQgY2FyZCBwb3NpdGlvbiBmcm9tIGxlZnQgbW9zdCBmaXQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIGNhcmQgOiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudFxuICAgICAqIEBwYXJhbSBjb2x1bW5Qb3NpdGlvbnMgOiBBcnJheSBvZiBhdmFpbGFibGUgcG9zaXRpb25zIGZvciBjYXJkcy5cbiAgICAgKiBAcGFyYW0gaGVpZ2h0IDogaGVpZ2h0IGF0IHdoaWNoIGZpeGluZyB0aGUgY2FyZFxuICAgICAqIEByZXR1cm5zIDogcmV0dXJucyBzdGFydGluZyBjb2x1bW4gcG9zaXRpb24gd2hlcmUgY2FyZCB3aWxsIGZpdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9maXRDYXJkQ29sdW1uUG9zaXRpb24oXG4gICAgICAgIGNhcmQ6IFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50LFxuICAgICAgICBjb2x1bW5Qb3NpdGlvbnM6IEFycmF5PG51bWJlcj4sXG4gICAgICAgIGhlaWdodDogbnVtYmVyXG4gICAgKTogbnVtYmVyIHtcbiAgICAgICAgLy8gY2hlY2sgZm9yIGVhY2ggY2FyZCBwb3NpdGlvbiwgc3RhcnRpbmcgZnJvbSBsZWZ0bW9zdFxuICAgICAgICBsZXQgaXNGaXR0aW5nID0gZmFsc2U7XG4gICAgICAgIGxldCBzdGFydGluZ0NvbHVtblBvc2l0aW9uID0gLTE7XG5cbiAgICAgICAgLy8gc3RhcnQgZnJvbSBwcmV2aW91cyBpbmRleGVzXG4gICAgICAgIGNvbnN0IGNhcmRCYXNlQ29sU3BhbiA9IE1hdGguZmxvb3IoY2FyZC5jYXJkV2lkdGggLyBob3Jpem9udGFsUmVzaXplU3RlcCk7XG4gICAgICAgIGNvbnN0IGNhcmRDb2xTcGFuID1cbiAgICAgICAgICAgIGNhcmQuY2FyZFdpZHRoIC0gY2FyZEJhc2VDb2xTcGFuICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXAgLSBjYXJkQmFzZUNvbFNwYW4gKiBnYXAgPiBob3Jpem9udGFsUmVzaXplT2Zmc2V0XG4gICAgICAgICAgICAgICAgPyBjYXJkQmFzZUNvbFNwYW4gKyAxXG4gICAgICAgICAgICAgICAgOiBjYXJkQmFzZUNvbFNwYW47XG4gICAgICAgIC8vIHRyeSB0byBzZXQgdG93YXJkcyBsZWZ0IGZyb20gYXZhaWxhYmxlIGNhcmQgcG9zaXRpb25cbiAgICAgICAgLy8gZWcuIFsxLCAyLCAzLCA0XSBjb2x1bW5zUG9zaXRpb25zXG4gICAgICAgIGZvciAoY29uc3QgY29sdW1uUG9zaXRpb24gb2YgY29sdW1uUG9zaXRpb25zKSB7XG4gICAgICAgICAgICBpZiAoaXNGaXR0aW5nKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHN0YXJ0aW5nUG9zaXRpb24gdmFsdWVzIHdpbGwgYmUgMSwgMiwgMywgNFxuICAgICAgICAgICAgLy8gdHJ5IHRvIGZpdCBhcyBsZWZ0IGFzIHBvc3NpYmxlXG4gICAgICAgICAgICBsZXQgc3RhcnRpbmdQb3NpdGlvbiA9IGNvbHVtblBvc2l0aW9uIC0gKGNhcmRDb2xTcGFuIC0gMSk7XG4gICAgICAgICAgICBzdGFydGluZ1Bvc2l0aW9uID0gc3RhcnRpbmdQb3NpdGlvbiA+IDAgPyBzdGFydGluZ1Bvc2l0aW9uIDogMTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSBzdGFydGluZ1Bvc2l0aW9uOyBpbmRleCA8PSBjb2x1bW5Qb3NpdGlvbiAmJiAhaXNGaXR0aW5nOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgc3BhbiA9IDA7IHNwYW4gPCBjYXJkQ29sU3Bhbjsgc3BhbisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jb2x1bW5zSGVpZ2h0W2luZGV4ICsgc3BhbiAtIDFdIDw9IGhlaWdodCAmJiBjYXJkQ29sU3BhbiArIGluZGV4IC0gMSA8PSB0aGlzLl9jb2x1bW5zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0ZpdHRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRpbmdDb2x1bW5Qb3NpdGlvbiA9IGluZGV4IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRml0dGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRpbmdDb2x1bW5Qb3NpdGlvbiA9IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0YXJ0aW5nQ29sdW1uUG9zaXRpb247XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gcmV0dXJucyBzb3J0ZWQgdW5pcXVlIGhlaWdodCBvZiBjb2x1bW5zICovXG4gICAgcHJpdmF0ZSBfZ2V0U29ydGVkVW5pcXVlSGVpZ2h0cygpOiBudW1iZXJbXSB7XG4gICAgICAgIGNvbnN0IHRlbXBBcnJheSA9IHRoaXMuX2NvbHVtbnNIZWlnaHQuc2xpY2UoKTtcbiAgICAgICAgY29uc3Qgc29ydGVkQ29sdW1uc0hlaWdodEFycmF5ID0gdGVtcEFycmF5LnNvcnQoY29tcGFyZXIpO1xuICAgICAgICBjb25zdCB1bmlxdWVIZWlnaHRzID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBzb3J0ZWRIZWlnaHQgb2Ygc29ydGVkQ29sdW1uc0hlaWdodEFycmF5KSB7XG4gICAgICAgICAgICBpZiAodW5pcXVlSGVpZ2h0cy5pbmRleE9mKHNvcnRlZEhlaWdodCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdW5pcXVlSGVpZ2h0cy5wdXNoKHNvcnRlZEhlaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gY29tcGFyZXIoZmlyc3Q6IG51bWJlciwgc2Vjb25kOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICAgICAgcmV0dXJuIGZpcnN0IC0gc2Vjb25kO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmlxdWVIZWlnaHRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQ29tcGFyYXRvciB0byBzb3J0IGNhcmQgYmFzZWQgb24gcmFuay5cbiAgICAgKiBAcGFyYW0gZmlyc3RDYXJkIDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnRcbiAgICAgKiBAcGFyYW0gc2Vjb25kQ2FyZCA6IFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50XG4gICAgICogQHJldHVybnMgOiByZXR1cm5zIGRpZmZlcmVuY2UgYmV0d2VlbiBmaXJzdCBjYXJkIHJhbmsgYW5kIG90aGVyIGNhcmQgcmFuay5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9zb3J0Q2FyZHMoZmlyc3RDYXJkOiBSZXNpemFibGVDYXJkSXRlbUNvbXBvbmVudCwgc2Vjb25kQ2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZmlyc3RDYXJkLnJhbmsgLSBzZWNvbmRDYXJkLnJhbms7XG4gICAgfVxuXG4gICAgLyoqIGdldCB2YWx1ZSBmb3IgcnRsICovXG4gICAgcHJpdmF0ZSBnZXQgX2lzUnRsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnRsU2VydmljZT8ucnRsLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUnRsIGNoYW5nZSBzdWJzY3JpcHRpb24gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpYmVUb1J0bCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVmcmVzaERpcmVjdGlvbiA9IChpc1J0bCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZGlyZWN0aW9uUG9zaXRpb24gPSBpc1J0bCA/ICdyaWdodCcgOiAnbGVmdCc7XG4gICAgICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmVmcmVzaERpcmVjdGlvbih0aGlzLl9pc1J0bCk7XG4gICAgICAgIHRoaXMuX3J0bFNlcnZpY2U/LnJ0bC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZShyZWZyZXNoRGlyZWN0aW9uKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgI2xheW91dFxuICAgIGNsYXNzPVwiZmQtcmVzaXphYmxlLWNhcmQtbGF5b3V0XCJcbiAgICBbY2xhc3NdPVwiJ2ZkLXJlc2l6YWJsZS1jYXJkLWxheW91dC0tJyArIGxheW91dFNpemVcIlxuICAgIFtzdHlsZS53aWR0aC5weF09XCJsYXlvdXRXaWR0aFwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJsYXlvdXRIZWlnaHRcIlxuPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
|
|
@@ -112,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
|
|
|
112
112
|
type: ContentChildren,
|
|
113
113
|
args: [OverflowListItemDirective]
|
|
114
114
|
}] } });
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmZsb3ctbGlzdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi91dGlscy9kaXJlY3RpdmVzL292ZXJmbG93LWxpc3Qvb3ZlcmZsb3ctbGlzdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFLckQsTUFBTSxPQUFPLHFCQUFxQjtJQWtDOUIsY0FBYztJQUNkLFlBQW9CLEdBQWUsRUFBVSxjQUE2QixFQUFVLE9BQWU7UUFBL0UsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQWxDbkc7O1dBRUc7UUFFSCxtQkFBYyxHQUFHLENBQUMsQ0FBQztRQVFuQjs7V0FFRztRQUVILHNCQUFpQixHQUFHLE1BQU0sQ0FBQztRQUUzQjs7V0FFRztRQUVILG9CQUFlLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFRbkUsY0FBYztRQUNOLGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUc0RCxDQUFDO0lBRXZHLGNBQWM7SUFDZCxlQUFlO1FBQ1gsSUFBSSxDQUFDLGNBQWM7YUFDZCxNQUFNLENBQUMsRUFBRSxDQUFDO2FBQ1YsSUFBSSxDQUFDLFNB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Z0JBQWdCLENBQUMsUUFBdUI7UUFDNUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7a0hBdEhRLHFCQUFxQjtzR0FBckIscUJBQXFCLGlRQTRCYix5QkFBeUI7MkZBNUJqQyxxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHNDQUFzQztpQkFDbkQ7a0pBTUcsY0FBYztzQkFEYixLQUFLO2dCQU9OLEtBQUs7c0JBREosS0FBSztnQkFPTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBT04sZUFBZTtzQkFEZCxNQUFNO2dCQU9QLGFBQWE7c0JBRFosZUFBZTt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPdmVyZmxvd0xpc3RJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi9vdmVyZmxvdy1saXN0LWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IFZpZXdwb3J0UnVsZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2ZkT3ZlcmZsb3dMaXN0XSwgW2ZkLW92ZXJmbG93LWxpc3RdJ1xufSlcbmV4cG9ydCBjbGFzcyBPdmVyZmxvd0xpc3REaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBPZmZzZXQgdG8gY2FsY3VsYXRlIGNvcnJlY3QgcG9zaXRpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG92ZXJmbG93T2Zmc2V0ID0gMDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBGbGFnIHJlcHJlc2VudGluZyBydGwgbW9kZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNSdGw6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gdmFsdWUgb2YgZGlzcGxheSBwcm9wZXJ0eSBvZiBleGlzdGVkIGxpc3QgaXRlbXNcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGl0ZW1Dc3NCbG9ja1ZhbHVlID0gJ2ZsZXgnO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVtaXRzIHdoZW4gY2hhbmdlZCBhbW91bnQgb2YgZXh0cmEgaXRlbXNcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBvdmVyZmxvd0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNlcyB0byBRdWVyeUxpc3Qgb2YgT3ZlcmZsb3dMaXN0SXRlbURpcmVjdGl2ZVxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oT3ZlcmZsb3dMaXN0SXRlbURpcmVjdGl2ZSlcbiAgICBvdmVyZmxvd0l0ZW1zOiBRdWVyeUxpc3Q8T3ZlcmZsb3dMaXN0SXRlbURpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX29uRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBfdmlld3BvcnRSdWxlcjogVmlld3BvcnRSdWxlciwgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUpIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmlld3BvcnRSdWxlclxuICAgICAgICAgICAgLmNoYW5nZSg1MClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC8vIFZpZXdwb3J0UnVsZXIgaW52b2tlZCBvdXQgb2Ygem9uZSwgdGhhdCBpcyB3aHkgSSBuZWVkIHRvIGludm9rZSBmdW5jdGlvbiBpbiB6b25lXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX25nWm9uZS5ydW4oKCkgPT4gdGhpcy5fY2FsY3VsYXRlQW1vdW50T2ZPdmVyZmxvd2VkSXRlbXMoKSkpO1xuXG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUFtb3VudE9mT3ZlcmZsb3dlZEl0ZW1zKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IGFtb3VudCBvZiBleHRyYSBpdGVtcyBpbiBjdXJyZW50IGxpc3RcbiAgICAgKiAqL1xuICAgIGdldEFtb3VudE9mRXh0cmFJdGVtcygpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMub3ZlcmZsb3dJdGVtcy50b0FycmF5KCkubWFwKChpdGVtKSA9PiBpdGVtLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBjb25zdCBjb21wdXRlZCA9IGdldENvbXB1dGVkU3R5bGUodGhpcy5fZWwubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9XG4gICAgICAgICAgICB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoIC0gcGFyc2VGbG9hdChjb21wdXRlZC5wYWRkaW5nTGVmdCkgLSBwYXJzZUZsb2F0KGNvbXB1dGVkLnBhZGRpbmdSaWdodCk7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGVja1dpZHRoV2l0aE9mZnNldChlbGVtZW50cywgY29udGVudFdpZHRoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZUFtb3VudE9mT3ZlcmZsb3dlZEl0ZW1zKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBleHRyYSA9IHRoaXMuZ2V0QW1vdW50T2ZFeHRyYUl0ZW1zKCk7XG4gICAgICAgIHRoaXMub3ZlcmZsb3dDaGFuZ2VkLmVtaXQoZXh0cmEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gYXJySXRlbXNcbiAgICAgKiBAcGFyYW0gY29udGFpbmVyV2lkdGhcbiAgICAgKiBAcGFyYW0gY2hlY2tXaXRoT2Zmc2V0XG4gICAgICogKi9cbiAgICBwcml2YXRlIF9jaGVja1dpZHRoV2l0aE9mZnNldChcbiAgICAgICAgYXJySXRlbXM6IEhUTUxFbGVtZW50W10sXG4gICAgICAgIGNvbnRhaW5lcldpZHRoOiBudW1iZXIsXG4gICAgICAgIGNoZWNrV2l0aE9mZnNldDogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGl0ZW1zVG90YWxXaWR0aCA9IDA7XG4gICAgICAgIGNvbnN0IHBhcmVudFdpZHRoID0gY2hlY2tXaXRoT2Zmc2V0ID8gY29udGFpbmVyV2lkdGggLSB0aGlzLm92ZXJmbG93T2Zmc2V0IDogY29udGFpbmVyV2lkdGg7XG5cbiAgICAgICAgYXJySXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5oaWRkZW4gPSB0cnVlO1xuICAgICAgICAgICAgaXRlbS5zdHlsZS5kaXNwbGF5ID0gdGhpcy5pdGVtQ3NzQmxvY2tWYWx1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IGFyckl0ZW1zW2ldO1xuXG4gICAgICAgICAgICBpdGVtc1RvdGFsV2lkdGggKz0gdGhpcy5pc1J0bFxuICAgICAgICAgICAgICAgID8gY29udGFpbmVyV2lkdGggLSBpdGVtLm9mZnNldExlZnQgLSBpdGVtc1RvdGFsV2lkdGhcbiAgICAgICAgICAgICAgICA6IGl0ZW0ub2Zmc2V0V2lkdGggKyBpdGVtLm9mZnNldExlZnQgLSBpdGVtc1RvdGFsV2lkdGg7XG5cbiAgICAgICAgICAgIGlmIChwYXJlbnRXaWR0aCA8IGl0ZW1zVG90YWxXaWR0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NsZWFyVGVtcFN0eWxlcyhhcnJJdGVtcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrV2l0aE9mZnNldFxuICAgICAgICAgICAgICAgICAgICA/IGFyckl0ZW1zLmxlbmd0aCAtIGlcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9jaGVja1dpZHRoV2l0aE9mZnNldChhcnJJdGVtcywgY29udGFpbmVyV2lkdGgsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2xlYXJUZW1wU3R5bGVzKGFyckl0ZW1zKTtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGFyckl0ZW1zXG4gICAgICogQGhpZGRlblxuICAgICAqICovXG4gICAgcHJpdmF0ZSBfY2xlYXJUZW1wU3R5bGVzKGFyckl0ZW1zOiBIVE1MRWxlbWVudFtdKTogdm9pZCB7XG4gICAgICAgIGFyckl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0uaGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgICBpdGVtLnN0eWxlLnJlbW92ZVByb3BlcnR5KCdkaXNwbGF5Jyk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
package/facets/package.json
CHANGED
package/feed-input/package.json
CHANGED