vitest 0.3.2 → 0.3.3
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/dist/cli.js +20 -17
- package/dist/{client-ab3f363e.js → client-a8f3cc13.js} +2 -2
- package/dist/constants-861ea902.js +32 -0
- package/dist/{create-f33bfb34.js → create-16ba529d.js} +13 -12
- package/dist/defaults-ac98ff15.js +52 -0
- package/dist/{diff-e2ede84f.js → diff-21debc94.js} +4 -3
- package/dist/entry.js +7 -6
- package/dist/{globals-b87ef70d.js → globals-bb4e160a.js} +9 -7
- package/dist/index-373b5ce3.js +187 -0
- package/dist/index-61b7ead7.js +218 -0
- package/dist/{index-e32575f8.js → index-c9e80681.js} +3 -3
- package/dist/index.d.ts +9 -11
- package/dist/index.js +6 -8
- package/dist/node.d.ts +0 -4
- package/dist/node.js +11 -9
- package/dist/{setup-55c4a74b.js → setup-67063fc9.js} +6 -5
- package/dist/{source-map-0ecca7b8.js → source-map-c0dbec82.js} +2 -2
- package/dist/vi-14b6cd9b.js +5922 -0
- package/dist/worker.js +7 -6
- package/package.json +4 -4
- package/dist/constants-8fcbf9b6.js +0 -80
- package/dist/index-f55e7b59.js +0 -406
- package/dist/vi-93df942a.js +0 -5922
package/dist/entry.js
CHANGED
|
@@ -4,11 +4,12 @@ import { Writable } from 'stream';
|
|
|
4
4
|
import { importModule } from 'local-pkg';
|
|
5
5
|
import chai$1, { expect, util } from 'chai';
|
|
6
6
|
import { a as commonjsRequire, c as commonjsGlobal } from './_commonjsHelpers-c9e3b764.js';
|
|
7
|
-
import {
|
|
7
|
+
import { c as index, a as relative } from './index-373b5ce3.js';
|
|
8
8
|
import { r as rpc } from './rpc-8c7cc374.js';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
9
|
+
import { i as isObject, k as getCallLastIndex, s as slash, o as getNames, c, t as toArray, p as partitionSuiteChildren, q as hasTests, h as hasFailed, g as getFullName } from './index-61b7ead7.js';
|
|
10
|
+
import { f as format_1, h as getSerializers, j as equals, k as iterableEquality, l as subsetEquality, p as plugins_1, b as getState, m as isA, J as JestChaiExpect, n as clearContext, o as defaultSuite, q as setHooks, r as getHooks, u as context, s as setState, x as getFn, e as vi } from './vi-14b6cd9b.js';
|
|
11
|
+
import { g as getOriginalPos, a as posToNumber, n as numberToPos, l as lineSplitRE, p as parseStacktrace } from './source-map-c0dbec82.js';
|
|
12
|
+
import { u as unifiedDiff } from './diff-21debc94.js';
|
|
12
13
|
import { performance as performance$1 } from 'perf_hooks';
|
|
13
14
|
import { createHash } from 'crypto';
|
|
14
15
|
import { format } from 'util';
|
|
@@ -1421,7 +1422,7 @@ async function setupGlobalEnv(config) {
|
|
|
1421
1422
|
setupConsoleLogSpy();
|
|
1422
1423
|
await setupChai();
|
|
1423
1424
|
if (config.globals)
|
|
1424
|
-
(await import('./globals-
|
|
1425
|
+
(await import('./globals-bb4e160a.js')).registerApiGlobally();
|
|
1425
1426
|
}
|
|
1426
1427
|
function setupConsoleLogSpy() {
|
|
1427
1428
|
const stdout = new Writable({
|
|
@@ -1835,4 +1836,4 @@ async function run(files, config) {
|
|
|
1835
1836
|
}
|
|
1836
1837
|
|
|
1837
1838
|
export { run };
|
|
1838
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnkuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnRlZ3JhdGlvbnMvZW52L25vZGUudHMiLCIuLi9zcmMvaW50ZWdyYXRpb25zL2Vudi9qc2RvbS1rZXlzLnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9lbnYvanNkb20udHMiLCIuLi9zcmMvaW50ZWdyYXRpb25zL2Vudi9oYXBweS1kb20udHMiLCIuLi9zcmMvaW50ZWdyYXRpb25zL2Vudi9pbmRleC50cyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFpLXN1YnNldEAxLjYuMC9ub2RlX21vZHVsZXMvY2hhaS1zdWJzZXQvbGliL2NoYWktc3Vic2V0LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL25hdHVyYWwtY29tcGFyZUAxLjQuMC9ub2RlX21vZHVsZXMvbmF0dXJhbC1jb21wYXJlL2luZGV4LmpzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9zbmFwc2hvdC9wb3J0L3V0aWxzLnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9zbmFwc2hvdC9wb3J0L2lubGluZVNuYXBzaG90LnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9zbmFwc2hvdC9wb3J0L3N0YXRlLnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9zbmFwc2hvdC9jbGllbnQudHMiLCIuLi9zcmMvaW50ZWdyYXRpb25zL3NuYXBzaG90L2NoYWkudHMiLCIuLi9zcmMvaW50ZWdyYXRpb25zL2NoYWkvamVzdC1tYXRjaGVyLXV0aWxzLnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9jaGFpL2plc3QtZXh0ZW5kLnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9jaGFpL2plc3QtYXN5bW1ldHJpYy1tYXRjaGVycy50cyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvY2hhaS9zZXR1cC50cyIsIi4uL3NyYy9ydW50aW1lL3NldHVwLnRzIiwiLi4vc3JjL3J1bnRpbWUvZXJyb3IudHMiLCIuLi9zcmMvcnVudGltZS9jb2xsZWN0LnRzIiwiLi4vc3JjL3J1bnRpbWUvcnVuLnRzIiwiLi4vc3JjL3J1bnRpbWUvZW50cnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuXG5leHBvcnQgZGVmYXVsdCA8RW52aXJvbm1lbnQ+KHtcbiAgbmFtZTogJ25vZGUnLFxuICBhc3luYyBzZXR1cCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGVhcmRvd24oKSB7XG4gICAgICB9LFxuICAgIH1cbiAgfSxcbn0pXG4iLCIvLyBTRUUgaHR0cHM6Ly9naXRodWIuY29tL2pzZG9tL2pzZG9tL2Jsb2IvbWFzdGVyL2xpYi9qc2RvbS9saXZpbmcvaW50ZXJmYWNlcy5qc1xuXG5jb25zdCBMSVZJTkdfS0VZUyA9IFtcbiAgJ0RPTUV4Y2VwdGlvbicsXG4gICdVUkwnLFxuICAnVVJMU2VhcmNoUGFyYW1zJyxcbiAgJ0V2ZW50VGFyZ2V0JyxcbiAgJ05hbWVkTm9kZU1hcCcsXG4gICdOb2RlJyxcbiAgJ0F0dHInLFxuICAnRWxlbWVudCcsXG4gICdEb2N1bWVudEZyYWdtZW50JyxcbiAgJ0RPTUltcGxlbWVudGF0aW9uJyxcbiAgJ0RvY3VtZW50JyxcbiAgJ1hNTERvY3VtZW50JyxcbiAgJ0NoYXJhY3RlckRhdGEnLFxuICAnVGV4dCcsXG4gICdDREFUQVNlY3Rpb24nLFxuICAnUHJvY2Vzc2luZ0luc3RydWN0aW9uJyxcbiAgJ0NvbW1lbnQnLFxuICAnRG9jdW1lbnRUeXBlJyxcbiAgJ05vZGVMaXN0JyxcbiAgJ0hUTUxDb2xsZWN0aW9uJyxcbiAgJ0hUTUxPcHRpb25zQ29sbGVjdGlvbicsXG4gICdET01TdHJpbmdNYXAnLFxuICAnRE9NVG9rZW5MaXN0JyxcbiAgJ1N0eWxlU2hlZXRMaXN0JyxcbiAgJ0hUTUxFbGVtZW50JyxcbiAgJ0hUTUxIZWFkRWxlbWVudCcsXG4gICdIVE1MVGl0bGVFbGVtZW50JyxcbiAgJ0hUTUxCYXNlRWxlbWVudCcsXG4gICdIVE1MTGlua0VsZW1lbnQnLFxuICAnSFRNTE1ldGFFbGVtZW50JyxcbiAgJ0hUTUxTdHlsZUVsZW1lbnQnLFxuICAnSFRNTEJvZHlFbGVtZW50JyxcbiAgJ0hUTUxIZWFkaW5nRWxlbWVudCcsXG4gICdIVE1MUGFyYWdyYXBoRWxlbWVudCcsXG4gICdIVE1MSFJFbGVtZW50JyxcbiAgJ0hUTUxQcmVFbGVtZW50JyxcbiAgJ0hUTUxVTGlzdEVsZW1lbnQnLFxuICAnSFRNTE9MaXN0RWxlbWVudCcsXG4gICdIVE1MTElFbGVtZW50JyxcbiAgJ0hUTUxNZW51RWxlbWVudCcsXG4gICdIVE1MRExpc3RFbGVtZW50JyxcbiAgJ0hUTUxEaXZFbGVtZW50JyxcbiAgJ0hUTUxBbmNob3JFbGVtZW50JyxcbiAgJ0hUTUxBcmVhRWxlbWVudCcsXG4gICdIVE1MQlJFbGVtZW50JyxcbiAgJ0hUTUxCdXR0b25FbGVtZW50JyxcbiAgJ0hUTUxDYW52YXNFbGVtZW50JyxcbiAgJ0hUTUxEYXRhRWxlbWVudCcsXG4gICdIVE1MRGF0YUxpc3RFbGVtZW50JyxcbiAgJ0hUTUxEZXRhaWxzRWxlbWVudCcsXG4gICdIVE1MRGlhbG9nRWxlbWVudCcsXG4gICdIVE1MRGlyZWN0b3J5RWxlbWVudCcsXG4gICdIVE1MRmllbGRTZXRFbGVtZW50JyxcbiAgJ0hUTUxGb250RWxlbWVudCcsXG4gICdIVE1MRm9ybUVsZW1lbnQnLFxuICAnSFRNTEh0bWxFbGVtZW50JyxcbiAgJ0hUTUxJbWFnZUVsZW1lbnQnLFxuICAnSFRNTElucHV0RWxlbWVudCcsXG4gICdIVE1MTGFiZWxFbGVtZW50JyxcbiAgJ0hUTUxMZWdlbmRFbGVtZW50JyxcbiAgJ0hUTUxNYXBFbGVtZW50JyxcbiAgJ0hUTUxNYXJxdWVlRWxlbWVudCcsXG4gICdIVE1MTWVkaWFFbGVtZW50JyxcbiAgJ0hUTUxNZXRlckVsZW1lbnQnLFxuICAnSFRNTE1vZEVsZW1lbnQnLFxuICAnSFRNTE9wdEdyb3VwRWxlbWVudCcsXG4gICdIVE1MT3B0aW9uRWxlbWVudCcsXG4gICdIVE1MT3V0cHV0RWxlbWVudCcsXG4gICdIVE1MUGljdHVyZUVsZW1lbnQnLFxuICAnSFRNTFByb2dyZXNzRWxlbWVudCcsXG4gICdIVE1MUXVvdGVFbGVtZW50JyxcbiAgJ0hUTUxTY3JpcHRFbGVtZW50JyxcbiAgJ0hUTUxTZWxlY3RFbGVtZW50JyxcbiAgJ0hUTUxTbG90RWxlbWVudCcsXG4gICdIVE1MU291cmNlRWxlbWVudCcsXG4gICdIVE1MU3BhbkVsZW1lbnQnLFxuICAnSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQnLFxuICAnSFRNTFRhYmxlQ2VsbEVsZW1lbnQnLFxuICAnSFRNTFRhYmxlQ29sRWxlbWVudCcsXG4gICdIVE1MVGFibGVFbGVtZW50JyxcbiAgJ0hUTUxUaW1lRWxlbWVudCcsXG4gICdIVE1MVGFibGVSb3dFbGVtZW50JyxcbiAgJ0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50JyxcbiAgJ0hUTUxUZW1wbGF0ZUVsZW1lbnQnLFxuICAnSFRNTFRleHRBcmVhRWxlbWVudCcsXG4gICdIVE1MVW5rbm93bkVsZW1lbnQnLFxuICAnSFRNTEZyYW1lRWxlbWVudCcsXG4gICdIVE1MRnJhbWVTZXRFbGVtZW50JyxcbiAgJ0hUTUxJRnJhbWVFbGVtZW50JyxcbiAgJ0hUTUxFbWJlZEVsZW1lbnQnLFxuICAnSFRNTE9iamVjdEVsZW1lbnQnLFxuICAnSFRNTFBhcmFtRWxlbWVudCcsXG4gICdIVE1MVmlkZW9FbGVtZW50JyxcbiAgJ0hUTUxBdWRpb0VsZW1lbnQnLFxuICAnSFRNTFRyYWNrRWxlbWVudCcsXG4gICdTVkdFbGVtZW50JyxcbiAgJ1NWR0dyYXBoaWNzRWxlbWVudCcsXG4gICdTVkdTVkdFbGVtZW50JyxcbiAgJ1NWR1RpdGxlRWxlbWVudCcsXG4gICdTVkdBbmltYXRlZFN0cmluZycsXG4gICdTVkdOdW1iZXInLFxuICAnU1ZHU3RyaW5nTGlzdCcsXG4gICdFdmVudCcsXG4gICdDbG9zZUV2ZW50JyxcbiAgJ0N1c3RvbUV2ZW50JyxcbiAgJ01lc3NhZ2VFdmVudCcsXG4gICdFcnJvckV2ZW50JyxcbiAgJ0hhc2hDaGFuZ2VFdmVudCcsXG4gICdQb3BTdGF0ZUV2ZW50JyxcbiAgJ1N0b3JhZ2VFdmVudCcsXG4gICdQcm9ncmVzc0V2ZW50JyxcbiAgJ1BhZ2VUcmFuc2l0aW9uRXZlbnQnLFxuICAnVUlFdmVudCcsXG4gICdGb2N1c0V2ZW50JyxcbiAgJ0lucHV0RXZlbnQnLFxuICAnTW91c2VFdmVudCcsXG4gICdLZXlib2FyZEV2ZW50JyxcbiAgJ1RvdWNoRXZlbnQnLFxuICAnQ29tcG9zaXRpb25FdmVudCcsXG4gICdXaGVlbEV2ZW50JyxcbiAgJ0JhclByb3AnLFxuICAnRXh0ZXJuYWwnLFxuICAnTG9jYXRpb24nLFxuICAnSGlzdG9yeScsXG4gICdTY3JlZW4nLFxuICAnUGVyZm9ybWFuY2UnLFxuICAnTmF2aWdhdG9yJyxcbiAgJ1BsdWdpbkFycmF5JyxcbiAgJ01pbWVUeXBlQXJyYXknLFxuICAnUGx1Z2luJyxcbiAgJ01pbWVUeXBlJyxcbiAgJ0ZpbGVSZWFkZXInLFxuICAnQmxvYicsXG4gICdGaWxlJyxcbiAgJ0ZpbGVMaXN0JyxcbiAgJ1ZhbGlkaXR5U3RhdGUnLFxuICAnRE9NUGFyc2VyJyxcbiAgJ1hNTFNlcmlhbGl6ZXInLFxuICAnRm9ybURhdGEnLFxuICAnWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldCcsXG4gICdYTUxIdHRwUmVxdWVzdFVwbG9hZCcsXG4gICdYTUxIdHRwUmVxdWVzdCcsXG4gICdXZWJTb2NrZXQnLFxuICAnTm9kZUZpbHRlcicsXG4gICdOb2RlSXRlcmF0b3InLFxuICAnVHJlZVdhbGtlcicsXG4gICdBYnN0cmFjdFJhbmdlJyxcbiAgJ1JhbmdlJyxcbiAgJ1N0YXRpY1JhbmdlJyxcbiAgJ1NlbGVjdGlvbicsXG4gICdTdG9yYWdlJyxcbiAgJ0N1c3RvbUVsZW1lbnRSZWdpc3RyeScsXG4gICdTaGFkb3dSb290JyxcbiAgJ011dGF0aW9uT2JzZXJ2ZXInLFxuICAnTXV0YXRpb25SZWNvcmQnLFxuICAnSGVhZGVycycsXG4gICdBYm9ydENvbnRyb2xsZXInLFxuICAnQWJvcnRTaWduYWwnLFxuXG4gIC8vIG5vdCBzcGVjaWZpZWQgaW4gZG9jcywgYnV0IGlzIGF2YWlsYWJsZVxuICAnSW1hZ2UnLFxuXVxuXG5jb25zdCBPVEhFUl9LRVlTID0gW1xuICAnYWRkRXZlbnRMaXN0ZW5lcicsXG4gICdhbGVydCcsXG4gICdhdG9iJyxcbiAgJ2JsdXInLFxuICAnYnRvYScsXG4gIC8qICdjbGVhckludGVydmFsJywgKi9cbiAgLyogJ2NsZWFyVGltZW91dCcsICovXG4gICdjbG9zZScsXG4gICdjb25maXJtJyxcbiAgLyogJ2NvbnNvbGUnLCAqL1xuICAnY3JlYXRlUG9wdXAnLFxuICAnZGlzcGF0Y2hFdmVudCcsXG4gICdkb2N1bWVudCcsXG4gICdmb2N1cycsXG4gICdmcmFtZXMnLFxuICAnZ2V0Q29tcHV0ZWRTdHlsZScsXG4gICdoaXN0b3J5JyxcbiAgJ2lubmVySGVpZ2h0JyxcbiAgJ2lubmVyV2lkdGgnLFxuICAnbGVuZ3RoJyxcbiAgJ2xvY2F0aW9uJyxcbiAgJ21hdGNoTWVkaWEnLFxuICAnbW92ZUJ5JyxcbiAgJ21vdmVUbycsXG4gICduYW1lJyxcbiAgJ25hdmlnYXRvcicsXG4gICdvcGVuJyxcbiAgJ291dGVySGVpZ2h0JyxcbiAgJ291dGVyV2lkdGgnLFxuICAncGFnZVhPZmZzZXQnLFxuICAncGFnZVlPZmZzZXQnLFxuICAncGFyZW50JyxcbiAgJ3Bvc3RNZXNzYWdlJyxcbiAgJ3ByaW50JyxcbiAgJ3Byb21wdCcsXG4gICdyZW1vdmVFdmVudExpc3RlbmVyJyxcbiAgJ3Jlc2l6ZUJ5JyxcbiAgJ3Jlc2l6ZVRvJyxcbiAgJ3NjcmVlbicsXG4gICdzY3JlZW5MZWZ0JyxcbiAgJ3NjcmVlblRvcCcsXG4gICdzY3JlZW5YJyxcbiAgJ3NjcmVlblknLFxuICAnc2Nyb2xsJyxcbiAgJ3Njcm9sbEJ5JyxcbiAgJ3Njcm9sbExlZnQnLFxuICAnc2Nyb2xsVG8nLFxuICAnc2Nyb2xsVG9wJyxcbiAgJ3Njcm9sbFgnLFxuICAnc2Nyb2xsWScsXG4gICdzZWxmJyxcbiAgLyogJ3NldEludGVydmFsJywgKi9cbiAgLyogJ3NldFRpbWVvdXQnLCAqL1xuICAnc3RvcCcsXG4gIC8qICd0b1N0cmluZycsICovXG4gICd0b3AnLFxuICAnd2luZG93Jyxcbl1cblxuZXhwb3J0IGNvbnN0IEtFWVMgPSBMSVZJTkdfS0VZUy5jb25jYXQoT1RIRVJfS0VZUylcbiIsImltcG9ydCB7IGltcG9ydE1vZHVsZSB9IGZyb20gJ2xvY2FsLXBrZydcbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnQsIEpTRE9NT3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHsgS0VZUyB9IGZyb20gJy4vanNkb20ta2V5cydcblxuZXhwb3J0IGRlZmF1bHQgPEVudmlyb25tZW50Pih7XG4gIG5hbWU6ICdqc2RvbScsXG4gIGFzeW5jIHNldHVwKGdsb2JhbCwgeyBqc2RvbSA9IHt9IH0pIHtcbiAgICBjb25zdCB7XG4gICAgICBDb29raWVKYXIsXG4gICAgICBKU0RPTSxcbiAgICAgIFJlc291cmNlTG9hZGVyLFxuICAgICAgVmlydHVhbENvbnNvbGUsXG4gICAgfSA9IGF3YWl0IGltcG9ydE1vZHVsZSgnanNkb20nKSBhcyB0eXBlb2YgaW1wb3J0KCdqc2RvbScpXG4gICAgY29uc3Qge1xuICAgICAgaHRtbCA9ICc8IURPQ1RZUEUgaHRtbD4nLFxuICAgICAgdXNlckFnZW50LFxuICAgICAgdXJsID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCcsXG4gICAgICBjb250ZW50VHlwZSA9ICd0ZXh0L2h0bWwnLFxuICAgICAgcHJldGVuZFRvQmVWaXN1YWwgPSB0cnVlLFxuICAgICAgaW5jbHVkZU5vZGVMb2NhdGlvbnMgPSBmYWxzZSxcbiAgICAgIHJ1blNjcmlwdHMgPSAnZGFuZ2Vyb3VzbHknLFxuICAgICAgcmVzb3VyY2VzLFxuICAgICAgY29uc29sZSA9IGZhbHNlLFxuICAgICAgY29va2llSmFyID0gZmFsc2UsXG4gICAgICAuLi5yZXN0T3B0aW9uc1xuICAgIH0gPSBqc2RvbSBhcyBKU0RPTU9wdGlvbnNcbiAgICBjb25zdCBkb20gPSBuZXcgSlNET00oXG4gICAgICBodG1sLFxuICAgICAge1xuICAgICAgICBwcmV0ZW5kVG9CZVZpc3VhbCxcbiAgICAgICAgcmVzb3VyY2VzOiByZXNvdXJjZXMgPz8gKHVzZXJBZ2VudCA/IG5ldyBSZXNvdXJjZUxvYWRlcih7IHVzZXJBZ2VudCB9KSA6IHVuZGVmaW5lZCksXG4gICAgICAgIHJ1blNjcmlwdHMsXG4gICAgICAgIHVybCxcbiAgICAgICAgdmlydHVhbENvbnNvbGU6IGNvbnNvbGUgJiYgZ2xvYmFsLmNvbnNvbGUgPyBuZXcgVmlydHVhbENvbnNvbGUoKS5zZW5kVG8oZ2xvYmFsLmNvbnNvbGUpIDogdW5kZWZpbmVkLFxuICAgICAgICBjb29raWVKYXI6IGNvb2tpZUphciA/IG5ldyBDb29raWVKYXIoKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgaW5jbHVkZU5vZGVMb2NhdGlvbnMsXG4gICAgICAgIGNvbnRlbnRUeXBlLFxuICAgICAgICB1c2VyQWdlbnQsXG4gICAgICAgIC4uLnJlc3RPcHRpb25zLFxuICAgICAgfSxcbiAgICApXG5cbiAgICBjb25zdCBrZXlzID0gbmV3IFNldChLRVlTLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhkb20ud2luZG93KSlcbiAgICAgIC5maWx0ZXIoayA9PiAhay5zdGFydHNXaXRoKCdfJykgJiYgIShrIGluIGdsb2JhbCkpKVxuXG4gICAgY29uc3Qgb3ZlcnJpZGVPYmplY3QgPSBuZXcgTWFwPHN0cmluZywgYW55PigpXG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGdsb2JhbCwga2V5LCB7XG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICBpZiAob3ZlcnJpZGVPYmplY3QuaGFzKGtleSkpXG4gICAgICAgICAgICByZXR1cm4gb3ZlcnJpZGVPYmplY3QuZ2V0KGtleSlcbiAgICAgICAgICByZXR1cm4gZG9tLndpbmRvd1trZXldXG4gICAgICAgIH0sXG4gICAgICAgIHNldCh2KSB7XG4gICAgICAgICAgb3ZlcnJpZGVPYmplY3Quc2V0KGtleSwgdilcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGVhcmRvd24oZ2xvYmFsKSB7XG4gICAgICAgIGtleXMuZm9yRWFjaChrZXkgPT4gZGVsZXRlIGdsb2JhbFtrZXldKVxuICAgICAgfSxcbiAgICB9XG4gIH0sXG59KVxuIiwiaW1wb3J0IHsgaW1wb3J0TW9kdWxlIH0gZnJvbSAnbG9jYWwtcGtnJ1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHsgS0VZUyB9IGZyb20gJy4vanNkb20ta2V5cydcblxuZXhwb3J0IGRlZmF1bHQgPEVudmlyb25tZW50Pih7XG4gIG5hbWU6ICdoYXBweS1kb20nLFxuICBhc3luYyBzZXR1cChnbG9iYWwpIHtcbiAgICBjb25zdCB7IFdpbmRvdyB9ID0gYXdhaXQgaW1wb3J0TW9kdWxlKCdoYXBweS1kb20nKSBhcyB0eXBlb2YgaW1wb3J0KCdoYXBweS1kb20nKVxuICAgIGNvbnN0IHdpbjogYW55ID0gbmV3IFdpbmRvdygpXG5cbiAgICBjb25zdCBrZXlzID0gbmV3IFNldChLRVlTLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW4pKVxuICAgICAgLmZpbHRlcihrID0+ICFrLnN0YXJ0c1dpdGgoJ18nKSAmJiAhKGsgaW4gZ2xvYmFsKSkpXG5cbiAgICBjb25zdCBvdmVycmlkZU9iamVjdCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KClcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2xvYmFsLCBrZXksIHtcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgIGlmIChvdmVycmlkZU9iamVjdC5oYXMoa2V5KSlcbiAgICAgICAgICAgIHJldHVybiBvdmVycmlkZU9iamVjdC5nZXQoa2V5KVxuICAgICAgICAgIHJldHVybiB3aW5ba2V5XVxuICAgICAgICB9LFxuICAgICAgICBzZXQodikge1xuICAgICAgICAgIG92ZXJyaWRlT2JqZWN0LnNldChrZXksIHYpXG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRlYXJkb3duKGdsb2JhbCkge1xuICAgICAgICB3aW4uaGFwcHlET00uY2FuY2VsQXN5bmMoKVxuICAgICAgICBrZXlzLmZvckVhY2goa2V5ID0+IGRlbGV0ZSBnbG9iYWxba2V5XSlcbiAgICAgIH0sXG4gICAgfVxuICB9LFxufSlcbiIsImltcG9ydCBub2RlIGZyb20gJy4vbm9kZSdcbmltcG9ydCBqc2RvbSBmcm9tICcuL2pzZG9tJ1xuaW1wb3J0IGhhcHB5IGZyb20gJy4vaGFwcHktZG9tJ1xuXG5leHBvcnQgY29uc3QgZW52aXJvbm1lbnRzID0ge1xuICBub2RlLFxuICBqc2RvbSxcbiAgJ2hhcHB5LWRvbSc6IGhhcHB5LFxufVxuIiwiKGZ1bmN0aW9uKCkge1xuXHQoZnVuY3Rpb24oY2hhaVN1YnNldCkge1xuXHRcdGlmICh0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cyA9IGNoYWlTdWJzZXQ7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcblx0XHRcdHJldHVybiBkZWZpbmUoZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBjaGFpU3Vic2V0O1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBjaGFpLnVzZShjaGFpU3Vic2V0KTtcblx0XHR9XG5cdH0pKGZ1bmN0aW9uKGNoYWksIHV0aWxzKSB7XG5cdFx0dmFyIEFzc2VydGlvbiA9IGNoYWkuQXNzZXJ0aW9uO1xuXHRcdHZhciBhc3NlcnRpb25Qcm90b3R5cGUgPSBBc3NlcnRpb24ucHJvdG90eXBlO1xuXG5cdFx0QXNzZXJ0aW9uLmFkZE1ldGhvZCgnY29udGFpblN1YnNldCcsIGZ1bmN0aW9uIChleHBlY3RlZCkge1xuXHRcdFx0dmFyIGFjdHVhbCA9IHV0aWxzLmZsYWcodGhpcywgJ29iamVjdCcpO1xuXHRcdFx0dmFyIHNob3dEaWZmID0gY2hhaS5jb25maWcuc2hvd0RpZmY7XG5cblx0XHRcdGFzc2VydGlvblByb3RvdHlwZS5hc3NlcnQuY2FsbCh0aGlzLFxuXHRcdFx0XHRjb21wYXJlKGV4cGVjdGVkLCBhY3R1YWwpLFxuXHRcdFx0XHQnZXhwZWN0ZWQgI3thY3R9IHRvIGNvbnRhaW4gc3Vic2V0ICN7ZXhwfScsXG5cdFx0XHRcdCdleHBlY3RlZCAje2FjdH0gdG8gbm90IGNvbnRhaW4gc3Vic2V0ICN7ZXhwfScsXG5cdFx0XHRcdGV4cGVjdGVkLFxuXHRcdFx0XHRhY3R1YWwsXG5cdFx0XHRcdHNob3dEaWZmXG5cdFx0XHQpO1xuXHRcdH0pO1xuXG5cdFx0Y2hhaS5hc3NlcnQuY29udGFpblN1YnNldCA9IGZ1bmN0aW9uKHZhbCwgZXhwLCBtc2cpIHtcblx0XHRcdG5ldyBjaGFpLkFzc2VydGlvbih2YWwsIG1zZykudG8uYmUuY29udGFpblN1YnNldChleHApO1xuXHRcdH07XG5cblx0XHRmdW5jdGlvbiBjb21wYXJlKGV4cGVjdGVkLCBhY3R1YWwpIHtcblx0XHRcdGlmIChleHBlY3RlZCA9PT0gYWN0dWFsKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHR5cGVvZihhY3R1YWwpICE9PSB0eXBlb2YoZXhwZWN0ZWQpKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGlmICh0eXBlb2YoZXhwZWN0ZWQpICE9PSAnb2JqZWN0JyB8fCBleHBlY3RlZCA9PT0gbnVsbCkge1xuXHRcdFx0XHRyZXR1cm4gZXhwZWN0ZWQgPT09IGFjdHVhbDtcblx0XHRcdH1cblx0XHRcdGlmICghIWV4cGVjdGVkICYmICFhY3R1YWwpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShleHBlY3RlZCkpIHtcblx0XHRcdFx0aWYgKHR5cGVvZihhY3R1YWwubGVuZ3RoKSAhPT0gJ251bWJlcicpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIGFhID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYWN0dWFsKTtcblx0XHRcdFx0cmV0dXJuIGV4cGVjdGVkLmV2ZXJ5KGZ1bmN0aW9uIChleHApIHtcblx0XHRcdFx0XHRyZXR1cm4gYWEuc29tZShmdW5jdGlvbiAoYWN0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gY29tcGFyZShleHAsIGFjdCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoZXhwZWN0ZWQgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0XHRcdGlmIChhY3R1YWwgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGV4cGVjdGVkLmdldFRpbWUoKSA9PT0gYWN0dWFsLmdldFRpbWUoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIE9iamVjdC5rZXlzKGV4cGVjdGVkKS5ldmVyeShmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRcdHZhciBlbyA9IGV4cGVjdGVkW2tleV07XG5cdFx0XHRcdHZhciBhbyA9IGFjdHVhbFtrZXldO1xuXHRcdFx0XHRpZiAodHlwZW9mKGVvKSA9PT0gJ29iamVjdCcgJiYgZW8gIT09IG51bGwgJiYgYW8gIT09IG51bGwpIHtcblx0XHRcdFx0XHRyZXR1cm4gY29tcGFyZShlbywgYW8pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0eXBlb2YoZW8pID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGVvKGFvKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYW8gPT09IGVvO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9KTtcblxufSkuY2FsbCh0aGlzKTtcblxuIiwiXG5cblxuLypcbiAqIEB2ZXJzaW9uICAgIDEuNC4wXG4gKiBAZGF0ZSAgICAgICAyMDE1LTEwLTI2XG4gKiBAc3RhYmlsaXR5ICAzIC0gU3RhYmxlXG4gKiBAYXV0aG9yICAgICBMYXVyaSBSb29kZW4gKGh0dHBzOi8vZ2l0aHViLmNvbS9saXRlanMvbmF0dXJhbC1jb21wYXJlLWxpdGUpXG4gKiBAbGljZW5zZSAgICBNSVQgTGljZW5zZVxuICovXG5cblxudmFyIG5hdHVyYWxDb21wYXJlID0gZnVuY3Rpb24oYSwgYikge1xuXHR2YXIgaSwgY29kZUFcblx0LCBjb2RlQiA9IDFcblx0LCBwb3NBID0gMFxuXHQsIHBvc0IgPSAwXG5cdCwgYWxwaGFiZXQgPSBTdHJpbmcuYWxwaGFiZXRcblxuXHRmdW5jdGlvbiBnZXRDb2RlKHN0ciwgcG9zLCBjb2RlKSB7XG5cdFx0aWYgKGNvZGUpIHtcblx0XHRcdGZvciAoaSA9IHBvczsgY29kZSA9IGdldENvZGUoc3RyLCBpKSwgY29kZSA8IDc2ICYmIGNvZGUgPiA2NTspICsraTtcblx0XHRcdHJldHVybiArc3RyLnNsaWNlKHBvcyAtIDEsIGkpXG5cdFx0fVxuXHRcdGNvZGUgPSBhbHBoYWJldCAmJiBhbHBoYWJldC5pbmRleE9mKHN0ci5jaGFyQXQocG9zKSlcblx0XHRyZXR1cm4gY29kZSA+IC0xID8gY29kZSArIDc2IDogKChjb2RlID0gc3RyLmNoYXJDb2RlQXQocG9zKSB8fCAwKSwgY29kZSA8IDQ1IHx8IGNvZGUgPiAxMjcpID8gY29kZVxuXHRcdFx0OiBjb2RlIDwgNDYgPyA2NSAgICAgICAgICAgICAgIC8vIC1cblx0XHRcdDogY29kZSA8IDQ4ID8gY29kZSAtIDFcblx0XHRcdDogY29kZSA8IDU4ID8gY29kZSArIDE4ICAgICAgICAvLyAwLTlcblx0XHRcdDogY29kZSA8IDY1ID8gY29kZSAtIDExXG5cdFx0XHQ6IGNvZGUgPCA5MSA/IGNvZGUgKyAxMSAgICAgICAgLy8gQS1aXG5cdFx0XHQ6IGNvZGUgPCA5NyA/IGNvZGUgLSAzN1xuXHRcdFx0OiBjb2RlIDwgMTIzID8gY29kZSArIDUgICAgICAgIC8vIGEtelxuXHRcdFx0OiBjb2RlIC0gNjNcblx0fVxuXG5cblx0aWYgKChhKz1cIlwiKSAhPSAoYis9XCJcIikpIGZvciAoO2NvZGVCOykge1xuXHRcdGNvZGVBID0gZ2V0Q29kZShhLCBwb3NBKyspXG5cdFx0Y29kZUIgPSBnZXRDb2RlKGIsIHBvc0IrKylcblxuXHRcdGlmIChjb2RlQSA8IDc2ICYmIGNvZGVCIDwgNzYgJiYgY29kZUEgPiA2NiAmJiBjb2RlQiA+IDY2KSB7XG5cdFx0XHRjb2RlQSA9IGdldENvZGUoYSwgcG9zQSwgcG9zQSlcblx0XHRcdGNvZGVCID0gZ2V0Q29kZShiLCBwb3NCLCBwb3NBID0gaSlcblx0XHRcdHBvc0IgPSBpXG5cdFx0fVxuXG5cdFx0aWYgKGNvZGVBICE9IGNvZGVCKSByZXR1cm4gKGNvZGVBIDwgY29kZUIpID8gLTEgOiAxXG5cdH1cblx0cmV0dXJuIDBcbn1cblxudHJ5IHtcblx0bW9kdWxlLmV4cG9ydHMgPSBuYXR1cmFsQ29tcGFyZTtcbn0gY2F0Y2ggKGUpIHtcblx0U3RyaW5nLm5hdHVyYWxDb21wYXJlID0gbmF0dXJhbENvbXBhcmU7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBmcywgeyBwcm9taXNlcyBhcyBmc3AgfSBmcm9tICdmcydcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGhlJ1xuaW1wb3J0IG5hdHVyYWxDb21wYXJlIGZyb20gJ25hdHVyYWwtY29tcGFyZSdcbmltcG9ydCB0eXBlIHsgT3B0aW9uc1JlY2VpdmVkIGFzIFByZXR0eUZvcm1hdE9wdGlvbnMgfSBmcm9tICdwcmV0dHktZm9ybWF0J1xuaW1wb3J0IHtcbiAgZm9ybWF0IGFzIHByZXR0eUZvcm1hdCxcbn0gZnJvbSAncHJldHR5LWZvcm1hdCdcbmltcG9ydCB0eXBlIHsgU25hcHNob3REYXRhLCBTbmFwc2hvdFVwZGF0ZVN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgZ2V0U2VyaWFsaXplcnMgfSBmcm9tICcuL3BsdWdpbnMnXG5cbi8vIFRPRE86IHJld3JpdGUgYW5kIGNsZWFuIHVwXG5cbmV4cG9ydCBjb25zdCBTTkFQU0hPVF9WRVJTSU9OID0gJzEnXG5cbmNvbnN0IHdyaXRlU25hcHNob3RWZXJzaW9uID0gKCkgPT4gYC8vIFZpdGVzdCBTbmFwc2hvdCB2JHtTTkFQU0hPVF9WRVJTSU9OfWBcblxuZXhwb3J0IGNvbnN0IHRlc3ROYW1lVG9LZXkgPSAodGVzdE5hbWU6IHN0cmluZywgY291bnQ6IG51bWJlcik6IHN0cmluZyA9PlxuICBgJHt0ZXN0TmFtZX0gJHtjb3VudH1gXG5cbmV4cG9ydCBjb25zdCBrZXlUb1Rlc3ROYW1lID0gKGtleTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCEvIFxcZCskLy50ZXN0KGtleSkpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdTbmFwc2hvdCBrZXlzIG11c3QgZW5kIHdpdGggYSBudW1iZXIuJylcblxuICByZXR1cm4ga2V5LnJlcGxhY2UoLyBcXGQrJC8sICcnKVxufVxuXG5leHBvcnQgY29uc3QgZ2V0U25hcHNob3REYXRhID0gKFxuICBzbmFwc2hvdFBhdGg6IHN0cmluZyxcbiAgdXBkYXRlOiBTbmFwc2hvdFVwZGF0ZVN0YXRlLFxuKToge1xuICBkYXRhOiBTbmFwc2hvdERhdGFcbiAgZGlydHk6IGJvb2xlYW5cbn0gPT4ge1xuICBjb25zdCBkYXRhID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuICBsZXQgc25hcHNob3RDb250ZW50cyA9ICcnXG4gIGxldCBkaXJ0eSA9IGZhbHNlXG5cbiAgaWYgKGZzLmV4aXN0c1N5bmMoc25hcHNob3RQYXRoKSkge1xuICAgIHRyeSB7XG4gICAgICBzbmFwc2hvdENvbnRlbnRzID0gZnMucmVhZEZpbGVTeW5jKHNuYXBzaG90UGF0aCwgJ3V0ZjgnKVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gICAgICBjb25zdCBwb3B1bGF0ZSA9IG5ldyBGdW5jdGlvbignZXhwb3J0cycsIHNuYXBzaG90Q29udGVudHMpXG4gICAgICBwb3B1bGF0ZShkYXRhKVxuICAgIH1cbiAgICBjYXRjaCB7fVxuICB9XG5cbiAgLy8gY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IHZhbGlkYXRlU25hcHNob3RWZXJzaW9uKHNuYXBzaG90Q29udGVudHMpXG4gIGNvbnN0IGlzSW52YWxpZCA9IHNuYXBzaG90Q29udGVudHMgLy8gJiYgdmFsaWRhdGlvblJlc3VsdFxuXG4gIC8vIGlmICh1cGRhdGUgPT09ICdub25lJyAmJiBpc0ludmFsaWQpXG4gIC8vICAgdGhyb3cgdmFsaWRhdGlvblJlc3VsdFxuXG4gIGlmICgodXBkYXRlID09PSAnYWxsJyB8fCB1cGRhdGUgPT09ICduZXcnKSAmJiBpc0ludmFsaWQpXG4gICAgZGlydHkgPSB0cnVlXG5cbiAgcmV0dXJuIHsgZGF0YSwgZGlydHkgfVxufVxuXG4vLyBBZGQgZXh0cmEgbGluZSBicmVha3MgYXQgYmVnaW5uaW5nIGFuZCBlbmQgb2YgbXVsdGlsaW5lIHNuYXBzaG90XG4vLyB0byBtYWtlIHRoZSBjb250ZW50IGVhc2llciB0byByZWFkLlxuZXhwb3J0IGNvbnN0IGFkZEV4dHJhTGluZUJyZWFrcyA9IChzdHJpbmc6IHN0cmluZyk6IHN0cmluZyA9PlxuICBzdHJpbmcuaW5jbHVkZXMoJ1xcbicpID8gYFxcbiR7c3RyaW5nfVxcbmAgOiBzdHJpbmdcblxuLy8gUmVtb3ZlIGV4dHJhIGxpbmUgYnJlYWtzIGF0IGJlZ2lubmluZyBhbmQgZW5kIG9mIG11bHRpbGluZSBzbmFwc2hvdC5cbi8vIEluc3RlYWQgb2YgdHJpbSwgd2hpY2ggY2FuIHJlbW92ZSBhZGRpdGlvbmFsIG5ld2xpbmVzIG9yIHNwYWNlc1xuLy8gYXQgYmVnaW5uaW5nIG9yIGVuZCBvZiB0aGUgY29udGVudCBmcm9tIGEgY3VzdG9tIHNlcmlhbGl6ZXIuXG5leHBvcnQgY29uc3QgcmVtb3ZlRXh0cmFMaW5lQnJlYWtzID0gKHN0cmluZzogc3RyaW5nKTogc3RyaW5nID0+XG4gIHN0cmluZy5sZW5ndGggPiAyICYmIHN0cmluZy5zdGFydHNXaXRoKCdcXG4nKSAmJiBzdHJpbmcuZW5kc1dpdGgoJ1xcbicpXG4gICAgPyBzdHJpbmcuc2xpY2UoMSwgLTEpXG4gICAgOiBzdHJpbmdcblxuLy8gZXhwb3J0IGNvbnN0IHJlbW92ZUxpbmVzQmVmb3JlRXh0ZXJuYWxNYXRjaGVyVHJhcCA9IChzdGFjazogc3RyaW5nKTogc3RyaW5nID0+IHtcbi8vICAgY29uc3QgbGluZXMgPSBzdGFjay5zcGxpdCgnXFxuJylcblxuLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSArPSAxKSB7XG4vLyAgICAgLy8gSXQncyBhIGZ1bmN0aW9uIG5hbWUgc3BlY2lmaWVkIGluIGBwYWNrYWdlcy9leHBlY3Qvc3JjL2luZGV4LnRzYFxuLy8gICAgIC8vIGZvciBleHRlcm5hbCBjdXN0b20gbWF0Y2hlcnMuXG4vLyAgICAgaWYgKGxpbmVzW2ldLmluY2x1ZGVzKCdfX0VYVEVSTkFMX01BVENIRVJfVFJBUF9fJykpXG4vLyAgICAgICByZXR1cm4gbGluZXMuc2xpY2UoaSArIDEpLmpvaW4oJ1xcbicpXG4vLyAgIH1cblxuLy8gICByZXR1cm4gc3RhY2tcbi8vIH1cblxuY29uc3QgZXNjYXBlUmVnZXggPSB0cnVlXG5jb25zdCBwcmludEZ1bmN0aW9uTmFtZSA9IGZhbHNlXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemUodmFsOiB1bmtub3duLFxuICBpbmRlbnQgPSAyLFxuICBmb3JtYXRPdmVycmlkZXM6IFByZXR0eUZvcm1hdE9wdGlvbnMgPSB7fSk6IHN0cmluZyB7XG4gIHJldHVybiBub3JtYWxpemVOZXdsaW5lcyhcbiAgICBwcmV0dHlGb3JtYXQodmFsLCB7XG4gICAgICBlc2NhcGVSZWdleCxcbiAgICAgIGluZGVudCxcbiAgICAgIHBsdWdpbnM6IGdldFNlcmlhbGl6ZXJzKCksXG4gICAgICBwcmludEZ1bmN0aW9uTmFtZSxcbiAgICAgIC4uLmZvcm1hdE92ZXJyaWRlcyxcbiAgICB9KSxcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluaWZ5KHZhbDogdW5rbm93bik6IHN0cmluZyB7XG4gIHJldHVybiBwcmV0dHlGb3JtYXQodmFsLCB7XG4gICAgZXNjYXBlUmVnZXgsXG4gICAgbWluOiB0cnVlLFxuICAgIHBsdWdpbnM6IGdldFNlcmlhbGl6ZXJzKCksXG4gICAgcHJpbnRGdW5jdGlvbk5hbWUsXG4gIH0pXG59XG5cbi8vIFJlbW92ZSBkb3VibGUgcXVvdGUgbWFya3MgYW5kIHVuZXNjYXBlIGRvdWJsZSBxdW90ZXMgYW5kIGJhY2tzbGFzaGVzLlxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplU3RyaW5nKHN0cmluZ2lmaWVkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyaW5naWZpZWQuc2xpY2UoMSwgLTEpLnJlcGxhY2UoL1xcXFwoXCJ8XFxcXCkvZywgJyQxJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUJhY2t0aWNrU3RyaW5nKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9gfFxcXFx8XFwkey9nLCAnXFxcXCQmJylcbn1cblxuZnVuY3Rpb24gcHJpbnRCYWNrdGlja1N0cmluZyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgXFxgJHtlc2NhcGVCYWNrdGlja1N0cmluZyhzdHIpfVxcYGBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZURpcmVjdG9yeUV4aXN0cyhmaWxlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gIHRyeSB7XG4gICAgZnMubWtkaXJTeW5jKHBhdGguam9pbihwYXRoLmRpcm5hbWUoZmlsZVBhdGgpKSwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgfVxuICBjYXRjaCB7IH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplTmV3bGluZXMoc3RyaW5nOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXHJcXG58XFxyL2csICdcXG4nKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2F2ZVNuYXBzaG90RmlsZShcbiAgc25hcHNob3REYXRhOiBTbmFwc2hvdERhdGEsXG4gIHNuYXBzaG90UGF0aDogc3RyaW5nLFxuKSB7XG4gIGNvbnN0IHNuYXBzaG90cyA9IE9iamVjdC5rZXlzKHNuYXBzaG90RGF0YSlcbiAgICAuc29ydChuYXR1cmFsQ29tcGFyZSlcbiAgICAubWFwKFxuICAgICAga2V5ID0+IGBleHBvcnRzWyR7cHJpbnRCYWNrdGlja1N0cmluZyhrZXkpfV0gPSAke3ByaW50QmFja3RpY2tTdHJpbmcobm9ybWFsaXplTmV3bGluZXMoc25hcHNob3REYXRhW2tleV0pKX07YCxcbiAgICApXG5cbiAgZW5zdXJlRGlyZWN0b3J5RXhpc3RzKHNuYXBzaG90UGF0aClcbiAgYXdhaXQgZnNwLndyaXRlRmlsZShcbiAgICBzbmFwc2hvdFBhdGgsXG4gICAgYCR7d3JpdGVTbmFwc2hvdFZlcnNpb24oKX1cXG5cXG4ke3NuYXBzaG90cy5qb2luKCdcXG5cXG4nKX1cXG5gLFxuICAgICd1dGYtOCcsXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVFeHBlY3RlZChleHBlY3RlZD86IHN0cmluZykge1xuICBmdW5jdGlvbiBmaW5kU3RhcnRJbmRlbnQoKSB7XG4gICAgY29uc3QgbWF0Y2ggPSAvXiggKyl9XFxzKyQvbS5leGVjKGV4cGVjdGVkIHx8ICcnKVxuICAgIHJldHVybiBtYXRjaD8uWzFdPy5sZW5ndGggfHwgMFxuICB9XG5cbiAgY29uc3Qgc3RhcnRJZGVudCA9IGZpbmRTdGFydEluZGVudCgpXG5cbiAgbGV0IGV4cGVjdGVkVHJpbW1lZCA9IGV4cGVjdGVkPy50cmltKClcblxuICBpZiAoc3RhcnRJZGVudCkge1xuICAgIGV4cGVjdGVkVHJpbW1lZCA9IGV4cGVjdGVkVHJpbW1lZFxuICAgICAgPy5yZXBsYWNlKG5ldyBSZWdFeHAoYF4keycgJy5yZXBlYXQoc3RhcnRJZGVudCl9YCwgJ2dtJyksICcnKS5yZXBsYWNlKC8gK30kLywgJ30nKVxuICB9XG5cbiAgcmV0dXJuIGV4cGVjdGVkVHJpbW1lZFxufVxuXG5mdW5jdGlvbiBkZWVwTWVyZ2VBcnJheSh0YXJnZXQ6IGFueVtdID0gW10sIHNvdXJjZTogYW55W10gPSBbXSkge1xuICBjb25zdCBtZXJnZWRPdXRwdXQgPSBBcnJheS5mcm9tKHRhcmdldClcblxuICBzb3VyY2UuZm9yRWFjaCgoc291cmNlRWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gbWVyZ2VkT3V0cHV0W2luZGV4XVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0W2luZGV4XSkpIHtcbiAgICAgIG1lcmdlZE91dHB1dFtpbmRleF0gPSBkZWVwTWVyZ2VBcnJheSh0YXJnZXRbaW5kZXhdLCBzb3VyY2VFbGVtZW50KVxuICAgIH1cbiAgICBlbHNlIGlmIChpc09iamVjdCh0YXJnZXRFbGVtZW50KSkge1xuICAgICAgbWVyZ2VkT3V0cHV0W2luZGV4XSA9IGRlZXBNZXJnZVNuYXBzaG90KHRhcmdldFtpbmRleF0sIHNvdXJjZUVsZW1lbnQpXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gU291cmNlIGRvZXMgbm90IGV4aXN0IGluIHRhcmdldCBvciB0YXJnZXQgaXMgcHJpbWl0aXZlIGFuZCBjYW5ub3QgYmUgZGVlcCBtZXJnZWRcbiAgICAgIG1lcmdlZE91dHB1dFtpbmRleF0gPSBzb3VyY2VFbGVtZW50XG4gICAgfVxuICB9KVxuXG4gIHJldHVybiBtZXJnZWRPdXRwdXRcbn1cblxuLyoqXG4gKiBEZWVwIG1lcmdlLCBidXQgY29uc2lkZXJzIGFzeW1tZXRyaWMgbWF0Y2hlcnMuIFVubGlrZSBiYXNlIHV0aWwncyBkZWVwIG1lcmdlLFxuICogd2lsbCBtZXJnZSBhbnkgb2JqZWN0LWxpa2UgaW5zdGFuY2UuXG4gKiBDb21wYXRpYmxlIHdpdGggSmVzdCdzIHNuYXBzaG90IG1hdGNoZXIuIFNob3VsZCBub3QgYmUgdXNlZCBvdXRzaWRlIG9mIHNuYXBzaG90LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogdG9NYXRjaFNuYXBzaG90KHtcbiAqICAgbmFtZTogZXhwZWN0LnN0cmluZ0NvbnRhaW5pbmcoJ3RleHQnKVxuICogfSlcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVlcE1lcmdlU25hcHNob3QodGFyZ2V0OiBhbnksIHNvdXJjZTogYW55KTogYW55IHtcbiAgaWYgKGlzT2JqZWN0KHRhcmdldCkgJiYgaXNPYmplY3Qoc291cmNlKSkge1xuICAgIGNvbnN0IG1lcmdlZE91dHB1dCA9IHsgLi4udGFyZ2V0IH1cbiAgICBPYmplY3Qua2V5cyhzb3VyY2UpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKGlzT2JqZWN0KHNvdXJjZVtrZXldKSAmJiAhc291cmNlW2tleV0uJCR0eXBlb2YpIHtcbiAgICAgICAgaWYgKCEoa2V5IGluIHRhcmdldCkpIE9iamVjdC5hc3NpZ24obWVyZ2VkT3V0cHV0LCB7IFtrZXldOiBzb3VyY2Vba2V5XSB9KVxuICAgICAgICBlbHNlIG1lcmdlZE91dHB1dFtrZXldID0gZGVlcE1lcmdlU25hcHNob3QodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldKVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2Vba2V5XSkpIHtcbiAgICAgICAgbWVyZ2VkT3V0cHV0W2tleV0gPSBkZWVwTWVyZ2VBcnJheSh0YXJnZXRba2V5XSwgc291cmNlW2tleV0pXG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihtZXJnZWRPdXRwdXQsIHsgW2tleV06IHNvdXJjZVtrZXldIH0pXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBtZXJnZWRPdXRwdXRcbiAgfVxuICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkgJiYgQXJyYXkuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgcmV0dXJuIGRlZXBNZXJnZUFycmF5KHRhcmdldCwgc291cmNlKVxuICB9XG4gIHJldHVybiB0YXJnZXRcbn1cbiIsImltcG9ydCB7IHByb21pc2VzIGFzIGZzIH0gZnJvbSAnZnMnXG5pbXBvcnQgdHlwZSBNYWdpY1N0cmluZyBmcm9tICdtYWdpYy1zdHJpbmcnXG5pbXBvcnQgeyBycGMgfSBmcm9tICcuLi8uLi8uLi9ydW50aW1lL3JwYydcbmltcG9ydCB7IGdldE9yaWdpbmFsUG9zLCBsaW5lU3BsaXRSRSwgbnVtYmVyVG9Qb3MsIHBvc1RvTnVtYmVyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvc291cmNlLW1hcCdcbmltcG9ydCB7IGdldENhbGxMYXN0SW5kZXggfSBmcm9tICcuLi8uLi8uLi91dGlscydcblxuZXhwb3J0IGludGVyZmFjZSBJbmxpbmVTbmFwc2hvdCB7XG4gIHNuYXBzaG90OiBzdHJpbmdcbiAgZmlsZTogc3RyaW5nXG4gIGxpbmU6IG51bWJlclxuICBjb2x1bW46IG51bWJlclxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2F2ZUlubGluZVNuYXBzaG90cyhcbiAgc25hcHNob3RzOiBBcnJheTxJbmxpbmVTbmFwc2hvdD4sXG4pIHtcbiAgY29uc3QgTWFnaWNTdHJpbmcgPSAoYXdhaXQgaW1wb3J0KCdtYWdpYy1zdHJpbmcnKSkuZGVmYXVsdFxuICBjb25zdCBmaWxlcyA9IG5ldyBTZXQoc25hcHNob3RzLm1hcChpID0+IGkuZmlsZSkpXG4gIGF3YWl0IFByb21pc2UuYWxsKEFycmF5LmZyb20oZmlsZXMpLm1hcChhc3luYyhmaWxlKSA9PiB7XG4gICAgY29uc3QgbWFwID0gYXdhaXQgcnBjKCkuZ2V0U291cmNlTWFwKGZpbGUpXG4gICAgY29uc3Qgc25hcHMgPSBzbmFwc2hvdHMuZmlsdGVyKGkgPT4gaS5maWxlID09PSBmaWxlKVxuICAgIGNvbnN0IGNvZGUgPSBhd2FpdCBmcy5yZWFkRmlsZShmaWxlLCAndXRmOCcpXG4gICAgY29uc3QgcyA9IG5ldyBNYWdpY1N0cmluZyhjb2RlKVxuXG4gICAgZm9yIChjb25zdCBzbmFwIG9mIHNuYXBzKSB7XG4gICAgICBjb25zdCBwb3MgPSBhd2FpdCBnZXRPcmlnaW5hbFBvcyhtYXAsIHNuYXApXG4gICAgICBjb25zdCBpbmRleCA9IHBvc1RvTnVtYmVyKGNvZGUsIHBvcyEpXG4gICAgICByZXBsYWNlSW5saW5lU25hcChjb2RlLCBzLCBpbmRleCwgc25hcC5zbmFwc2hvdClcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1lZCA9IHMudG9TdHJpbmcoKVxuICAgIGlmICh0cmFuc2Zvcm1lZCAhPT0gY29kZSlcbiAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShmaWxlLCB0cmFuc2Zvcm1lZCwgJ3V0Zi04JylcbiAgfSkpXG59XG5cbmNvbnN0IHN0YXJ0T2JqZWN0UmVnZXggPSAvKD86dG9NYXRjaElubGluZVNuYXBzaG90fHRvVGhyb3dFcnJvck1hdGNoaW5nSW5saW5lU25hcHNob3QpXFxzKlxcKFxccyooeykvbVxuXG5mdW5jdGlvbiByZXBsYWNlT2JqZWN0U25hcChjb2RlOiBzdHJpbmcsIHM6IE1hZ2ljU3RyaW5nLCBpbmRleDogbnVtYmVyLCBuZXdTbmFwOiBzdHJpbmcpIHtcbiAgY29kZSA9IGNvZGUuc2xpY2UoaW5kZXgpXG4gIGNvbnN0IHN0YXJ0TWF0Y2ggPSBzdGFydE9iamVjdFJlZ2V4LmV4ZWMoY29kZSlcbiAgaWYgKCFzdGFydE1hdGNoKVxuICAgIHJldHVybiBmYWxzZVxuXG4gIGNvZGUgPSBjb2RlLnNsaWNlKHN0YXJ0TWF0Y2guaW5kZXgpXG4gIGNvbnN0IGNoYXJJbmRleCA9IGdldENhbGxMYXN0SW5kZXgoY29kZSlcbiAgaWYgKGNoYXJJbmRleCA9PT0gbnVsbClcbiAgICByZXR1cm4gZmFsc2VcblxuICBzLmFwcGVuZExlZnQoaW5kZXggKyBzdGFydE1hdGNoLmluZGV4ICsgY2hhckluZGV4LCBgLCAke3ByZXBhcmVTbmFwU3RyaW5nKG5ld1NuYXAsIGNvZGUsIGluZGV4KX1gKVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmZ1bmN0aW9uIHByZXBhcmVTbmFwU3RyaW5nKHNuYXA6IHN0cmluZywgc291cmNlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpIHtcbiAgY29uc3QgbGluZUluZGV4ID0gbnVtYmVyVG9Qb3Moc291cmNlLCBpbmRleCkubGluZVxuICBjb25zdCBsaW5lID0gc291cmNlLnNwbGl0KGxpbmVTcGxpdFJFKVtsaW5lSW5kZXggLSAxXVxuICBjb25zdCBpbmRlbnQgPSBsaW5lLm1hdGNoKC9eXFxzKi8pIVswXSB8fCAnJ1xuICBjb25zdCBpbmRlbnROZXh0ID0gaW5kZW50LmluY2x1ZGVzKCdcXHQnKSA/IGAke2luZGVudH1cXHRgIDogYCR7aW5kZW50fSAgYFxuXG4gIGNvbnN0IGxpbmVzID0gc25hcFxuICAgIC50cmltKClcbiAgICAucmVwbGFjZSgvXFxcXC9nLCAnXFxcXFxcXFwnKVxuICAgIC5yZXBsYWNlKC9cXCQvZywgJ1xcXFwkJylcbiAgICAuc3BsaXQoL1xcbi9nKVxuICAgIC5tYXAoaSA9PiBpLnRyaW1FbmQoKSlcblxuICBjb25zdCBpc09uZWxpbmUgPSBsaW5lcy5sZW5ndGggPD0gMVxuICBjb25zdCBxdW90ZSA9IGlzT25lbGluZSA/ICdcXCcnIDogJ2AnXG4gIHJldHVybiBpc09uZWxpbmVcbiAgICA/IGAnJHtsaW5lcy5qb2luKCdcXG4nKS5yZXBsYWNlKC8nL2csICdcXFxcXFwnJyl9J2BcbiAgICA6IGAke3F1b3RlfVxcbiR7bGluZXMubWFwKGkgPT4gaW5kZW50TmV4dCArIGkpLmpvaW4oJ1xcbicpLnJlcGxhY2UoL2AvZywgJ1xcXFxgJyl9XFxuJHtpbmRlbnR9JHtxdW90ZX1gXG59XG5cbmNvbnN0IHN0YXJ0UmVnZXggPSAvKD86dG9NYXRjaElubGluZVNuYXBzaG90fHRvVGhyb3dFcnJvck1hdGNoaW5nSW5saW5lU25hcHNob3QpXFxzKlxcKFxccypbXFx3XyRdKihbJ1wiYFxcKV0pL21cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlSW5saW5lU25hcChjb2RlOiBzdHJpbmcsIHM6IE1hZ2ljU3RyaW5nLCBpbmRleDogbnVtYmVyLCBuZXdTbmFwOiBzdHJpbmcpIHtcbiAgY29uc3Qgc3RhcnRNYXRjaCA9IHN0YXJ0UmVnZXguZXhlYyhjb2RlLnNsaWNlKGluZGV4KSlcbiAgaWYgKCFzdGFydE1hdGNoKVxuICAgIHJldHVybiByZXBsYWNlT2JqZWN0U25hcChjb2RlLCBzLCBpbmRleCwgbmV3U25hcClcblxuICBjb25zdCBxdW90ZSA9IHN0YXJ0TWF0Y2hbMV1cbiAgY29uc3Qgc3RhcnRJbmRleCA9IGluZGV4ICsgc3RhcnRNYXRjaC5pbmRleCEgKyBzdGFydE1hdGNoWzBdLmxlbmd0aFxuICBjb25zdCBzbmFwU3RyaW5nID0gcHJlcGFyZVNuYXBTdHJpbmcobmV3U25hcCwgY29kZSwgaW5kZXgpXG5cbiAgaWYgKHF1b3RlID09PSAnKScpIHtcbiAgICBzLmFwcGVuZFJpZ2h0KHN0YXJ0SW5kZXggLSAxLCBzbmFwU3RyaW5nKVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBjb25zdCBxdW90ZUVuZFJFID0gbmV3IFJlZ0V4cChgKD86XnxbXlxcXFxcXFxcXSkke3F1b3RlfWApXG4gIGNvbnN0IGVuZE1hdGNoID0gcXVvdGVFbmRSRS5leGVjKGNvZGUuc2xpY2Uoc3RhcnRJbmRleCkpXG4gIGlmICghZW5kTWF0Y2gpXG4gICAgcmV0dXJuIGZhbHNlXG4gIGNvbnN0IGVuZEluZGV4ID0gc3RhcnRJbmRleCArIGVuZE1hdGNoLmluZGV4ISArIGVuZE1hdGNoWzBdLmxlbmd0aFxuICBzLm92ZXJ3cml0ZShzdGFydEluZGV4IC0gMSwgZW5kSW5kZXgsIHNuYXBTdHJpbmcpXG5cbiAgcmV0dXJuIHRydWVcbn1cblxuY29uc3QgSU5ERU5UQVRJT05fUkVHRVggPSAvXihbXlxcU1xcbl0qKVxcUy9tXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBTbmFwc2hvdEluZGVudGF0aW9uKGlubGluZVNuYXBzaG90OiBzdHJpbmcpIHtcbiAgLy8gRmluZCBpbmRlbnRhdGlvbiBpZiBleGlzdHMuXG4gIGNvbnN0IG1hdGNoID0gaW5saW5lU25hcHNob3QubWF0Y2goSU5ERU5UQVRJT05fUkVHRVgpXG4gIGlmICghbWF0Y2ggfHwgIW1hdGNoWzFdKSB7XG4gICAgLy8gTm8gaW5kZW50YXRpb24uXG4gICAgcmV0dXJuIGlubGluZVNuYXBzaG90XG4gIH1cblxuICBjb25zdCBpbmRlbnRhdGlvbiA9IG1hdGNoWzFdXG4gIGNvbnN0IGxpbmVzID0gaW5saW5lU25hcHNob3Quc3BsaXQoL1xcbi9nKVxuICBpZiAobGluZXMubGVuZ3RoIDw9IDIpIHtcbiAgICAvLyBNdXN0IGJlIGF0IGxlYXN0IDMgbGluZXMuXG4gICAgcmV0dXJuIGlubGluZVNuYXBzaG90XG4gIH1cblxuICBpZiAobGluZXNbMF0udHJpbSgpICE9PSAnJyB8fCBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS50cmltKCkgIT09ICcnKSB7XG4gICAgLy8gSWYgbm90IGJsYW5rIGZpcnN0IGFuZCBsYXN0IGxpbmVzLCBhYm9ydC5cbiAgICByZXR1cm4gaW5saW5lU25hcHNob3RcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAxOyBpIDwgbGluZXMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgaWYgKGxpbmVzW2ldICE9PSAnJykge1xuICAgICAgaWYgKGxpbmVzW2ldLmluZGV4T2YoaW5kZW50YXRpb24pICE9PSAwKSB7XG4gICAgICAgIC8vIEFsbCBsaW5lcyBleGNlcHQgZmlyc3QgYW5kIGxhc3Qgc2hvdWxkIGVpdGhlciBiZSBibGFuayBvciBoYXZlIHRoZSBzYW1lXG4gICAgICAgIC8vIGluZGVudCBhcyB0aGUgZmlyc3QgbGluZSAob3IgbW9yZSkuIElmIHRoaXMgaXNuJ3QgdGhlIGNhc2Ugd2UgZG9uJ3RcbiAgICAgICAgLy8gd2FudCB0byB0b3VjaCB0aGUgc25hcHNob3QgYXQgYWxsLlxuICAgICAgICByZXR1cm4gaW5saW5lU25hcHNob3RcbiAgICAgIH1cblxuICAgICAgbGluZXNbaV0gPSBsaW5lc1tpXS5zdWJzdHJpbmcoaW5kZW50YXRpb24ubGVuZ3RoKVxuICAgIH1cbiAgfVxuXG4gIC8vIExhc3QgbGluZSBpcyBhIHNwZWNpYWwgY2FzZSBiZWNhdXNlIGl0IHdvbid0IGhhdmUgdGhlIHNhbWUgaW5kZW50IGFzIG90aGVyc1xuICAvLyBidXQgbWF5IHN0aWxsIGhhdmUgYmVlbiBnaXZlbiBzb21lIGluZGVudCB0byBsaW5lIHVwLlxuICBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXSA9ICcnXG5cbiAgLy8gUmV0dXJuIGlubGluZSBzbmFwc2hvdCwgbm93IGF0IGluZGVudCAwLlxuICBpbmxpbmVTbmFwc2hvdCA9IGxpbmVzLmpvaW4oJ1xcbicpXG4gIHJldHVybiBpbmxpbmVTbmFwc2hvdFxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgZnMgZnJvbSAnZnMnXG5pbXBvcnQgdHlwZSB7IENvbmZpZyB9IGZyb20gJ0BqZXN0L3R5cGVzJ1xuLy8gaW1wb3J0IHsgZ2V0U3RhY2tUcmFjZUxpbmVzLCBnZXRUb3BGcmFtZSB9IGZyb20gJ2plc3QtbWVzc2FnZS11dGlsJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zUmVjZWl2ZWQgYXMgUHJldHR5Rm9ybWF0T3B0aW9ucyB9IGZyb20gJ3ByZXR0eS1mb3JtYXQnXG5pbXBvcnQgdHlwZSB7IFNuYXBzaG90RGF0YSwgU25hcHNob3RNYXRjaE9wdGlvbnMsIFNuYXBzaG90U3RhdGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBzbGFzaCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgcGFyc2VTdGFja3RyYWNlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvc291cmNlLW1hcCdcbmltcG9ydCB0eXBlIHsgSW5saW5lU25hcHNob3QgfSBmcm9tICcuL2lubGluZVNuYXBzaG90J1xuaW1wb3J0IHsgc2F2ZUlubGluZVNuYXBzaG90cyB9IGZyb20gJy4vaW5saW5lU25hcHNob3QnXG5cbmltcG9ydCB7XG4gIGFkZEV4dHJhTGluZUJyZWFrcyxcbiAgZ2V0U25hcHNob3REYXRhLFxuICBrZXlUb1Rlc3ROYW1lLFxuICBwcmVwYXJlRXhwZWN0ZWQsXG4gIHJlbW92ZUV4dHJhTGluZUJyZWFrcyxcbiAgc2F2ZVNuYXBzaG90RmlsZSxcbiAgc2VyaWFsaXplLFxuICB0ZXN0TmFtZVRvS2V5LFxufSBmcm9tICcuL3V0aWxzJ1xuXG5pbnRlcmZhY2UgU25hcHNob3RSZXR1cm5PcHRpb25zIHtcbiAgYWN0dWFsOiBzdHJpbmdcbiAgY291bnQ6IG51bWJlclxuICBleHBlY3RlZD86IHN0cmluZ1xuICBrZXk6IHN0cmluZ1xuICBwYXNzOiBib29sZWFuXG59XG5cbmludGVyZmFjZSBTYXZlU3RhdHVzIHtcbiAgZGVsZXRlZDogYm9vbGVhblxuICBzYXZlZDogYm9vbGVhblxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbmFwc2hvdFN0YXRlIHtcbiAgcHJpdmF0ZSBfY291bnRlcnM6IE1hcDxzdHJpbmcsIG51bWJlcj5cbiAgcHJpdmF0ZSBfZGlydHk6IGJvb2xlYW5cbiAgcHJpdmF0ZSBfdXBkYXRlU25hcHNob3Q6IENvbmZpZy5TbmFwc2hvdFVwZGF0ZVN0YXRlXG4gIHByaXZhdGUgX3NuYXBzaG90RGF0YTogU25hcHNob3REYXRhXG4gIHByaXZhdGUgX2luaXRpYWxEYXRhOiBTbmFwc2hvdERhdGFcbiAgcHJpdmF0ZSBfc25hcHNob3RQYXRoOiBzdHJpbmdcbiAgcHJpdmF0ZSBfaW5saW5lU25hcHNob3RzOiBBcnJheTxJbmxpbmVTbmFwc2hvdD5cbiAgcHJpdmF0ZSBfdW5jaGVja2VkS2V5czogU2V0PHN0cmluZz5cbiAgcHJpdmF0ZSBfc25hcHNob3RGb3JtYXQ6IFByZXR0eUZvcm1hdE9wdGlvbnNcblxuICBhZGRlZDogbnVtYmVyXG4gIGV4cGFuZDogYm9vbGVhblxuICBtYXRjaGVkOiBudW1iZXJcbiAgdW5tYXRjaGVkOiBudW1iZXJcbiAgdXBkYXRlZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3Ioc25hcHNob3RQYXRoOiBzdHJpbmcsIG9wdGlvbnM6IFNuYXBzaG90U3RhdGVPcHRpb25zKSB7XG4gICAgdGhpcy5fc25hcHNob3RQYXRoID0gc25hcHNob3RQYXRoXG4gICAgY29uc3QgeyBkYXRhLCBkaXJ0eSB9ID0gZ2V0U25hcHNob3REYXRhKFxuICAgICAgdGhpcy5fc25hcHNob3RQYXRoLFxuICAgICAgb3B0aW9ucy51cGRhdGVTbmFwc2hvdCxcbiAgICApXG4gICAgdGhpcy5faW5pdGlhbERhdGEgPSBkYXRhXG4gICAgdGhpcy5fc25hcHNob3REYXRhID0gZGF0YVxuICAgIHRoaXMuX2RpcnR5ID0gZGlydHlcbiAgICB0aGlzLl9pbmxpbmVTbmFwc2hvdHMgPSBbXVxuICAgIHRoaXMuX3VuY2hlY2tlZEtleXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKHRoaXMuX3NuYXBzaG90RGF0YSkpXG4gICAgdGhpcy5fY291bnRlcnMgPSBuZXcgTWFwKClcbiAgICB0aGlzLmV4cGFuZCA9IG9wdGlvbnMuZXhwYW5kIHx8IGZhbHNlXG4gICAgdGhpcy5hZGRlZCA9IDBcbiAgICB0aGlzLm1hdGNoZWQgPSAwXG4gICAgdGhpcy51bm1hdGNoZWQgPSAwXG4gICAgdGhpcy5fdXBkYXRlU25hcHNob3QgPSBvcHRpb25zLnVwZGF0ZVNuYXBzaG90XG4gICAgdGhpcy51cGRhdGVkID0gMFxuICAgIHRoaXMuX3NuYXBzaG90Rm9ybWF0ID0ge1xuICAgICAgcHJpbnRCYXNpY1Byb3RvdHlwZTogZmFsc2UsXG4gICAgICAuLi5vcHRpb25zLnNuYXBzaG90Rm9ybWF0LFxuICAgIH1cbiAgfVxuXG4gIG1hcmtTbmFwc2hvdHNBc0NoZWNrZWRGb3JUZXN0KHRlc3ROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl91bmNoZWNrZWRLZXlzLmZvckVhY2goKHVuY2hlY2tlZEtleSkgPT4ge1xuICAgICAgaWYgKGtleVRvVGVzdE5hbWUodW5jaGVja2VkS2V5KSA9PT0gdGVzdE5hbWUpXG4gICAgICAgIHRoaXMuX3VuY2hlY2tlZEtleXMuZGVsZXRlKHVuY2hlY2tlZEtleSlcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBfYWRkU25hcHNob3QoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgcmVjZWl2ZWRTZXJpYWxpemVkOiBzdHJpbmcsXG4gICAgb3B0aW9uczogeyBpc0lubGluZTogYm9vbGVhbjsgZXJyb3I/OiBFcnJvciB9LFxuICApOiB2b2lkIHtcbiAgICB0aGlzLl9kaXJ0eSA9IHRydWVcbiAgICBpZiAob3B0aW9ucy5pc0lubGluZSkge1xuICAgICAgY29uc3QgZXJyb3IgPSBvcHRpb25zLmVycm9yIHx8IG5ldyBFcnJvcignVW5rbm93biBlcnJvcicpXG4gICAgICBjb25zdCBzdGFja3MgPSBwYXJzZVN0YWNrdHJhY2UoZXJyb3IsIHRydWUpXG4gICAgICBzdGFja3MuZm9yRWFjaChpID0+IGkuZmlsZSA9IHNsYXNoKGkuZmlsZSkpXG4gICAgICAvLyBpbmxpbmUgc25hcHNob3QgZnVuY3Rpb24gaXMgY2FsbGVkIF9fVklURVNUX0lOTElORV9TTkFQU0hPVF9fXG4gICAgICAvLyBpbiBpbnRlZ3JhdGlvbnMvc25hcHNob3QvY2hhaS50c1xuICAgICAgY29uc3Qgc3RhY2tJbmRleCA9IHN0YWNrcy5maW5kSW5kZXgoaSA9PiBpLm1ldGhvZC5pbmNsdWRlcygnX19WSVRFU1RfSU5MSU5FX1NOQVBTSE9UX18nKSlcbiAgICAgIGNvbnN0IHN0YWNrID0gc3RhY2tJbmRleCAhPT0gLTEgPyBzdGFja3Nbc3RhY2tJbmRleCArIDJdIDogbnVsbFxuICAgICAgaWYgKCFzdGFjaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFZpdGVzdDogQ291bGRuJ3QgaW5mZXIgc3RhY2sgZnJhbWUgZm9yIGlubGluZSBzbmFwc2hvdC5cXG4ke0pTT04uc3RyaW5naWZ5KHN0YWNrcyl9YCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgdGhpcy5faW5saW5lU25hcHNob3RzLnB1c2goe1xuICAgICAgICBzbmFwc2hvdDogcmVjZWl2ZWRTZXJpYWxpemVkLFxuICAgICAgICAuLi5zdGFjayxcbiAgICAgIH0pXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5fc25hcHNob3REYXRhW2tleV0gPSByZWNlaXZlZFNlcmlhbGl6ZWRcbiAgICB9XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLl9zbmFwc2hvdERhdGEgPSB0aGlzLl9pbml0aWFsRGF0YVxuICAgIC8vIHRoaXMuX2lubGluZVNuYXBzaG90cyA9IFtdXG4gICAgdGhpcy5fY291bnRlcnMgPSBuZXcgTWFwKClcbiAgICB0aGlzLmFkZGVkID0gMFxuICAgIHRoaXMubWF0Y2hlZCA9IDBcbiAgICB0aGlzLnVubWF0Y2hlZCA9IDBcbiAgICB0aGlzLnVwZGF0ZWQgPSAwXG4gIH1cblxuICBhc3luYyBzYXZlKCk6IFByb21pc2U8U2F2ZVN0YXR1cz4ge1xuICAgIGNvbnN0IGhhc0V4dGVybmFsU25hcHNob3RzID0gT2JqZWN0LmtleXModGhpcy5fc25hcHNob3REYXRhKS5sZW5ndGhcbiAgICBjb25zdCBoYXNJbmxpbmVTbmFwc2hvdHMgPSB0aGlzLl9pbmxpbmVTbmFwc2hvdHMubGVuZ3RoXG4gICAgY29uc3QgaXNFbXB0eSA9ICFoYXNFeHRlcm5hbFNuYXBzaG90cyAmJiAhaGFzSW5saW5lU25hcHNob3RzXG5cbiAgICBjb25zdCBzdGF0dXM6IFNhdmVTdGF0dXMgPSB7XG4gICAgICBkZWxldGVkOiBmYWxzZSxcbiAgICAgIHNhdmVkOiBmYWxzZSxcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMuX2RpcnR5IHx8IHRoaXMuX3VuY2hlY2tlZEtleXMuc2l6ZSkgJiYgIWlzRW1wdHkpIHtcbiAgICAgIGlmIChoYXNFeHRlcm5hbFNuYXBzaG90cylcbiAgICAgICAgYXdhaXQgc2F2ZVNuYXBzaG90RmlsZSh0aGlzLl9zbmFwc2hvdERhdGEsIHRoaXMuX3NuYXBzaG90UGF0aClcbiAgICAgIGlmIChoYXNJbmxpbmVTbmFwc2hvdHMpXG4gICAgICAgIGF3YWl0IHNhdmVJbmxpbmVTbmFwc2hvdHModGhpcy5faW5saW5lU25hcHNob3RzKVxuXG4gICAgICBzdGF0dXMuc2F2ZWQgPSB0cnVlXG4gICAgfVxuICAgIGVsc2UgaWYgKCFoYXNFeHRlcm5hbFNuYXBzaG90cyAmJiBmcy5leGlzdHNTeW5jKHRoaXMuX3NuYXBzaG90UGF0aCkpIHtcbiAgICAgIGlmICh0aGlzLl91cGRhdGVTbmFwc2hvdCA9PT0gJ2FsbCcpXG4gICAgICAgIGZzLnVubGlua1N5bmModGhpcy5fc25hcHNob3RQYXRoKVxuXG4gICAgICBzdGF0dXMuZGVsZXRlZCA9IHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdHVzXG4gIH1cblxuICBnZXRVbmNoZWNrZWRDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl91bmNoZWNrZWRLZXlzLnNpemUgfHwgMFxuICB9XG5cbiAgZ2V0VW5jaGVja2VkS2V5cygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl91bmNoZWNrZWRLZXlzKVxuICB9XG5cbiAgcmVtb3ZlVW5jaGVja2VkS2V5cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdXBkYXRlU25hcHNob3QgPT09ICdhbGwnICYmIHRoaXMuX3VuY2hlY2tlZEtleXMuc2l6ZSkge1xuICAgICAgdGhpcy5fZGlydHkgPSB0cnVlXG4gICAgICB0aGlzLl91bmNoZWNrZWRLZXlzLmZvckVhY2goa2V5ID0+IGRlbGV0ZSB0aGlzLl9zbmFwc2hvdERhdGFba2V5XSlcbiAgICAgIHRoaXMuX3VuY2hlY2tlZEtleXMuY2xlYXIoKVxuICAgIH1cbiAgfVxuXG4gIG1hdGNoKHtcbiAgICB0ZXN0TmFtZSxcbiAgICByZWNlaXZlZCxcbiAgICBrZXksXG4gICAgaW5saW5lU25hcHNob3QsXG4gICAgaXNJbmxpbmUsXG4gICAgZXJyb3IsXG4gIH06IFNuYXBzaG90TWF0Y2hPcHRpb25zKTogU25hcHNob3RSZXR1cm5PcHRpb25zIHtcbiAgICB0aGlzLl9jb3VudGVycy5zZXQodGVzdE5hbWUsICh0aGlzLl9jb3VudGVycy5nZXQodGVzdE5hbWUpIHx8IDApICsgMSlcbiAgICBjb25zdCBjb3VudCA9IE51bWJlcih0aGlzLl9jb3VudGVycy5nZXQodGVzdE5hbWUpKVxuXG4gICAgaWYgKCFrZXkpXG4gICAgICBrZXkgPSB0ZXN0TmFtZVRvS2V5KHRlc3ROYW1lLCBjb3VudClcblxuICAgIC8vIERvIG5vdCBtYXJrIHRoZSBzbmFwc2hvdCBhcyBcImNoZWNrZWRcIiBpZiB0aGUgc25hcHNob3QgaXMgaW5saW5lIGFuZFxuICAgIC8vIHRoZXJlJ3MgYW4gZXh0ZXJuYWwgc25hcHNob3QuIFRoaXMgd2F5IHRoZSBleHRlcm5hbCBzbmFwc2hvdCBjYW4gYmVcbiAgICAvLyByZW1vdmVkIHdpdGggYC0tdXBkYXRlU25hcHNob3RgLlxuICAgIGlmICghKGlzSW5saW5lICYmIHRoaXMuX3NuYXBzaG90RGF0YVtrZXldICE9PSB1bmRlZmluZWQpKVxuICAgICAgdGhpcy5fdW5jaGVja2VkS2V5cy5kZWxldGUoa2V5KVxuXG4gICAgY29uc3QgcmVjZWl2ZWRTZXJpYWxpemVkID0gYWRkRXh0cmFMaW5lQnJlYWtzKHNlcmlhbGl6ZShyZWNlaXZlZCwgdW5kZWZpbmVkLCB0aGlzLl9zbmFwc2hvdEZvcm1hdCkpXG4gICAgY29uc3QgZXhwZWN0ZWQgPSBpc0lubGluZSA/IGlubGluZVNuYXBzaG90IDogdGhpcy5fc25hcHNob3REYXRhW2tleV1cbiAgICBjb25zdCBleHBlY3RlZFRyaW1tZWQgPSBwcmVwYXJlRXhwZWN0ZWQoZXhwZWN0ZWQpXG4gICAgY29uc3QgcGFzcyA9IGV4cGVjdGVkVHJpbW1lZCA9PT0gcHJlcGFyZUV4cGVjdGVkKHJlY2VpdmVkU2VyaWFsaXplZClcbiAgICBjb25zdCBoYXNTbmFwc2hvdCA9IGV4cGVjdGVkICE9PSB1bmRlZmluZWRcbiAgICBjb25zdCBzbmFwc2hvdElzUGVyc2lzdGVkID0gaXNJbmxpbmUgfHwgZnMuZXhpc3RzU3luYyh0aGlzLl9zbmFwc2hvdFBhdGgpXG5cbiAgICBpZiAocGFzcyAmJiAhaXNJbmxpbmUpIHtcbiAgICAgIC8vIEV4ZWN1dGluZyBhIHNuYXBzaG90IGZpbGUgYXMgSmF2YVNjcmlwdCBhbmQgd3JpdGluZyB0aGUgc3RyaW5ncyBiYWNrXG4gICAgICAvLyB3aGVuIG90aGVyIHNuYXBzaG90cyBoYXZlIGNoYW5nZWQgbG9zZXMgdGhlIHByb3BlciBlc2NhcGluZyBmb3Igc29tZVxuICAgICAgLy8gY2hhcmFjdGVycy4gU2luY2Ugd2UgY2hlY2sgZXZlcnkgc25hcHNob3QgaW4gZXZlcnkgdGVzdCwgdXNlIHRoZSBuZXdseVxuICAgICAgLy8gZ2VuZXJhdGVkIGZvcm1hdHRlZCBzdHJpbmcuXG4gICAgICAvLyBOb3RlIHRoYXQgdGhpcyBpcyBvbmx5IHJlbGV2YW50IHdoZW4gYSBzbmFwc2hvdCBpcyBhZGRlZCBhbmQgdGhlIGRpcnR5XG4gICAgICAvLyBmbGFnIGlzIHNldC5cbiAgICAgIHRoaXMuX3NuYXBzaG90RGF0YVtrZXldID0gcmVjZWl2ZWRTZXJpYWxpemVkXG4gICAgfVxuXG4gICAgLy8gVGhlc2UgYXJlIHRoZSBjb25kaXRpb25zIG9uIHdoZW4gdG8gd3JpdGUgc25hcHNob3RzOlxuICAgIC8vICAqIFRoZXJlJ3Mgbm8gc25hcHNob3QgZmlsZSBpbiBhIG5vbi1DSSBlbnZpcm9ubWVudC5cbiAgICAvLyAgKiBUaGVyZSBpcyBhIHNuYXBzaG90IGZpbGUgYW5kIHdlIGRlY2lkZWQgdG8gdXBkYXRlIHRoZSBzbmFwc2hvdC5cbiAgICAvLyAgKiBUaGVyZSBpcyBhIHNuYXBzaG90IGZpbGUsIGJ1dCBpdCBkb2Vzbid0IGhhdmUgdGhpcyBzbmFwc2hvdC5cbiAgICAvLyBUaGVzZSBhcmUgdGhlIGNvbmRpdGlvbnMgb24gd2hlbiBub3QgdG8gd3JpdGUgc25hcHNob3RzOlxuICAgIC8vICAqIFRoZSB1cGRhdGUgZmxhZyBpcyBzZXQgdG8gJ25vbmUnLlxuICAgIC8vICAqIFRoZXJlJ3Mgbm8gc25hcHNob3QgZmlsZSBvciBhIGZpbGUgd2l0aG91dCB0aGlzIHNuYXBzaG90IG9uIGEgQ0kgZW52aXJvbm1lbnQuXG4gICAgaWYgKFxuICAgICAgKGhhc1NuYXBzaG90ICYmIHRoaXMuX3VwZGF0ZVNuYXBzaG90ID09PSAnYWxsJylcbiAgICAgICB8fCAoKCFoYXNTbmFwc2hvdCB8fCAhc25hcHNob3RJc1BlcnNpc3RlZClcbiAgICAgICAgICYmICh0aGlzLl91cGRhdGVTbmFwc2hvdCA9PT0gJ25ldycgfHwgdGhpcy5fdXBkYXRlU25hcHNob3QgPT09ICdhbGwnKSlcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLl91cGRhdGVTbmFwc2hvdCA9PT0gJ2FsbCcpIHtcbiAgICAgICAgaWYgKCFwYXNzKSB7XG4gICAgICAgICAgaWYgKGhhc1NuYXBzaG90KVxuICAgICAgICAgICAgdGhpcy51cGRhdGVkKytcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLmFkZGVkKytcblxuICAgICAgICAgIHRoaXMuX2FkZFNuYXBzaG90KGtleSwgcmVjZWl2ZWRTZXJpYWxpemVkLCB7IGVycm9yLCBpc0lubGluZSB9KVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMubWF0Y2hlZCsrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLl9hZGRTbmFwc2hvdChrZXksIHJlY2VpdmVkU2VyaWFsaXplZCwgeyBlcnJvciwgaXNJbmxpbmUgfSlcbiAgICAgICAgdGhpcy5hZGRlZCsrXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjdHVhbDogJycsXG4gICAgICAgIGNvdW50LFxuICAgICAgICBleHBlY3RlZDogJycsXG4gICAgICAgIGtleSxcbiAgICAgICAgcGFzczogdHJ1ZSxcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpZiAoIXBhc3MpIHtcbiAgICAgICAgdGhpcy51bm1hdGNoZWQrK1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGFjdHVhbDogcmVtb3ZlRXh0cmFMaW5lQnJlYWtzKHJlY2VpdmVkU2VyaWFsaXplZCksXG4gICAgICAgICAgY291bnQsXG4gICAgICAgICAgZXhwZWN0ZWQ6XG4gICAgICAgICAgZXhwZWN0ZWRUcmltbWVkICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gcmVtb3ZlRXh0cmFMaW5lQnJlYWtzKGV4cGVjdGVkVHJpbW1lZClcbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBwYXNzOiBmYWxzZSxcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMubWF0Y2hlZCsrXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYWN0dWFsOiAnJyxcbiAgICAgICAgICBjb3VudCxcbiAgICAgICAgICBleHBlY3RlZDogJycsXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIHBhc3M6IHRydWUsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBwYXRoIGZyb20gJ3BhdGhlJ1xuaW1wb3J0IHsgZXhwZWN0IH0gZnJvbSAnY2hhaSdcbmltcG9ydCB0eXBlIHsgU25hcHNob3RSZXN1bHQsIFRlc3QgfSBmcm9tICcuLi8uLi90eXBlcydcbmltcG9ydCB7IHJwYyB9IGZyb20gJy4uLy4uL3J1bnRpbWUvcnBjJ1xuaW1wb3J0IHsgZ2V0TmFtZXMgfSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCB7IGVxdWFscywgaXRlcmFibGVFcXVhbGl0eSwgc3Vic2V0RXF1YWxpdHkgfSBmcm9tICcuLi9jaGFpL2plc3QtdXRpbHMnXG5pbXBvcnQgeyBkZWVwTWVyZ2VTbmFwc2hvdCB9IGZyb20gJy4vcG9ydC91dGlscydcbmltcG9ydCBTbmFwc2hvdFN0YXRlIGZyb20gJy4vcG9ydC9zdGF0ZSdcblxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0IHtcbiAgZmlsZTogc3RyaW5nXG4gIHRpdGxlPzogc3RyaW5nXG4gIGZ1bGxUaXRsZT86IHN0cmluZ1xufVxuXG5jb25zdCByZXNvbHZlU25hcHNob3RQYXRoID0gKHRlc3RQYXRoOiBzdHJpbmcpID0+XG4gIHBhdGguam9pbihcbiAgICBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKHRlc3RQYXRoKSwgJ19fc25hcHNob3RzX18nKSxcbiAgICBgJHtwYXRoLmJhc2VuYW1lKHRlc3RQYXRoKX0uc25hcGAsXG4gIClcblxuZXhwb3J0IGNsYXNzIFNuYXBzaG90Q2xpZW50IHtcbiAgdGVzdDogVGVzdCB8IHVuZGVmaW5lZFxuICB0ZXN0RmlsZSA9ICcnXG4gIHNuYXBzaG90U3RhdGU6IFNuYXBzaG90U3RhdGUgfCB1bmRlZmluZWRcblxuICBzZXRUZXN0KHRlc3Q6IFRlc3QpIHtcbiAgICB0aGlzLnRlc3QgPSB0ZXN0XG5cbiAgICBpZiAodGhpcy50ZXN0RmlsZSAhPT0gdGhpcy50ZXN0LmZpbGUhLmZpbGVwYXRoKSB7XG4gICAgICBpZiAodGhpcy5zbmFwc2hvdFN0YXRlKVxuICAgICAgICB0aGlzLnNhdmVTbmFwKClcblxuICAgICAgdGhpcy50ZXN0RmlsZSA9IHRoaXMudGVzdCEuZmlsZSEuZmlsZXBhdGhcbiAgICAgIHRoaXMuc25hcHNob3RTdGF0ZSA9IG5ldyBTbmFwc2hvdFN0YXRlKFxuICAgICAgICByZXNvbHZlU25hcHNob3RQYXRoKHRoaXMudGVzdEZpbGUpLFxuICAgICAgICBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fIS5jb25maWcuc25hcHNob3RPcHRpb25zLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGNsZWFyVGVzdCgpIHtcbiAgICB0aGlzLnRlc3QgPSB1bmRlZmluZWRcbiAgfVxuXG4gIGFzc2VydChyZWNlaXZlZDogdW5rbm93biwgbWVzc2FnZT86IHN0cmluZywgaXNJbmxpbmUgPSBmYWxzZSwgcHJvcGVydGllcz86IG9iamVjdCwgaW5saW5lU25hcHNob3Q/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudGVzdClcbiAgICAgIHRocm93IG5ldyBFcnJvcignU25hcHNob3QgY2Fubm90IGJlIHVzZWQgb3V0c2lkZSBvZiB0ZXN0JylcblxuICAgIGlmICh0eXBlb2YgcHJvcGVydGllcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmICh0eXBlb2YgcmVjZWl2ZWQgIT09ICdvYmplY3QnIHx8ICFyZWNlaXZlZClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWNlaXZlZCB2YWx1ZSBtdXN0IGJlIGFuIG9iamVjdCB3aGVuIHRoZSBtYXRjaGVyIGhhcyBwcm9wZXJ0aWVzJylcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGFzcyA9IGVxdWFscyhyZWNlaXZlZCwgcHJvcGVydGllcywgW2l0ZXJhYmxlRXF1YWxpdHksIHN1YnNldEVxdWFsaXR5XSlcbiAgICAgICAgaWYgKCFwYXNzKVxuICAgICAgICAgIGV4cGVjdChyZWNlaXZlZCkuZXF1YWxzKHByb3BlcnRpZXMpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZWNlaXZlZCA9IGRlZXBNZXJnZVNuYXBzaG90KHJlY2VpdmVkLCBwcm9wZXJ0aWVzKVxuICAgICAgfVxuICAgICAgY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgIGVyci5tZXNzYWdlID0gJ1NuYXBzaG90IG1pc21hdGNoZWQnXG4gICAgICAgIHRocm93IGVyclxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHRlc3ROYW1lID0gW1xuICAgICAgLi4uZ2V0TmFtZXModGhpcy50ZXN0KS5zbGljZSgxKSxcbiAgICAgIC4uLihtZXNzYWdlID8gW21lc3NhZ2VdIDogW10pLFxuICAgIF0uam9pbignID4gJylcblxuICAgIGNvbnN0IHsgYWN0dWFsLCBleHBlY3RlZCwga2V5LCBwYXNzIH0gPSB0aGlzLnNuYXBzaG90U3RhdGUhLm1hdGNoKHtcbiAgICAgIHRlc3ROYW1lLFxuICAgICAgcmVjZWl2ZWQsXG4gICAgICBpc0lubGluZSxcbiAgICAgIGlubGluZVNuYXBzaG90LFxuICAgIH0pXG5cbiAgICBpZiAoIXBhc3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGV4cGVjdChhY3R1YWwudHJpbSgpKS5lcXVhbHMoZXhwZWN0ZWQgPyBleHBlY3RlZC50cmltKCkgOiAnJylcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIGVycm9yLm1lc3NhZ2UgPSBgU25hcHNob3QgXFxgJHtrZXkgfHwgJ3Vua25vd24nfVxcYCBtaXNtYXRjaGVkYFxuICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNhdmVTbmFwKCkge1xuICAgIGlmICghdGhpcy50ZXN0RmlsZSB8fCAhdGhpcy5zbmFwc2hvdFN0YXRlKSByZXR1cm5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYWNrU25hcHNob3RTdGF0ZSh0aGlzLnRlc3RGaWxlLCB0aGlzLnNuYXBzaG90U3RhdGUpXG4gICAgYXdhaXQgcnBjKCkuc25hcHNob3RTYXZlZChyZXN1bHQpXG5cbiAgICB0aGlzLnRlc3RGaWxlID0gJydcbiAgICB0aGlzLnNuYXBzaG90U3RhdGUgPSB1bmRlZmluZWRcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFja1NuYXBzaG90U3RhdGUoZmlsZXBhdGg6IHN0cmluZywgc3RhdGU6IFNuYXBzaG90U3RhdGUpOiBQcm9taXNlPFNuYXBzaG90UmVzdWx0PiB7XG4gIGNvbnN0IHNuYXBzaG90OiBTbmFwc2hvdFJlc3VsdCA9IHtcbiAgICBmaWxlcGF0aCxcbiAgICBhZGRlZDogMCxcbiAgICBmaWxlRGVsZXRlZDogZmFsc2UsXG4gICAgbWF0Y2hlZDogMCxcbiAgICB1bmNoZWNrZWQ6IDAsXG4gICAgdW5jaGVja2VkS2V5czogW10sXG4gICAgdW5tYXRjaGVkOiAwLFxuICAgIHVwZGF0ZWQ6IDAsXG4gIH1cbiAgY29uc3QgdW5jaGVja2VkQ291bnQgPSBzdGF0ZS5nZXRVbmNoZWNrZWRDb3VudCgpXG4gIGNvbnN0IHVuY2hlY2tlZEtleXMgPSBzdGF0ZS5nZXRVbmNoZWNrZWRLZXlzKClcbiAgaWYgKHVuY2hlY2tlZENvdW50KVxuICAgIHN0YXRlLnJlbW92ZVVuY2hlY2tlZEtleXMoKVxuXG4gIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHN0YXRlLnNhdmUoKVxuICBzbmFwc2hvdC5maWxlRGVsZXRlZCA9IHN0YXR1cy5kZWxldGVkXG4gIHNuYXBzaG90LmFkZGVkID0gc3RhdGUuYWRkZWRcbiAgc25hcHNob3QubWF0Y2hlZCA9IHN0YXRlLm1hdGNoZWRcbiAgc25hcHNob3QudW5tYXRjaGVkID0gc3RhdGUudW5tYXRjaGVkXG4gIHNuYXBzaG90LnVwZGF0ZWQgPSBzdGF0ZS51cGRhdGVkXG4gIHNuYXBzaG90LnVuY2hlY2tlZCA9ICFzdGF0dXMuZGVsZXRlZCA/IHVuY2hlY2tlZENvdW50IDogMFxuICBzbmFwc2hvdC51bmNoZWNrZWRLZXlzID0gQXJyYXkuZnJvbSh1bmNoZWNrZWRLZXlzKVxuXG4gIHJldHVybiBzbmFwc2hvdFxufVxuIiwiaW1wb3J0IHR5cGUgeyBDaGFpUGx1Z2luIH0gZnJvbSAnLi4vY2hhaS90eXBlcydcbmltcG9ydCB7IFNuYXBzaG90Q2xpZW50IH0gZnJvbSAnLi9jbGllbnQnXG5pbXBvcnQgeyBzdHJpcFNuYXBzaG90SW5kZW50YXRpb24gfSBmcm9tICcuL3BvcnQvaW5saW5lU25hcHNob3QnXG5cbmxldCBfY2xpZW50OiBTbmFwc2hvdENsaWVudFxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U25hcHNob3RDbGllbnQoKTogU25hcHNob3RDbGllbnQge1xuICBpZiAoIV9jbGllbnQpXG4gICAgX2NsaWVudCA9IG5ldyBTbmFwc2hvdENsaWVudCgpXG4gIHJldHVybiBfY2xpZW50XG59XG5cbmNvbnN0IGdldEVycm9yU3RyaW5nID0gKGV4cGVjdGVkOiAoKSA9PiB2b2lkKSA9PiB7XG4gIHRyeSB7XG4gICAgZXhwZWN0ZWQoKVxuICB9XG4gIGNhdGNoIChlKSB7XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcilcbiAgICAgIHJldHVybiBlLm1lc3NhZ2VcblxuICAgIHJldHVybiBlXG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ3NuYXBzaG90IGZ1bmN0aW9uIGRpZG5cXCd0IHRocmV3Jylcbn1cblxuZXhwb3J0IGNvbnN0IFNuYXBzaG90UGx1Z2luOiBDaGFpUGx1Z2luID0gKGNoYWksIHV0aWxzKSA9PiB7XG4gIGZvciAoY29uc3Qga2V5IG9mIFsnbWF0Y2hTbmFwc2hvdCcsICd0b01hdGNoU25hcHNob3QnXSkge1xuICAgIHV0aWxzLmFkZE1ldGhvZChcbiAgICAgIGNoYWkuQXNzZXJ0aW9uLnByb3RvdHlwZSxcbiAgICAgIGtleSxcbiAgICAgIGZ1bmN0aW9uKHRoaXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBwcm9wZXJ0aWVzPzogb2JqZWN0LCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGV4cGVjdGVkID0gdXRpbHMuZmxhZyh0aGlzLCAnb2JqZWN0JylcbiAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0aWVzID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgbWVzc2FnZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBtZXNzYWdlID0gcHJvcGVydGllc1xuICAgICAgICAgIHByb3BlcnRpZXMgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICBnZXRTbmFwc2hvdENsaWVudCgpLmFzc2VydChleHBlY3RlZCwgbWVzc2FnZSwgZmFsc2UsIHByb3BlcnRpZXMpXG4gICAgICB9LFxuICAgIClcbiAgfVxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5Bc3NlcnRpb24ucHJvdG90eXBlLFxuICAgICd0b01hdGNoSW5saW5lU25hcHNob3QnLFxuICAgIGZ1bmN0aW9uIF9fVklURVNUX0lOTElORV9TTkFQU0hPVF9fKHRoaXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBwcm9wZXJ0aWVzPzogb2JqZWN0LCBpbmxpbmVTbmFwc2hvdD86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykge1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB1dGlscy5mbGFnKHRoaXMsICdvYmplY3QnKVxuICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0aWVzID09PSAnc3RyaW5nJykge1xuICAgICAgICBtZXNzYWdlID0gaW5saW5lU25hcHNob3RcbiAgICAgICAgaW5saW5lU25hcHNob3QgPSBwcm9wZXJ0aWVzXG4gICAgICAgIHByb3BlcnRpZXMgPSB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIGlmIChpbmxpbmVTbmFwc2hvdClcbiAgICAgICAgaW5saW5lU25hcHNob3QgPSBzdHJpcFNuYXBzaG90SW5kZW50YXRpb24oaW5saW5lU25hcHNob3QpXG4gICAgICBnZXRTbmFwc2hvdENsaWVudCgpLmFzc2VydChleHBlY3RlZCwgbWVzc2FnZSwgdHJ1ZSwgcHJvcGVydGllcywgaW5saW5lU25hcHNob3QpXG4gICAgfSxcbiAgKVxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5Bc3NlcnRpb24ucHJvdG90eXBlLFxuICAgICd0b1Rocm93RXJyb3JNYXRjaGluZ1NuYXBzaG90JyxcbiAgICBmdW5jdGlvbih0aGlzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgbWVzc2FnZT86IHN0cmluZykge1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB1dGlscy5mbGFnKHRoaXMsICdvYmplY3QnKVxuICAgICAgZ2V0U25hcHNob3RDbGllbnQoKS5hc3NlcnQoZ2V0RXJyb3JTdHJpbmcoZXhwZWN0ZWQpLCBtZXNzYWdlKVxuICAgIH0sXG4gIClcbiAgdXRpbHMuYWRkTWV0aG9kKFxuICAgIGNoYWkuQXNzZXJ0aW9uLnByb3RvdHlwZSxcbiAgICAndG9UaHJvd0Vycm9yTWF0Y2hpbmdJbmxpbmVTbmFwc2hvdCcsXG4gICAgZnVuY3Rpb24gX19WSVRFU1RfSU5MSU5FX1NOQVBTSE9UX18odGhpczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGlubGluZVNuYXBzaG90OiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB1dGlscy5mbGFnKHRoaXMsICdvYmplY3QnKVxuICAgICAgZ2V0U25hcHNob3RDbGllbnQoKS5hc3NlcnQoZ2V0RXJyb3JTdHJpbmcoZXhwZWN0ZWQpLCBtZXNzYWdlLCB0cnVlLCB1bmRlZmluZWQsIGlubGluZVNuYXBzaG90KVxuICAgIH0sXG4gIClcbn1cbiIsIi8vIHdlIGFyZSB1c2luZyBvbmx5IHRoZSBvbmVzIG5lZWRlZCBieSBAdGVzdGluZy1saWJyYXJ5L2plc3QtZG9tXG4vLyBpZiB5b3UgbmVlZCBtb3JlLCBqdXN0IGFza1xuXG5pbXBvcnQgYyBmcm9tICdwaWNvY29sb3JzJ1xuaW1wb3J0IHR5cGUgeyBGb3JtYXR0ZXIgfSBmcm9tICdwaWNvY29sb3JzL3R5cGVzJ1xuaW1wb3J0IHsgZm9ybWF0IGFzIHByZXR0eUZvcm1hdCwgcGx1Z2lucyBhcyBwcmV0dHlGb3JtYXRQbHVnaW5zIH0gZnJvbSAncHJldHR5LWZvcm1hdCdcbmltcG9ydCB7IHVuaWZpZWREaWZmIH0gZnJvbSAnLi4vLi4vbm9kZS9yZXBvcnRlcnMvcmVuZGVyZXJzL2RpZmYnXG5cbmV4cG9ydCBjb25zdCBFWFBFQ1RFRF9DT0xPUiA9IGMuZ3JlZW5cbmV4cG9ydCBjb25zdCBSRUNFSVZFRF9DT0xPUiA9IGMucmVkXG5leHBvcnQgY29uc3QgSU5WRVJURURfQ09MT1IgPSBjLmludmVyc2VcbmV4cG9ydCBjb25zdCBCT0xEX1dFSUdIVCA9IGMuYm9sZFxuZXhwb3J0IGNvbnN0IERJTV9DT0xPUiA9IGMuZGltXG5cbmNvbnN0IHtcbiAgQXN5bW1ldHJpY01hdGNoZXIsXG4gIERPTUNvbGxlY3Rpb24sXG4gIERPTUVsZW1lbnQsXG4gIEltbXV0YWJsZSxcbiAgUmVhY3RFbGVtZW50LFxuICBSZWFjdFRlc3RDb21wb25lbnQsXG59ID0gcHJldHR5Rm9ybWF0UGx1Z2luc1xuXG5jb25zdCBQTFVHSU5TID0gW1xuICBSZWFjdFRlc3RDb21wb25lbnQsXG4gIFJlYWN0RWxlbWVudCxcbiAgRE9NRWxlbWVudCxcbiAgRE9NQ29sbGVjdGlvbixcbiAgSW1tdXRhYmxlLFxuICBBc3ltbWV0cmljTWF0Y2hlcixcbl1cblxuZXhwb3J0IGludGVyZmFjZSBNYXRjaGVySGludE9wdGlvbnMge1xuICBjb21tZW50Pzogc3RyaW5nXG4gIGV4cGVjdGVkQ29sb3I/OiBGb3JtYXR0ZXJcbiAgaXNEaXJlY3RFeHBlY3RDYWxsPzogYm9vbGVhblxuICBpc05vdD86IGJvb2xlYW5cbiAgcHJvbWlzZT86IHN0cmluZ1xuICByZWNlaXZlZENvbG9yPzogRm9ybWF0dGVyXG4gIHNlY29uZEFyZ3VtZW50Pzogc3RyaW5nXG4gIHNlY29uZEFyZ3VtZW50Q29sb3I/OiBGb3JtYXR0ZXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoZXJIaW50KFxuICBtYXRjaGVyTmFtZTogc3RyaW5nLFxuICByZWNlaXZlZCA9ICdyZWNlaXZlZCcsXG4gIGV4cGVjdGVkID0gJ2V4cGVjdGVkJyxcbiAgb3B0aW9uczogTWF0Y2hlckhpbnRPcHRpb25zID0ge30sXG4pIHtcbiAgY29uc3Qge1xuICAgIGNvbW1lbnQgPSAnJyxcbiAgICBleHBlY3RlZENvbG9yID0gRVhQRUNURURfQ09MT1IsXG4gICAgaXNEaXJlY3RFeHBlY3RDYWxsID0gZmFsc2UsIC8vIHNlZW1zIHJlZHVuZGFudCB3aXRoIHJlY2VpdmVkID09PSAnJ1xuICAgIGlzTm90ID0gZmFsc2UsXG4gICAgcHJvbWlzZSA9ICcnLFxuICAgIHJlY2VpdmVkQ29sb3IgPSBSRUNFSVZFRF9DT0xPUixcbiAgICBzZWNvbmRBcmd1bWVudCA9ICcnLFxuICAgIHNlY29uZEFyZ3VtZW50Q29sb3IgPSBFWFBFQ1RFRF9DT0xPUixcbiAgfSA9IG9wdGlvbnNcbiAgbGV0IGhpbnQgPSAnJ1xuICBsZXQgZGltU3RyaW5nID0gJ2V4cGVjdCcgLy8gY29uY2F0ZW5hdGUgYWRqYWNlbnQgZGltIHN1YnN0cmluZ3NcblxuICBpZiAoIWlzRGlyZWN0RXhwZWN0Q2FsbCAmJiByZWNlaXZlZCAhPT0gJycpIHtcbiAgICBoaW50ICs9IERJTV9DT0xPUihgJHtkaW1TdHJpbmd9KGApICsgcmVjZWl2ZWRDb2xvcihyZWNlaXZlZClcbiAgICBkaW1TdHJpbmcgPSAnKSdcbiAgfVxuXG4gIGlmIChwcm9taXNlICE9PSAnJykge1xuICAgIGhpbnQgKz0gRElNX0NPTE9SKGAke2RpbVN0cmluZ30uYCkgKyBwcm9taXNlXG4gICAgZGltU3RyaW5nID0gJydcbiAgfVxuXG4gIGlmIChpc05vdCkge1xuICAgIGhpbnQgKz0gYCR7RElNX0NPTE9SKGAke2RpbVN0cmluZ30uYCl9bm90YFxuICAgIGRpbVN0cmluZyA9ICcnXG4gIH1cblxuICBpZiAobWF0Y2hlck5hbWUuaW5jbHVkZXMoJy4nKSkge1xuICAgIC8vIE9sZCBmb3JtYXQ6IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LFxuICAgIC8vIGVzcGVjaWFsbHkgd2l0aG91dCBwcm9taXNlIG9yIGlzTm90IG9wdGlvbnNcbiAgICBkaW1TdHJpbmcgKz0gbWF0Y2hlck5hbWVcbiAgfVxuICBlbHNlIHtcbiAgICAvLyBOZXcgZm9ybWF0OiBvbWl0IHBlcmlvZCBmcm9tIG1hdGNoZXJOYW1lIGFyZ1xuICAgIGhpbnQgKz0gRElNX0NPTE9SKGAke2RpbVN0cmluZ30uYCkgKyBtYXRjaGVyTmFtZVxuICAgIGRpbVN0cmluZyA9ICcnXG4gIH1cblxuICBpZiAoZXhwZWN0ZWQgPT09ICcnKSB7XG4gICAgZGltU3RyaW5nICs9ICcoKSdcbiAgfVxuICBlbHNlIHtcbiAgICBoaW50ICs9IERJTV9DT0xPUihgJHtkaW1TdHJpbmd9KGApICsgZXhwZWN0ZWRDb2xvcihleHBlY3RlZClcbiAgICBpZiAoc2Vjb25kQXJndW1lbnQpXG4gICAgICBoaW50ICs9IERJTV9DT0xPUignLCAnKSArIHNlY29uZEFyZ3VtZW50Q29sb3Ioc2Vjb25kQXJndW1lbnQpXG4gICAgZGltU3RyaW5nID0gJyknXG4gIH1cblxuICBpZiAoY29tbWVudCAhPT0gJycpXG4gICAgZGltU3RyaW5nICs9IGAgLy8gJHtjb21tZW50fWBcblxuICBpZiAoZGltU3RyaW5nICE9PSAnJylcbiAgICBoaW50ICs9IERJTV9DT0xPUihkaW1TdHJpbmcpXG5cbiAgcmV0dXJuIGhpbnRcbn1cblxuY29uc3QgU1BBQ0VfU1lNQk9MID0gJ1xcdXswMEI3fScgLy8gbWlkZGxlIGRvdFxuXG4vLyBJbnN0ZWFkIG9mIGludmVyc2UgaGlnaGxpZ2h0IHdoaWNoIG5vdyBpbXBsaWVzIGEgY2hhbmdlLFxuLy8gcmVwbGFjZSBjb21tb24gc3BhY2VzIHdpdGggbWlkZGxlIGRvdCBhdCB0aGUgZW5kIG9mIGFueSBsaW5lLlxuY29uc3QgcmVwbGFjZVRyYWlsaW5nU3BhY2VzID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICB0ZXh0LnJlcGxhY2UoL1xccyskL2dtLCBzcGFjZXMgPT4gU1BBQ0VfU1lNQk9MLnJlcGVhdChzcGFjZXMubGVuZ3RoKSlcblxuZXhwb3J0IGNvbnN0IHN0cmluZ2lmeSA9IChvYmplY3Q6IHVua25vd24sIG1heERlcHRoID0gMTApOiBzdHJpbmcgPT4ge1xuICBjb25zdCBNQVhfTEVOR1RIID0gMTAwMDBcbiAgbGV0IHJlc3VsdFxuXG4gIHRyeSB7XG4gICAgcmVzdWx0ID0gcHJldHR5Rm9ybWF0KG9iamVjdCwge1xuICAgICAgbWF4RGVwdGgsXG4gICAgICAvLyBtaW46IHRydWUsXG4gICAgICBwbHVnaW5zOiBQTFVHSU5TLFxuICAgIH0pXG4gIH1cbiAgY2F0Y2gge1xuICAgIHJlc3VsdCA9IHByZXR0eUZvcm1hdChvYmplY3QsIHtcbiAgICAgIGNhbGxUb0pTT046IGZhbHNlLFxuICAgICAgbWF4RGVwdGgsXG4gICAgICAvLyBtaW46IHRydWUsXG4gICAgICBwbHVnaW5zOiBQTFVHSU5TLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gcmVzdWx0Lmxlbmd0aCA+PSBNQVhfTEVOR1RIICYmIG1heERlcHRoID4gMVxuICAgID8gc3RyaW5naWZ5KG9iamVjdCwgTWF0aC5mbG9vcihtYXhEZXB0aCAvIDIpKVxuICAgIDogcmVzdWx0XG59XG5cbmV4cG9ydCBjb25zdCBwcmludFJlY2VpdmVkID0gKG9iamVjdDogdW5rbm93bik6IHN0cmluZyA9PlxuICBSRUNFSVZFRF9DT0xPUihyZXBsYWNlVHJhaWxpbmdTcGFjZXMoc3RyaW5naWZ5KG9iamVjdCkpKVxuZXhwb3J0IGNvbnN0IHByaW50RXhwZWN0ZWQgPSAodmFsdWU6IHVua25vd24pOiBzdHJpbmcgPT5cbiAgRVhQRUNURURfQ09MT1IocmVwbGFjZVRyYWlsaW5nU3BhY2VzKHN0cmluZ2lmeSh2YWx1ZSkpKVxuXG5leHBvcnQgaW50ZXJmYWNlIERpZmZPcHRpb25zIHtcbiAgYUFubm90YXRpb24/OiBzdHJpbmdcbiAgYUNvbG9yPzogRm9ybWF0dGVyXG4gIGFJbmRpY2F0b3I/OiBzdHJpbmdcbiAgYkFubm90YXRpb24/OiBzdHJpbmdcbiAgYkNvbG9yPzogRm9ybWF0dGVyXG4gIGJJbmRpY2F0b3I/OiBzdHJpbmdcbiAgY2hhbmdlQ29sb3I/OiBGb3JtYXR0ZXJcbiAgY2hhbmdlTGluZVRyYWlsaW5nU3BhY2VDb2xvcj86IEZvcm1hdHRlclxuICBjb21tb25Db2xvcj86IEZvcm1hdHRlclxuICBjb21tb25JbmRpY2F0b3I/OiBzdHJpbmdcbiAgY29tbW9uTGluZVRyYWlsaW5nU3BhY2VDb2xvcj86IEZvcm1hdHRlclxuICBjb250ZXh0TGluZXM/OiBudW1iZXJcbiAgZW1wdHlGaXJzdE9yTGFzdExpbmVQbGFjZWhvbGRlcj86IHN0cmluZ1xuICBleHBhbmQ/OiBib29sZWFuXG4gIGluY2x1ZGVDaGFuZ2VDb3VudHM/OiBib29sZWFuXG4gIG9taXRBbm5vdGF0aW9uTGluZXM/OiBib29sZWFuXG4gIHBhdGNoQ29sb3I/OiBGb3JtYXR0ZXJcbiAgLy8gcHJldHR5LWZvcm1hdCB0eXBlXG4gIGNvbXBhcmVLZXlzPzogYW55XG59XG5cbi8vIFRPRE86IGRvIHNvbWV0aGluZyB3aXRoIG9wdGlvbnNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmV4cG9ydCBmdW5jdGlvbiBkaWZmKGE6IGFueSwgYjogYW55LCBvcHRpb25zPzogRGlmZk9wdGlvbnMpIHtcbiAgcmV0dXJuIHVuaWZpZWREaWZmKHN0cmluZ2lmeShhKSwgc3RyaW5naWZ5KGIpKVxufVxuIiwiaW1wb3J0IGNoYWksIHsgdXRpbCB9IGZyb20gJ2NoYWknXG5pbXBvcnQgeyBnZXRTdGF0ZSB9IGZyb20gJy4vamVzdC1leHBlY3QnXG5cbmltcG9ydCAqIGFzIG1hdGNoZXJVdGlscyBmcm9tICcuL2plc3QtbWF0Y2hlci11dGlscydcblxuaW1wb3J0IHtcbiAgZXF1YWxzLFxuICBpdGVyYWJsZUVxdWFsaXR5LFxuICBzdWJzZXRFcXVhbGl0eSxcbn0gZnJvbSAnLi9qZXN0LXV0aWxzJ1xuaW1wb3J0IHR5cGUge1xuICBDaGFpUGx1Z2luLFxuICBNYXRjaGVyU3RhdGUsXG4gIE1hdGNoZXJzT2JqZWN0LFxuICBTeW5jRXhwZWN0YXRpb25SZXN1bHQsXG59IGZyb20gJy4vdHlwZXMnXG5cbmNvbnN0IGlzQXN5bmNGdW5jdGlvbiA9IChmbjogdW5rbm93bikgPT5cbiAgdHlwZW9mIGZuID09PSAnZnVuY3Rpb24nICYmIChmbiBhcyBhbnkpW1N5bWJvbC50b1N0cmluZ1RhZ10gPT09ICdBc3luY0Z1bmN0aW9uJ1xuXG5jb25zdCBnZXRNYXRjaGVyU3RhdGUgPSAoYXNzZXJ0aW9uOiBDaGFpLkFzc2VydGlvblN0YXRpYyAmIENoYWkuQXNzZXJ0aW9uKSA9PiB7XG4gIGNvbnN0IG9iaiA9IGFzc2VydGlvbi5fb2JqXG4gIGNvbnN0IGlzTm90ID0gdXRpbC5mbGFnKGFzc2VydGlvbiwgJ25lZ2F0ZScpIGFzIGJvb2xlYW5cbiAgY29uc3QgcHJvbWlzZSA9IHV0aWwuZmxhZyhhc3NlcnRpb24sICdwcm9taXNlJykgfHwgJydcbiAgY29uc3QgamVzdFV0aWxzID0ge1xuICAgIC4uLm1hdGNoZXJVdGlscyxcbiAgICBpdGVyYWJsZUVxdWFsaXR5LFxuICAgIHN1YnNldEVxdWFsaXR5LFxuICB9XG5cbiAgY29uc3QgbWF0Y2hlclN0YXRlOiBNYXRjaGVyU3RhdGUgPSB7XG4gICAgLi4uZ2V0U3RhdGUoKSxcbiAgICBpc05vdCxcbiAgICB1dGlsczogamVzdFV0aWxzLFxuICAgIHByb21pc2UsXG4gICAgZXF1YWxzLFxuICAgIC8vIG5lZWRlZCBmb3IgYnVpbHQtaW4gamVzdC1zbmFwc2hvdHMsIGJ1dCB3ZSBkb24ndCB1c2UgaXRcbiAgICBzdXBwcmVzc2VkRXJyb3JzOiBbXSxcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3RhdGU6IG1hdGNoZXJTdGF0ZSxcbiAgICBpc05vdCxcbiAgICBvYmosXG4gIH1cbn1cblxuY2xhc3MgSmVzdEV4dGVuZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHB1YmxpYyBhY3R1YWw/OiBhbnksIHB1YmxpYyBleHBlY3RlZD86IGFueSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gIH1cbn1cblxuZnVuY3Rpb24gSmVzdEV4dGVuZFBsdWdpbihleHBlY3RzOiBNYXRjaGVyc09iamVjdCk6IENoYWlQbHVnaW4ge1xuICByZXR1cm4gKGMsIHV0aWxzKSA9PiB7XG4gICAgT2JqZWN0LmVudHJpZXMoZXhwZWN0cykuZm9yRWFjaCgoW2V4cGVjdEFzc2VydGlvbk5hbWUsIGV4cGVjdEFzc2VydGlvbl0pID0+IHtcbiAgICAgIGZ1bmN0aW9uIGV4cGVjdFN5bmNXcmFwcGVyKHRoaXM6IENoYWkuQXNzZXJ0aW9uU3RhdGljICYgQ2hhaS5Bc3NlcnRpb24sIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgIGNvbnN0IHsgc3RhdGUsIGlzTm90LCBvYmogfSA9IGdldE1hdGNoZXJTdGF0ZSh0aGlzKVxuXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYXJncyB3YW50aW5nIHR1cGxlXG4gICAgICAgIGNvbnN0IHsgcGFzcywgbWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCB9ID0gZXhwZWN0QXNzZXJ0aW9uLmNhbGwoc3RhdGUsIG9iaiwgLi4uYXJncykgYXMgU3luY0V4cGVjdGF0aW9uUmVzdWx0XG5cbiAgICAgICAgaWYgKChwYXNzICYmIGlzTm90KSB8fCAoIXBhc3MgJiYgIWlzTm90KSlcbiAgICAgICAgICB0aHJvdyBuZXcgSmVzdEV4dGVuZEVycm9yKG1lc3NhZ2UoKSwgYWN0dWFsLCBleHBlY3RlZClcbiAgICAgIH1cblxuICAgICAgYXN5bmMgZnVuY3Rpb24gZXhwZWN0QXN5bmNXcmFwcGVyKHRoaXM6IENoYWkuQXNzZXJ0aW9uU3RhdGljICYgQ2hhaS5Bc3NlcnRpb24sIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgIGNvbnN0IHsgc3RhdGUsIGlzTm90LCBvYmogfSA9IGdldE1hdGNoZXJTdGF0ZSh0aGlzKVxuXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYXJncyB3YW50aW5nIHR1cGxlXG4gICAgICAgIGNvbnN0IHsgcGFzcywgbWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCB9ID0gYXdhaXQgZXhwZWN0QXNzZXJ0aW9uLmNhbGwoc3RhdGUsIG9iaiwgLi4uYXJncykgYXMgU3luY0V4cGVjdGF0aW9uUmVzdWx0XG5cbiAgICAgICAgaWYgKChwYXNzICYmIGlzTm90KSB8fCAoIXBhc3MgJiYgIWlzTm90KSlcbiAgICAgICAgICB0aHJvdyBuZXcgSmVzdEV4dGVuZEVycm9yKG1lc3NhZ2UoKSwgYWN0dWFsLCBleHBlY3RlZClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXhwZWN0QXNzZXJ0aW9uV3JhcHBlciA9IGlzQXN5bmNGdW5jdGlvbihleHBlY3RBc3NlcnRpb24pID8gZXhwZWN0QXN5bmNXcmFwcGVyIDogZXhwZWN0U3luY1dyYXBwZXJcblxuICAgICAgdXRpbHMuYWRkTWV0aG9kKGNoYWkuQXNzZXJ0aW9uLnByb3RvdHlwZSwgZXhwZWN0QXNzZXJ0aW9uTmFtZSwgZXhwZWN0QXNzZXJ0aW9uV3JhcHBlcilcbiAgICB9KVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBKZXN0RXh0ZW5kOiBDaGFpUGx1Z2luID0gKGNoYWksIHV0aWxzKSA9PiB7XG4gIHV0aWxzLmFkZE1ldGhvZChjaGFpLmV4cGVjdCwgJ2V4dGVuZCcsIChleHBlY3RzOiBNYXRjaGVyc09iamVjdCkgPT4ge1xuICAgIGNoYWkudXNlKEplc3RFeHRlbmRQbHVnaW4oZXhwZWN0cykpXG4gIH0pXG59XG4iLCJpbXBvcnQgKiBhcyBtYXRjaGVyVXRpbHMgZnJvbSAnLi9qZXN0LW1hdGNoZXItdXRpbHMnXG5cbmltcG9ydCB7IGVxdWFscywgaXNBIH0gZnJvbSAnLi9qZXN0LXV0aWxzJ1xuaW1wb3J0IHR5cGUgeyBDaGFpUGx1Z2luLCBNYXRjaGVyU3RhdGUgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEFzeW1tZXRyaWNNYXRjaGVySW50ZXJmYWNlIHtcbiAgYXN5bW1ldHJpY01hdGNoKG90aGVyOiB1bmtub3duKTogYm9vbGVhblxuICB0b1N0cmluZygpOiBzdHJpbmdcbiAgZ2V0RXhwZWN0ZWRUeXBlPygpOiBzdHJpbmdcbiAgdG9Bc3ltbWV0cmljTWF0Y2hlcj8oKTogc3RyaW5nXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBc3ltbWV0cmljTWF0Y2hlcjxcbiAgVCxcbiAgU3RhdGUgZXh0ZW5kcyBNYXRjaGVyU3RhdGUgPSBNYXRjaGVyU3RhdGUsXG4+IGltcGxlbWVudHMgQXN5bW1ldHJpY01hdGNoZXJJbnRlcmZhY2Uge1xuICAkJHR5cGVvZiA9IFN5bWJvbC5mb3IoJ2plc3QuYXN5bW1ldHJpY01hdGNoZXInKVxuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzYW1wbGU6IFQsIHByb3RlY3RlZCBpbnZlcnNlID0gZmFsc2UpIHt9XG5cbiAgcHJvdGVjdGVkIGdldE1hdGNoZXJDb250ZXh0KCk6IFN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXF1YWxzLFxuICAgICAgaXNOb3Q6IHRoaXMuaW52ZXJzZSxcbiAgICAgIHV0aWxzOiBtYXRjaGVyVXRpbHMsXG4gICAgfSBhcyBhbnlcbiAgfVxuXG4gIGFic3RyYWN0IGFzeW1tZXRyaWNNYXRjaChvdGhlcjogdW5rbm93bik6IGJvb2xlYW5cbiAgYWJzdHJhY3QgdG9TdHJpbmcoKTogc3RyaW5nXG4gIGdldEV4cGVjdGVkVHlwZT8oKTogc3RyaW5nXG4gIHRvQXN5bW1ldHJpY01hdGNoZXI/KCk6IHN0cmluZ1xufVxuXG5leHBvcnQgY2xhc3MgU3RyaW5nQ29udGFpbmluZyBleHRlbmRzIEFzeW1tZXRyaWNNYXRjaGVyPHN0cmluZz4ge1xuICBjb25zdHJ1Y3RvcihzYW1wbGU6IHN0cmluZywgaW52ZXJzZSA9IGZhbHNlKSB7XG4gICAgaWYgKCFpc0EoJ1N0cmluZycsIHNhbXBsZSkpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGlzIG5vdCBhIHN0cmluZycpXG5cbiAgICBzdXBlcihzYW1wbGUsIGludmVyc2UpXG4gIH1cblxuICBhc3ltbWV0cmljTWF0Y2gob3RoZXI6IHN0cmluZykge1xuICAgIGNvbnN0IHJlc3VsdCA9IGlzQSgnU3RyaW5nJywgb3RoZXIpICYmIG90aGVyLmluY2x1ZGVzKHRoaXMuc2FtcGxlKVxuXG4gICAgcmV0dXJuIHRoaXMuaW52ZXJzZSA/ICFyZXN1bHQgOiByZXN1bHRcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBgU3RyaW5nJHt0aGlzLmludmVyc2UgPyAnTm90JyA6ICcnfUNvbnRhaW5pbmdgXG4gIH1cblxuICBnZXRFeHBlY3RlZFR5cGUoKSB7XG4gICAgcmV0dXJuICdzdHJpbmcnXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFueXRoaW5nIGV4dGVuZHMgQXN5bW1ldHJpY01hdGNoZXI8dm9pZD4ge1xuICBhc3ltbWV0cmljTWF0Y2gob3RoZXI6IHVua25vd24pIHtcbiAgICByZXR1cm4gb3RoZXIgIT0gbnVsbFxuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICdBbnl0aGluZydcbiAgfVxuXG4gIHRvQXN5bW1ldHJpY01hdGNoZXIoKSB7XG4gICAgcmV0dXJuICdBbnl0aGluZydcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT2JqZWN0Q29udGFpbmluZyBleHRlbmRzIEFzeW1tZXRyaWNNYXRjaGVyPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIGNvbnN0cnVjdG9yKHNhbXBsZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGludmVyc2UgPSBmYWxzZSkge1xuICAgIHN1cGVyKHNhbXBsZSwgaW52ZXJzZSlcbiAgfVxuXG4gIGdldFByb3RvdHlwZShvYmo6IG9iamVjdCkge1xuICAgIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2YpXG4gICAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iailcblxuICAgIGlmIChvYmouY29uc3RydWN0b3IucHJvdG90eXBlID09PSBvYmopXG4gICAgICByZXR1cm4gbnVsbFxuXG4gICAgcmV0dXJuIG9iai5jb25zdHJ1Y3Rvci5wcm90b3R5cGVcbiAgfVxuXG4gIGhhc1Byb3BlcnR5KG9iajogb2JqZWN0IHwgbnVsbCwgcHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghb2JqKVxuICAgICAgcmV0dXJuIGZhbHNlXG5cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcGVydHkpKVxuICAgICAgcmV0dXJuIHRydWVcblxuICAgIHJldHVybiB0aGlzLmhhc1Byb3BlcnR5KHRoaXMuZ2V0UHJvdG90eXBlKG9iaiksIHByb3BlcnR5KVxuICB9XG5cbiAgYXN5bW1ldHJpY01hdGNoKG90aGVyOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuc2FtcGxlICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgYFlvdSBtdXN0IHByb3ZpZGUgYW4gb2JqZWN0IHRvICR7dGhpcy50b1N0cmluZygpfSwgbm90ICcke1xuICAgICAgICAgIHR5cGVvZiB0aGlzLnNhbXBsZVxuICAgICAgICB9Jy5gLFxuICAgICAgKVxuICAgIH1cblxuICAgIGxldCByZXN1bHQgPSB0cnVlXG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIHRoaXMuc2FtcGxlKSB7XG4gICAgICBpZiAoIXRoaXMuaGFzUHJvcGVydHkob3RoZXIsIHByb3BlcnR5KSB8fCAhZXF1YWxzKHRoaXMuc2FtcGxlW3Byb3BlcnR5XSwgb3RoZXJbcHJvcGVydHldKSkge1xuICAgICAgICByZXN1bHQgPSBmYWxzZVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmludmVyc2UgPyAhcmVzdWx0IDogcmVzdWx0XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYE9iamVjdCR7dGhpcy5pbnZlcnNlID8gJ05vdCcgOiAnJ31Db250YWluaW5nYFxuICB9XG5cbiAgZ2V0RXhwZWN0ZWRUeXBlKCkge1xuICAgIHJldHVybiAnb2JqZWN0J1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcnJheUNvbnRhaW5pbmcgZXh0ZW5kcyBBc3ltbWV0cmljTWF0Y2hlcjxBcnJheTx1bmtub3duPj4ge1xuICBjb25zdHJ1Y3RvcihzYW1wbGU6IEFycmF5PHVua25vd24+LCBpbnZlcnNlID0gZmFsc2UpIHtcbiAgICBzdXBlcihzYW1wbGUsIGludmVyc2UpXG4gIH1cblxuICBhc3ltbWV0cmljTWF0Y2gob3RoZXI6IEFycmF5PHVua25vd24+KSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuc2FtcGxlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgYFlvdSBtdXN0IHByb3ZpZGUgYW4gYXJyYXkgdG8gJHt0aGlzLnRvU3RyaW5nKCl9LCBub3QgJyR7XG4gICAgICAgICAgdHlwZW9mIHRoaXMuc2FtcGxlXG4gICAgICAgIH0nLmAsXG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0XG4gICAgICA9IHRoaXMuc2FtcGxlLmxlbmd0aCA9PT0gMFxuICAgICAgfHwgKEFycmF5LmlzQXJyYXkob3RoZXIpXG4gICAgICAgICYmIHRoaXMuc2FtcGxlLmV2ZXJ5KGl0ZW0gPT5cbiAgICAgICAgICBvdGhlci5zb21lKGFub3RoZXIgPT4gZXF1YWxzKGl0ZW0sIGFub3RoZXIpKSxcbiAgICAgICAgKSlcblxuICAgIHJldHVybiB0aGlzLmludmVyc2UgPyAhcmVzdWx0IDogcmVzdWx0XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYEFycmF5JHt0aGlzLmludmVyc2UgPyAnTm90JyA6ICcnfUNvbnRhaW5pbmdgXG4gIH1cblxuICBnZXRFeHBlY3RlZFR5cGUoKSB7XG4gICAgcmV0dXJuICdhcnJheSdcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQW55IGV4dGVuZHMgQXN5bW1ldHJpY01hdGNoZXI8YW55PiB7XG4gIGNvbnN0cnVjdG9yKHNhbXBsZTogdW5rbm93bikge1xuICAgIGlmICh0eXBlb2Ygc2FtcGxlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgJ2FueSgpIGV4cGVjdHMgdG8gYmUgcGFzc2VkIGEgY29uc3RydWN0b3IgZnVuY3Rpb24uICdcbiAgICAgICAgICArICdQbGVhc2UgcGFzcyBvbmUgb3IgdXNlIGFueXRoaW5nKCkgdG8gbWF0Y2ggYW55IG9iamVjdC4nLFxuICAgICAgKVxuICAgIH1cbiAgICBzdXBlcihzYW1wbGUpXG4gIH1cblxuICBmbk5hbWVGb3IoZnVuYzogRnVuY3Rpb24pIHtcbiAgICBpZiAoZnVuYy5uYW1lKVxuICAgICAgcmV0dXJuIGZ1bmMubmFtZVxuXG4gICAgY29uc3QgZnVuY3Rpb25Ub1N0cmluZyA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZ1xuXG4gICAgY29uc3QgbWF0Y2hlcyA9IGZ1bmN0aW9uVG9TdHJpbmdcbiAgICAgIC5jYWxsKGZ1bmMpXG4gICAgICAubWF0Y2goL14oPzphc3luYyk/XFxzKmZ1bmN0aW9uXFxzKlxcKj9cXHMqKFtcXHckXSspXFxzKlxcKC8pXG4gICAgcmV0dXJuIG1hdGNoZXMgPyBtYXRjaGVzWzFdIDogJzxhbm9ueW1vdXM+J1xuICB9XG5cbiAgYXN5bW1ldHJpY01hdGNoKG90aGVyOiB1bmtub3duKSB7XG4gICAgaWYgKHRoaXMuc2FtcGxlID09PSBTdHJpbmcpXG4gICAgICByZXR1cm4gdHlwZW9mIG90aGVyID09ICdzdHJpbmcnIHx8IG90aGVyIGluc3RhbmNlb2YgU3RyaW5nXG5cbiAgICBpZiAodGhpcy5zYW1wbGUgPT09IE51bWJlcilcbiAgICAgIHJldHVybiB0eXBlb2Ygb3RoZXIgPT0gJ251bWJlcicgfHwgb3RoZXIgaW5zdGFuY2VvZiBOdW1iZXJcblxuICAgIGlmICh0aGlzLnNhbXBsZSA9PT0gRnVuY3Rpb24pXG4gICAgICByZXR1cm4gdHlwZW9mIG90aGVyID09ICdmdW5jdGlvbicgfHwgb3RoZXIgaW5zdGFuY2VvZiBGdW5jdGlvblxuXG4gICAgaWYgKHRoaXMuc2FtcGxlID09PSBCb29sZWFuKVxuICAgICAgcmV0dXJuIHR5cGVvZiBvdGhlciA9PSAnYm9vbGVhbicgfHwgb3RoZXIgaW5zdGFuY2VvZiBCb29sZWFuXG5cbiAgICBpZiAodGhpcy5zYW1wbGUgPT09IEJpZ0ludClcbiAgICAgIHJldHVybiB0eXBlb2Ygb3RoZXIgPT0gJ2JpZ2ludCcgfHwgb3RoZXIgaW5zdGFuY2VvZiBCaWdJbnRcblxuICAgIGlmICh0aGlzLnNhbXBsZSA9PT0gU3ltYm9sKVxuICAgICAgcmV0dXJuIHR5cGVvZiBvdGhlciA9PSAnc3ltYm9sJyB8fCBvdGhlciBpbnN0YW5jZW9mIFN5bWJvbFxuXG4gICAgaWYgKHRoaXMuc2FtcGxlID09PSBPYmplY3QpXG4gICAgICByZXR1cm4gdHlwZW9mIG90aGVyID09ICdvYmplY3QnXG5cbiAgICByZXR1cm4gb3RoZXIgaW5zdGFuY2VvZiB0aGlzLnNhbXBsZVxuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICdBbnknXG4gIH1cblxuICBnZXRFeHBlY3RlZFR5cGUoKSB7XG4gICAgaWYgKHRoaXMuc2FtcGxlID09PSBTdHJpbmcpXG4gICAgICByZXR1cm4gJ3N0cmluZydcblxuICAgIGlmICh0aGlzLnNhbXBsZSA9PT0gTnVtYmVyKVxuICAgICAgcmV0dXJuICdudW1iZXInXG5cbiAgICBpZiAodGhpcy5zYW1wbGUgPT09IEZ1bmN0aW9uKVxuICAgICAgcmV0dXJuICdmdW5jdGlvbidcblxuICAgIGlmICh0aGlzLnNhbXBsZSA9PT0gT2JqZWN0KVxuICAgICAgcmV0dXJuICdvYmplY3QnXG5cbiAgICBpZiAodGhpcy5zYW1wbGUgPT09IEJvb2xlYW4pXG4gICAgICByZXR1cm4gJ2Jvb2xlYW4nXG5cbiAgICByZXR1cm4gdGhpcy5mbk5hbWVGb3IodGhpcy5zYW1wbGUpXG4gIH1cblxuICB0b0FzeW1tZXRyaWNNYXRjaGVyKCkge1xuICAgIHJldHVybiBgQW55PCR7dGhpcy5mbk5hbWVGb3IodGhpcy5zYW1wbGUpfT5gXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN0cmluZ01hdGNoaW5nIGV4dGVuZHMgQXN5bW1ldHJpY01hdGNoZXI8UmVnRXhwPiB7XG4gIGNvbnN0cnVjdG9yKHNhbXBsZTogc3RyaW5nIHwgUmVnRXhwLCBpbnZlcnNlID0gZmFsc2UpIHtcbiAgICBpZiAoIWlzQSgnU3RyaW5nJywgc2FtcGxlKSAmJiAhaXNBKCdSZWdFeHAnLCBzYW1wbGUpKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBpcyBub3QgYSBTdHJpbmcgb3IgYSBSZWdFeHAnKVxuXG4gICAgc3VwZXIobmV3IFJlZ0V4cChzYW1wbGUpLCBpbnZlcnNlKVxuICB9XG5cbiAgYXN5bW1ldHJpY01hdGNoKG90aGVyOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXN1bHQgPSBpc0EoJ1N0cmluZycsIG90aGVyKSAmJiB0aGlzLnNhbXBsZS50ZXN0KG90aGVyKVxuXG4gICAgcmV0dXJuIHRoaXMuaW52ZXJzZSA/ICFyZXN1bHQgOiByZXN1bHRcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBgU3RyaW5nJHt0aGlzLmludmVyc2UgPyAnTm90JyA6ICcnfU1hdGNoaW5nYFxuICB9XG5cbiAgZ2V0RXhwZWN0ZWRUeXBlKCkge1xuICAgIHJldHVybiAnc3RyaW5nJ1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBKZXN0QXN5bW1ldHJpY01hdGNoZXJzOiBDaGFpUGx1Z2luID0gKGNoYWksIHV0aWxzKSA9PiB7XG4gIHV0aWxzLmFkZE1ldGhvZChcbiAgICBjaGFpLmV4cGVjdCxcbiAgICAnYW55dGhpbmcnLFxuICAgICgpID0+IG5ldyBBbnl0aGluZygpLFxuICApXG5cbiAgdXRpbHMuYWRkTWV0aG9kKFxuICAgIGNoYWkuZXhwZWN0LFxuICAgICdhbnknLFxuICAgIChleHBlY3RlZDogdW5rbm93bikgPT4gbmV3IEFueShleHBlY3RlZCksXG4gIClcblxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5leHBlY3QsXG4gICAgJ3N0cmluZ0NvbnRhaW5pbmcnLFxuICAgIChleHBlY3RlZDogc3RyaW5nKSA9PiBuZXcgU3RyaW5nQ29udGFpbmluZyhleHBlY3RlZCksXG4gIClcblxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5leHBlY3QsXG4gICAgJ29iamVjdENvbnRhaW5pbmcnLFxuICAgIChleHBlY3RlZDogYW55KSA9PiBuZXcgT2JqZWN0Q29udGFpbmluZyhleHBlY3RlZCksXG4gIClcblxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5leHBlY3QsXG4gICAgJ2FycmF5Q29udGFpbmluZycsXG4gICAgKGV4cGVjdGVkOiBhbnkpID0+IG5ldyBBcnJheUNvbnRhaW5pbmcoZXhwZWN0ZWQpLFxuICApXG5cbiAgdXRpbHMuYWRkTWV0aG9kKFxuICAgIGNoYWkuZXhwZWN0LFxuICAgICdzdHJpbmdNYXRjaGluZycsXG4gICAgKGV4cGVjdGVkOiBhbnkpID0+IG5ldyBTdHJpbmdNYXRjaGluZyhleHBlY3RlZCksXG4gIClcblxuICAvLyBkZWZpbmVQcm9wZXJ0eSBkb2VzIG5vdCB3b3JrXG4gIDsoY2hhaS5leHBlY3QgYXMgYW55KS5ub3QgPSB7XG4gICAgc3RyaW5nQ29udGFpbmluZzogKGV4cGVjdGVkOiBzdHJpbmcpID0+IG5ldyBTdHJpbmdDb250YWluaW5nKGV4cGVjdGVkLCB0cnVlKSxcbiAgICBvYmplY3RDb250YWluaW5nOiAoZXhwZWN0ZWQ6IGFueSkgPT4gbmV3IE9iamVjdENvbnRhaW5pbmcoZXhwZWN0ZWQsIHRydWUpLFxuICAgIGFycmF5Q29udGFpbmluZzogKGV4cGVjdGVkOiB1bmtub3duW10pID0+IG5ldyBBcnJheUNvbnRhaW5pbmcoZXhwZWN0ZWQsIHRydWUpLFxuICAgIHN0cmluZ01hdGNoaW5nOiAoZXhwZWN0ZWQ6IHN0cmluZyB8IFJlZ0V4cCkgPT4gbmV3IFN0cmluZ01hdGNoaW5nKGV4cGVjdGVkLCB0cnVlKSxcbiAgfVxufVxuIiwiaW1wb3J0IGNoYWkgZnJvbSAnY2hhaSdcbmltcG9ydCBTdWJzZXQgZnJvbSAnY2hhaS1zdWJzZXQnXG5pbXBvcnQgeyBTbmFwc2hvdFBsdWdpbiB9IGZyb20gJy4uL3NuYXBzaG90L2NoYWknXG5pbXBvcnQgeyBKZXN0RXh0ZW5kIH0gZnJvbSAnLi9qZXN0LWV4dGVuZCdcbmltcG9ydCB7IEplc3RDaGFpRXhwZWN0IH0gZnJvbSAnLi9qZXN0LWV4cGVjdCdcbmltcG9ydCB7IEplc3RBc3ltbWV0cmljTWF0Y2hlcnMgfSBmcm9tICcuL2plc3QtYXN5bW1ldHJpYy1tYXRjaGVycydcblxubGV0IGluc3RhbGxlZCA9IGZhbHNlXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2V0dXBDaGFpKCkge1xuICBpZiAoaW5zdGFsbGVkKVxuICAgIHJldHVyblxuXG4gIGNoYWkudXNlKEplc3RFeHRlbmQpXG4gIGNoYWkudXNlKEplc3RDaGFpRXhwZWN0KVxuICBjaGFpLnVzZShTdWJzZXQpXG4gIGNoYWkudXNlKFNuYXBzaG90UGx1Z2luKVxuICBjaGFpLnVzZShKZXN0QXN5bW1ldHJpY01hdGNoZXJzKVxuICBpbnN0YWxsZWQgPSB0cnVlXG59XG4iLCJpbXBvcnQgeyBDb25zb2xlIH0gZnJvbSAnY29uc29sZSdcbmltcG9ydCB7IFdyaXRhYmxlIH0gZnJvbSAnc3RyZWFtJ1xuaW1wb3J0IHsgZW52aXJvbm1lbnRzIH0gZnJvbSAnLi4vaW50ZWdyYXRpb25zL2VudidcbmltcG9ydCB7IHNldHVwQ2hhaSB9IGZyb20gJy4uL2ludGVncmF0aW9ucy9jaGFpL3NldHVwJ1xuaW1wb3J0IHR5cGUgeyBSZXNvbHZlZENvbmZpZyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgdG9BcnJheSB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgcnBjIH0gZnJvbSAnLi9ycGMnXG5cbmxldCBnbG9iYWxTZXR1cCA9IGZhbHNlXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2V0dXBHbG9iYWxFbnYoY29uZmlnOiBSZXNvbHZlZENvbmZpZykge1xuICBpZiAoZ2xvYmFsU2V0dXApXG4gICAgcmV0dXJuXG5cbiAgZ2xvYmFsU2V0dXAgPSB0cnVlXG5cbiAgc2V0dXBDb25zb2xlTG9nU3B5KClcbiAgYXdhaXQgc2V0dXBDaGFpKClcblxuICBpZiAoY29uZmlnLmdsb2JhbHMpXG4gICAgKGF3YWl0IGltcG9ydCgnLi4vaW50ZWdyYXRpb25zL2dsb2JhbHMnKSkucmVnaXN0ZXJBcGlHbG9iYWxseSgpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cENvbnNvbGVMb2dTcHkoKSB7XG4gIGNvbnN0IHN0ZG91dCA9IG5ldyBXcml0YWJsZSh7XG4gICAgd3JpdGUoZGF0YSwgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gICAgICBycGMoKS5vblVzZXJDb25zb2xlTG9nKHtcbiAgICAgICAgdHlwZTogJ3N0ZG91dCcsXG4gICAgICAgIGNvbnRlbnQ6IFN0cmluZyhkYXRhKSxcbiAgICAgICAgdGFza0lkOiBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLmN1cnJlbnQ/LmlkLFxuICAgICAgICB0aW1lOiBEYXRlLm5vdygpLFxuICAgICAgfSlcbiAgICAgIGNhbGxiYWNrKClcbiAgICB9LFxuICB9KVxuICBjb25zdCBzdGRlcnIgPSBuZXcgV3JpdGFibGUoe1xuICAgIHdyaXRlKGRhdGEsIGVuY29kaW5nLCBjYWxsYmFjaykge1xuICAgICAgcnBjKCkub25Vc2VyQ29uc29sZUxvZyh7XG4gICAgICAgIHR5cGU6ICdzdGRlcnInLFxuICAgICAgICBjb250ZW50OiBTdHJpbmcoZGF0YSksXG4gICAgICAgIHRhc2tJZDogcHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXy5jdXJyZW50Py5pZCxcbiAgICAgICAgdGltZTogRGF0ZS5ub3coKSxcbiAgICAgIH0pXG4gICAgICBjYWxsYmFjaygpXG4gICAgfSxcbiAgfSlcbiAgZ2xvYmFsVGhpcy5jb25zb2xlID0gbmV3IENvbnNvbGUoe1xuICAgIHN0ZG91dCxcbiAgICBzdGRlcnIsXG4gICAgY29sb3JNb2RlOiB0cnVlLFxuICAgIGdyb3VwSW5kZW50YXRpb246IDIsXG4gIH0pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3aXRoRW52KFxuICBuYW1lOiBSZXNvbHZlZENvbmZpZ1snZW52aXJvbm1lbnQnXSxcbiAgb3B0aW9uczogUmVzb2x2ZWRDb25maWdbJ2Vudmlyb25tZW50T3B0aW9ucyddLFxuICBmbjogKCkgPT4gUHJvbWlzZTx2b2lkPixcbikge1xuICBjb25zdCBlbnYgPSBhd2FpdCBlbnZpcm9ubWVudHNbbmFtZV0uc2V0dXAoZ2xvYmFsVGhpcywgb3B0aW9ucylcbiAgdHJ5IHtcbiAgICBhd2FpdCBmbigpXG4gIH1cbiAgZmluYWxseSB7XG4gICAgYXdhaXQgZW52LnRlYXJkb3duKGdsb2JhbFRoaXMpXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blNldHVwRmlsZXMoY29uZmlnOiBSZXNvbHZlZENvbmZpZykge1xuICBjb25zdCBmaWxlcyA9IHRvQXJyYXkoY29uZmlnLnNldHVwRmlsZXMpXG4gIGF3YWl0IFByb21pc2UuYWxsKFxuICAgIGZpbGVzLm1hcChhc3luYyhmaWxlKSA9PiB7XG4gICAgICBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLm1vZHVsZUNhY2hlLmRlbGV0ZShmaWxlKVxuICAgICAgYXdhaXQgaW1wb3J0KGZpbGUpXG4gICAgfSksXG4gIClcbn1cbiIsImltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ3V0aWwnXG5pbXBvcnQgeyBzdHJpbmdpZnkgfSBmcm9tICcuLi9pbnRlZ3JhdGlvbnMvY2hhaS9qZXN0LW1hdGNoZXItdXRpbHMnXG5cbmNvbnN0IE9CSkVDVF9QUk9UTyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih7fSlcblxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1dlYl9Xb3JrZXJzX0FQSS9TdHJ1Y3R1cmVkX2Nsb25lX2FsZ29yaXRobVxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUVycm9yKHZhbDogYW55LCBzZWVuID0gbmV3IFdlYWtNYXAoKSk6IGFueSB7XG4gIGlmICghdmFsIHx8IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKVxuICAgIHJldHVybiB2YWxcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbicpXG4gICAgcmV0dXJuIGBGdW5jdGlvbjwke3ZhbC5uYW1lfT5gXG4gIGlmICh0eXBlb2YgdmFsICE9PSAnb2JqZWN0JylcbiAgICByZXR1cm4gdmFsXG4gIGlmICh2YWwgaW5zdGFuY2VvZiBQcm9taXNlIHx8ICd0aGVuJyBpbiB2YWwgfHwgKHZhbC5jb25zdHJ1Y3RvciAmJiB2YWwuY29uc3RydWN0b3IucHJvdG90eXBlID09PSAnQXN5bmNGdW5jdGlvbicpKVxuICAgIHJldHVybiAnUHJvbWlzZSdcbiAgaWYgKHR5cGVvZiBFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB2YWwgaW5zdGFuY2VvZiBFbGVtZW50KVxuICAgIHJldHVybiB2YWwudGFnTmFtZVxuICBpZiAodHlwZW9mIHZhbC5hc3ltbWV0cmljTWF0Y2ggPT09ICdmdW5jdGlvbicpXG4gICAgcmV0dXJuIGAke3ZhbC50b1N0cmluZygpfSAke2Zvcm1hdCh2YWwuc2FtcGxlKX1gXG5cbiAgaWYgKHNlZW4uaGFzKHZhbCkpXG4gICAgcmV0dXJuIHNlZW4uZ2V0KHZhbClcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgY29uc3QgY2xvbmU6IGFueVtdID0gbmV3IEFycmF5KHZhbC5sZW5ndGgpXG4gICAgc2Vlbi5zZXQodmFsLCBjbG9uZSlcbiAgICB2YWwuZm9yRWFjaCgoZSwgaSkgPT4ge1xuICAgICAgY2xvbmVbaV0gPSBzZXJpYWxpemVFcnJvcihlLCBzZWVuKVxuICAgIH0pXG4gICAgcmV0dXJuIGNsb25lXG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gT2JqZWN0cyB3aXRoIGBFcnJvcmAgY29uc3RydWN0b3JzIGFwcGVhciB0byBjYXVzZSBwcm9ibGVtcyBkdXJpbmcgd29ya2VyIGNvbW11bmljYXRpb25cbiAgICAvLyB1c2luZyBgTWVzc2FnZVBvcnRgLCBzbyB0aGUgc2VyaWFsaXplZCBlcnJvciBvYmplY3QgaXMgYmVpbmcgcmVjcmVhdGVkIGFzIHBsYWluIG9iamVjdC5cbiAgICBjb25zdCBjbG9uZSA9IE9iamVjdC5jcmVhdGUobnVsbClcbiAgICBzZWVuLnNldCh2YWwsIGNsb25lKVxuXG4gICAgbGV0IG9iaiA9IHZhbFxuICAgIHdoaWxlIChvYmogJiYgb2JqICE9PSBPQkpFQ1RfUFJPVE8pIHtcbiAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGlmICghKGtleSBpbiBjbG9uZSkpXG4gICAgICAgICAgY2xvbmVba2V5XSA9IHNlcmlhbGl6ZUVycm9yKG9ialtrZXldLCBzZWVuKVxuICAgICAgfSlcbiAgICAgIG9iaiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopXG4gICAgfVxuICAgIHJldHVybiBjbG9uZVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzRXJyb3IoZXJyOiBhbnkpIHtcbiAgaWYgKCFlcnIpXG4gICAgcmV0dXJuIGVyclxuICAvLyBzdGFjayBpcyBub3Qgc2VyaWFsaXplZCBpbiB3b3JrZXIgY29tbXVuaWNhdGlvblxuICAvLyB3ZSBzdHJpbmdpZnkgaXQgZmlyc3RcbiAgaWYgKGVyci5zdGFjaylcbiAgICBlcnIuc3RhY2tTdHIgPSBTdHJpbmcoZXJyLnN0YWNrKVxuICBpZiAoZXJyLm5hbWUpXG4gICAgZXJyLm5hbWVTdHIgPSBTdHJpbmcoZXJyLm5hbWUpXG5cbiAgaWYgKHR5cGVvZiBlcnIuZXhwZWN0ZWQgIT09ICdzdHJpbmcnKVxuICAgIGVyci5leHBlY3RlZCA9IHN0cmluZ2lmeShlcnIuZXhwZWN0ZWQpXG4gIGlmICh0eXBlb2YgZXJyLmFjdHVhbCAhPT0gJ3N0cmluZycpXG4gICAgZXJyLmFjdHVhbCA9IHN0cmluZ2lmeShlcnIuYWN0dWFsKVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZUVycm9yKGVycilcbiAgfVxuICBjYXRjaCAoZTogYW55KSB7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZUVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIGZ1bGx5IHNlcmlhbGl6ZSBlcnJvcjogJHtlPy5tZXNzYWdlfS5cXG5Jbm5lciBlcnJvciBtZXNzYWdlOiAke2Vycj8ubWVzc2FnZX1gKSlcbiAgfVxufVxuIiwiaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0bydcbmltcG9ydCB7IHJlbGF0aXZlIH0gZnJvbSAncGF0aGUnXG5pbXBvcnQgdHlwZSB7IEZpbGUsIFJlc29sdmVkQ29uZmlnLCBTdWl0ZSwgVGFza0Jhc2UgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IGNsZWFyQ29udGV4dCwgZGVmYXVsdFN1aXRlIH0gZnJvbSAnLi9zdWl0ZSdcbmltcG9ydCB7IGdldEhvb2tzLCBzZXRIb29rcyB9IGZyb20gJy4vbWFwJ1xuaW1wb3J0IHsgcHJvY2Vzc0Vycm9yIH0gZnJvbSAnLi9lcnJvcidcbmltcG9ydCB7IGNvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnXG5pbXBvcnQgeyBydW5TZXR1cEZpbGVzIH0gZnJvbSAnLi9zZXR1cCdcblxuZnVuY3Rpb24gaGFzaChzdHI6IHN0cmluZywgbGVuZ3RoID0gMTApIHtcbiAgcmV0dXJuIGNyZWF0ZUhhc2goJ21kNScpXG4gICAgLnVwZGF0ZShzdHIpXG4gICAgLmRpZ2VzdCgnaGV4JylcbiAgICAuc2xpY2UoMCwgbGVuZ3RoKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29sbGVjdFRlc3RzKHBhdGhzOiBzdHJpbmdbXSwgY29uZmlnOiBSZXNvbHZlZENvbmZpZykge1xuICBjb25zdCBmaWxlczogRmlsZVtdID0gW11cblxuICBmb3IgKGNvbnN0IGZpbGVwYXRoIG9mIHBhdGhzKSB7XG4gICAgY29uc3QgcGF0aCA9IHJlbGF0aXZlKGNvbmZpZy5yb290LCBmaWxlcGF0aClcbiAgICBjb25zdCBmaWxlOiBGaWxlID0ge1xuICAgICAgaWQ6IGhhc2gocGF0aCksXG4gICAgICBuYW1lOiBwYXRoLFxuICAgICAgdHlwZTogJ3N1aXRlJyxcbiAgICAgIG1vZGU6ICdydW4nLFxuICAgICAgZmlsZXBhdGgsXG4gICAgICB0YXNrczogW10sXG4gICAgfVxuXG4gICAgY2xlYXJDb250ZXh0KClcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcnVuU2V0dXBGaWxlcyhjb25maWcpXG4gICAgICBhd2FpdCBpbXBvcnQoZmlsZXBhdGgpXG5cbiAgICAgIGNvbnN0IGRlZmF1bHRUYXNrcyA9IGF3YWl0IGRlZmF1bHRTdWl0ZS5jb2xsZWN0KGZpbGUpXG5cbiAgICAgIHNldEhvb2tzKGZpbGUsIGdldEhvb2tzKGRlZmF1bHRUYXNrcykpXG5cbiAgICAgIGZvciAoY29uc3QgYyBvZiBbLi4uZGVmYXVsdFRhc2tzLnRhc2tzLCAuLi5jb250ZXh0LnRhc2tzXSkge1xuICAgICAgICBpZiAoYy50eXBlID09PSAndGVzdCcpIHtcbiAgICAgICAgICBmaWxlLnRhc2tzLnB1c2goYylcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjLnR5cGUgPT09ICdzdWl0ZScpIHtcbiAgICAgICAgICBmaWxlLnRhc2tzLnB1c2goYylcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpXG4gICAgICAgICAgY29uc3Qgc3VpdGUgPSBhd2FpdCBjLmNvbGxlY3QoZmlsZSlcbiAgICAgICAgICBmaWxlLmNvbGxlY3REdXJhdGlvbiA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRcbiAgICAgICAgICBpZiAoc3VpdGUubmFtZSB8fCBzdWl0ZS50YXNrcy5sZW5ndGgpXG4gICAgICAgICAgICBmaWxlLnRhc2tzLnB1c2goc3VpdGUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgIGZpbGUucmVzdWx0ID0ge1xuICAgICAgICBzdGF0ZTogJ2ZhaWwnLFxuICAgICAgICBlcnJvcjogcHJvY2Vzc0Vycm9yKGUpLFxuICAgICAgfVxuICAgICAgLy8gbm90IHN1cmUgdGh5LCB0aGlzIHRoaXMgbGluZSBpcyBuZWVkZWQgdG8gdHJpZ2dlciB0aGUgZXJyb3JcbiAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCdcXDAnKVxuICAgIH1cblxuICAgIGNhbGN1bGF0ZUhhc2goZmlsZSlcblxuICAgIGNvbnN0IGhhc09ubHlUYXNrcyA9IHNvbWVUYXNrc0FyZU9ubHkoZmlsZSlcbiAgICBpbnRlcnByZXRUYXNrTW9kZXMoZmlsZSwgY29uZmlnLnRlc3ROYW1lUGF0dGVybiwgaGFzT25seVRhc2tzLCBmYWxzZSwgY29uZmlnLmFsbG93T25seSlcblxuICAgIGZpbGVzLnB1c2goZmlsZSlcbiAgfVxuXG4gIHJldHVybiBmaWxlc1xufVxuXG4vKipcbiAqIElmIGFueSB0YXNrcyBiZWVuIG1hcmtlZCBhcyBgb25seWAsIG1hcmsgYWxsIG90aGVyIHRhc2tzIGFzIGBza2lwYC5cbiAqL1xuZnVuY3Rpb24gaW50ZXJwcmV0VGFza01vZGVzKHN1aXRlOiBTdWl0ZSwgbmFtZVBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAsIG9ubHlNb2RlPzogYm9vbGVhbiwgcGFyZW50SXNPbmx5PzogYm9vbGVhbiwgYWxsb3dPbmx5PzogYm9vbGVhbikge1xuICBjb25zdCBzdWl0ZUlzT25seSA9IHBhcmVudElzT25seSB8fCBzdWl0ZS5tb2RlID09PSAnb25seSdcblxuICBzdWl0ZS50YXNrcy5mb3JFYWNoKCh0KSA9PiB7XG4gICAgLy8gQ2hlY2sgaWYgZWl0aGVyIHRoZSBwYXJlbnQgc3VpdGUgb3IgdGhlIHRhc2sgaXRzZWxmIGFyZSBtYXJrZWQgYXMgaW5jbHVkZWRcbiAgICBjb25zdCBpbmNsdWRlVGFzayA9IHN1aXRlSXNPbmx5IHx8IHQubW9kZSA9PT0gJ29ubHknXG4gICAgaWYgKG9ubHlNb2RlKSB7XG4gICAgICBpZiAodC50eXBlID09PSAnc3VpdGUnICYmIChpbmNsdWRlVGFzayB8fCBzb21lVGFza3NBcmVPbmx5KHQpKSkge1xuICAgICAgICAvLyBEb24ndCBza2lwIHRoaXMgc3VpdGVcbiAgICAgICAgaWYgKHQubW9kZSA9PT0gJ29ubHknKSB7XG4gICAgICAgICAgY2hlY2tBbGxvd09ubHkodCwgYWxsb3dPbmx5KVxuICAgICAgICAgIHQubW9kZSA9ICdydW4nXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHQubW9kZSA9PT0gJ3J1bicgJiYgIWluY2x1ZGVUYXNrKSB7IHQubW9kZSA9ICdza2lwJyB9XG4gICAgICBlbHNlIGlmICh0Lm1vZGUgPT09ICdvbmx5Jykge1xuICAgICAgICBjaGVja0FsbG93T25seSh0LCBhbGxvd09ubHkpXG4gICAgICAgIHQubW9kZSA9ICdydW4nXG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0LnR5cGUgPT09ICd0ZXN0Jykge1xuICAgICAgaWYgKG5hbWVQYXR0ZXJuICYmICF0Lm5hbWUubWF0Y2gobmFtZVBhdHRlcm4pKVxuICAgICAgICB0Lm1vZGUgPSAnc2tpcCdcbiAgICB9XG4gICAgZWxzZSBpZiAodC50eXBlID09PSAnc3VpdGUnKSB7XG4gICAgICBpZiAodC5tb2RlID09PSAnc2tpcCcpXG4gICAgICAgIHNraXBBbGxUYXNrcyh0KVxuICAgICAgZWxzZVxuICAgICAgICBpbnRlcnByZXRUYXNrTW9kZXModCwgbmFtZVBhdHRlcm4sIG9ubHlNb2RlLCBpbmNsdWRlVGFzaywgYWxsb3dPbmx5KVxuICAgIH1cbiAgfSlcblxuICAvLyBpZiBhbGwgc3VidGFza3MgYXJlIHNraXBwZWQsIG1hcmsgYXMgc2tpcFxuICBpZiAoc3VpdGUubW9kZSA9PT0gJ3J1bicpIHtcbiAgICBpZiAoc3VpdGUudGFza3MuZXZlcnkoaSA9PiBpLm1vZGUgIT09ICdydW4nKSlcbiAgICAgIHN1aXRlLm1vZGUgPSAnc2tpcCdcbiAgfVxufVxuXG5mdW5jdGlvbiBzb21lVGFza3NBcmVPbmx5KHN1aXRlOiBTdWl0ZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3VpdGUudGFza3Muc29tZSh0ID0+IHQubW9kZSA9PT0gJ29ubHknIHx8ICh0LnR5cGUgPT09ICdzdWl0ZScgJiYgc29tZVRhc2tzQXJlT25seSh0KSkpXG59XG5cbmZ1bmN0aW9uIHNraXBBbGxUYXNrcyhzdWl0ZTogU3VpdGUpIHtcbiAgc3VpdGUudGFza3MuZm9yRWFjaCgodCkgPT4ge1xuICAgIGlmICh0Lm1vZGUgPT09ICdydW4nKSB7XG4gICAgICB0Lm1vZGUgPSAnc2tpcCdcbiAgICAgIGlmICh0LnR5cGUgPT09ICdzdWl0ZScpXG4gICAgICAgIHNraXBBbGxUYXNrcyh0KVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gY2hlY2tBbGxvd09ubHkodGFzazogVGFza0Jhc2UsIGFsbG93T25seT86IGJvb2xlYW4pIHtcbiAgaWYgKGFsbG93T25seSkgcmV0dXJuXG4gIHRhc2sucmVzdWx0ID0ge1xuICAgIHN0YXRlOiAnZmFpbCcsXG4gICAgZXJyb3I6IHByb2Nlc3NFcnJvcihuZXcgRXJyb3IoJ1tWaXRlc3RdIFVuZXhwZWN0ZWQgLm9ubHkgbW9kaWZpZXIuIFJlbW92ZSBpdCBvciBwYXNzIC0tYWxsb3dPbmx5IGFyZ3VlbWVudCB0byBieXBhc3MgdGhpcyBlcnJvcicpKSxcbiAgfVxufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVIYXNoKHBhcmVudDogU3VpdGUpIHtcbiAgcGFyZW50LnRhc2tzLmZvckVhY2goKHQsIGlkeCkgPT4ge1xuICAgIHQuaWQgPSBgJHtwYXJlbnQuaWR9XyR7aWR4fWBcbiAgICBpZiAodC50eXBlID09PSAnc3VpdGUnKVxuICAgICAgY2FsY3VsYXRlSGFzaCh0KVxuICB9KVxufVxuIiwiaW1wb3J0IHsgcGVyZm9ybWFuY2UgfSBmcm9tICdwZXJmX2hvb2tzJ1xuaW1wb3J0IHR5cGUgeyBIb29rTGlzdGVuZXIsIFJlc29sdmVkQ29uZmlnLCBTdWl0ZSwgU3VpdGVIb29rcywgVGFzaywgVGFza1Jlc3VsdCwgVGVzdCB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgdmkgfSBmcm9tICcuLi9pbnRlZ3JhdGlvbnMvdmknXG5pbXBvcnQgeyBnZXRTbmFwc2hvdENsaWVudCB9IGZyb20gJy4uL2ludGVncmF0aW9ucy9zbmFwc2hvdC9jaGFpJ1xuaW1wb3J0IHsgZ2V0RnVsbE5hbWUsIGhhc0ZhaWxlZCwgaGFzVGVzdHMsIHBhcnRpdGlvblN1aXRlQ2hpbGRyZW4gfSBmcm9tICcuLi91dGlscydcbmltcG9ydCB7IGdldFN0YXRlLCBzZXRTdGF0ZSB9IGZyb20gJy4uL2ludGVncmF0aW9ucy9jaGFpL2plc3QtZXhwZWN0J1xuaW1wb3J0IHsgZ2V0Rm4sIGdldEhvb2tzIH0gZnJvbSAnLi9tYXAnXG5pbXBvcnQgeyBycGMgfSBmcm9tICcuL3JwYydcbmltcG9ydCB7IGNvbGxlY3RUZXN0cyB9IGZyb20gJy4vY29sbGVjdCdcbmltcG9ydCB7IHByb2Nlc3NFcnJvciB9IGZyb20gJy4vZXJyb3InXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjYWxsU3VpdGVIb29rPFQgZXh0ZW5kcyBrZXlvZiBTdWl0ZUhvb2tzPihzdWl0ZTogU3VpdGUsIG5hbWU6IFQsIGFyZ3M6IFN1aXRlSG9va3NbVF1bMF0gZXh0ZW5kcyBIb29rTGlzdGVuZXI8aW5mZXIgQT4gPyBBIDogbmV2ZXIpIHtcbiAgaWYgKG5hbWUgPT09ICdiZWZvcmVFYWNoJyAmJiBzdWl0ZS5zdWl0ZSlcbiAgICBhd2FpdCBjYWxsU3VpdGVIb29rKHN1aXRlLnN1aXRlLCBuYW1lLCBhcmdzKVxuXG4gIGF3YWl0IFByb21pc2UuYWxsKGdldEhvb2tzKHN1aXRlKVtuYW1lXS5tYXAoZm4gPT4gZm4oLi4uKGFyZ3MgYXMgYW55KSkpKVxuXG4gIGlmIChuYW1lID09PSAnYWZ0ZXJFYWNoJyAmJiBzdWl0ZS5zdWl0ZSlcbiAgICBhd2FpdCBjYWxsU3VpdGVIb29rKHN1aXRlLnN1aXRlLCBuYW1lLCBhcmdzKVxufVxuXG5jb25zdCBwYWNrcyA9IG5ldyBNYXA8c3RyaW5nLCBUYXNrUmVzdWx0fHVuZGVmaW5lZD4oKVxubGV0IHVwZGF0ZVRpbWVyOiBhbnlcbmxldCBwcmV2aW91c1VwZGF0ZTogUHJvbWlzZTx2b2lkPnx1bmRlZmluZWRcblxuZnVuY3Rpb24gdXBkYXRlVGFzayh0YXNrOiBUYXNrKSB7XG4gIHBhY2tzLnNldCh0YXNrLmlkLCB0YXNrLnJlc3VsdClcblxuICBjbGVhclRpbWVvdXQodXBkYXRlVGltZXIpXG4gIHVwZGF0ZVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgcHJldmlvdXNVcGRhdGUgPSBzZW5kVGFza3NVcGRhdGUoKVxuICB9LCAxMClcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2VuZFRhc2tzVXBkYXRlKCkge1xuICBjbGVhclRpbWVvdXQodXBkYXRlVGltZXIpXG4gIGF3YWl0IHByZXZpb3VzVXBkYXRlXG5cbiAgaWYgKHBhY2tzLnNpemUpIHtcbiAgICBjb25zdCBwID0gcnBjKCkub25UYXNrVXBkYXRlKEFycmF5LmZyb20ocGFja3MpKVxuICAgIHBhY2tzLmNsZWFyKClcbiAgICByZXR1cm4gcFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5UZXN0KHRlc3Q6IFRlc3QpIHtcbiAgaWYgKHRlc3QubW9kZSAhPT0gJ3J1bicpXG4gICAgcmV0dXJuXG5cbiAgaWYgKHRlc3QucmVzdWx0Py5zdGF0ZSA9PT0gJ2ZhaWwnKSB7XG4gICAgdXBkYXRlVGFzayh0ZXN0KVxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3Qgc3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKVxuXG4gIHRlc3QucmVzdWx0ID0ge1xuICAgIHN0YXRlOiAncnVuJyxcbiAgfVxuICB1cGRhdGVUYXNrKHRlc3QpXG5cbiAgY2xlYXJNb2R1bGVNb2NrcygpXG5cbiAgZ2V0U25hcHNob3RDbGllbnQoKS5zZXRUZXN0KHRlc3QpXG5cbiAgcHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXy5jdXJyZW50ID0gdGVzdFxuXG4gIHRyeSB7XG4gICAgYXdhaXQgY2FsbFN1aXRlSG9vayh0ZXN0LnN1aXRlLCAnYmVmb3JlRWFjaCcsIFt0ZXN0LCB0ZXN0LnN1aXRlXSlcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBhc3NlcnRpb25DYWxsczogMCxcbiAgICAgIGlzRXhwZWN0aW5nQXNzZXJ0aW9uczogZmFsc2UsXG4gICAgICBpc0V4cGVjdGluZ0Fzc2VydGlvbnNFcnJvcjogbnVsbCxcbiAgICAgIGV4cGVjdGVkQXNzZXJ0aW9uc051bWJlcjogbnVsbCxcbiAgICAgIGV4cGVjdGVkQXNzZXJ0aW9uc051bWJlckVycm9yOiBudWxsLFxuICAgICAgdGVzdFBhdGg6IHRlc3Quc3VpdGUuZmlsZT8uZmlsZXBhdGgsXG4gICAgICBjdXJyZW50VGVzdE5hbWU6IGdldEZ1bGxOYW1lKHRlc3QpLFxuICAgIH0pXG4gICAgYXdhaXQgZ2V0Rm4odGVzdCkoKVxuICAgIGNvbnN0IHsgYXNzZXJ0aW9uQ2FsbHMsIGV4cGVjdGVkQXNzZXJ0aW9uc051bWJlciwgZXhwZWN0ZWRBc3NlcnRpb25zTnVtYmVyRXJyb3IsIGlzRXhwZWN0aW5nQXNzZXJ0aW9ucywgaXNFeHBlY3RpbmdBc3NlcnRpb25zRXJyb3IgfSA9IGdldFN0YXRlKClcbiAgICBpZiAoZXhwZWN0ZWRBc3NlcnRpb25zTnVtYmVyICE9PSBudWxsICYmIGFzc2VydGlvbkNhbGxzICE9PSBleHBlY3RlZEFzc2VydGlvbnNOdW1iZXIpXG4gICAgICB0aHJvdyBleHBlY3RlZEFzc2VydGlvbnNOdW1iZXJFcnJvclxuICAgIGlmIChpc0V4cGVjdGluZ0Fzc2VydGlvbnMgPT09IHRydWUgJiYgYXNzZXJ0aW9uQ2FsbHMgPT09IDApXG4gICAgICB0aHJvdyBpc0V4cGVjdGluZ0Fzc2VydGlvbnNFcnJvclxuXG4gICAgdGVzdC5yZXN1bHQuc3RhdGUgPSAncGFzcydcbiAgfVxuICBjYXRjaCAoZSkge1xuICAgIHRlc3QucmVzdWx0LnN0YXRlID0gJ2ZhaWwnXG4gICAgdGVzdC5yZXN1bHQuZXJyb3IgPSBwcm9jZXNzRXJyb3IoZSlcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgY2FsbFN1aXRlSG9vayh0ZXN0LnN1aXRlLCAnYWZ0ZXJFYWNoJywgW3Rlc3QsIHRlc3Quc3VpdGVdKVxuICB9XG4gIGNhdGNoIChlKSB7XG4gICAgdGVzdC5yZXN1bHQuc3RhdGUgPSAnZmFpbCdcbiAgICB0ZXN0LnJlc3VsdC5lcnJvciA9IHByb2Nlc3NFcnJvcihlKVxuICB9XG5cbiAgLy8gaWYgdGVzdCBpcyBtYXJrZWQgdG8gYmUgZmFpbGVkLCBmbGlwIHRoZSByZXN1bHRcbiAgaWYgKHRlc3QuZmFpbHMpIHtcbiAgICBpZiAodGVzdC5yZXN1bHQuc3RhdGUgPT09ICdwYXNzJykge1xuICAgICAgdGVzdC5yZXN1bHQuc3RhdGUgPSAnZmFpbCdcbiAgICAgIHRlc3QucmVzdWx0LmVycm9yID0gcHJvY2Vzc0Vycm9yKG5ldyBFcnJvcignRXhwZWN0IHRlc3QgdG8gZmFpbCcpKVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRlc3QucmVzdWx0LnN0YXRlID0gJ3Bhc3MnXG4gICAgICB0ZXN0LnJlc3VsdC5lcnJvciA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuXG4gIGdldFNuYXBzaG90Q2xpZW50KCkuY2xlYXJUZXN0KClcblxuICB0ZXN0LnJlc3VsdC5kdXJhdGlvbiA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRcblxuICBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLmN1cnJlbnQgPSB1bmRlZmluZWRcblxuICB1cGRhdGVUYXNrKHRlc3QpXG59XG5cbmZ1bmN0aW9uIG1hcmtUYXNrc0FzU2tpcHBlZChzdWl0ZTogU3VpdGUpIHtcbiAgc3VpdGUudGFza3MuZm9yRWFjaCgodCkgPT4ge1xuICAgIHQubW9kZSA9ICdza2lwJ1xuICAgIHQucmVzdWx0ID0geyAuLi50LnJlc3VsdCwgc3RhdGU6ICdza2lwJyB9XG4gICAgdXBkYXRlVGFzayh0KVxuICAgIGlmICh0LnR5cGUgPT09ICdzdWl0ZScpIG1hcmtUYXNrc0FzU2tpcHBlZCh0KVxuICB9KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuU3VpdGUoc3VpdGU6IFN1aXRlKSB7XG4gIGlmIChzdWl0ZS5yZXN1bHQ/LnN0YXRlID09PSAnZmFpbCcpIHtcbiAgICBtYXJrVGFza3NBc1NraXBwZWQoc3VpdGUpXG4gICAgdXBkYXRlVGFzayhzdWl0ZSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KClcblxuICBzdWl0ZS5yZXN1bHQgPSB7XG4gICAgc3RhdGU6ICdydW4nLFxuICB9XG5cbiAgdXBkYXRlVGFzayhzdWl0ZSlcblxuICBpZiAoc3VpdGUubW9kZSA9PT0gJ3NraXAnKSB7XG4gICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ3NraXAnXG4gIH1cbiAgZWxzZSBpZiAoc3VpdGUubW9kZSA9PT0gJ3RvZG8nKSB7XG4gICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ3RvZG8nXG4gIH1cbiAgZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNhbGxTdWl0ZUhvb2soc3VpdGUsICdiZWZvcmVBbGwnLCBbc3VpdGVdKVxuXG4gICAgICBmb3IgKGNvbnN0IHRhc2tzR3JvdXAgb2YgcGFydGl0aW9uU3VpdGVDaGlsZHJlbihzdWl0ZSkpIHtcbiAgICAgICAgaWYgKHRhc2tzR3JvdXBbMF0uY29uY3VycmVudCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHRhc2tzR3JvdXAubWFwKGMgPT4gcnVuU3VpdGVDaGlsZChjKSkpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZm9yIChjb25zdCBjIG9mIHRhc2tzR3JvdXApXG4gICAgICAgICAgICBhd2FpdCBydW5TdWl0ZUNoaWxkKGMpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYXdhaXQgY2FsbFN1aXRlSG9vayhzdWl0ZSwgJ2FmdGVyQWxsJywgW3N1aXRlXSlcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgIHN1aXRlLnJlc3VsdC5zdGF0ZSA9ICdmYWlsJ1xuICAgICAgc3VpdGUucmVzdWx0LmVycm9yID0gcHJvY2Vzc0Vycm9yKGUpXG4gICAgfVxuICB9XG4gIHN1aXRlLnJlc3VsdC5kdXJhdGlvbiA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRcblxuICBpZiAoc3VpdGUubW9kZSA9PT0gJ3J1bicpIHtcbiAgICBpZiAoIWhhc1Rlc3RzKHN1aXRlKSkge1xuICAgICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ2ZhaWwnXG4gICAgICBpZiAoIXN1aXRlLnJlc3VsdC5lcnJvcilcbiAgICAgICAgc3VpdGUucmVzdWx0LmVycm9yID0gbmV3IEVycm9yKGBObyB0ZXN0cyBmb3VuZCBpbiBzdWl0ZSAke3N1aXRlLm5hbWV9YClcbiAgICB9XG4gICAgZWxzZSBpZiAoaGFzRmFpbGVkKHN1aXRlKSkge1xuICAgICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ2ZhaWwnXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ3Bhc3MnXG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVGFzayhzdWl0ZSlcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuU3VpdGVDaGlsZChjOiBUYXNrKSB7XG4gIHJldHVybiBjLnR5cGUgPT09ICd0ZXN0J1xuICAgID8gcnVuVGVzdChjKVxuICAgIDogcnVuU3VpdGUoYylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blN1aXRlcyhzdWl0ZXM6IFN1aXRlW10pIHtcbiAgZm9yIChjb25zdCBzdWl0ZSBvZiBzdWl0ZXMpXG4gICAgYXdhaXQgcnVuU3VpdGUoc3VpdGUpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydFRlc3RzKHBhdGhzOiBzdHJpbmdbXSwgY29uZmlnOiBSZXNvbHZlZENvbmZpZykge1xuICBjb25zdCBmaWxlcyA9IGF3YWl0IGNvbGxlY3RUZXN0cyhwYXRocywgY29uZmlnKVxuXG4gIHJwYygpLm9uQ29sbGVjdGVkKGZpbGVzKVxuXG4gIGF3YWl0IHJ1blN1aXRlcyhmaWxlcylcblxuICBhd2FpdCBnZXRTbmFwc2hvdENsaWVudCgpLnNhdmVTbmFwKClcblxuICBhd2FpdCBzZW5kVGFza3NVcGRhdGUoKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJNb2R1bGVNb2NrcygpIHtcbiAgY29uc3QgeyBjbGVhck1vY2tzLCBtb2NrUmVzZXQsIHJlc3RvcmVNb2NrcyB9ID0gcHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXy5jb25maWdcblxuICAvLyBzaW5jZSBlYWNoIGZ1bmN0aW9uIGNhbGxzIGFub3RoZXIsIHdlIGNhbiBqdXN0IGNhbGwgb25lXG4gIGlmIChyZXN0b3JlTW9ja3MpXG4gICAgdmkucmVzdG9yZUFsbE1vY2tzKClcbiAgZWxzZSBpZiAobW9ja1Jlc2V0KVxuICAgIHZpLnJlc2V0QWxsTW9ja3MoKVxuICBlbHNlIGlmIChjbGVhck1vY2tzKVxuICAgIHZpLmNsZWFyQWxsTW9ja3MoKVxufVxuIiwiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcydcbmltcG9ydCB0eXBlIHsgQnVpbHRpbkVudmlyb25tZW50LCBSZXNvbHZlZENvbmZpZyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgc2V0dXBHbG9iYWxFbnYsIHdpdGhFbnYgfSBmcm9tICcuL3NldHVwJ1xuaW1wb3J0IHsgc3RhcnRUZXN0cyB9IGZyb20gJy4vcnVuJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuKGZpbGVzOiBzdHJpbmdbXSwgY29uZmlnOiBSZXNvbHZlZENvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBzZXR1cEdsb2JhbEVudihjb25maWcpXG5cbiAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgY29uc3QgY29kZSA9IGF3YWl0IGZzLnJlYWRGaWxlKGZpbGUsICd1dGYtOCcpXG5cbiAgICBjb25zdCBlbnYgPSBjb2RlLm1hdGNoKC9AKD86dml0ZXN0fGplc3QpLWVudmlyb25tZW50XFxzKz8oW1xcdy1dKylcXGIvKT8uWzFdIHx8IGNvbmZpZy5lbnZpcm9ubWVudCB8fCAnbm9kZSdcblxuICAgIGlmICghWydub2RlJywgJ2pzZG9tJywgJ2hhcHB5LWRvbSddLmluY2x1ZGVzKGVudikpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGVudmlyb25tZW50OiAke2Vudn1gKVxuXG4gICAgcHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXy5maWxlcGF0aCA9IGZpbGVcblxuICAgIGF3YWl0IHdpdGhFbnYoZW52IGFzIEJ1aWx0aW5FbnZpcm9ubWVudCwgY29uZmlnLmVudmlyb25tZW50T3B0aW9ucyB8fCB7fSwgYXN5bmMoKSA9PiB7XG4gICAgICBhd2FpdCBzdGFydFRlc3RzKFtmaWxlXSwgY29uZmlnKVxuICAgIH0pXG5cbiAgICBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLmZpbGVwYXRoID0gdW5kZWZpbmVkXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfX2RlZlByb3AiLCJfX2dldE93blByb3BTeW1ib2xzIiwiX19oYXNPd25Qcm9wIiwiX19wcm9wSXNFbnVtIiwiX19kZWZOb3JtYWxQcm9wIiwiX19zcHJlYWRWYWx1ZXMiLCJyZXF1aXJlIiwidGhpcyIsIm5hdHVyYWxDb21wYXJlTW9kdWxlIiwicHJldHR5Rm9ybWF0IiwicGF0aCIsIm5hdHVyYWxDb21wYXJlIiwiZnNwIiwiZnMiLCJBc3ltbWV0cmljTWF0Y2hlciIsInByZXR0eUZvcm1hdFBsdWdpbnMiLCJfX2RlZlByb3BzIiwiX19nZXRPd25Qcm9wRGVzY3MiLCJfX3NwcmVhZFByb3BzIiwiY2hhaSIsInBlcmZvcm1hbmNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsV0FBZTtBQUNmLEVBQUUsSUFBSSxFQUFFLE1BQU07QUFDZCxFQUFFLE1BQU0sS0FBSyxHQUFHO0FBQ2hCLElBQUksT0FBTztBQUNYLE1BQU0sUUFBUSxHQUFHO0FBQ2pCLE9BQU87QUFDUCxLQUFLLENBQUM7QUFDTixHQUFHO0FBQ0gsQ0FBQzs7QUNSRCxNQUFNLFdBQVcsR0FBRztBQUNwQixFQUFFLGNBQWM7QUFDaEIsRUFBRSxLQUFLO0FBQ1AsRUFBRSxpQkFBaUI7QUFDbkIsRUFBRSxhQUFhO0FBQ2YsRUFBRSxjQUFjO0FBQ2hCLEVBQUUsTUFBTTtBQUNSLEVBQUUsTUFBTTtBQUNSLEVBQUUsU0FBUztBQUNYLEVBQUUsa0JBQWtCO0FBQ3BCLEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsVUFBVTtBQUNaLEVBQUUsYUFBYTtBQUNmLEVBQUUsZUFBZTtBQUNqQixFQUFFLE1BQU07QUFDUixFQUFFLGNBQWM7QUFDaEIsRUFBRSx1QkFBdUI7QUFDekIsRUFBRSxTQUFTO0FBQ1gsRUFBRSxjQUFjO0FBQ2hCLEVBQUUsVUFBVTtBQUNaLEVBQUUsZ0JBQWdCO0FBQ2xCLEVBQUUsdUJBQXVCO0FBQ3pCLEVBQUUsY0FBYztBQUNoQixFQUFFLGNBQWM7QUFDaEIsRUFBRSxnQkFBZ0I7QUFDbEIsRUFBRSxhQUFhO0FBQ2YsRUFBRSxpQkFBaUI7QUFDbkIsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxpQkFBaUI7QUFDbkIsRUFBRSxpQkFBaUI7QUFDbkIsRUFBRSxpQkFBaUI7QUFDbkIsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxpQkFBaUI7QUFDbkIsRUFBRSxvQkFBb0I7QUFDdEIsRUFBRSxzQkFBc0I7QUFDeEIsRUFBRSxlQUFlO0FBQ2pCLEVBQUUsZ0JBQWdCO0FBQ2xCLEVBQUUsa0JBQWtCO0FBQ3BCLEVBQUUsa0JBQWtCO0FBQ3BCLEVBQUUsZUFBZTtBQUNqQixFQUFFLGlCQUFpQjtBQUNuQixFQUFFLGtCQUFrQjtBQUNwQixFQUFFLGdCQUFnQjtBQUNsQixFQUFFLG1CQUFtQjtBQUNyQixFQUFFLGlCQUFpQjtBQUNuQixFQUFFLGVBQWU7QUFDakIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxpQkFBaUI7QUFDbkIsRUFBRSxxQkFBcUI7QUFDdkIsRUFBRSxvQkFBb0I7QUFDdEIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxzQkFBc0I7QUFDeEIsRUFBRSxxQkFBcUI7QUFDdkIsRUFBRSxpQkFBaUI7QUFDbkIsRUFBRSxpQkFBaUI7QUFDbkIsRUFBRSxpQkFBaUI7QUFDbkIsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxnQkFBZ0I7QUFDbEIsRUFBRSxvQkFBb0I7QUFDdEIsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxnQkFBZ0I7QUFDbEIsRUFBRSxxQkFBcUI7QUFDdkIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxvQkFBb0I7QUFDdEIsRUFBRSxxQkFBcUI7QUFDdkIsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxpQkFBaUI7QUFDbkIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxpQkFBaUI7QUFDbkIsRUFBRSx5QkFBeUI7QUFDM0IsRUFBRSxzQkFBc0I7QUFDeEIsRUFBRSxxQkFBcUI7QUFDdkIsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxpQkFBaUI7QUFDbkIsRUFBRSxxQkFBcUI7QUFDdkIsRUFBRSx5QkFBeUI7QUFDM0IsRUFBRSxxQkFBcUI7QUFDdkIsRUFBRSxxQkFBcUI7QUFDdkIsRUFBRSxvQkFBb0I7QUFDdEIsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxxQkFBcUI7QUFDdkIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxZQUFZO0FBQ2QsRUFBRSxvQkFBb0I7QUFDdEIsRUFBRSxlQUFlO0FBQ2pCLEVBQUUsaUJBQWlCO0FBQ25CLEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsV0FBVztBQUNiLEVBQUUsZUFBZTtBQUNqQixFQUFFLE9BQU87QUFDVCxFQUFFLFlBQVk7QUFDZCxFQUFFLGFBQWE7QUFDZixFQUFFLGNBQWM7QUFDaEIsRUFBRSxZQUFZO0FBQ2QsRUFBRSxpQkFBaUI7QUFDbkIsRUFBRSxlQUFlO0FBQ2pCLEVBQUUsY0FBYztBQUNoQixFQUFFLGVBQWU7QUFDakIsRUFBRSxxQkFBcUI7QUFDdkIsRUFBRSxTQUFTO0FBQ1gsRUFBRSxZQUFZO0FBQ2QsRUFBRSxZQUFZO0FBQ2QsRUFBRSxZQUFZO0FBQ2QsRUFBRSxlQUFlO0FBQ2pCLEVBQUUsWUFBWTtBQUNkLEVBQUUsa0JBQWtCO0FBQ3BCLEVBQUUsWUFBWTtBQUNkLEVBQUUsU0FBUztBQUNYLEVBQUUsVUFBVTtBQUNaLEVBQUUsVUFBVTtBQUNaLEVBQUUsU0FBUztBQUNYLEVBQUUsUUFBUTtBQUNWLEVBQUUsYUFBYTtBQUNmLEVBQUUsV0FBVztBQUNiLEVBQUUsYUFBYTtBQUNmLEVBQUUsZUFBZTtBQUNqQixFQUFFLFFBQVE7QUFDVixFQUFFLFVBQVU7QUFDWixFQUFFLFlBQVk7QUFDZCxFQUFFLE1BQU07QUFDUixFQUFFLE1BQU07QUFDUixFQUFFLFVBQVU7QUFDWixFQUFFLGVBQWU7QUFDakIsRUFBRSxXQUFXO0FBQ2IsRUFBRSxlQUFlO0FBQ2pCLEVBQUUsVUFBVTtBQUNaLEVBQUUsMkJBQTJCO0FBQzdCLEVBQUUsc0JBQXNCO0FBQ3hCLEVBQUUsZ0JBQWdCO0FBQ2xCLEVBQUUsV0FBVztBQUNiLEVBQUUsWUFBWTtBQUNkLEVBQUUsY0FBYztBQUNoQixFQUFFLFlBQVk7QUFDZCxFQUFFLGVBQWU7QUFDakIsRUFBRSxPQUFPO0FBQ1QsRUFBRSxhQUFhO0FBQ2YsRUFBRSxXQUFXO0FBQ2IsRUFBRSxTQUFTO0FBQ1gsRUFBRSx1QkFBdUI7QUFDekIsRUFBRSxZQUFZO0FBQ2QsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxnQkFBZ0I7QUFDbEIsRUFBRSxTQUFTO0FBQ1gsRUFBRSxpQkFBaUI7QUFDbkIsRUFBRSxhQUFhO0FBQ2YsRUFBRSxPQUFPO0FBQ1QsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxVQUFVLEdBQUc7QUFDbkIsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxPQUFPO0FBQ1QsRUFBRSxNQUFNO0FBQ1IsRUFBRSxNQUFNO0FBQ1IsRUFBRSxNQUFNO0FBQ1IsRUFBRSxPQUFPO0FBQ1QsRUFBRSxTQUFTO0FBQ1gsRUFBRSxhQUFhO0FBQ2YsRUFBRSxlQUFlO0FBQ2pCLEVBQUUsVUFBVTtBQUNaLEVBQUUsT0FBTztBQUNULEVBQUUsUUFBUTtBQUNWLEVBQUUsa0JBQWtCO0FBQ3BCLEVBQUUsU0FBUztBQUNYLEVBQUUsYUFBYTtBQUNmLEVBQUUsWUFBWTtBQUNkLEVBQUUsUUFBUTtBQUNWLEVBQUUsVUFBVTtBQUNaLEVBQUUsWUFBWTtBQUNkLEVBQUUsUUFBUTtBQUNWLEVBQUUsUUFBUTtBQUNWLEVBQUUsTUFBTTtBQUNSLEVBQUUsV0FBVztBQUNiLEVBQUUsTUFBTTtBQUNSLEVBQUUsYUFBYTtBQUNmLEVBQUUsWUFBWTtBQUNkLEVBQUUsYUFBYTtBQUNmLEVBQUUsYUFBYTtBQUNmLEVBQUUsUUFBUTtBQUNWLEVBQUUsYUFBYTtBQUNmLEVBQUUsT0FBTztBQUNULEVBQUUsUUFBUTtBQUNWLEVBQUUscUJBQXFCO0FBQ3ZCLEVBQUUsVUFBVTtBQUNaLEVBQUUsVUFBVTtBQUNaLEVBQUUsUUFBUTtBQUNWLEVBQUUsWUFBWTtBQUNkLEVBQUUsV0FBVztBQUNiLEVBQUUsU0FBUztBQUNYLEVBQUUsU0FBUztBQUNYLEVBQUUsUUFBUTtBQUNWLEVBQUUsVUFBVTtBQUNaLEVBQUUsWUFBWTtBQUNkLEVBQUUsVUFBVTtBQUNaLEVBQUUsV0FBVztBQUNiLEVBQUUsU0FBUztBQUNYLEVBQUUsU0FBUztBQUNYLEVBQUUsTUFBTTtBQUNSLEVBQUUsTUFBTTtBQUNSLEVBQUUsS0FBSztBQUNQLEVBQUUsUUFBUTtBQUNWLENBQUMsQ0FBQztBQUNLLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDOztBQ3RObEQsSUFBSUEsV0FBUyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7QUFDdEMsSUFBSUMscUJBQW1CLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDO0FBQ3ZELElBQUlDLGNBQVksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQztBQUNuRCxJQUFJQyxjQUFZLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQztBQUN6RCxJQUFJQyxpQkFBZSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsR0FBR0osV0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDaEssSUFBSUssZ0JBQWMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUs7QUFDL0IsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLElBQUksSUFBSUgsY0FBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO0FBQ2xDLE1BQU1FLGlCQUFlLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN4QyxFQUFFLElBQUlILHFCQUFtQjtBQUN6QixJQUFJLEtBQUssSUFBSSxJQUFJLElBQUlBLHFCQUFtQixDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQzdDLE1BQU0sSUFBSUUsY0FBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO0FBQ3BDLFFBQVFDLGlCQUFlLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUMxQyxLQUFLO0FBQ0wsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMsQ0FBQztBQUNGLElBQUksU0FBUyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sS0FBSztBQUNyQyxFQUFFLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNsQixFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksTUFBTTtBQUN6QixJQUFJLElBQUlGLGNBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUNwRSxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEMsRUFBRSxJQUFJLE1BQU0sSUFBSSxJQUFJLElBQUlELHFCQUFtQjtBQUMzQyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUlBLHFCQUFtQixDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ2xELE1BQU0sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSUUsY0FBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO0FBQ3RFLFFBQVEsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwQyxLQUFLO0FBQ0wsRUFBRSxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFHRixZQUFlO0FBQ2YsRUFBRSxJQUFJLEVBQUUsT0FBTztBQUNmLEVBQUUsTUFBTSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxFQUFFO0FBQ3RDLElBQUksTUFBTTtBQUNWLE1BQU0sU0FBUztBQUNmLE1BQU0sS0FBSztBQUNYLE1BQU0sY0FBYztBQUNwQixNQUFNLGNBQWM7QUFDcEIsS0FBSyxHQUFHLE1BQU0sWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3BDLElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxFQUFFO0FBQ3RCLE1BQU0sSUFBSSxHQUFHLGlCQUFpQjtBQUM5QixNQUFNLFNBQVM7QUFDZixNQUFNLEdBQUcsR0FBRyx1QkFBdUI7QUFDbkMsTUFBTSxXQUFXLEdBQUcsV0FBVztBQUMvQixNQUFNLGlCQUFpQixHQUFHLElBQUk7QUFDOUIsTUFBTSxvQkFBb0IsR0FBRyxLQUFLO0FBQ2xDLE1BQU0sVUFBVSxHQUFHLGFBQWE7QUFDaEMsTUFBTSxTQUFTO0FBQ2YsTUFBTSxPQUFPLEdBQUcsS0FBSztBQUNyQixNQUFNLFNBQVMsR0FBRyxLQUFLO0FBQ3ZCLEtBQUssR0FBRyxFQUFFLEVBQUUsV0FBVyxHQUFHLFNBQVMsQ0FBQyxFQUFFLEVBQUU7QUFDeEMsTUFBTSxNQUFNO0FBQ1osTUFBTSxXQUFXO0FBQ2pCLE1BQU0sS0FBSztBQUNYLE1BQU0sYUFBYTtBQUNuQixNQUFNLG1CQUFtQjtBQUN6QixNQUFNLHNCQUFzQjtBQUM1QixNQUFNLFlBQVk7QUFDbEIsTUFBTSxXQUFXO0FBQ2pCLE1BQU0sU0FBUztBQUNmLE1BQU0sV0FBVztBQUNqQixLQUFLLENBQUMsQ0FBQztBQUNQLElBQUksTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFRSxnQkFBYyxDQUFDO0FBQy9DLE1BQU0saUJBQWlCO0FBQ3ZCLE1BQU0sU0FBUyxFQUFFLFNBQVMsS0FBSyxTQUFTLEdBQUcsSUFBSSxjQUFjLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3RGLE1BQU0sVUFBVTtBQUNoQixNQUFNLEdBQUc7QUFDVCxNQUFNLGNBQWMsRUFBRSxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3RHLE1BQU0sU0FBUyxFQUFFLFNBQVMsR0FBRyxJQUFJLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQztBQUNyRCxNQUFNLG9CQUFvQjtBQUMxQixNQUFNLFdBQVc7QUFDakIsTUFBTSxTQUFTO0FBQ2YsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDckIsSUFBSSxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsSSxJQUFJLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDckMsSUFBSSxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtBQUM1QixNQUFNLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtBQUN6QyxRQUFRLEdBQUcsR0FBRztBQUNkLFVBQVUsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztBQUNyQyxZQUFZLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQyxVQUFVLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQyxTQUFTO0FBQ1QsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQ2YsVUFBVSxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyQyxTQUFTO0FBQ1QsUUFBUSxZQUFZLEVBQUUsSUFBSTtBQUMxQixPQUFPLENBQUMsQ0FBQztBQUNULEtBQUs7QUFDTCxJQUFJLE9BQU87QUFDWCxNQUFNLFFBQVEsQ0FBQyxPQUFPLEVBQUU7QUFDeEIsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxLQUFLLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkQsT0FBTztBQUNQLEtBQUssQ0FBQztBQUNOLEdBQUc7QUFDSCxDQUFDOztBQzVGRCxZQUFlO0FBQ2YsRUFBRSxJQUFJLEVBQUUsV0FBVztBQUNuQixFQUFFLE1BQU0sS0FBSyxDQUFDLE1BQU0sRUFBRTtBQUN0QixJQUFJLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN2RCxJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7QUFDN0IsSUFBSSxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNILElBQUksTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNyQyxJQUFJLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO0FBQzVCLE1BQU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3pDLFFBQVEsR0FBRyxHQUFHO0FBQ2QsVUFBVSxJQUFJLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0FBQ3JDLFlBQVksT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLFVBQVUsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUIsU0FBUztBQUNULFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRTtBQUNmLFVBQVUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckMsU0FBUztBQUNULFFBQVEsWUFBWSxFQUFFLElBQUk7QUFDMUIsT0FBTyxDQUFDLENBQUM7QUFDVCxLQUFLO0FBQ0wsSUFBSSxPQUFPO0FBQ1gsTUFBTSxRQUFRLENBQUMsT0FBTyxFQUFFO0FBQ3hCLFFBQVEsR0FBRyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNuQyxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEtBQUssT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuRCxPQUFPO0FBQ1AsS0FBSyxDQUFDO0FBQ04sR0FBRztBQUNILENBQUM7O0FDMUJNLE1BQU0sWUFBWSxHQUFHO0FBQzVCLEVBQUUsSUFBSTtBQUNOLEVBQUUsS0FBSztBQUNQLEVBQUUsV0FBVyxFQUFFLEtBQUs7QUFDcEIsQ0FBQzs7Ozs7QUNQRCxDQUFDLFdBQVc7QUFDWixDQUFDLENBQUMsU0FBUyxVQUFVLEVBQUU7QUFDdkIsRUFBRSxJQUFJLE9BQU9DLGVBQU8sS0FBSyxVQUFVLElBQUksUUFBYyxLQUFLLFFBQVEsSUFBSSxRQUFhLEtBQUssUUFBUSxFQUFFO0FBQ2xHLEdBQUcsT0FBTyxpQkFBaUIsVUFBVSxDQUFDO0FBQ3RDLEdBQUcsTUFJTTtBQUNULEdBQUcsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQy9CLEdBQUc7QUFDSCxFQUFFLEVBQUUsU0FBUyxJQUFJLEVBQUUsS0FBSyxFQUFFO0FBQzFCLEVBQUUsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztBQUNqQyxFQUFFLElBQUksa0JBQWtCLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQztBQUMvQztBQUNBLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsVUFBVSxRQUFRLEVBQUU7QUFDM0QsR0FBRyxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMzQyxHQUFHLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO0FBQ3ZDO0FBQ0EsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUk7QUFDdEMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQztBQUM3QixJQUFJLDBDQUEwQztBQUM5QyxJQUFJLDhDQUE4QztBQUNsRCxJQUFJLFFBQVE7QUFDWixJQUFJLE1BQU07QUFDVixJQUFJLFFBQVE7QUFDWixJQUFJLENBQUM7QUFDTCxHQUFHLENBQUMsQ0FBQztBQUNMO0FBQ0EsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxTQUFTLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQ3RELEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6RCxHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsU0FBUyxPQUFPLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRTtBQUNyQyxHQUFHLElBQUksUUFBUSxLQUFLLE1BQU0sRUFBRTtBQUM1QixJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLElBQUk7QUFDSixHQUFHLElBQUksT0FBTyxNQUFNLENBQUMsS0FBSyxPQUFPLFFBQVEsQ0FBQyxFQUFFO0FBQzVDLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsSUFBSTtBQUNKLEdBQUcsSUFBSSxPQUFPLFFBQVEsQ0FBQyxLQUFLLFFBQVEsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO0FBQzNELElBQUksT0FBTyxRQUFRLEtBQUssTUFBTSxDQUFDO0FBQy9CLElBQUk7QUFDSixHQUFHLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUM5QixJQUFJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLElBQUk7QUFDSjtBQUNBLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0FBQ2hDLElBQUksSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxRQUFRLEVBQUU7QUFDNUMsS0FBSyxPQUFPLEtBQUssQ0FBQztBQUNsQixLQUFLO0FBQ0wsSUFBSSxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDaEQsSUFBSSxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLEVBQUU7QUFDekMsS0FBSyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUU7QUFDbkMsTUFBTSxPQUFPLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDL0IsTUFBTSxDQUFDLENBQUM7QUFDUixLQUFLLENBQUMsQ0FBQztBQUNQLElBQUk7QUFDSjtBQUNBLEdBQUcsSUFBSSxRQUFRLFlBQVksSUFBSSxFQUFFO0FBQ2pDLElBQUksSUFBSSxNQUFNLFlBQVksSUFBSSxFQUFFO0FBQ2hDLEtBQUssT0FBTyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ3BELEtBQUssTUFBTTtBQUNYLEtBQUssT0FBTyxLQUFLLENBQUM7QUFDbEIsS0FBSztBQUNMLElBQUk7QUFDSjtBQUNBLEdBQUcsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsRUFBRTtBQUNyRCxJQUFJLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQixJQUFJLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QixJQUFJLElBQUksT0FBTyxFQUFFLENBQUMsS0FBSyxRQUFRLElBQUksRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFO0FBQy9ELEtBQUssT0FBTyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzVCLEtBQUs7QUFDTCxJQUFJLElBQUksT0FBTyxFQUFFLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDbkMsS0FBSyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNuQixLQUFLO0FBQ0wsSUFBSSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDckIsSUFBSSxDQUFDLENBQUM7QUFDTixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUM7QUFDSjtBQUNBLENBQUMsRUFBRSxJQUFJLENBQUNDLGNBQUksQ0FBQzs7Ozs7OztBQzlFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGNBQWMsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDcEMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLO0FBQ2IsR0FBRyxLQUFLLEdBQUcsQ0FBQztBQUNaLEdBQUcsSUFBSSxHQUFHLENBQUM7QUFDWCxHQUFHLElBQUksR0FBRyxDQUFDO0FBQ1gsR0FBRyxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVE7QUFDN0I7QUFDQSxDQUFDLFNBQVMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFO0FBQ2xDLEVBQUUsSUFBSSxJQUFJLEVBQUU7QUFDWixHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDdEUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoQyxHQUFHO0FBQ0gsRUFBRSxJQUFJLEdBQUcsUUFBUSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBQztBQUN0RCxFQUFFLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksSUFBSTtBQUNwRyxLQUFLLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUNuQixLQUFLLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUM7QUFDekIsS0FBSyxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFO0FBQzFCLEtBQUssSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRTtBQUMxQixLQUFLLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUU7QUFDMUIsS0FBSyxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFO0FBQzFCLEtBQUssSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQztBQUMxQixLQUFLLElBQUksR0FBRyxFQUFFO0FBQ2QsRUFBRTtBQUNGO0FBQ0E7QUFDQSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssR0FBRztBQUN2QyxFQUFFLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFDO0FBQzVCLEVBQUUsS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUM7QUFDNUI7QUFDQSxFQUFFLElBQUksS0FBSyxHQUFHLEVBQUUsSUFBSSxLQUFLLEdBQUcsRUFBRSxJQUFJLEtBQUssR0FBRyxFQUFFLElBQUksS0FBSyxHQUFHLEVBQUUsRUFBRTtBQUM1RCxHQUFHLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUM7QUFDakMsR0FBRyxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBQztBQUNyQyxHQUFHLElBQUksR0FBRyxFQUFDO0FBQ1gsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEtBQUssSUFBSSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNyRCxFQUFFO0FBQ0YsQ0FBQyxPQUFPLENBQUM7QUFDVCxFQUFDO0FBQ0Q7QUFDQSxJQUFJO0FBQ0osQ0FBQ0Msd0JBQWMsR0FBRyxjQUFjLENBQUM7QUFDakMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQ1osQ0FBQyxNQUFNLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztBQUN4Qzs7OztBQ3hEQSxJQUFJUixXQUFTLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQztBQUN0QyxJQUFJQyxxQkFBbUIsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUM7QUFDdkQsSUFBSUMsY0FBWSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDO0FBQ25ELElBQUlDLGNBQVksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDO0FBQ3pELElBQUlDLGlCQUFlLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHSixXQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNoSyxJQUFJSyxnQkFBYyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSztBQUMvQixFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDaEMsSUFBSSxJQUFJSCxjQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7QUFDbEMsTUFBTUUsaUJBQWUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLEVBQUUsSUFBSUgscUJBQW1CO0FBQ3pCLElBQUksS0FBSyxJQUFJLElBQUksSUFBSUEscUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDN0MsTUFBTSxJQUFJRSxjQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7QUFDcEMsUUFBUUMsaUJBQWUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzFDLEtBQUs7QUFDTCxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDO0FBU0ssTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7QUFDcEMsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLE1BQU0sYUFBYSxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBRyxLQUFLO0FBQ3RDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3hCLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0FBQzdELEVBQUUsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUM7QUFDSyxNQUFNLGVBQWUsR0FBRyxDQUFDLFlBQVksRUFBRSxNQUFNLEtBQUs7QUFDekQsRUFBRSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25DLEVBQUUsSUFBSSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7QUFDNUIsRUFBRSxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDcEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUU7QUFDbkMsSUFBSSxJQUFJO0FBQ1IsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMvRCxNQUFNLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ2pFLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JCLEtBQUssQ0FBQyxNQUFNO0FBQ1osS0FBSztBQUNMLEdBQUc7QUFDSCxFQUFFLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDO0FBQ3JDLEVBQUUsSUFBSSxDQUFDLE1BQU0sS0FBSyxLQUFLLElBQUksTUFBTSxLQUFLLEtBQUssS0FBSyxTQUFTO0FBQ3pELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztBQUNqQixFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDekIsQ0FBQyxDQUFDO0FBQ0ssTUFBTSxrQkFBa0IsR0FBRyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDdkUsRUFBRSxNQUFNLENBQUM7QUFDVCxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ0osTUFBTSxxQkFBcUIsR0FBRyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDdEosTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLFNBQVMsU0FBUyxDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLGVBQWUsR0FBRyxFQUFFLEVBQUU7QUFDakUsRUFBRSxPQUFPLGlCQUFpQixDQUFDSyxRQUFZLENBQUMsR0FBRyxFQUFFSixnQkFBYyxDQUFDO0FBQzVELElBQUksV0FBVztBQUNmLElBQUksTUFBTTtBQUNWLElBQUksT0FBTyxFQUFFLGNBQWMsRUFBRTtBQUM3QixJQUFJLGlCQUFpQjtBQUNyQixHQUFHLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFZTSxTQUFTLG9CQUFvQixDQUFDLEdBQUcsRUFBRTtBQUMxQyxFQUFFLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUNELFNBQVMsbUJBQW1CLENBQUMsR0FBRyxFQUFFO0FBQ2xDLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBQ00sU0FBUyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUU7QUFDaEQsRUFBRSxJQUFJO0FBQ04sSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDSyxLQUFJLENBQUMsSUFBSSxDQUFDQSxLQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN6RSxHQUFHLENBQUMsTUFBTTtBQUNWLEdBQUc7QUFDSCxDQUFDO0FBQ0QsU0FBUyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUU7QUFDbkMsRUFBRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFDTSxlQUFlLGdCQUFnQixDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUU7QUFDbkUsRUFBRSxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQ0MsZ0JBQWMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hMLEVBQUUscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDdEMsRUFBRSxNQUFNQyxRQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQztBQUM5RDtBQUNBLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6QixDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDWixDQUFDO0FBQ00sU0FBUyxlQUFlLENBQUMsUUFBUSxFQUFFO0FBQzFDLEVBQUUsU0FBUyxlQUFlLEdBQUc7QUFDN0IsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUNYLElBQUksTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7QUFDckQsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQ3hGLEdBQUc7QUFDSCxFQUFFLE1BQU0sVUFBVSxHQUFHLGVBQWUsRUFBRSxDQUFDO0FBQ3ZDLEVBQUUsSUFBSSxlQUFlLEdBQUcsUUFBUSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDcEUsRUFBRSxJQUFJLFVBQVUsRUFBRTtBQUNsQixJQUFJLGVBQWUsR0FBRyxlQUFlLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxSixHQUFHO0FBQ0gsRUFBRSxPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDO0FBQ0QsU0FBUyxjQUFjLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFO0FBQ2xELEVBQUUsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLEVBQUUsS0FBSyxLQUFLO0FBQzNDLElBQUksTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlDLElBQUksSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQ3RDLE1BQU0sWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDekUsS0FBSyxNQUFNLElBQUksUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFO0FBQ3hDLE1BQU0sWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUM1RSxLQUFLLE1BQU07QUFDWCxNQUFNLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxhQUFhLENBQUM7QUFDMUMsS0FBSztBQUNMLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsRUFBRSxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDO0FBQ00sU0FBUyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ2xELEVBQUUsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQzVDLElBQUksTUFBTSxZQUFZLEdBQUdQLGdCQUFjLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3BELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEtBQUs7QUFDekMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUU7QUFDMUQsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLE1BQU0sQ0FBQztBQUM1QixVQUFVLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM5RDtBQUNBLFVBQVUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMxRSxPQUFPLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQzdDLFFBQVEsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckUsT0FBTyxNQUFNO0FBQ2IsUUFBUSxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDNUQsT0FBTztBQUNQLEtBQUssQ0FBQyxDQUFDO0FBQ1AsSUFBSSxPQUFPLFlBQVksQ0FBQztBQUN4QixHQUFHLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDN0QsSUFBSSxPQUFPLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDMUMsR0FBRztBQUNILEVBQUUsT0FBTyxNQUFNLENBQUM7QUFDaEI7O0FDNUlPLGVBQWUsbUJBQW1CLENBQUMsU0FBUyxFQUFFO0FBQ3JELEVBQUUsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUFNLE9BQU8sK0JBQWMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztBQUM3RCxFQUFFLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDdEQsRUFBRSxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLEtBQUs7QUFDMUQsSUFBSSxNQUFNLEdBQUcsR0FBRyxNQUFNLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQyxJQUFJLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztBQUMzRCxJQUFJLE1BQU0sSUFBSSxHQUFHLE1BQU1RLFFBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2pELElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEMsSUFBSSxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtBQUM5QixNQUFNLE1BQU0sR0FBRyxHQUFHLE1BQU0sY0FBYyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNsRCxNQUFNLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0MsTUFBTSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdkQsS0FBSztBQUNMLElBQUksTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3JDLElBQUksSUFBSSxXQUFXLEtBQUssSUFBSTtBQUM1QixNQUFNLE1BQU1BLFFBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNyRCxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUNELE1BQU0sZ0JBQWdCLEdBQUcsMEVBQTBFLENBQUM7QUFDcEcsU0FBUyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7QUFDcEQsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzQixFQUFFLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRCxFQUFFLElBQUksQ0FBQyxVQUFVO0FBQ2pCLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEMsRUFBRSxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQyxFQUFFLElBQUksU0FBUyxLQUFLLElBQUk7QUFDeEIsSUFBSSxPQUFPLEtBQUssQ0FBQztBQUNqQixFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckcsRUFBRSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFDRCxTQUFTLGlCQUFpQixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO0FBQ2hELEVBQUUsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDcEQsRUFBRSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN4RCxFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzdDLEVBQUUsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekUsRUFBRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDOUcsRUFBRSxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztBQUN0QyxFQUFFLE1BQU0sS0FBSyxHQUFHLFNBQVMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ3RDLEVBQUUsT0FBTyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUM7QUFDN0UsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNuRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDbkIsQ0FBQztBQUNELE1BQU0sVUFBVSxHQUFHLHVGQUF1RixDQUFDO0FBQ3BHLFNBQVMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0FBQzNELEVBQUUsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDeEQsRUFBRSxJQUFJLENBQUMsVUFBVTtBQUNqQixJQUFJLE9BQU8saUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdEQsRUFBRSxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsRUFBRSxNQUFNLFVBQVUsR0FBRyxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ3JFLEVBQUUsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM3RCxFQUFFLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRTtBQUNyQixJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUM5QyxJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLEdBQUc7QUFDSCxFQUFFLE1BQU0sVUFBVSxHQUFHLElBQUksTUFBTSxDQUFDLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RCxFQUFFLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQzNELEVBQUUsSUFBSSxDQUFDLFFBQVE7QUFDZixJQUFJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLEVBQUUsTUFBTSxRQUFRLEdBQUcsVUFBVSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNwRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDcEQsRUFBRSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFDRCxNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO0FBQ3BDLFNBQVMsd0JBQXdCLENBQUMsY0FBYyxFQUFFO0FBQ3pELEVBQUUsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3hELEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUMzQixJQUFJLE9BQU8sY0FBYyxDQUFDO0FBQzFCLEdBQUc7QUFDSCxFQUFFLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQixFQUFFLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLElBQUksT0FBTyxjQUFjLENBQUM7QUFDMUIsR0FBRztBQUNILEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtBQUN2RSxJQUFJLE9BQU8sY0FBYyxDQUFDO0FBQzFCLEdBQUc7QUFDSCxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM3QyxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtBQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDL0MsUUFBUSxPQUFPLGNBQWMsQ0FBQztBQUM5QixPQUFPO0FBQ1AsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEQsS0FBSztBQUNMLEdBQUc7QUFDSCxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMvQixFQUFFLGNBQWMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BDLEVBQUUsT0FBTyxjQUFjLENBQUM7QUFDeEI7O0FDNUZBLElBQUliLFdBQVMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO0FBQ3RDLElBQUlDLHFCQUFtQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztBQUN2RCxJQUFJQyxjQUFZLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUM7QUFDbkQsSUFBSUMsY0FBWSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUM7QUFDekQsSUFBSUMsaUJBQWUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUdKLFdBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ2hLLElBQUlLLGdCQUFjLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLO0FBQy9CLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxJQUFJLElBQUlILGNBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQztBQUNsQyxNQUFNRSxpQkFBZSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDeEMsRUFBRSxJQUFJSCxxQkFBbUI7QUFDekIsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJQSxxQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM3QyxNQUFNLElBQUlFLGNBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQztBQUNwQyxRQUFRQyxpQkFBZSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDMUMsS0FBSztBQUNMLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDLENBQUM7QUFlYSxNQUFNLGFBQWEsQ0FBQztBQUNuQyxFQUFFLFdBQVcsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFO0FBQ3JDLElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUM7QUFDdEMsSUFBSSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUN4RixJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBQzdCLElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7QUFDOUIsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztBQUN4QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7QUFDL0IsSUFBSSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFDbkUsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDL0IsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDO0FBQzFDLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUNyQixJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLElBQUksSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO0FBQ2xELElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDckIsSUFBSSxJQUFJLENBQUMsZUFBZSxHQUFHQyxnQkFBYyxDQUFDO0FBQzFDLE1BQU0sbUJBQW1CLEVBQUUsS0FBSztBQUNoQyxLQUFLLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQy9CLEdBQUc7QUFDSCxFQUFFLDZCQUE2QixDQUFDLFFBQVEsRUFBRTtBQUMxQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxLQUFLO0FBQ2xELE1BQU0sSUFBSSxhQUFhLENBQUMsWUFBWSxDQUFDLEtBQUssUUFBUTtBQUNsRCxRQUFRLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ2pELEtBQUssQ0FBQyxDQUFDO0FBQ1AsR0FBRztBQUNILEVBQUUsWUFBWSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUU7QUFDakQsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUN2QixJQUFJLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtBQUMxQixNQUFNLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDaEUsTUFBTSxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2xELE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNwRCxNQUFNLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDO0FBQ2xHLE1BQU0sTUFBTSxLQUFLLEdBQUcsVUFBVSxLQUFLLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3RFLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRTtBQUNsQixRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQztBQUN6QixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsT0FBTztBQUNQLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQ0EsZ0JBQWMsQ0FBQztBQUNoRCxRQUFRLFFBQVEsRUFBRSxrQkFBa0I7QUFDcEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDakIsS0FBSyxNQUFNO0FBQ1gsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGtCQUFrQixDQUFDO0FBQ25ELEtBQUs7QUFDTCxHQUFHO0FBQ0gsRUFBRSxLQUFLLEdBQUc7QUFDVixJQUFJLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztBQUMzQyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUMvQixJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ25CLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDckIsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztBQUN2QixJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLEdBQUc7QUFDSCxFQUFFLE1BQU0sSUFBSSxHQUFHO0FBQ2YsSUFBSSxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUN4RSxJQUFJLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztBQUM1RCxJQUFJLE1BQU0sT0FBTyxHQUFHLENBQUMsb0JBQW9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztBQUNqRSxJQUFJLE1BQU0sTUFBTSxHQUFHO0FBQ25CLE1BQU0sT0FBTyxFQUFFLEtBQUs7QUFDcEIsTUFBTSxLQUFLLEVBQUUsS0FBSztBQUNsQixLQUFLLENBQUM7QUFDTixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO0FBQy9ELE1BQU0sSUFBSSxvQkFBb0I7QUFDOUIsUUFBUSxNQUFNLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3ZFLE1BQU0sSUFBSSxrQkFBa0I7QUFDNUIsUUFBUSxNQUFNLG1CQUFtQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3pELE1BQU0sTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDMUIsS0FBSyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRTtBQUMzRSxNQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxLQUFLO0FBQ3hDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDMUMsTUFBTSxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUM1QixLQUFLO0FBQ0wsSUFBSSxPQUFPLE1BQU0sQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxpQkFBaUIsR0FBRztBQUN0QixJQUFJLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQ3pDLEdBQUc7QUFDSCxFQUFFLGdCQUFnQixHQUFHO0FBQ3JCLElBQUksT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUMzQyxHQUFHO0FBQ0gsRUFBRSxtQkFBbUIsR0FBRztBQUN4QixJQUFJLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUU7QUFDcEUsTUFBTSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUN6QixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxLQUFLLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzNFLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNsQyxLQUFLO0FBQ0wsR0FBRztBQUNILEVBQUUsS0FBSyxDQUFDO0FBQ1IsSUFBSSxRQUFRO0FBQ1osSUFBSSxRQUFRO0FBQ1osSUFBSSxHQUFHO0FBQ1AsSUFBSSxjQUFjO0FBQ2xCLElBQUksUUFBUTtBQUNaLElBQUksS0FBSztBQUNULEdBQUcsRUFBRTtBQUNMLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzFFLElBQUksTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDdkQsSUFBSSxJQUFJLENBQUMsR0FBRztBQUNaLE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDM0MsSUFBSSxJQUFJLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUM7QUFDekQsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QyxJQUFJLE1BQU0sa0JBQWtCLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztBQUNyRyxJQUFJLE1BQU0sUUFBUSxHQUFHLFFBQVEsR0FBRyxjQUFjLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6RSxJQUFJLE1BQU0sZUFBZSxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN0RCxJQUFJLE1BQU0sSUFBSSxHQUFHLGVBQWUsS0FBSyxlQUFlLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUN6RSxJQUFJLE1BQU0sV0FBVyxHQUFHLFFBQVEsS0FBSyxLQUFLLENBQUMsQ0FBQztBQUM1QyxJQUFJLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzlFLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEVB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
|
|
1839
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnkuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnRlZ3JhdGlvbnMvZW52L25vZGUudHMiLCIuLi9zcmMvaW50ZWdyYXRpb25zL2Vudi9qc2RvbS1rZXlzLnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9lbnYvanNkb20udHMiLCIuLi9zcmMvaW50ZWdyYXRpb25zL2Vudi9oYXBweS1kb20udHMiLCIuLi9zcmMvaW50ZWdyYXRpb25zL2Vudi9pbmRleC50cyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFpLXN1YnNldEAxLjYuMC9ub2RlX21vZHVsZXMvY2hhaS1zdWJzZXQvbGliL2NoYWktc3Vic2V0LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL25hdHVyYWwtY29tcGFyZUAxLjQuMC9ub2RlX21vZHVsZXMvbmF0dXJhbC1jb21wYXJlL2luZGV4LmpzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9zbmFwc2hvdC9wb3J0L3V0aWxzLnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9zbmFwc2hvdC9wb3J0L2lubGluZVNuYXBzaG90LnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9zbmFwc2hvdC9wb3J0L3N0YXRlLnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9zbmFwc2hvdC9jbGllbnQudHMiLCIuLi9zcmMvaW50ZWdyYXRpb25zL3NuYXBzaG90L2NoYWkudHMiLCIuLi9zcmMvaW50ZWdyYXRpb25zL2NoYWkvamVzdC1tYXRjaGVyLXV0aWxzLnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9jaGFpL2plc3QtZXh0ZW5kLnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9jaGFpL2plc3QtYXN5bW1ldHJpYy1tYXRjaGVycy50cyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvY2hhaS9zZXR1cC50cyIsIi4uL3NyYy9ydW50aW1lL3NldHVwLnRzIiwiLi4vc3JjL3J1bnRpbWUvZXJyb3IudHMiLCIuLi9zcmMvcnVudGltZS9jb2xsZWN0LnRzIiwiLi4vc3JjL3J1bnRpbWUvcnVuLnRzIiwiLi4vc3JjL3J1bnRpbWUvZW50cnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuXG5leHBvcnQgZGVmYXVsdCA8RW52aXJvbm1lbnQ+KHtcbiAgbmFtZTogJ25vZGUnLFxuICBhc3luYyBzZXR1cCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGVhcmRvd24oKSB7XG4gICAgICB9LFxuICAgIH1cbiAgfSxcbn0pXG4iLCIvLyBTRUUgaHR0cHM6Ly9naXRodWIuY29tL2pzZG9tL2pzZG9tL2Jsb2IvbWFzdGVyL2xpYi9qc2RvbS9saXZpbmcvaW50ZXJmYWNlcy5qc1xuXG5jb25zdCBMSVZJTkdfS0VZUyA9IFtcbiAgJ0RPTUV4Y2VwdGlvbicsXG4gICdVUkwnLFxuICAnVVJMU2VhcmNoUGFyYW1zJyxcbiAgJ0V2ZW50VGFyZ2V0JyxcbiAgJ05hbWVkTm9kZU1hcCcsXG4gICdOb2RlJyxcbiAgJ0F0dHInLFxuICAnRWxlbWVudCcsXG4gICdEb2N1bWVudEZyYWdtZW50JyxcbiAgJ0RPTUltcGxlbWVudGF0aW9uJyxcbiAgJ0RvY3VtZW50JyxcbiAgJ1hNTERvY3VtZW50JyxcbiAgJ0NoYXJhY3RlckRhdGEnLFxuICAnVGV4dCcsXG4gICdDREFUQVNlY3Rpb24nLFxuICAnUHJvY2Vzc2luZ0luc3RydWN0aW9uJyxcbiAgJ0NvbW1lbnQnLFxuICAnRG9jdW1lbnRUeXBlJyxcbiAgJ05vZGVMaXN0JyxcbiAgJ0hUTUxDb2xsZWN0aW9uJyxcbiAgJ0hUTUxPcHRpb25zQ29sbGVjdGlvbicsXG4gICdET01TdHJpbmdNYXAnLFxuICAnRE9NVG9rZW5MaXN0JyxcbiAgJ1N0eWxlU2hlZXRMaXN0JyxcbiAgJ0hUTUxFbGVtZW50JyxcbiAgJ0hUTUxIZWFkRWxlbWVudCcsXG4gICdIVE1MVGl0bGVFbGVtZW50JyxcbiAgJ0hUTUxCYXNlRWxlbWVudCcsXG4gICdIVE1MTGlua0VsZW1lbnQnLFxuICAnSFRNTE1ldGFFbGVtZW50JyxcbiAgJ0hUTUxTdHlsZUVsZW1lbnQnLFxuICAnSFRNTEJvZHlFbGVtZW50JyxcbiAgJ0hUTUxIZWFkaW5nRWxlbWVudCcsXG4gICdIVE1MUGFyYWdyYXBoRWxlbWVudCcsXG4gICdIVE1MSFJFbGVtZW50JyxcbiAgJ0hUTUxQcmVFbGVtZW50JyxcbiAgJ0hUTUxVTGlzdEVsZW1lbnQnLFxuICAnSFRNTE9MaXN0RWxlbWVudCcsXG4gICdIVE1MTElFbGVtZW50JyxcbiAgJ0hUTUxNZW51RWxlbWVudCcsXG4gICdIVE1MRExpc3RFbGVtZW50JyxcbiAgJ0hUTUxEaXZFbGVtZW50JyxcbiAgJ0hUTUxBbmNob3JFbGVtZW50JyxcbiAgJ0hUTUxBcmVhRWxlbWVudCcsXG4gICdIVE1MQlJFbGVtZW50JyxcbiAgJ0hUTUxCdXR0b25FbGVtZW50JyxcbiAgJ0hUTUxDYW52YXNFbGVtZW50JyxcbiAgJ0hUTUxEYXRhRWxlbWVudCcsXG4gICdIVE1MRGF0YUxpc3RFbGVtZW50JyxcbiAgJ0hUTUxEZXRhaWxzRWxlbWVudCcsXG4gICdIVE1MRGlhbG9nRWxlbWVudCcsXG4gICdIVE1MRGlyZWN0b3J5RWxlbWVudCcsXG4gICdIVE1MRmllbGRTZXRFbGVtZW50JyxcbiAgJ0hUTUxGb250RWxlbWVudCcsXG4gICdIVE1MRm9ybUVsZW1lbnQnLFxuICAnSFRNTEh0bWxFbGVtZW50JyxcbiAgJ0hUTUxJbWFnZUVsZW1lbnQnLFxuICAnSFRNTElucHV0RWxlbWVudCcsXG4gICdIVE1MTGFiZWxFbGVtZW50JyxcbiAgJ0hUTUxMZWdlbmRFbGVtZW50JyxcbiAgJ0hUTUxNYXBFbGVtZW50JyxcbiAgJ0hUTUxNYXJxdWVlRWxlbWVudCcsXG4gICdIVE1MTWVkaWFFbGVtZW50JyxcbiAgJ0hUTUxNZXRlckVsZW1lbnQnLFxuICAnSFRNTE1vZEVsZW1lbnQnLFxuICAnSFRNTE9wdEdyb3VwRWxlbWVudCcsXG4gICdIVE1MT3B0aW9uRWxlbWVudCcsXG4gICdIVE1MT3V0cHV0RWxlbWVudCcsXG4gICdIVE1MUGljdHVyZUVsZW1lbnQnLFxuICAnSFRNTFByb2dyZXNzRWxlbWVudCcsXG4gICdIVE1MUXVvdGVFbGVtZW50JyxcbiAgJ0hUTUxTY3JpcHRFbGVtZW50JyxcbiAgJ0hUTUxTZWxlY3RFbGVtZW50JyxcbiAgJ0hUTUxTbG90RWxlbWVudCcsXG4gICdIVE1MU291cmNlRWxlbWVudCcsXG4gICdIVE1MU3BhbkVsZW1lbnQnLFxuICAnSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQnLFxuICAnSFRNTFRhYmxlQ2VsbEVsZW1lbnQnLFxuICAnSFRNTFRhYmxlQ29sRWxlbWVudCcsXG4gICdIVE1MVGFibGVFbGVtZW50JyxcbiAgJ0hUTUxUaW1lRWxlbWVudCcsXG4gICdIVE1MVGFibGVSb3dFbGVtZW50JyxcbiAgJ0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50JyxcbiAgJ0hUTUxUZW1wbGF0ZUVsZW1lbnQnLFxuICAnSFRNTFRleHRBcmVhRWxlbWVudCcsXG4gICdIVE1MVW5rbm93bkVsZW1lbnQnLFxuICAnSFRNTEZyYW1lRWxlbWVudCcsXG4gICdIVE1MRnJhbWVTZXRFbGVtZW50JyxcbiAgJ0hUTUxJRnJhbWVFbGVtZW50JyxcbiAgJ0hUTUxFbWJlZEVsZW1lbnQnLFxuICAnSFRNTE9iamVjdEVsZW1lbnQnLFxuICAnSFRNTFBhcmFtRWxlbWVudCcsXG4gICdIVE1MVmlkZW9FbGVtZW50JyxcbiAgJ0hUTUxBdWRpb0VsZW1lbnQnLFxuICAnSFRNTFRyYWNrRWxlbWVudCcsXG4gICdTVkdFbGVtZW50JyxcbiAgJ1NWR0dyYXBoaWNzRWxlbWVudCcsXG4gICdTVkdTVkdFbGVtZW50JyxcbiAgJ1NWR1RpdGxlRWxlbWVudCcsXG4gICdTVkdBbmltYXRlZFN0cmluZycsXG4gICdTVkdOdW1iZXInLFxuICAnU1ZHU3RyaW5nTGlzdCcsXG4gICdFdmVudCcsXG4gICdDbG9zZUV2ZW50JyxcbiAgJ0N1c3RvbUV2ZW50JyxcbiAgJ01lc3NhZ2VFdmVudCcsXG4gICdFcnJvckV2ZW50JyxcbiAgJ0hhc2hDaGFuZ2VFdmVudCcsXG4gICdQb3BTdGF0ZUV2ZW50JyxcbiAgJ1N0b3JhZ2VFdmVudCcsXG4gICdQcm9ncmVzc0V2ZW50JyxcbiAgJ1BhZ2VUcmFuc2l0aW9uRXZlbnQnLFxuICAnVUlFdmVudCcsXG4gICdGb2N1c0V2ZW50JyxcbiAgJ0lucHV0RXZlbnQnLFxuICAnTW91c2VFdmVudCcsXG4gICdLZXlib2FyZEV2ZW50JyxcbiAgJ1RvdWNoRXZlbnQnLFxuICAnQ29tcG9zaXRpb25FdmVudCcsXG4gICdXaGVlbEV2ZW50JyxcbiAgJ0JhclByb3AnLFxuICAnRXh0ZXJuYWwnLFxuICAnTG9jYXRpb24nLFxuICAnSGlzdG9yeScsXG4gICdTY3JlZW4nLFxuICAnUGVyZm9ybWFuY2UnLFxuICAnTmF2aWdhdG9yJyxcbiAgJ1BsdWdpbkFycmF5JyxcbiAgJ01pbWVUeXBlQXJyYXknLFxuICAnUGx1Z2luJyxcbiAgJ01pbWVUeXBlJyxcbiAgJ0ZpbGVSZWFkZXInLFxuICAnQmxvYicsXG4gICdGaWxlJyxcbiAgJ0ZpbGVMaXN0JyxcbiAgJ1ZhbGlkaXR5U3RhdGUnLFxuICAnRE9NUGFyc2VyJyxcbiAgJ1hNTFNlcmlhbGl6ZXInLFxuICAnRm9ybURhdGEnLFxuICAnWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldCcsXG4gICdYTUxIdHRwUmVxdWVzdFVwbG9hZCcsXG4gICdYTUxIdHRwUmVxdWVzdCcsXG4gICdXZWJTb2NrZXQnLFxuICAnTm9kZUZpbHRlcicsXG4gICdOb2RlSXRlcmF0b3InLFxuICAnVHJlZVdhbGtlcicsXG4gICdBYnN0cmFjdFJhbmdlJyxcbiAgJ1JhbmdlJyxcbiAgJ1N0YXRpY1JhbmdlJyxcbiAgJ1NlbGVjdGlvbicsXG4gICdTdG9yYWdlJyxcbiAgJ0N1c3RvbUVsZW1lbnRSZWdpc3RyeScsXG4gICdTaGFkb3dSb290JyxcbiAgJ011dGF0aW9uT2JzZXJ2ZXInLFxuICAnTXV0YXRpb25SZWNvcmQnLFxuICAnSGVhZGVycycsXG4gICdBYm9ydENvbnRyb2xsZXInLFxuICAnQWJvcnRTaWduYWwnLFxuXG4gIC8vIG5vdCBzcGVjaWZpZWQgaW4gZG9jcywgYnV0IGlzIGF2YWlsYWJsZVxuICAnSW1hZ2UnLFxuXVxuXG5jb25zdCBPVEhFUl9LRVlTID0gW1xuICAnYWRkRXZlbnRMaXN0ZW5lcicsXG4gICdhbGVydCcsXG4gICdhdG9iJyxcbiAgJ2JsdXInLFxuICAnYnRvYScsXG4gIC8qICdjbGVhckludGVydmFsJywgKi9cbiAgLyogJ2NsZWFyVGltZW91dCcsICovXG4gICdjbG9zZScsXG4gICdjb25maXJtJyxcbiAgLyogJ2NvbnNvbGUnLCAqL1xuICAnY3JlYXRlUG9wdXAnLFxuICAnZGlzcGF0Y2hFdmVudCcsXG4gICdkb2N1bWVudCcsXG4gICdmb2N1cycsXG4gICdmcmFtZXMnLFxuICAnZ2V0Q29tcHV0ZWRTdHlsZScsXG4gICdoaXN0b3J5JyxcbiAgJ2lubmVySGVpZ2h0JyxcbiAgJ2lubmVyV2lkdGgnLFxuICAnbGVuZ3RoJyxcbiAgJ2xvY2F0aW9uJyxcbiAgJ21hdGNoTWVkaWEnLFxuICAnbW92ZUJ5JyxcbiAgJ21vdmVUbycsXG4gICduYW1lJyxcbiAgJ25hdmlnYXRvcicsXG4gICdvcGVuJyxcbiAgJ291dGVySGVpZ2h0JyxcbiAgJ291dGVyV2lkdGgnLFxuICAncGFnZVhPZmZzZXQnLFxuICAncGFnZVlPZmZzZXQnLFxuICAncGFyZW50JyxcbiAgJ3Bvc3RNZXNzYWdlJyxcbiAgJ3ByaW50JyxcbiAgJ3Byb21wdCcsXG4gICdyZW1vdmVFdmVudExpc3RlbmVyJyxcbiAgJ3Jlc2l6ZUJ5JyxcbiAgJ3Jlc2l6ZVRvJyxcbiAgJ3NjcmVlbicsXG4gICdzY3JlZW5MZWZ0JyxcbiAgJ3NjcmVlblRvcCcsXG4gICdzY3JlZW5YJyxcbiAgJ3NjcmVlblknLFxuICAnc2Nyb2xsJyxcbiAgJ3Njcm9sbEJ5JyxcbiAgJ3Njcm9sbExlZnQnLFxuICAnc2Nyb2xsVG8nLFxuICAnc2Nyb2xsVG9wJyxcbiAgJ3Njcm9sbFgnLFxuICAnc2Nyb2xsWScsXG4gICdzZWxmJyxcbiAgLyogJ3NldEludGVydmFsJywgKi9cbiAgLyogJ3NldFRpbWVvdXQnLCAqL1xuICAnc3RvcCcsXG4gIC8qICd0b1N0cmluZycsICovXG4gICd0b3AnLFxuICAnd2luZG93Jyxcbl1cblxuZXhwb3J0IGNvbnN0IEtFWVMgPSBMSVZJTkdfS0VZUy5jb25jYXQoT1RIRVJfS0VZUylcbiIsImltcG9ydCB7IGltcG9ydE1vZHVsZSB9IGZyb20gJ2xvY2FsLXBrZydcbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnQsIEpTRE9NT3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHsgS0VZUyB9IGZyb20gJy4vanNkb20ta2V5cydcblxuZXhwb3J0IGRlZmF1bHQgPEVudmlyb25tZW50Pih7XG4gIG5hbWU6ICdqc2RvbScsXG4gIGFzeW5jIHNldHVwKGdsb2JhbCwgeyBqc2RvbSA9IHt9IH0pIHtcbiAgICBjb25zdCB7XG4gICAgICBDb29raWVKYXIsXG4gICAgICBKU0RPTSxcbiAgICAgIFJlc291cmNlTG9hZGVyLFxuICAgICAgVmlydHVhbENvbnNvbGUsXG4gICAgfSA9IGF3YWl0IGltcG9ydE1vZHVsZSgnanNkb20nKSBhcyB0eXBlb2YgaW1wb3J0KCdqc2RvbScpXG4gICAgY29uc3Qge1xuICAgICAgaHRtbCA9ICc8IURPQ1RZUEUgaHRtbD4nLFxuICAgICAgdXNlckFnZW50LFxuICAgICAgdXJsID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCcsXG4gICAgICBjb250ZW50VHlwZSA9ICd0ZXh0L2h0bWwnLFxuICAgICAgcHJldGVuZFRvQmVWaXN1YWwgPSB0cnVlLFxuICAgICAgaW5jbHVkZU5vZGVMb2NhdGlvbnMgPSBmYWxzZSxcbiAgICAgIHJ1blNjcmlwdHMgPSAnZGFuZ2Vyb3VzbHknLFxuICAgICAgcmVzb3VyY2VzLFxuICAgICAgY29uc29sZSA9IGZhbHNlLFxuICAgICAgY29va2llSmFyID0gZmFsc2UsXG4gICAgICAuLi5yZXN0T3B0aW9uc1xuICAgIH0gPSBqc2RvbSBhcyBKU0RPTU9wdGlvbnNcbiAgICBjb25zdCBkb20gPSBuZXcgSlNET00oXG4gICAgICBodG1sLFxuICAgICAge1xuICAgICAgICBwcmV0ZW5kVG9CZVZpc3VhbCxcbiAgICAgICAgcmVzb3VyY2VzOiByZXNvdXJjZXMgPz8gKHVzZXJBZ2VudCA/IG5ldyBSZXNvdXJjZUxvYWRlcih7IHVzZXJBZ2VudCB9KSA6IHVuZGVmaW5lZCksXG4gICAgICAgIHJ1blNjcmlwdHMsXG4gICAgICAgIHVybCxcbiAgICAgICAgdmlydHVhbENvbnNvbGU6IGNvbnNvbGUgJiYgZ2xvYmFsLmNvbnNvbGUgPyBuZXcgVmlydHVhbENvbnNvbGUoKS5zZW5kVG8oZ2xvYmFsLmNvbnNvbGUpIDogdW5kZWZpbmVkLFxuICAgICAgICBjb29raWVKYXI6IGNvb2tpZUphciA/IG5ldyBDb29raWVKYXIoKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgaW5jbHVkZU5vZGVMb2NhdGlvbnMsXG4gICAgICAgIGNvbnRlbnRUeXBlLFxuICAgICAgICB1c2VyQWdlbnQsXG4gICAgICAgIC4uLnJlc3RPcHRpb25zLFxuICAgICAgfSxcbiAgICApXG5cbiAgICBjb25zdCBrZXlzID0gbmV3IFNldChLRVlTLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhkb20ud2luZG93KSlcbiAgICAgIC5maWx0ZXIoayA9PiAhay5zdGFydHNXaXRoKCdfJykgJiYgIShrIGluIGdsb2JhbCkpKVxuXG4gICAgY29uc3Qgb3ZlcnJpZGVPYmplY3QgPSBuZXcgTWFwPHN0cmluZywgYW55PigpXG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGdsb2JhbCwga2V5LCB7XG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICBpZiAob3ZlcnJpZGVPYmplY3QuaGFzKGtleSkpXG4gICAgICAgICAgICByZXR1cm4gb3ZlcnJpZGVPYmplY3QuZ2V0KGtleSlcbiAgICAgICAgICByZXR1cm4gZG9tLndpbmRvd1trZXldXG4gICAgICAgIH0sXG4gICAgICAgIHNldCh2KSB7XG4gICAgICAgICAgb3ZlcnJpZGVPYmplY3Quc2V0KGtleSwgdilcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGVhcmRvd24oZ2xvYmFsKSB7XG4gICAgICAgIGtleXMuZm9yRWFjaChrZXkgPT4gZGVsZXRlIGdsb2JhbFtrZXldKVxuICAgICAgfSxcbiAgICB9XG4gIH0sXG59KVxuIiwiaW1wb3J0IHsgaW1wb3J0TW9kdWxlIH0gZnJvbSAnbG9jYWwtcGtnJ1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHsgS0VZUyB9IGZyb20gJy4vanNkb20ta2V5cydcblxuZXhwb3J0IGRlZmF1bHQgPEVudmlyb25tZW50Pih7XG4gIG5hbWU6ICdoYXBweS1kb20nLFxuICBhc3luYyBzZXR1cChnbG9iYWwpIHtcbiAgICBjb25zdCB7IFdpbmRvdyB9ID0gYXdhaXQgaW1wb3J0TW9kdWxlKCdoYXBweS1kb20nKSBhcyB0eXBlb2YgaW1wb3J0KCdoYXBweS1kb20nKVxuICAgIGNvbnN0IHdpbjogYW55ID0gbmV3IFdpbmRvdygpXG5cbiAgICBjb25zdCBrZXlzID0gbmV3IFNldChLRVlTLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW4pKVxuICAgICAgLmZpbHRlcihrID0+ICFrLnN0YXJ0c1dpdGgoJ18nKSAmJiAhKGsgaW4gZ2xvYmFsKSkpXG5cbiAgICBjb25zdCBvdmVycmlkZU9iamVjdCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KClcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2xvYmFsLCBrZXksIHtcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgIGlmIChvdmVycmlkZU9iamVjdC5oYXMoa2V5KSlcbiAgICAgICAgICAgIHJldHVybiBvdmVycmlkZU9iamVjdC5nZXQoa2V5KVxuICAgICAgICAgIHJldHVybiB3aW5ba2V5XVxuICAgICAgICB9LFxuICAgICAgICBzZXQodikge1xuICAgICAgICAgIG92ZXJyaWRlT2JqZWN0LnNldChrZXksIHYpXG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRlYXJkb3duKGdsb2JhbCkge1xuICAgICAgICB3aW4uaGFwcHlET00uY2FuY2VsQXN5bmMoKVxuICAgICAgICBrZXlzLmZvckVhY2goa2V5ID0+IGRlbGV0ZSBnbG9iYWxba2V5XSlcbiAgICAgIH0sXG4gICAgfVxuICB9LFxufSlcbiIsImltcG9ydCBub2RlIGZyb20gJy4vbm9kZSdcbmltcG9ydCBqc2RvbSBmcm9tICcuL2pzZG9tJ1xuaW1wb3J0IGhhcHB5IGZyb20gJy4vaGFwcHktZG9tJ1xuXG5leHBvcnQgY29uc3QgZW52aXJvbm1lbnRzID0ge1xuICBub2RlLFxuICBqc2RvbSxcbiAgJ2hhcHB5LWRvbSc6IGhhcHB5LFxufVxuIiwiKGZ1bmN0aW9uKCkge1xuXHQoZnVuY3Rpb24oY2hhaVN1YnNldCkge1xuXHRcdGlmICh0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cyA9IGNoYWlTdWJzZXQ7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcblx0XHRcdHJldHVybiBkZWZpbmUoZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBjaGFpU3Vic2V0O1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBjaGFpLnVzZShjaGFpU3Vic2V0KTtcblx0XHR9XG5cdH0pKGZ1bmN0aW9uKGNoYWksIHV0aWxzKSB7XG5cdFx0dmFyIEFzc2VydGlvbiA9IGNoYWkuQXNzZXJ0aW9uO1xuXHRcdHZhciBhc3NlcnRpb25Qcm90b3R5cGUgPSBBc3NlcnRpb24ucHJvdG90eXBlO1xuXG5cdFx0QXNzZXJ0aW9uLmFkZE1ldGhvZCgnY29udGFpblN1YnNldCcsIGZ1bmN0aW9uIChleHBlY3RlZCkge1xuXHRcdFx0dmFyIGFjdHVhbCA9IHV0aWxzLmZsYWcodGhpcywgJ29iamVjdCcpO1xuXHRcdFx0dmFyIHNob3dEaWZmID0gY2hhaS5jb25maWcuc2hvd0RpZmY7XG5cblx0XHRcdGFzc2VydGlvblByb3RvdHlwZS5hc3NlcnQuY2FsbCh0aGlzLFxuXHRcdFx0XHRjb21wYXJlKGV4cGVjdGVkLCBhY3R1YWwpLFxuXHRcdFx0XHQnZXhwZWN0ZWQgI3thY3R9IHRvIGNvbnRhaW4gc3Vic2V0ICN7ZXhwfScsXG5cdFx0XHRcdCdleHBlY3RlZCAje2FjdH0gdG8gbm90IGNvbnRhaW4gc3Vic2V0ICN7ZXhwfScsXG5cdFx0XHRcdGV4cGVjdGVkLFxuXHRcdFx0XHRhY3R1YWwsXG5cdFx0XHRcdHNob3dEaWZmXG5cdFx0XHQpO1xuXHRcdH0pO1xuXG5cdFx0Y2hhaS5hc3NlcnQuY29udGFpblN1YnNldCA9IGZ1bmN0aW9uKHZhbCwgZXhwLCBtc2cpIHtcblx0XHRcdG5ldyBjaGFpLkFzc2VydGlvbih2YWwsIG1zZykudG8uYmUuY29udGFpblN1YnNldChleHApO1xuXHRcdH07XG5cblx0XHRmdW5jdGlvbiBjb21wYXJlKGV4cGVjdGVkLCBhY3R1YWwpIHtcblx0XHRcdGlmIChleHBlY3RlZCA9PT0gYWN0dWFsKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHR5cGVvZihhY3R1YWwpICE9PSB0eXBlb2YoZXhwZWN0ZWQpKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGlmICh0eXBlb2YoZXhwZWN0ZWQpICE9PSAnb2JqZWN0JyB8fCBleHBlY3RlZCA9PT0gbnVsbCkge1xuXHRcdFx0XHRyZXR1cm4gZXhwZWN0ZWQgPT09IGFjdHVhbDtcblx0XHRcdH1cblx0XHRcdGlmICghIWV4cGVjdGVkICYmICFhY3R1YWwpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShleHBlY3RlZCkpIHtcblx0XHRcdFx0aWYgKHR5cGVvZihhY3R1YWwubGVuZ3RoKSAhPT0gJ251bWJlcicpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIGFhID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYWN0dWFsKTtcblx0XHRcdFx0cmV0dXJuIGV4cGVjdGVkLmV2ZXJ5KGZ1bmN0aW9uIChleHApIHtcblx0XHRcdFx0XHRyZXR1cm4gYWEuc29tZShmdW5jdGlvbiAoYWN0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gY29tcGFyZShleHAsIGFjdCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoZXhwZWN0ZWQgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0XHRcdGlmIChhY3R1YWwgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGV4cGVjdGVkLmdldFRpbWUoKSA9PT0gYWN0dWFsLmdldFRpbWUoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIE9iamVjdC5rZXlzKGV4cGVjdGVkKS5ldmVyeShmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRcdHZhciBlbyA9IGV4cGVjdGVkW2tleV07XG5cdFx0XHRcdHZhciBhbyA9IGFjdHVhbFtrZXldO1xuXHRcdFx0XHRpZiAodHlwZW9mKGVvKSA9PT0gJ29iamVjdCcgJiYgZW8gIT09IG51bGwgJiYgYW8gIT09IG51bGwpIHtcblx0XHRcdFx0XHRyZXR1cm4gY29tcGFyZShlbywgYW8pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0eXBlb2YoZW8pID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGVvKGFvKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYW8gPT09IGVvO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9KTtcblxufSkuY2FsbCh0aGlzKTtcblxuIiwiXG5cblxuLypcbiAqIEB2ZXJzaW9uICAgIDEuNC4wXG4gKiBAZGF0ZSAgICAgICAyMDE1LTEwLTI2XG4gKiBAc3RhYmlsaXR5ICAzIC0gU3RhYmxlXG4gKiBAYXV0aG9yICAgICBMYXVyaSBSb29kZW4gKGh0dHBzOi8vZ2l0aHViLmNvbS9saXRlanMvbmF0dXJhbC1jb21wYXJlLWxpdGUpXG4gKiBAbGljZW5zZSAgICBNSVQgTGljZW5zZVxuICovXG5cblxudmFyIG5hdHVyYWxDb21wYXJlID0gZnVuY3Rpb24oYSwgYikge1xuXHR2YXIgaSwgY29kZUFcblx0LCBjb2RlQiA9IDFcblx0LCBwb3NBID0gMFxuXHQsIHBvc0IgPSAwXG5cdCwgYWxwaGFiZXQgPSBTdHJpbmcuYWxwaGFiZXRcblxuXHRmdW5jdGlvbiBnZXRDb2RlKHN0ciwgcG9zLCBjb2RlKSB7XG5cdFx0aWYgKGNvZGUpIHtcblx0XHRcdGZvciAoaSA9IHBvczsgY29kZSA9IGdldENvZGUoc3RyLCBpKSwgY29kZSA8IDc2ICYmIGNvZGUgPiA2NTspICsraTtcblx0XHRcdHJldHVybiArc3RyLnNsaWNlKHBvcyAtIDEsIGkpXG5cdFx0fVxuXHRcdGNvZGUgPSBhbHBoYWJldCAmJiBhbHBoYWJldC5pbmRleE9mKHN0ci5jaGFyQXQocG9zKSlcblx0XHRyZXR1cm4gY29kZSA+IC0xID8gY29kZSArIDc2IDogKChjb2RlID0gc3RyLmNoYXJDb2RlQXQocG9zKSB8fCAwKSwgY29kZSA8IDQ1IHx8IGNvZGUgPiAxMjcpID8gY29kZVxuXHRcdFx0OiBjb2RlIDwgNDYgPyA2NSAgICAgICAgICAgICAgIC8vIC1cblx0XHRcdDogY29kZSA8IDQ4ID8gY29kZSAtIDFcblx0XHRcdDogY29kZSA8IDU4ID8gY29kZSArIDE4ICAgICAgICAvLyAwLTlcblx0XHRcdDogY29kZSA8IDY1ID8gY29kZSAtIDExXG5cdFx0XHQ6IGNvZGUgPCA5MSA/IGNvZGUgKyAxMSAgICAgICAgLy8gQS1aXG5cdFx0XHQ6IGNvZGUgPCA5NyA/IGNvZGUgLSAzN1xuXHRcdFx0OiBjb2RlIDwgMTIzID8gY29kZSArIDUgICAgICAgIC8vIGEtelxuXHRcdFx0OiBjb2RlIC0gNjNcblx0fVxuXG5cblx0aWYgKChhKz1cIlwiKSAhPSAoYis9XCJcIikpIGZvciAoO2NvZGVCOykge1xuXHRcdGNvZGVBID0gZ2V0Q29kZShhLCBwb3NBKyspXG5cdFx0Y29kZUIgPSBnZXRDb2RlKGIsIHBvc0IrKylcblxuXHRcdGlmIChjb2RlQSA8IDc2ICYmIGNvZGVCIDwgNzYgJiYgY29kZUEgPiA2NiAmJiBjb2RlQiA+IDY2KSB7XG5cdFx0XHRjb2RlQSA9IGdldENvZGUoYSwgcG9zQSwgcG9zQSlcblx0XHRcdGNvZGVCID0gZ2V0Q29kZShiLCBwb3NCLCBwb3NBID0gaSlcblx0XHRcdHBvc0IgPSBpXG5cdFx0fVxuXG5cdFx0aWYgKGNvZGVBICE9IGNvZGVCKSByZXR1cm4gKGNvZGVBIDwgY29kZUIpID8gLTEgOiAxXG5cdH1cblx0cmV0dXJuIDBcbn1cblxudHJ5IHtcblx0bW9kdWxlLmV4cG9ydHMgPSBuYXR1cmFsQ29tcGFyZTtcbn0gY2F0Y2ggKGUpIHtcblx0U3RyaW5nLm5hdHVyYWxDb21wYXJlID0gbmF0dXJhbENvbXBhcmU7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBmcywgeyBwcm9taXNlcyBhcyBmc3AgfSBmcm9tICdmcydcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGhlJ1xuaW1wb3J0IG5hdHVyYWxDb21wYXJlIGZyb20gJ25hdHVyYWwtY29tcGFyZSdcbmltcG9ydCB0eXBlIHsgT3B0aW9uc1JlY2VpdmVkIGFzIFByZXR0eUZvcm1hdE9wdGlvbnMgfSBmcm9tICdwcmV0dHktZm9ybWF0J1xuaW1wb3J0IHtcbiAgZm9ybWF0IGFzIHByZXR0eUZvcm1hdCxcbn0gZnJvbSAncHJldHR5LWZvcm1hdCdcbmltcG9ydCB0eXBlIHsgU25hcHNob3REYXRhLCBTbmFwc2hvdFVwZGF0ZVN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgZ2V0U2VyaWFsaXplcnMgfSBmcm9tICcuL3BsdWdpbnMnXG5cbi8vIFRPRE86IHJld3JpdGUgYW5kIGNsZWFuIHVwXG5cbmV4cG9ydCBjb25zdCBTTkFQU0hPVF9WRVJTSU9OID0gJzEnXG5cbmNvbnN0IHdyaXRlU25hcHNob3RWZXJzaW9uID0gKCkgPT4gYC8vIFZpdGVzdCBTbmFwc2hvdCB2JHtTTkFQU0hPVF9WRVJTSU9OfWBcblxuZXhwb3J0IGNvbnN0IHRlc3ROYW1lVG9LZXkgPSAodGVzdE5hbWU6IHN0cmluZywgY291bnQ6IG51bWJlcik6IHN0cmluZyA9PlxuICBgJHt0ZXN0TmFtZX0gJHtjb3VudH1gXG5cbmV4cG9ydCBjb25zdCBrZXlUb1Rlc3ROYW1lID0gKGtleTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCEvIFxcZCskLy50ZXN0KGtleSkpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdTbmFwc2hvdCBrZXlzIG11c3QgZW5kIHdpdGggYSBudW1iZXIuJylcblxuICByZXR1cm4ga2V5LnJlcGxhY2UoLyBcXGQrJC8sICcnKVxufVxuXG5leHBvcnQgY29uc3QgZ2V0U25hcHNob3REYXRhID0gKFxuICBzbmFwc2hvdFBhdGg6IHN0cmluZyxcbiAgdXBkYXRlOiBTbmFwc2hvdFVwZGF0ZVN0YXRlLFxuKToge1xuICBkYXRhOiBTbmFwc2hvdERhdGFcbiAgZGlydHk6IGJvb2xlYW5cbn0gPT4ge1xuICBjb25zdCBkYXRhID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuICBsZXQgc25hcHNob3RDb250ZW50cyA9ICcnXG4gIGxldCBkaXJ0eSA9IGZhbHNlXG5cbiAgaWYgKGZzLmV4aXN0c1N5bmMoc25hcHNob3RQYXRoKSkge1xuICAgIHRyeSB7XG4gICAgICBzbmFwc2hvdENvbnRlbnRzID0gZnMucmVhZEZpbGVTeW5jKHNuYXBzaG90UGF0aCwgJ3V0ZjgnKVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gICAgICBjb25zdCBwb3B1bGF0ZSA9IG5ldyBGdW5jdGlvbignZXhwb3J0cycsIHNuYXBzaG90Q29udGVudHMpXG4gICAgICBwb3B1bGF0ZShkYXRhKVxuICAgIH1cbiAgICBjYXRjaCB7fVxuICB9XG5cbiAgLy8gY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IHZhbGlkYXRlU25hcHNob3RWZXJzaW9uKHNuYXBzaG90Q29udGVudHMpXG4gIGNvbnN0IGlzSW52YWxpZCA9IHNuYXBzaG90Q29udGVudHMgLy8gJiYgdmFsaWRhdGlvblJlc3VsdFxuXG4gIC8vIGlmICh1cGRhdGUgPT09ICdub25lJyAmJiBpc0ludmFsaWQpXG4gIC8vICAgdGhyb3cgdmFsaWRhdGlvblJlc3VsdFxuXG4gIGlmICgodXBkYXRlID09PSAnYWxsJyB8fCB1cGRhdGUgPT09ICduZXcnKSAmJiBpc0ludmFsaWQpXG4gICAgZGlydHkgPSB0cnVlXG5cbiAgcmV0dXJuIHsgZGF0YSwgZGlydHkgfVxufVxuXG4vLyBBZGQgZXh0cmEgbGluZSBicmVha3MgYXQgYmVnaW5uaW5nIGFuZCBlbmQgb2YgbXVsdGlsaW5lIHNuYXBzaG90XG4vLyB0byBtYWtlIHRoZSBjb250ZW50IGVhc2llciB0byByZWFkLlxuZXhwb3J0IGNvbnN0IGFkZEV4dHJhTGluZUJyZWFrcyA9IChzdHJpbmc6IHN0cmluZyk6IHN0cmluZyA9PlxuICBzdHJpbmcuaW5jbHVkZXMoJ1xcbicpID8gYFxcbiR7c3RyaW5nfVxcbmAgOiBzdHJpbmdcblxuLy8gUmVtb3ZlIGV4dHJhIGxpbmUgYnJlYWtzIGF0IGJlZ2lubmluZyBhbmQgZW5kIG9mIG11bHRpbGluZSBzbmFwc2hvdC5cbi8vIEluc3RlYWQgb2YgdHJpbSwgd2hpY2ggY2FuIHJlbW92ZSBhZGRpdGlvbmFsIG5ld2xpbmVzIG9yIHNwYWNlc1xuLy8gYXQgYmVnaW5uaW5nIG9yIGVuZCBvZiB0aGUgY29udGVudCBmcm9tIGEgY3VzdG9tIHNlcmlhbGl6ZXIuXG5leHBvcnQgY29uc3QgcmVtb3ZlRXh0cmFMaW5lQnJlYWtzID0gKHN0cmluZzogc3RyaW5nKTogc3RyaW5nID0+XG4gIHN0cmluZy5sZW5ndGggPiAyICYmIHN0cmluZy5zdGFydHNXaXRoKCdcXG4nKSAmJiBzdHJpbmcuZW5kc1dpdGgoJ1xcbicpXG4gICAgPyBzdHJpbmcuc2xpY2UoMSwgLTEpXG4gICAgOiBzdHJpbmdcblxuLy8gZXhwb3J0IGNvbnN0IHJlbW92ZUxpbmVzQmVmb3JlRXh0ZXJuYWxNYXRjaGVyVHJhcCA9IChzdGFjazogc3RyaW5nKTogc3RyaW5nID0+IHtcbi8vICAgY29uc3QgbGluZXMgPSBzdGFjay5zcGxpdCgnXFxuJylcblxuLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSArPSAxKSB7XG4vLyAgICAgLy8gSXQncyBhIGZ1bmN0aW9uIG5hbWUgc3BlY2lmaWVkIGluIGBwYWNrYWdlcy9leHBlY3Qvc3JjL2luZGV4LnRzYFxuLy8gICAgIC8vIGZvciBleHRlcm5hbCBjdXN0b20gbWF0Y2hlcnMuXG4vLyAgICAgaWYgKGxpbmVzW2ldLmluY2x1ZGVzKCdfX0VYVEVSTkFMX01BVENIRVJfVFJBUF9fJykpXG4vLyAgICAgICByZXR1cm4gbGluZXMuc2xpY2UoaSArIDEpLmpvaW4oJ1xcbicpXG4vLyAgIH1cblxuLy8gICByZXR1cm4gc3RhY2tcbi8vIH1cblxuY29uc3QgZXNjYXBlUmVnZXggPSB0cnVlXG5jb25zdCBwcmludEZ1bmN0aW9uTmFtZSA9IGZhbHNlXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemUodmFsOiB1bmtub3duLFxuICBpbmRlbnQgPSAyLFxuICBmb3JtYXRPdmVycmlkZXM6IFByZXR0eUZvcm1hdE9wdGlvbnMgPSB7fSk6IHN0cmluZyB7XG4gIHJldHVybiBub3JtYWxpemVOZXdsaW5lcyhcbiAgICBwcmV0dHlGb3JtYXQodmFsLCB7XG4gICAgICBlc2NhcGVSZWdleCxcbiAgICAgIGluZGVudCxcbiAgICAgIHBsdWdpbnM6IGdldFNlcmlhbGl6ZXJzKCksXG4gICAgICBwcmludEZ1bmN0aW9uTmFtZSxcbiAgICAgIC4uLmZvcm1hdE92ZXJyaWRlcyxcbiAgICB9KSxcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluaWZ5KHZhbDogdW5rbm93bik6IHN0cmluZyB7XG4gIHJldHVybiBwcmV0dHlGb3JtYXQodmFsLCB7XG4gICAgZXNjYXBlUmVnZXgsXG4gICAgbWluOiB0cnVlLFxuICAgIHBsdWdpbnM6IGdldFNlcmlhbGl6ZXJzKCksXG4gICAgcHJpbnRGdW5jdGlvbk5hbWUsXG4gIH0pXG59XG5cbi8vIFJlbW92ZSBkb3VibGUgcXVvdGUgbWFya3MgYW5kIHVuZXNjYXBlIGRvdWJsZSBxdW90ZXMgYW5kIGJhY2tzbGFzaGVzLlxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplU3RyaW5nKHN0cmluZ2lmaWVkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyaW5naWZpZWQuc2xpY2UoMSwgLTEpLnJlcGxhY2UoL1xcXFwoXCJ8XFxcXCkvZywgJyQxJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUJhY2t0aWNrU3RyaW5nKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9gfFxcXFx8XFwkey9nLCAnXFxcXCQmJylcbn1cblxuZnVuY3Rpb24gcHJpbnRCYWNrdGlja1N0cmluZyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgXFxgJHtlc2NhcGVCYWNrdGlja1N0cmluZyhzdHIpfVxcYGBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZURpcmVjdG9yeUV4aXN0cyhmaWxlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gIHRyeSB7XG4gICAgZnMubWtkaXJTeW5jKHBhdGguam9pbihwYXRoLmRpcm5hbWUoZmlsZVBhdGgpKSwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgfVxuICBjYXRjaCB7IH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplTmV3bGluZXMoc3RyaW5nOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXHJcXG58XFxyL2csICdcXG4nKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2F2ZVNuYXBzaG90RmlsZShcbiAgc25hcHNob3REYXRhOiBTbmFwc2hvdERhdGEsXG4gIHNuYXBzaG90UGF0aDogc3RyaW5nLFxuKSB7XG4gIGNvbnN0IHNuYXBzaG90cyA9IE9iamVjdC5rZXlzKHNuYXBzaG90RGF0YSlcbiAgICAuc29ydChuYXR1cmFsQ29tcGFyZSlcbiAgICAubWFwKFxuICAgICAga2V5ID0+IGBleHBvcnRzWyR7cHJpbnRCYWNrdGlja1N0cmluZyhrZXkpfV0gPSAke3ByaW50QmFja3RpY2tTdHJpbmcobm9ybWFsaXplTmV3bGluZXMoc25hcHNob3REYXRhW2tleV0pKX07YCxcbiAgICApXG5cbiAgZW5zdXJlRGlyZWN0b3J5RXhpc3RzKHNuYXBzaG90UGF0aClcbiAgYXdhaXQgZnNwLndyaXRlRmlsZShcbiAgICBzbmFwc2hvdFBhdGgsXG4gICAgYCR7d3JpdGVTbmFwc2hvdFZlcnNpb24oKX1cXG5cXG4ke3NuYXBzaG90cy5qb2luKCdcXG5cXG4nKX1cXG5gLFxuICAgICd1dGYtOCcsXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVFeHBlY3RlZChleHBlY3RlZD86IHN0cmluZykge1xuICBmdW5jdGlvbiBmaW5kU3RhcnRJbmRlbnQoKSB7XG4gICAgY29uc3QgbWF0Y2ggPSAvXiggKyl9XFxzKyQvbS5leGVjKGV4cGVjdGVkIHx8ICcnKVxuICAgIHJldHVybiBtYXRjaD8uWzFdPy5sZW5ndGggfHwgMFxuICB9XG5cbiAgY29uc3Qgc3RhcnRJZGVudCA9IGZpbmRTdGFydEluZGVudCgpXG5cbiAgbGV0IGV4cGVjdGVkVHJpbW1lZCA9IGV4cGVjdGVkPy50cmltKClcblxuICBpZiAoc3RhcnRJZGVudCkge1xuICAgIGV4cGVjdGVkVHJpbW1lZCA9IGV4cGVjdGVkVHJpbW1lZFxuICAgICAgPy5yZXBsYWNlKG5ldyBSZWdFeHAoYF4keycgJy5yZXBlYXQoc3RhcnRJZGVudCl9YCwgJ2dtJyksICcnKS5yZXBsYWNlKC8gK30kLywgJ30nKVxuICB9XG5cbiAgcmV0dXJuIGV4cGVjdGVkVHJpbW1lZFxufVxuXG5mdW5jdGlvbiBkZWVwTWVyZ2VBcnJheSh0YXJnZXQ6IGFueVtdID0gW10sIHNvdXJjZTogYW55W10gPSBbXSkge1xuICBjb25zdCBtZXJnZWRPdXRwdXQgPSBBcnJheS5mcm9tKHRhcmdldClcblxuICBzb3VyY2UuZm9yRWFjaCgoc291cmNlRWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gbWVyZ2VkT3V0cHV0W2luZGV4XVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0W2luZGV4XSkpIHtcbiAgICAgIG1lcmdlZE91dHB1dFtpbmRleF0gPSBkZWVwTWVyZ2VBcnJheSh0YXJnZXRbaW5kZXhdLCBzb3VyY2VFbGVtZW50KVxuICAgIH1cbiAgICBlbHNlIGlmIChpc09iamVjdCh0YXJnZXRFbGVtZW50KSkge1xuICAgICAgbWVyZ2VkT3V0cHV0W2luZGV4XSA9IGRlZXBNZXJnZVNuYXBzaG90KHRhcmdldFtpbmRleF0sIHNvdXJjZUVsZW1lbnQpXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gU291cmNlIGRvZXMgbm90IGV4aXN0IGluIHRhcmdldCBvciB0YXJnZXQgaXMgcHJpbWl0aXZlIGFuZCBjYW5ub3QgYmUgZGVlcCBtZXJnZWRcbiAgICAgIG1lcmdlZE91dHB1dFtpbmRleF0gPSBzb3VyY2VFbGVtZW50XG4gICAgfVxuICB9KVxuXG4gIHJldHVybiBtZXJnZWRPdXRwdXRcbn1cblxuLyoqXG4gKiBEZWVwIG1lcmdlLCBidXQgY29uc2lkZXJzIGFzeW1tZXRyaWMgbWF0Y2hlcnMuIFVubGlrZSBiYXNlIHV0aWwncyBkZWVwIG1lcmdlLFxuICogd2lsbCBtZXJnZSBhbnkgb2JqZWN0LWxpa2UgaW5zdGFuY2UuXG4gKiBDb21wYXRpYmxlIHdpdGggSmVzdCdzIHNuYXBzaG90IG1hdGNoZXIuIFNob3VsZCBub3QgYmUgdXNlZCBvdXRzaWRlIG9mIHNuYXBzaG90LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogdG9NYXRjaFNuYXBzaG90KHtcbiAqICAgbmFtZTogZXhwZWN0LnN0cmluZ0NvbnRhaW5pbmcoJ3RleHQnKVxuICogfSlcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVlcE1lcmdlU25hcHNob3QodGFyZ2V0OiBhbnksIHNvdXJjZTogYW55KTogYW55IHtcbiAgaWYgKGlzT2JqZWN0KHRhcmdldCkgJiYgaXNPYmplY3Qoc291cmNlKSkge1xuICAgIGNvbnN0IG1lcmdlZE91dHB1dCA9IHsgLi4udGFyZ2V0IH1cbiAgICBPYmplY3Qua2V5cyhzb3VyY2UpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKGlzT2JqZWN0KHNvdXJjZVtrZXldKSAmJiAhc291cmNlW2tleV0uJCR0eXBlb2YpIHtcbiAgICAgICAgaWYgKCEoa2V5IGluIHRhcmdldCkpIE9iamVjdC5hc3NpZ24obWVyZ2VkT3V0cHV0LCB7IFtrZXldOiBzb3VyY2Vba2V5XSB9KVxuICAgICAgICBlbHNlIG1lcmdlZE91dHB1dFtrZXldID0gZGVlcE1lcmdlU25hcHNob3QodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldKVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2Vba2V5XSkpIHtcbiAgICAgICAgbWVyZ2VkT3V0cHV0W2tleV0gPSBkZWVwTWVyZ2VBcnJheSh0YXJnZXRba2V5XSwgc291cmNlW2tleV0pXG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihtZXJnZWRPdXRwdXQsIHsgW2tleV06IHNvdXJjZVtrZXldIH0pXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBtZXJnZWRPdXRwdXRcbiAgfVxuICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkgJiYgQXJyYXkuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgcmV0dXJuIGRlZXBNZXJnZUFycmF5KHRhcmdldCwgc291cmNlKVxuICB9XG4gIHJldHVybiB0YXJnZXRcbn1cbiIsImltcG9ydCB7IHByb21pc2VzIGFzIGZzIH0gZnJvbSAnZnMnXG5pbXBvcnQgdHlwZSBNYWdpY1N0cmluZyBmcm9tICdtYWdpYy1zdHJpbmcnXG5pbXBvcnQgeyBycGMgfSBmcm9tICcuLi8uLi8uLi9ydW50aW1lL3JwYydcbmltcG9ydCB7IGdldE9yaWdpbmFsUG9zLCBsaW5lU3BsaXRSRSwgbnVtYmVyVG9Qb3MsIHBvc1RvTnVtYmVyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvc291cmNlLW1hcCdcbmltcG9ydCB7IGdldENhbGxMYXN0SW5kZXggfSBmcm9tICcuLi8uLi8uLi91dGlscydcblxuZXhwb3J0IGludGVyZmFjZSBJbmxpbmVTbmFwc2hvdCB7XG4gIHNuYXBzaG90OiBzdHJpbmdcbiAgZmlsZTogc3RyaW5nXG4gIGxpbmU6IG51bWJlclxuICBjb2x1bW46IG51bWJlclxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2F2ZUlubGluZVNuYXBzaG90cyhcbiAgc25hcHNob3RzOiBBcnJheTxJbmxpbmVTbmFwc2hvdD4sXG4pIHtcbiAgY29uc3QgTWFnaWNTdHJpbmcgPSAoYXdhaXQgaW1wb3J0KCdtYWdpYy1zdHJpbmcnKSkuZGVmYXVsdFxuICBjb25zdCBmaWxlcyA9IG5ldyBTZXQoc25hcHNob3RzLm1hcChpID0+IGkuZmlsZSkpXG4gIGF3YWl0IFByb21pc2UuYWxsKEFycmF5LmZyb20oZmlsZXMpLm1hcChhc3luYyhmaWxlKSA9PiB7XG4gICAgY29uc3QgbWFwID0gYXdhaXQgcnBjKCkuZ2V0U291cmNlTWFwKGZpbGUpXG4gICAgY29uc3Qgc25hcHMgPSBzbmFwc2hvdHMuZmlsdGVyKGkgPT4gaS5maWxlID09PSBmaWxlKVxuICAgIGNvbnN0IGNvZGUgPSBhd2FpdCBmcy5yZWFkRmlsZShmaWxlLCAndXRmOCcpXG4gICAgY29uc3QgcyA9IG5ldyBNYWdpY1N0cmluZyhjb2RlKVxuXG4gICAgZm9yIChjb25zdCBzbmFwIG9mIHNuYXBzKSB7XG4gICAgICBjb25zdCBwb3MgPSBhd2FpdCBnZXRPcmlnaW5hbFBvcyhtYXAsIHNuYXApXG4gICAgICBjb25zdCBpbmRleCA9IHBvc1RvTnVtYmVyKGNvZGUsIHBvcyEpXG4gICAgICByZXBsYWNlSW5saW5lU25hcChjb2RlLCBzLCBpbmRleCwgc25hcC5zbmFwc2hvdClcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1lZCA9IHMudG9TdHJpbmcoKVxuICAgIGlmICh0cmFuc2Zvcm1lZCAhPT0gY29kZSlcbiAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShmaWxlLCB0cmFuc2Zvcm1lZCwgJ3V0Zi04JylcbiAgfSkpXG59XG5cbmNvbnN0IHN0YXJ0T2JqZWN0UmVnZXggPSAvKD86dG9NYXRjaElubGluZVNuYXBzaG90fHRvVGhyb3dFcnJvck1hdGNoaW5nSW5saW5lU25hcHNob3QpXFxzKlxcKFxccyooeykvbVxuXG5mdW5jdGlvbiByZXBsYWNlT2JqZWN0U25hcChjb2RlOiBzdHJpbmcsIHM6IE1hZ2ljU3RyaW5nLCBpbmRleDogbnVtYmVyLCBuZXdTbmFwOiBzdHJpbmcpIHtcbiAgY29kZSA9IGNvZGUuc2xpY2UoaW5kZXgpXG4gIGNvbnN0IHN0YXJ0TWF0Y2ggPSBzdGFydE9iamVjdFJlZ2V4LmV4ZWMoY29kZSlcbiAgaWYgKCFzdGFydE1hdGNoKVxuICAgIHJldHVybiBmYWxzZVxuXG4gIGNvZGUgPSBjb2RlLnNsaWNlKHN0YXJ0TWF0Y2guaW5kZXgpXG4gIGNvbnN0IGNoYXJJbmRleCA9IGdldENhbGxMYXN0SW5kZXgoY29kZSlcbiAgaWYgKGNoYXJJbmRleCA9PT0gbnVsbClcbiAgICByZXR1cm4gZmFsc2VcblxuICBzLmFwcGVuZExlZnQoaW5kZXggKyBzdGFydE1hdGNoLmluZGV4ICsgY2hhckluZGV4LCBgLCAke3ByZXBhcmVTbmFwU3RyaW5nKG5ld1NuYXAsIGNvZGUsIGluZGV4KX1gKVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmZ1bmN0aW9uIHByZXBhcmVTbmFwU3RyaW5nKHNuYXA6IHN0cmluZywgc291cmNlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpIHtcbiAgY29uc3QgbGluZUluZGV4ID0gbnVtYmVyVG9Qb3Moc291cmNlLCBpbmRleCkubGluZVxuICBjb25zdCBsaW5lID0gc291cmNlLnNwbGl0KGxpbmVTcGxpdFJFKVtsaW5lSW5kZXggLSAxXVxuICBjb25zdCBpbmRlbnQgPSBsaW5lLm1hdGNoKC9eXFxzKi8pIVswXSB8fCAnJ1xuICBjb25zdCBpbmRlbnROZXh0ID0gaW5kZW50LmluY2x1ZGVzKCdcXHQnKSA/IGAke2luZGVudH1cXHRgIDogYCR7aW5kZW50fSAgYFxuXG4gIGNvbnN0IGxpbmVzID0gc25hcFxuICAgIC50cmltKClcbiAgICAucmVwbGFjZSgvXFxcXC9nLCAnXFxcXFxcXFwnKVxuICAgIC5yZXBsYWNlKC9cXCQvZywgJ1xcXFwkJylcbiAgICAuc3BsaXQoL1xcbi9nKVxuICAgIC5tYXAoaSA9PiBpLnRyaW1FbmQoKSlcblxuICBjb25zdCBpc09uZWxpbmUgPSBsaW5lcy5sZW5ndGggPD0gMVxuICBjb25zdCBxdW90ZSA9IGlzT25lbGluZSA/ICdcXCcnIDogJ2AnXG4gIHJldHVybiBpc09uZWxpbmVcbiAgICA/IGAnJHtsaW5lcy5qb2luKCdcXG4nKS5yZXBsYWNlKC8nL2csICdcXFxcXFwnJyl9J2BcbiAgICA6IGAke3F1b3RlfVxcbiR7bGluZXMubWFwKGkgPT4gaW5kZW50TmV4dCArIGkpLmpvaW4oJ1xcbicpLnJlcGxhY2UoL2AvZywgJ1xcXFxgJyl9XFxuJHtpbmRlbnR9JHtxdW90ZX1gXG59XG5cbmNvbnN0IHN0YXJ0UmVnZXggPSAvKD86dG9NYXRjaElubGluZVNuYXBzaG90fHRvVGhyb3dFcnJvck1hdGNoaW5nSW5saW5lU25hcHNob3QpXFxzKlxcKFxccypbXFx3XyRdKihbJ1wiYFxcKV0pL21cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlSW5saW5lU25hcChjb2RlOiBzdHJpbmcsIHM6IE1hZ2ljU3RyaW5nLCBpbmRleDogbnVtYmVyLCBuZXdTbmFwOiBzdHJpbmcpIHtcbiAgY29uc3Qgc3RhcnRNYXRjaCA9IHN0YXJ0UmVnZXguZXhlYyhjb2RlLnNsaWNlKGluZGV4KSlcbiAgaWYgKCFzdGFydE1hdGNoKVxuICAgIHJldHVybiByZXBsYWNlT2JqZWN0U25hcChjb2RlLCBzLCBpbmRleCwgbmV3U25hcClcblxuICBjb25zdCBxdW90ZSA9IHN0YXJ0TWF0Y2hbMV1cbiAgY29uc3Qgc3RhcnRJbmRleCA9IGluZGV4ICsgc3RhcnRNYXRjaC5pbmRleCEgKyBzdGFydE1hdGNoWzBdLmxlbmd0aFxuICBjb25zdCBzbmFwU3RyaW5nID0gcHJlcGFyZVNuYXBTdHJpbmcobmV3U25hcCwgY29kZSwgaW5kZXgpXG5cbiAgaWYgKHF1b3RlID09PSAnKScpIHtcbiAgICBzLmFwcGVuZFJpZ2h0KHN0YXJ0SW5kZXggLSAxLCBzbmFwU3RyaW5nKVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBjb25zdCBxdW90ZUVuZFJFID0gbmV3IFJlZ0V4cChgKD86XnxbXlxcXFxcXFxcXSkke3F1b3RlfWApXG4gIGNvbnN0IGVuZE1hdGNoID0gcXVvdGVFbmRSRS5leGVjKGNvZGUuc2xpY2Uoc3RhcnRJbmRleCkpXG4gIGlmICghZW5kTWF0Y2gpXG4gICAgcmV0dXJuIGZhbHNlXG4gIGNvbnN0IGVuZEluZGV4ID0gc3RhcnRJbmRleCArIGVuZE1hdGNoLmluZGV4ISArIGVuZE1hdGNoWzBdLmxlbmd0aFxuICBzLm92ZXJ3cml0ZShzdGFydEluZGV4IC0gMSwgZW5kSW5kZXgsIHNuYXBTdHJpbmcpXG5cbiAgcmV0dXJuIHRydWVcbn1cblxuY29uc3QgSU5ERU5UQVRJT05fUkVHRVggPSAvXihbXlxcU1xcbl0qKVxcUy9tXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBTbmFwc2hvdEluZGVudGF0aW9uKGlubGluZVNuYXBzaG90OiBzdHJpbmcpIHtcbiAgLy8gRmluZCBpbmRlbnRhdGlvbiBpZiBleGlzdHMuXG4gIGNvbnN0IG1hdGNoID0gaW5saW5lU25hcHNob3QubWF0Y2goSU5ERU5UQVRJT05fUkVHRVgpXG4gIGlmICghbWF0Y2ggfHwgIW1hdGNoWzFdKSB7XG4gICAgLy8gTm8gaW5kZW50YXRpb24uXG4gICAgcmV0dXJuIGlubGluZVNuYXBzaG90XG4gIH1cblxuICBjb25zdCBpbmRlbnRhdGlvbiA9IG1hdGNoWzFdXG4gIGNvbnN0IGxpbmVzID0gaW5saW5lU25hcHNob3Quc3BsaXQoL1xcbi9nKVxuICBpZiAobGluZXMubGVuZ3RoIDw9IDIpIHtcbiAgICAvLyBNdXN0IGJlIGF0IGxlYXN0IDMgbGluZXMuXG4gICAgcmV0dXJuIGlubGluZVNuYXBzaG90XG4gIH1cblxuICBpZiAobGluZXNbMF0udHJpbSgpICE9PSAnJyB8fCBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS50cmltKCkgIT09ICcnKSB7XG4gICAgLy8gSWYgbm90IGJsYW5rIGZpcnN0IGFuZCBsYXN0IGxpbmVzLCBhYm9ydC5cbiAgICByZXR1cm4gaW5saW5lU25hcHNob3RcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAxOyBpIDwgbGluZXMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgaWYgKGxpbmVzW2ldICE9PSAnJykge1xuICAgICAgaWYgKGxpbmVzW2ldLmluZGV4T2YoaW5kZW50YXRpb24pICE9PSAwKSB7XG4gICAgICAgIC8vIEFsbCBsaW5lcyBleGNlcHQgZmlyc3QgYW5kIGxhc3Qgc2hvdWxkIGVpdGhlciBiZSBibGFuayBvciBoYXZlIHRoZSBzYW1lXG4gICAgICAgIC8vIGluZGVudCBhcyB0aGUgZmlyc3QgbGluZSAob3IgbW9yZSkuIElmIHRoaXMgaXNuJ3QgdGhlIGNhc2Ugd2UgZG9uJ3RcbiAgICAgICAgLy8gd2FudCB0byB0b3VjaCB0aGUgc25hcHNob3QgYXQgYWxsLlxuICAgICAgICByZXR1cm4gaW5saW5lU25hcHNob3RcbiAgICAgIH1cblxuICAgICAgbGluZXNbaV0gPSBsaW5lc1tpXS5zdWJzdHJpbmcoaW5kZW50YXRpb24ubGVuZ3RoKVxuICAgIH1cbiAgfVxuXG4gIC8vIExhc3QgbGluZSBpcyBhIHNwZWNpYWwgY2FzZSBiZWNhdXNlIGl0IHdvbid0IGhhdmUgdGhlIHNhbWUgaW5kZW50IGFzIG90aGVyc1xuICAvLyBidXQgbWF5IHN0aWxsIGhhdmUgYmVlbiBnaXZlbiBzb21lIGluZGVudCB0byBsaW5lIHVwLlxuICBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXSA9ICcnXG5cbiAgLy8gUmV0dXJuIGlubGluZSBzbmFwc2hvdCwgbm93IGF0IGluZGVudCAwLlxuICBpbmxpbmVTbmFwc2hvdCA9IGxpbmVzLmpvaW4oJ1xcbicpXG4gIHJldHVybiBpbmxpbmVTbmFwc2hvdFxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgZnMgZnJvbSAnZnMnXG5pbXBvcnQgdHlwZSB7IENvbmZpZyB9IGZyb20gJ0BqZXN0L3R5cGVzJ1xuLy8gaW1wb3J0IHsgZ2V0U3RhY2tUcmFjZUxpbmVzLCBnZXRUb3BGcmFtZSB9IGZyb20gJ2plc3QtbWVzc2FnZS11dGlsJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zUmVjZWl2ZWQgYXMgUHJldHR5Rm9ybWF0T3B0aW9ucyB9IGZyb20gJ3ByZXR0eS1mb3JtYXQnXG5pbXBvcnQgdHlwZSB7IFNuYXBzaG90RGF0YSwgU25hcHNob3RNYXRjaE9wdGlvbnMsIFNuYXBzaG90U3RhdGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBzbGFzaCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgcGFyc2VTdGFja3RyYWNlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvc291cmNlLW1hcCdcbmltcG9ydCB0eXBlIHsgSW5saW5lU25hcHNob3QgfSBmcm9tICcuL2lubGluZVNuYXBzaG90J1xuaW1wb3J0IHsgc2F2ZUlubGluZVNuYXBzaG90cyB9IGZyb20gJy4vaW5saW5lU25hcHNob3QnXG5cbmltcG9ydCB7XG4gIGFkZEV4dHJhTGluZUJyZWFrcyxcbiAgZ2V0U25hcHNob3REYXRhLFxuICBrZXlUb1Rlc3ROYW1lLFxuICBwcmVwYXJlRXhwZWN0ZWQsXG4gIHJlbW92ZUV4dHJhTGluZUJyZWFrcyxcbiAgc2F2ZVNuYXBzaG90RmlsZSxcbiAgc2VyaWFsaXplLFxuICB0ZXN0TmFtZVRvS2V5LFxufSBmcm9tICcuL3V0aWxzJ1xuXG5pbnRlcmZhY2UgU25hcHNob3RSZXR1cm5PcHRpb25zIHtcbiAgYWN0dWFsOiBzdHJpbmdcbiAgY291bnQ6IG51bWJlclxuICBleHBlY3RlZD86IHN0cmluZ1xuICBrZXk6IHN0cmluZ1xuICBwYXNzOiBib29sZWFuXG59XG5cbmludGVyZmFjZSBTYXZlU3RhdHVzIHtcbiAgZGVsZXRlZDogYm9vbGVhblxuICBzYXZlZDogYm9vbGVhblxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbmFwc2hvdFN0YXRlIHtcbiAgcHJpdmF0ZSBfY291bnRlcnM6IE1hcDxzdHJpbmcsIG51bWJlcj5cbiAgcHJpdmF0ZSBfZGlydHk6IGJvb2xlYW5cbiAgcHJpdmF0ZSBfdXBkYXRlU25hcHNob3Q6IENvbmZpZy5TbmFwc2hvdFVwZGF0ZVN0YXRlXG4gIHByaXZhdGUgX3NuYXBzaG90RGF0YTogU25hcHNob3REYXRhXG4gIHByaXZhdGUgX2luaXRpYWxEYXRhOiBTbmFwc2hvdERhdGFcbiAgcHJpdmF0ZSBfc25hcHNob3RQYXRoOiBzdHJpbmdcbiAgcHJpdmF0ZSBfaW5saW5lU25hcHNob3RzOiBBcnJheTxJbmxpbmVTbmFwc2hvdD5cbiAgcHJpdmF0ZSBfdW5jaGVja2VkS2V5czogU2V0PHN0cmluZz5cbiAgcHJpdmF0ZSBfc25hcHNob3RGb3JtYXQ6IFByZXR0eUZvcm1hdE9wdGlvbnNcblxuICBhZGRlZDogbnVtYmVyXG4gIGV4cGFuZDogYm9vbGVhblxuICBtYXRjaGVkOiBudW1iZXJcbiAgdW5tYXRjaGVkOiBudW1iZXJcbiAgdXBkYXRlZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3Ioc25hcHNob3RQYXRoOiBzdHJpbmcsIG9wdGlvbnM6IFNuYXBzaG90U3RhdGVPcHRpb25zKSB7XG4gICAgdGhpcy5fc25hcHNob3RQYXRoID0gc25hcHNob3RQYXRoXG4gICAgY29uc3QgeyBkYXRhLCBkaXJ0eSB9ID0gZ2V0U25hcHNob3REYXRhKFxuICAgICAgdGhpcy5fc25hcHNob3RQYXRoLFxuICAgICAgb3B0aW9ucy51cGRhdGVTbmFwc2hvdCxcbiAgICApXG4gICAgdGhpcy5faW5pdGlhbERhdGEgPSBkYXRhXG4gICAgdGhpcy5fc25hcHNob3REYXRhID0gZGF0YVxuICAgIHRoaXMuX2RpcnR5ID0gZGlydHlcbiAgICB0aGlzLl9pbmxpbmVTbmFwc2hvdHMgPSBbXVxuICAgIHRoaXMuX3VuY2hlY2tlZEtleXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKHRoaXMuX3NuYXBzaG90RGF0YSkpXG4gICAgdGhpcy5fY291bnRlcnMgPSBuZXcgTWFwKClcbiAgICB0aGlzLmV4cGFuZCA9IG9wdGlvbnMuZXhwYW5kIHx8IGZhbHNlXG4gICAgdGhpcy5hZGRlZCA9IDBcbiAgICB0aGlzLm1hdGNoZWQgPSAwXG4gICAgdGhpcy51bm1hdGNoZWQgPSAwXG4gICAgdGhpcy5fdXBkYXRlU25hcHNob3QgPSBvcHRpb25zLnVwZGF0ZVNuYXBzaG90XG4gICAgdGhpcy51cGRhdGVkID0gMFxuICAgIHRoaXMuX3NuYXBzaG90Rm9ybWF0ID0ge1xuICAgICAgcHJpbnRCYXNpY1Byb3RvdHlwZTogZmFsc2UsXG4gICAgICAuLi5vcHRpb25zLnNuYXBzaG90Rm9ybWF0LFxuICAgIH1cbiAgfVxuXG4gIG1hcmtTbmFwc2hvdHNBc0NoZWNrZWRGb3JUZXN0KHRlc3ROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl91bmNoZWNrZWRLZXlzLmZvckVhY2goKHVuY2hlY2tlZEtleSkgPT4ge1xuICAgICAgaWYgKGtleVRvVGVzdE5hbWUodW5jaGVja2VkS2V5KSA9PT0gdGVzdE5hbWUpXG4gICAgICAgIHRoaXMuX3VuY2hlY2tlZEtleXMuZGVsZXRlKHVuY2hlY2tlZEtleSlcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBfYWRkU25hcHNob3QoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgcmVjZWl2ZWRTZXJpYWxpemVkOiBzdHJpbmcsXG4gICAgb3B0aW9uczogeyBpc0lubGluZTogYm9vbGVhbjsgZXJyb3I/OiBFcnJvciB9LFxuICApOiB2b2lkIHtcbiAgICB0aGlzLl9kaXJ0eSA9IHRydWVcbiAgICBpZiAob3B0aW9ucy5pc0lubGluZSkge1xuICAgICAgY29uc3QgZXJyb3IgPSBvcHRpb25zLmVycm9yIHx8IG5ldyBFcnJvcignVW5rbm93biBlcnJvcicpXG4gICAgICBjb25zdCBzdGFja3MgPSBwYXJzZVN0YWNrdHJhY2UoZXJyb3IsIHRydWUpXG4gICAgICBzdGFja3MuZm9yRWFjaChpID0+IGkuZmlsZSA9IHNsYXNoKGkuZmlsZSkpXG4gICAgICAvLyBpbmxpbmUgc25hcHNob3QgZnVuY3Rpb24gaXMgY2FsbGVkIF9fVklURVNUX0lOTElORV9TTkFQU0hPVF9fXG4gICAgICAvLyBpbiBpbnRlZ3JhdGlvbnMvc25hcHNob3QvY2hhaS50c1xuICAgICAgY29uc3Qgc3RhY2tJbmRleCA9IHN0YWNrcy5maW5kSW5kZXgoaSA9PiBpLm1ldGhvZC5pbmNsdWRlcygnX19WSVRFU1RfSU5MSU5FX1NOQVBTSE9UX18nKSlcbiAgICAgIGNvbnN0IHN0YWNrID0gc3RhY2tJbmRleCAhPT0gLTEgPyBzdGFja3Nbc3RhY2tJbmRleCArIDJdIDogbnVsbFxuICAgICAgaWYgKCFzdGFjaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFZpdGVzdDogQ291bGRuJ3QgaW5mZXIgc3RhY2sgZnJhbWUgZm9yIGlubGluZSBzbmFwc2hvdC5cXG4ke0pTT04uc3RyaW5naWZ5KHN0YWNrcyl9YCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgdGhpcy5faW5saW5lU25hcHNob3RzLnB1c2goe1xuICAgICAgICBzbmFwc2hvdDogcmVjZWl2ZWRTZXJpYWxpemVkLFxuICAgICAgICAuLi5zdGFjayxcbiAgICAgIH0pXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5fc25hcHNob3REYXRhW2tleV0gPSByZWNlaXZlZFNlcmlhbGl6ZWRcbiAgICB9XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLl9zbmFwc2hvdERhdGEgPSB0aGlzLl9pbml0aWFsRGF0YVxuICAgIC8vIHRoaXMuX2lubGluZVNuYXBzaG90cyA9IFtdXG4gICAgdGhpcy5fY291bnRlcnMgPSBuZXcgTWFwKClcbiAgICB0aGlzLmFkZGVkID0gMFxuICAgIHRoaXMubWF0Y2hlZCA9IDBcbiAgICB0aGlzLnVubWF0Y2hlZCA9IDBcbiAgICB0aGlzLnVwZGF0ZWQgPSAwXG4gIH1cblxuICBhc3luYyBzYXZlKCk6IFByb21pc2U8U2F2ZVN0YXR1cz4ge1xuICAgIGNvbnN0IGhhc0V4dGVybmFsU25hcHNob3RzID0gT2JqZWN0LmtleXModGhpcy5fc25hcHNob3REYXRhKS5sZW5ndGhcbiAgICBjb25zdCBoYXNJbmxpbmVTbmFwc2hvdHMgPSB0aGlzLl9pbmxpbmVTbmFwc2hvdHMubGVuZ3RoXG4gICAgY29uc3QgaXNFbXB0eSA9ICFoYXNFeHRlcm5hbFNuYXBzaG90cyAmJiAhaGFzSW5saW5lU25hcHNob3RzXG5cbiAgICBjb25zdCBzdGF0dXM6IFNhdmVTdGF0dXMgPSB7XG4gICAgICBkZWxldGVkOiBmYWxzZSxcbiAgICAgIHNhdmVkOiBmYWxzZSxcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMuX2RpcnR5IHx8IHRoaXMuX3VuY2hlY2tlZEtleXMuc2l6ZSkgJiYgIWlzRW1wdHkpIHtcbiAgICAgIGlmIChoYXNFeHRlcm5hbFNuYXBzaG90cylcbiAgICAgICAgYXdhaXQgc2F2ZVNuYXBzaG90RmlsZSh0aGlzLl9zbmFwc2hvdERhdGEsIHRoaXMuX3NuYXBzaG90UGF0aClcbiAgICAgIGlmIChoYXNJbmxpbmVTbmFwc2hvdHMpXG4gICAgICAgIGF3YWl0IHNhdmVJbmxpbmVTbmFwc2hvdHModGhpcy5faW5saW5lU25hcHNob3RzKVxuXG4gICAgICBzdGF0dXMuc2F2ZWQgPSB0cnVlXG4gICAgfVxuICAgIGVsc2UgaWYgKCFoYXNFeHRlcm5hbFNuYXBzaG90cyAmJiBmcy5leGlzdHNTeW5jKHRoaXMuX3NuYXBzaG90UGF0aCkpIHtcbiAgICAgIGlmICh0aGlzLl91cGRhdGVTbmFwc2hvdCA9PT0gJ2FsbCcpXG4gICAgICAgIGZzLnVubGlua1N5bmModGhpcy5fc25hcHNob3RQYXRoKVxuXG4gICAgICBzdGF0dXMuZGVsZXRlZCA9IHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdHVzXG4gIH1cblxuICBnZXRVbmNoZWNrZWRDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl91bmNoZWNrZWRLZXlzLnNpemUgfHwgMFxuICB9XG5cbiAgZ2V0VW5jaGVja2VkS2V5cygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl91bmNoZWNrZWRLZXlzKVxuICB9XG5cbiAgcmVtb3ZlVW5jaGVja2VkS2V5cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdXBkYXRlU25hcHNob3QgPT09ICdhbGwnICYmIHRoaXMuX3VuY2hlY2tlZEtleXMuc2l6ZSkge1xuICAgICAgdGhpcy5fZGlydHkgPSB0cnVlXG4gICAgICB0aGlzLl91bmNoZWNrZWRLZXlzLmZvckVhY2goa2V5ID0+IGRlbGV0ZSB0aGlzLl9zbmFwc2hvdERhdGFba2V5XSlcbiAgICAgIHRoaXMuX3VuY2hlY2tlZEtleXMuY2xlYXIoKVxuICAgIH1cbiAgfVxuXG4gIG1hdGNoKHtcbiAgICB0ZXN0TmFtZSxcbiAgICByZWNlaXZlZCxcbiAgICBrZXksXG4gICAgaW5saW5lU25hcHNob3QsXG4gICAgaXNJbmxpbmUsXG4gICAgZXJyb3IsXG4gIH06IFNuYXBzaG90TWF0Y2hPcHRpb25zKTogU25hcHNob3RSZXR1cm5PcHRpb25zIHtcbiAgICB0aGlzLl9jb3VudGVycy5zZXQodGVzdE5hbWUsICh0aGlzLl9jb3VudGVycy5nZXQodGVzdE5hbWUpIHx8IDApICsgMSlcbiAgICBjb25zdCBjb3VudCA9IE51bWJlcih0aGlzLl9jb3VudGVycy5nZXQodGVzdE5hbWUpKVxuXG4gICAgaWYgKCFrZXkpXG4gICAgICBrZXkgPSB0ZXN0TmFtZVRvS2V5KHRlc3ROYW1lLCBjb3VudClcblxuICAgIC8vIERvIG5vdCBtYXJrIHRoZSBzbmFwc2hvdCBhcyBcImNoZWNrZWRcIiBpZiB0aGUgc25hcHNob3QgaXMgaW5saW5lIGFuZFxuICAgIC8vIHRoZXJlJ3MgYW4gZXh0ZXJuYWwgc25hcHNob3QuIFRoaXMgd2F5IHRoZSBleHRlcm5hbCBzbmFwc2hvdCBjYW4gYmVcbiAgICAvLyByZW1vdmVkIHdpdGggYC0tdXBkYXRlU25hcHNob3RgLlxuICAgIGlmICghKGlzSW5saW5lICYmIHRoaXMuX3NuYXBzaG90RGF0YVtrZXldICE9PSB1bmRlZmluZWQpKVxuICAgICAgdGhpcy5fdW5jaGVja2VkS2V5cy5kZWxldGUoa2V5KVxuXG4gICAgY29uc3QgcmVjZWl2ZWRTZXJpYWxpemVkID0gYWRkRXh0cmFMaW5lQnJlYWtzKHNlcmlhbGl6ZShyZWNlaXZlZCwgdW5kZWZpbmVkLCB0aGlzLl9zbmFwc2hvdEZvcm1hdCkpXG4gICAgY29uc3QgZXhwZWN0ZWQgPSBpc0lubGluZSA/IGlubGluZVNuYXBzaG90IDogdGhpcy5fc25hcHNob3REYXRhW2tleV1cbiAgICBjb25zdCBleHBlY3RlZFRyaW1tZWQgPSBwcmVwYXJlRXhwZWN0ZWQoZXhwZWN0ZWQpXG4gICAgY29uc3QgcGFzcyA9IGV4cGVjdGVkVHJpbW1lZCA9PT0gcHJlcGFyZUV4cGVjdGVkKHJlY2VpdmVkU2VyaWFsaXplZClcbiAgICBjb25zdCBoYXNTbmFwc2hvdCA9IGV4cGVjdGVkICE9PSB1bmRlZmluZWRcbiAgICBjb25zdCBzbmFwc2hvdElzUGVyc2lzdGVkID0gaXNJbmxpbmUgfHwgZnMuZXhpc3RzU3luYyh0aGlzLl9zbmFwc2hvdFBhdGgpXG5cbiAgICBpZiAocGFzcyAmJiAhaXNJbmxpbmUpIHtcbiAgICAgIC8vIEV4ZWN1dGluZyBhIHNuYXBzaG90IGZpbGUgYXMgSmF2YVNjcmlwdCBhbmQgd3JpdGluZyB0aGUgc3RyaW5ncyBiYWNrXG4gICAgICAvLyB3aGVuIG90aGVyIHNuYXBzaG90cyBoYXZlIGNoYW5nZWQgbG9zZXMgdGhlIHByb3BlciBlc2NhcGluZyBmb3Igc29tZVxuICAgICAgLy8gY2hhcmFjdGVycy4gU2luY2Ugd2UgY2hlY2sgZXZlcnkgc25hcHNob3QgaW4gZXZlcnkgdGVzdCwgdXNlIHRoZSBuZXdseVxuICAgICAgLy8gZ2VuZXJhdGVkIGZvcm1hdHRlZCBzdHJpbmcuXG4gICAgICAvLyBOb3RlIHRoYXQgdGhpcyBpcyBvbmx5IHJlbGV2YW50IHdoZW4gYSBzbmFwc2hvdCBpcyBhZGRlZCBhbmQgdGhlIGRpcnR5XG4gICAgICAvLyBmbGFnIGlzIHNldC5cbiAgICAgIHRoaXMuX3NuYXBzaG90RGF0YVtrZXldID0gcmVjZWl2ZWRTZXJpYWxpemVkXG4gICAgfVxuXG4gICAgLy8gVGhlc2UgYXJlIHRoZSBjb25kaXRpb25zIG9uIHdoZW4gdG8gd3JpdGUgc25hcHNob3RzOlxuICAgIC8vICAqIFRoZXJlJ3Mgbm8gc25hcHNob3QgZmlsZSBpbiBhIG5vbi1DSSBlbnZpcm9ubWVudC5cbiAgICAvLyAgKiBUaGVyZSBpcyBhIHNuYXBzaG90IGZpbGUgYW5kIHdlIGRlY2lkZWQgdG8gdXBkYXRlIHRoZSBzbmFwc2hvdC5cbiAgICAvLyAgKiBUaGVyZSBpcyBhIHNuYXBzaG90IGZpbGUsIGJ1dCBpdCBkb2Vzbid0IGhhdmUgdGhpcyBzbmFwc2hvdC5cbiAgICAvLyBUaGVzZSBhcmUgdGhlIGNvbmRpdGlvbnMgb24gd2hlbiBub3QgdG8gd3JpdGUgc25hcHNob3RzOlxuICAgIC8vICAqIFRoZSB1cGRhdGUgZmxhZyBpcyBzZXQgdG8gJ25vbmUnLlxuICAgIC8vICAqIFRoZXJlJ3Mgbm8gc25hcHNob3QgZmlsZSBvciBhIGZpbGUgd2l0aG91dCB0aGlzIHNuYXBzaG90IG9uIGEgQ0kgZW52aXJvbm1lbnQuXG4gICAgaWYgKFxuICAgICAgKGhhc1NuYXBzaG90ICYmIHRoaXMuX3VwZGF0ZVNuYXBzaG90ID09PSAnYWxsJylcbiAgICAgICB8fCAoKCFoYXNTbmFwc2hvdCB8fCAhc25hcHNob3RJc1BlcnNpc3RlZClcbiAgICAgICAgICYmICh0aGlzLl91cGRhdGVTbmFwc2hvdCA9PT0gJ25ldycgfHwgdGhpcy5fdXBkYXRlU25hcHNob3QgPT09ICdhbGwnKSlcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLl91cGRhdGVTbmFwc2hvdCA9PT0gJ2FsbCcpIHtcbiAgICAgICAgaWYgKCFwYXNzKSB7XG4gICAgICAgICAgaWYgKGhhc1NuYXBzaG90KVxuICAgICAgICAgICAgdGhpcy51cGRhdGVkKytcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLmFkZGVkKytcblxuICAgICAgICAgIHRoaXMuX2FkZFNuYXBzaG90KGtleSwgcmVjZWl2ZWRTZXJpYWxpemVkLCB7IGVycm9yLCBpc0lubGluZSB9KVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMubWF0Y2hlZCsrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLl9hZGRTbmFwc2hvdChrZXksIHJlY2VpdmVkU2VyaWFsaXplZCwgeyBlcnJvciwgaXNJbmxpbmUgfSlcbiAgICAgICAgdGhpcy5hZGRlZCsrXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjdHVhbDogJycsXG4gICAgICAgIGNvdW50LFxuICAgICAgICBleHBlY3RlZDogJycsXG4gICAgICAgIGtleSxcbiAgICAgICAgcGFzczogdHJ1ZSxcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpZiAoIXBhc3MpIHtcbiAgICAgICAgdGhpcy51bm1hdGNoZWQrK1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGFjdHVhbDogcmVtb3ZlRXh0cmFMaW5lQnJlYWtzKHJlY2VpdmVkU2VyaWFsaXplZCksXG4gICAgICAgICAgY291bnQsXG4gICAgICAgICAgZXhwZWN0ZWQ6XG4gICAgICAgICAgZXhwZWN0ZWRUcmltbWVkICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gcmVtb3ZlRXh0cmFMaW5lQnJlYWtzKGV4cGVjdGVkVHJpbW1lZClcbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBwYXNzOiBmYWxzZSxcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMubWF0Y2hlZCsrXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYWN0dWFsOiAnJyxcbiAgICAgICAgICBjb3VudCxcbiAgICAgICAgICBleHBlY3RlZDogJycsXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIHBhc3M6IHRydWUsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBwYXRoIGZyb20gJ3BhdGhlJ1xuaW1wb3J0IHsgZXhwZWN0IH0gZnJvbSAnY2hhaSdcbmltcG9ydCB0eXBlIHsgU25hcHNob3RSZXN1bHQsIFRlc3QgfSBmcm9tICcuLi8uLi90eXBlcydcbmltcG9ydCB7IHJwYyB9IGZyb20gJy4uLy4uL3J1bnRpbWUvcnBjJ1xuaW1wb3J0IHsgZ2V0TmFtZXMgfSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCB7IGVxdWFscywgaXRlcmFibGVFcXVhbGl0eSwgc3Vic2V0RXF1YWxpdHkgfSBmcm9tICcuLi9jaGFpL2plc3QtdXRpbHMnXG5pbXBvcnQgeyBkZWVwTWVyZ2VTbmFwc2hvdCB9IGZyb20gJy4vcG9ydC91dGlscydcbmltcG9ydCBTbmFwc2hvdFN0YXRlIGZyb20gJy4vcG9ydC9zdGF0ZSdcblxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0IHtcbiAgZmlsZTogc3RyaW5nXG4gIHRpdGxlPzogc3RyaW5nXG4gIGZ1bGxUaXRsZT86IHN0cmluZ1xufVxuXG5jb25zdCByZXNvbHZlU25hcHNob3RQYXRoID0gKHRlc3RQYXRoOiBzdHJpbmcpID0+XG4gIHBhdGguam9pbihcbiAgICBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKHRlc3RQYXRoKSwgJ19fc25hcHNob3RzX18nKSxcbiAgICBgJHtwYXRoLmJhc2VuYW1lKHRlc3RQYXRoKX0uc25hcGAsXG4gIClcblxuZXhwb3J0IGNsYXNzIFNuYXBzaG90Q2xpZW50IHtcbiAgdGVzdDogVGVzdCB8IHVuZGVmaW5lZFxuICB0ZXN0RmlsZSA9ICcnXG4gIHNuYXBzaG90U3RhdGU6IFNuYXBzaG90U3RhdGUgfCB1bmRlZmluZWRcblxuICBzZXRUZXN0KHRlc3Q6IFRlc3QpIHtcbiAgICB0aGlzLnRlc3QgPSB0ZXN0XG5cbiAgICBpZiAodGhpcy50ZXN0RmlsZSAhPT0gdGhpcy50ZXN0LmZpbGUhLmZpbGVwYXRoKSB7XG4gICAgICBpZiAodGhpcy5zbmFwc2hvdFN0YXRlKVxuICAgICAgICB0aGlzLnNhdmVTbmFwKClcblxuICAgICAgdGhpcy50ZXN0RmlsZSA9IHRoaXMudGVzdCEuZmlsZSEuZmlsZXBhdGhcbiAgICAgIHRoaXMuc25hcHNob3RTdGF0ZSA9IG5ldyBTbmFwc2hvdFN0YXRlKFxuICAgICAgICByZXNvbHZlU25hcHNob3RQYXRoKHRoaXMudGVzdEZpbGUpLFxuICAgICAgICBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fIS5jb25maWcuc25hcHNob3RPcHRpb25zLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGNsZWFyVGVzdCgpIHtcbiAgICB0aGlzLnRlc3QgPSB1bmRlZmluZWRcbiAgfVxuXG4gIGFzc2VydChyZWNlaXZlZDogdW5rbm93biwgbWVzc2FnZT86IHN0cmluZywgaXNJbmxpbmUgPSBmYWxzZSwgcHJvcGVydGllcz86IG9iamVjdCwgaW5saW5lU25hcHNob3Q/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudGVzdClcbiAgICAgIHRocm93IG5ldyBFcnJvcignU25hcHNob3QgY2Fubm90IGJlIHVzZWQgb3V0c2lkZSBvZiB0ZXN0JylcblxuICAgIGlmICh0eXBlb2YgcHJvcGVydGllcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmICh0eXBlb2YgcmVjZWl2ZWQgIT09ICdvYmplY3QnIHx8ICFyZWNlaXZlZClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWNlaXZlZCB2YWx1ZSBtdXN0IGJlIGFuIG9iamVjdCB3aGVuIHRoZSBtYXRjaGVyIGhhcyBwcm9wZXJ0aWVzJylcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGFzcyA9IGVxdWFscyhyZWNlaXZlZCwgcHJvcGVydGllcywgW2l0ZXJhYmxlRXF1YWxpdHksIHN1YnNldEVxdWFsaXR5XSlcbiAgICAgICAgaWYgKCFwYXNzKVxuICAgICAgICAgIGV4cGVjdChyZWNlaXZlZCkuZXF1YWxzKHByb3BlcnRpZXMpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZWNlaXZlZCA9IGRlZXBNZXJnZVNuYXBzaG90KHJlY2VpdmVkLCBwcm9wZXJ0aWVzKVxuICAgICAgfVxuICAgICAgY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgIGVyci5tZXNzYWdlID0gJ1NuYXBzaG90IG1pc21hdGNoZWQnXG4gICAgICAgIHRocm93IGVyclxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHRlc3ROYW1lID0gW1xuICAgICAgLi4uZ2V0TmFtZXModGhpcy50ZXN0KS5zbGljZSgxKSxcbiAgICAgIC4uLihtZXNzYWdlID8gW21lc3NhZ2VdIDogW10pLFxuICAgIF0uam9pbignID4gJylcblxuICAgIGNvbnN0IHsgYWN0dWFsLCBleHBlY3RlZCwga2V5LCBwYXNzIH0gPSB0aGlzLnNuYXBzaG90U3RhdGUhLm1hdGNoKHtcbiAgICAgIHRlc3ROYW1lLFxuICAgICAgcmVjZWl2ZWQsXG4gICAgICBpc0lubGluZSxcbiAgICAgIGlubGluZVNuYXBzaG90LFxuICAgIH0pXG5cbiAgICBpZiAoIXBhc3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGV4cGVjdChhY3R1YWwudHJpbSgpKS5lcXVhbHMoZXhwZWN0ZWQgPyBleHBlY3RlZC50cmltKCkgOiAnJylcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIGVycm9yLm1lc3NhZ2UgPSBgU25hcHNob3QgXFxgJHtrZXkgfHwgJ3Vua25vd24nfVxcYCBtaXNtYXRjaGVkYFxuICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNhdmVTbmFwKCkge1xuICAgIGlmICghdGhpcy50ZXN0RmlsZSB8fCAhdGhpcy5zbmFwc2hvdFN0YXRlKSByZXR1cm5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYWNrU25hcHNob3RTdGF0ZSh0aGlzLnRlc3RGaWxlLCB0aGlzLnNuYXBzaG90U3RhdGUpXG4gICAgYXdhaXQgcnBjKCkuc25hcHNob3RTYXZlZChyZXN1bHQpXG5cbiAgICB0aGlzLnRlc3RGaWxlID0gJydcbiAgICB0aGlzLnNuYXBzaG90U3RhdGUgPSB1bmRlZmluZWRcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFja1NuYXBzaG90U3RhdGUoZmlsZXBhdGg6IHN0cmluZywgc3RhdGU6IFNuYXBzaG90U3RhdGUpOiBQcm9taXNlPFNuYXBzaG90UmVzdWx0PiB7XG4gIGNvbnN0IHNuYXBzaG90OiBTbmFwc2hvdFJlc3VsdCA9IHtcbiAgICBmaWxlcGF0aCxcbiAgICBhZGRlZDogMCxcbiAgICBmaWxlRGVsZXRlZDogZmFsc2UsXG4gICAgbWF0Y2hlZDogMCxcbiAgICB1bmNoZWNrZWQ6IDAsXG4gICAgdW5jaGVja2VkS2V5czogW10sXG4gICAgdW5tYXRjaGVkOiAwLFxuICAgIHVwZGF0ZWQ6IDAsXG4gIH1cbiAgY29uc3QgdW5jaGVja2VkQ291bnQgPSBzdGF0ZS5nZXRVbmNoZWNrZWRDb3VudCgpXG4gIGNvbnN0IHVuY2hlY2tlZEtleXMgPSBzdGF0ZS5nZXRVbmNoZWNrZWRLZXlzKClcbiAgaWYgKHVuY2hlY2tlZENvdW50KVxuICAgIHN0YXRlLnJlbW92ZVVuY2hlY2tlZEtleXMoKVxuXG4gIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHN0YXRlLnNhdmUoKVxuICBzbmFwc2hvdC5maWxlRGVsZXRlZCA9IHN0YXR1cy5kZWxldGVkXG4gIHNuYXBzaG90LmFkZGVkID0gc3RhdGUuYWRkZWRcbiAgc25hcHNob3QubWF0Y2hlZCA9IHN0YXRlLm1hdGNoZWRcbiAgc25hcHNob3QudW5tYXRjaGVkID0gc3RhdGUudW5tYXRjaGVkXG4gIHNuYXBzaG90LnVwZGF0ZWQgPSBzdGF0ZS51cGRhdGVkXG4gIHNuYXBzaG90LnVuY2hlY2tlZCA9ICFzdGF0dXMuZGVsZXRlZCA/IHVuY2hlY2tlZENvdW50IDogMFxuICBzbmFwc2hvdC51bmNoZWNrZWRLZXlzID0gQXJyYXkuZnJvbSh1bmNoZWNrZWRLZXlzKVxuXG4gIHJldHVybiBzbmFwc2hvdFxufVxuIiwiaW1wb3J0IHR5cGUgeyBDaGFpUGx1Z2luIH0gZnJvbSAnLi4vY2hhaS90eXBlcydcbmltcG9ydCB7IFNuYXBzaG90Q2xpZW50IH0gZnJvbSAnLi9jbGllbnQnXG5pbXBvcnQgeyBzdHJpcFNuYXBzaG90SW5kZW50YXRpb24gfSBmcm9tICcuL3BvcnQvaW5saW5lU25hcHNob3QnXG5cbmxldCBfY2xpZW50OiBTbmFwc2hvdENsaWVudFxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U25hcHNob3RDbGllbnQoKTogU25hcHNob3RDbGllbnQge1xuICBpZiAoIV9jbGllbnQpXG4gICAgX2NsaWVudCA9IG5ldyBTbmFwc2hvdENsaWVudCgpXG4gIHJldHVybiBfY2xpZW50XG59XG5cbmNvbnN0IGdldEVycm9yU3RyaW5nID0gKGV4cGVjdGVkOiAoKSA9PiB2b2lkKSA9PiB7XG4gIHRyeSB7XG4gICAgZXhwZWN0ZWQoKVxuICB9XG4gIGNhdGNoIChlKSB7XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcilcbiAgICAgIHJldHVybiBlLm1lc3NhZ2VcblxuICAgIHJldHVybiBlXG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ3NuYXBzaG90IGZ1bmN0aW9uIGRpZG5cXCd0IHRocmV3Jylcbn1cblxuZXhwb3J0IGNvbnN0IFNuYXBzaG90UGx1Z2luOiBDaGFpUGx1Z2luID0gKGNoYWksIHV0aWxzKSA9PiB7XG4gIGZvciAoY29uc3Qga2V5IG9mIFsnbWF0Y2hTbmFwc2hvdCcsICd0b01hdGNoU25hcHNob3QnXSkge1xuICAgIHV0aWxzLmFkZE1ldGhvZChcbiAgICAgIGNoYWkuQXNzZXJ0aW9uLnByb3RvdHlwZSxcbiAgICAgIGtleSxcbiAgICAgIGZ1bmN0aW9uKHRoaXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBwcm9wZXJ0aWVzPzogb2JqZWN0LCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGV4cGVjdGVkID0gdXRpbHMuZmxhZyh0aGlzLCAnb2JqZWN0JylcbiAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0aWVzID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgbWVzc2FnZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBtZXNzYWdlID0gcHJvcGVydGllc1xuICAgICAgICAgIHByb3BlcnRpZXMgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICBnZXRTbmFwc2hvdENsaWVudCgpLmFzc2VydChleHBlY3RlZCwgbWVzc2FnZSwgZmFsc2UsIHByb3BlcnRpZXMpXG4gICAgICB9LFxuICAgIClcbiAgfVxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5Bc3NlcnRpb24ucHJvdG90eXBlLFxuICAgICd0b01hdGNoSW5saW5lU25hcHNob3QnLFxuICAgIGZ1bmN0aW9uIF9fVklURVNUX0lOTElORV9TTkFQU0hPVF9fKHRoaXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBwcm9wZXJ0aWVzPzogb2JqZWN0LCBpbmxpbmVTbmFwc2hvdD86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykge1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB1dGlscy5mbGFnKHRoaXMsICdvYmplY3QnKVxuICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0aWVzID09PSAnc3RyaW5nJykge1xuICAgICAgICBtZXNzYWdlID0gaW5saW5lU25hcHNob3RcbiAgICAgICAgaW5saW5lU25hcHNob3QgPSBwcm9wZXJ0aWVzXG4gICAgICAgIHByb3BlcnRpZXMgPSB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIGlmIChpbmxpbmVTbmFwc2hvdClcbiAgICAgICAgaW5saW5lU25hcHNob3QgPSBzdHJpcFNuYXBzaG90SW5kZW50YXRpb24oaW5saW5lU25hcHNob3QpXG4gICAgICBnZXRTbmFwc2hvdENsaWVudCgpLmFzc2VydChleHBlY3RlZCwgbWVzc2FnZSwgdHJ1ZSwgcHJvcGVydGllcywgaW5saW5lU25hcHNob3QpXG4gICAgfSxcbiAgKVxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5Bc3NlcnRpb24ucHJvdG90eXBlLFxuICAgICd0b1Rocm93RXJyb3JNYXRjaGluZ1NuYXBzaG90JyxcbiAgICBmdW5jdGlvbih0aGlzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgbWVzc2FnZT86IHN0cmluZykge1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB1dGlscy5mbGFnKHRoaXMsICdvYmplY3QnKVxuICAgICAgZ2V0U25hcHNob3RDbGllbnQoKS5hc3NlcnQoZ2V0RXJyb3JTdHJpbmcoZXhwZWN0ZWQpLCBtZXNzYWdlKVxuICAgIH0sXG4gIClcbiAgdXRpbHMuYWRkTWV0aG9kKFxuICAgIGNoYWkuQXNzZXJ0aW9uLnByb3RvdHlwZSxcbiAgICAndG9UaHJvd0Vycm9yTWF0Y2hpbmdJbmxpbmVTbmFwc2hvdCcsXG4gICAgZnVuY3Rpb24gX19WSVRFU1RfSU5MSU5FX1NOQVBTSE9UX18odGhpczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGlubGluZVNuYXBzaG90OiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB1dGlscy5mbGFnKHRoaXMsICdvYmplY3QnKVxuICAgICAgZ2V0U25hcHNob3RDbGllbnQoKS5hc3NlcnQoZ2V0RXJyb3JTdHJpbmcoZXhwZWN0ZWQpLCBtZXNzYWdlLCB0cnVlLCB1bmRlZmluZWQsIGlubGluZVNuYXBzaG90KVxuICAgIH0sXG4gIClcbn1cbiIsIi8vIHdlIGFyZSB1c2luZyBvbmx5IHRoZSBvbmVzIG5lZWRlZCBieSBAdGVzdGluZy1saWJyYXJ5L2plc3QtZG9tXG4vLyBpZiB5b3UgbmVlZCBtb3JlLCBqdXN0IGFza1xuXG5pbXBvcnQgYyBmcm9tICdwaWNvY29sb3JzJ1xuaW1wb3J0IHR5cGUgeyBGb3JtYXR0ZXIgfSBmcm9tICdwaWNvY29sb3JzL3R5cGVzJ1xuaW1wb3J0IHsgZm9ybWF0IGFzIHByZXR0eUZvcm1hdCwgcGx1Z2lucyBhcyBwcmV0dHlGb3JtYXRQbHVnaW5zIH0gZnJvbSAncHJldHR5LWZvcm1hdCdcbmltcG9ydCB7IHVuaWZpZWREaWZmIH0gZnJvbSAnLi4vLi4vbm9kZS9yZXBvcnRlcnMvcmVuZGVyZXJzL2RpZmYnXG5cbmV4cG9ydCBjb25zdCBFWFBFQ1RFRF9DT0xPUiA9IGMuZ3JlZW5cbmV4cG9ydCBjb25zdCBSRUNFSVZFRF9DT0xPUiA9IGMucmVkXG5leHBvcnQgY29uc3QgSU5WRVJURURfQ09MT1IgPSBjLmludmVyc2VcbmV4cG9ydCBjb25zdCBCT0xEX1dFSUdIVCA9IGMuYm9sZFxuZXhwb3J0IGNvbnN0IERJTV9DT0xPUiA9IGMuZGltXG5cbmNvbnN0IHtcbiAgQXN5bW1ldHJpY01hdGNoZXIsXG4gIERPTUNvbGxlY3Rpb24sXG4gIERPTUVsZW1lbnQsXG4gIEltbXV0YWJsZSxcbiAgUmVhY3RFbGVtZW50LFxuICBSZWFjdFRlc3RDb21wb25lbnQsXG59ID0gcHJldHR5Rm9ybWF0UGx1Z2luc1xuXG5jb25zdCBQTFVHSU5TID0gW1xuICBSZWFjdFRlc3RDb21wb25lbnQsXG4gIFJlYWN0RWxlbWVudCxcbiAgRE9NRWxlbWVudCxcbiAgRE9NQ29sbGVjdGlvbixcbiAgSW1tdXRhYmxlLFxuICBBc3ltbWV0cmljTWF0Y2hlcixcbl1cblxuZXhwb3J0IGludGVyZmFjZSBNYXRjaGVySGludE9wdGlvbnMge1xuICBjb21tZW50Pzogc3RyaW5nXG4gIGV4cGVjdGVkQ29sb3I/OiBGb3JtYXR0ZXJcbiAgaXNEaXJlY3RFeHBlY3RDYWxsPzogYm9vbGVhblxuICBpc05vdD86IGJvb2xlYW5cbiAgcHJvbWlzZT86IHN0cmluZ1xuICByZWNlaXZlZENvbG9yPzogRm9ybWF0dGVyXG4gIHNlY29uZEFyZ3VtZW50Pzogc3RyaW5nXG4gIHNlY29uZEFyZ3VtZW50Q29sb3I/OiBGb3JtYXR0ZXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoZXJIaW50KFxuICBtYXRjaGVyTmFtZTogc3RyaW5nLFxuICByZWNlaXZlZCA9ICdyZWNlaXZlZCcsXG4gIGV4cGVjdGVkID0gJ2V4cGVjdGVkJyxcbiAgb3B0aW9uczogTWF0Y2hlckhpbnRPcHRpb25zID0ge30sXG4pIHtcbiAgY29uc3Qge1xuICAgIGNvbW1lbnQgPSAnJyxcbiAgICBleHBlY3RlZENvbG9yID0gRVhQRUNURURfQ09MT1IsXG4gICAgaXNEaXJlY3RFeHBlY3RDYWxsID0gZmFsc2UsIC8vIHNlZW1zIHJlZHVuZGFudCB3aXRoIHJlY2VpdmVkID09PSAnJ1xuICAgIGlzTm90ID0gZmFsc2UsXG4gICAgcHJvbWlzZSA9ICcnLFxuICAgIHJlY2VpdmVkQ29sb3IgPSBSRUNFSVZFRF9DT0xPUixcbiAgICBzZWNvbmRBcmd1bWVudCA9ICcnLFxuICAgIHNlY29uZEFyZ3VtZW50Q29sb3IgPSBFWFBFQ1RFRF9DT0xPUixcbiAgfSA9IG9wdGlvbnNcbiAgbGV0IGhpbnQgPSAnJ1xuICBsZXQgZGltU3RyaW5nID0gJ2V4cGVjdCcgLy8gY29uY2F0ZW5hdGUgYWRqYWNlbnQgZGltIHN1YnN0cmluZ3NcblxuICBpZiAoIWlzRGlyZWN0RXhwZWN0Q2FsbCAmJiByZWNlaXZlZCAhPT0gJycpIHtcbiAgICBoaW50ICs9IERJTV9DT0xPUihgJHtkaW1TdHJpbmd9KGApICsgcmVjZWl2ZWRDb2xvcihyZWNlaXZlZClcbiAgICBkaW1TdHJpbmcgPSAnKSdcbiAgfVxuXG4gIGlmIChwcm9taXNlICE9PSAnJykge1xuICAgIGhpbnQgKz0gRElNX0NPTE9SKGAke2RpbVN0cmluZ30uYCkgKyBwcm9taXNlXG4gICAgZGltU3RyaW5nID0gJydcbiAgfVxuXG4gIGlmIChpc05vdCkge1xuICAgIGhpbnQgKz0gYCR7RElNX0NPTE9SKGAke2RpbVN0cmluZ30uYCl9bm90YFxuICAgIGRpbVN0cmluZyA9ICcnXG4gIH1cblxuICBpZiAobWF0Y2hlck5hbWUuaW5jbHVkZXMoJy4nKSkge1xuICAgIC8vIE9sZCBmb3JtYXQ6IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LFxuICAgIC8vIGVzcGVjaWFsbHkgd2l0aG91dCBwcm9taXNlIG9yIGlzTm90IG9wdGlvbnNcbiAgICBkaW1TdHJpbmcgKz0gbWF0Y2hlck5hbWVcbiAgfVxuICBlbHNlIHtcbiAgICAvLyBOZXcgZm9ybWF0OiBvbWl0IHBlcmlvZCBmcm9tIG1hdGNoZXJOYW1lIGFyZ1xuICAgIGhpbnQgKz0gRElNX0NPTE9SKGAke2RpbVN0cmluZ30uYCkgKyBtYXRjaGVyTmFtZVxuICAgIGRpbVN0cmluZyA9ICcnXG4gIH1cblxuICBpZiAoZXhwZWN0ZWQgPT09ICcnKSB7XG4gICAgZGltU3RyaW5nICs9ICcoKSdcbiAgfVxuICBlbHNlIHtcbiAgICBoaW50ICs9IERJTV9DT0xPUihgJHtkaW1TdHJpbmd9KGApICsgZXhwZWN0ZWRDb2xvcihleHBlY3RlZClcbiAgICBpZiAoc2Vjb25kQXJndW1lbnQpXG4gICAgICBoaW50ICs9IERJTV9DT0xPUignLCAnKSArIHNlY29uZEFyZ3VtZW50Q29sb3Ioc2Vjb25kQXJndW1lbnQpXG4gICAgZGltU3RyaW5nID0gJyknXG4gIH1cblxuICBpZiAoY29tbWVudCAhPT0gJycpXG4gICAgZGltU3RyaW5nICs9IGAgLy8gJHtjb21tZW50fWBcblxuICBpZiAoZGltU3RyaW5nICE9PSAnJylcbiAgICBoaW50ICs9IERJTV9DT0xPUihkaW1TdHJpbmcpXG5cbiAgcmV0dXJuIGhpbnRcbn1cblxuY29uc3QgU1BBQ0VfU1lNQk9MID0gJ1xcdXswMEI3fScgLy8gbWlkZGxlIGRvdFxuXG4vLyBJbnN0ZWFkIG9mIGludmVyc2UgaGlnaGxpZ2h0IHdoaWNoIG5vdyBpbXBsaWVzIGEgY2hhbmdlLFxuLy8gcmVwbGFjZSBjb21tb24gc3BhY2VzIHdpdGggbWlkZGxlIGRvdCBhdCB0aGUgZW5kIG9mIGFueSBsaW5lLlxuY29uc3QgcmVwbGFjZVRyYWlsaW5nU3BhY2VzID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICB0ZXh0LnJlcGxhY2UoL1xccyskL2dtLCBzcGFjZXMgPT4gU1BBQ0VfU1lNQk9MLnJlcGVhdChzcGFjZXMubGVuZ3RoKSlcblxuZXhwb3J0IGNvbnN0IHN0cmluZ2lmeSA9IChvYmplY3Q6IHVua25vd24sIG1heERlcHRoID0gMTApOiBzdHJpbmcgPT4ge1xuICBjb25zdCBNQVhfTEVOR1RIID0gMTAwMDBcbiAgbGV0IHJlc3VsdFxuXG4gIHRyeSB7XG4gICAgcmVzdWx0ID0gcHJldHR5Rm9ybWF0KG9iamVjdCwge1xuICAgICAgbWF4RGVwdGgsXG4gICAgICAvLyBtaW46IHRydWUsXG4gICAgICBwbHVnaW5zOiBQTFVHSU5TLFxuICAgIH0pXG4gIH1cbiAgY2F0Y2gge1xuICAgIHJlc3VsdCA9IHByZXR0eUZvcm1hdChvYmplY3QsIHtcbiAgICAgIGNhbGxUb0pTT046IGZhbHNlLFxuICAgICAgbWF4RGVwdGgsXG4gICAgICAvLyBtaW46IHRydWUsXG4gICAgICBwbHVnaW5zOiBQTFVHSU5TLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gcmVzdWx0Lmxlbmd0aCA+PSBNQVhfTEVOR1RIICYmIG1heERlcHRoID4gMVxuICAgID8gc3RyaW5naWZ5KG9iamVjdCwgTWF0aC5mbG9vcihtYXhEZXB0aCAvIDIpKVxuICAgIDogcmVzdWx0XG59XG5cbmV4cG9ydCBjb25zdCBwcmludFJlY2VpdmVkID0gKG9iamVjdDogdW5rbm93bik6IHN0cmluZyA9PlxuICBSRUNFSVZFRF9DT0xPUihyZXBsYWNlVHJhaWxpbmdTcGFjZXMoc3RyaW5naWZ5KG9iamVjdCkpKVxuZXhwb3J0IGNvbnN0IHByaW50RXhwZWN0ZWQgPSAodmFsdWU6IHVua25vd24pOiBzdHJpbmcgPT5cbiAgRVhQRUNURURfQ09MT1IocmVwbGFjZVRyYWlsaW5nU3BhY2VzKHN0cmluZ2lmeSh2YWx1ZSkpKVxuXG5leHBvcnQgaW50ZXJmYWNlIERpZmZPcHRpb25zIHtcbiAgYUFubm90YXRpb24/OiBzdHJpbmdcbiAgYUNvbG9yPzogRm9ybWF0dGVyXG4gIGFJbmRpY2F0b3I/OiBzdHJpbmdcbiAgYkFubm90YXRpb24/OiBzdHJpbmdcbiAgYkNvbG9yPzogRm9ybWF0dGVyXG4gIGJJbmRpY2F0b3I/OiBzdHJpbmdcbiAgY2hhbmdlQ29sb3I/OiBGb3JtYXR0ZXJcbiAgY2hhbmdlTGluZVRyYWlsaW5nU3BhY2VDb2xvcj86IEZvcm1hdHRlclxuICBjb21tb25Db2xvcj86IEZvcm1hdHRlclxuICBjb21tb25JbmRpY2F0b3I/OiBzdHJpbmdcbiAgY29tbW9uTGluZVRyYWlsaW5nU3BhY2VDb2xvcj86IEZvcm1hdHRlclxuICBjb250ZXh0TGluZXM/OiBudW1iZXJcbiAgZW1wdHlGaXJzdE9yTGFzdExpbmVQbGFjZWhvbGRlcj86IHN0cmluZ1xuICBleHBhbmQ/OiBib29sZWFuXG4gIGluY2x1ZGVDaGFuZ2VDb3VudHM/OiBib29sZWFuXG4gIG9taXRBbm5vdGF0aW9uTGluZXM/OiBib29sZWFuXG4gIHBhdGNoQ29sb3I/OiBGb3JtYXR0ZXJcbiAgLy8gcHJldHR5LWZvcm1hdCB0eXBlXG4gIGNvbXBhcmVLZXlzPzogYW55XG59XG5cbi8vIFRPRE86IGRvIHNvbWV0aGluZyB3aXRoIG9wdGlvbnNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmV4cG9ydCBmdW5jdGlvbiBkaWZmKGE6IGFueSwgYjogYW55LCBvcHRpb25zPzogRGlmZk9wdGlvbnMpIHtcbiAgcmV0dXJuIHVuaWZpZWREaWZmKHN0cmluZ2lmeShhKSwgc3RyaW5naWZ5KGIpKVxufVxuIiwiaW1wb3J0IGNoYWksIHsgdXRpbCB9IGZyb20gJ2NoYWknXG5pbXBvcnQgeyBnZXRTdGF0ZSB9IGZyb20gJy4vamVzdC1leHBlY3QnXG5cbmltcG9ydCAqIGFzIG1hdGNoZXJVdGlscyBmcm9tICcuL2plc3QtbWF0Y2hlci11dGlscydcblxuaW1wb3J0IHtcbiAgZXF1YWxzLFxuICBpdGVyYWJsZUVxdWFsaXR5LFxuICBzdWJzZXRFcXVhbGl0eSxcbn0gZnJvbSAnLi9qZXN0LXV0aWxzJ1xuaW1wb3J0IHR5cGUge1xuICBDaGFpUGx1Z2luLFxuICBNYXRjaGVyU3RhdGUsXG4gIE1hdGNoZXJzT2JqZWN0LFxuICBTeW5jRXhwZWN0YXRpb25SZXN1bHQsXG59IGZyb20gJy4vdHlwZXMnXG5cbmNvbnN0IGlzQXN5bmNGdW5jdGlvbiA9IChmbjogdW5rbm93bikgPT5cbiAgdHlwZW9mIGZuID09PSAnZnVuY3Rpb24nICYmIChmbiBhcyBhbnkpW1N5bWJvbC50b1N0cmluZ1RhZ10gPT09ICdBc3luY0Z1bmN0aW9uJ1xuXG5jb25zdCBnZXRNYXRjaGVyU3RhdGUgPSAoYXNzZXJ0aW9uOiBDaGFpLkFzc2VydGlvblN0YXRpYyAmIENoYWkuQXNzZXJ0aW9uKSA9PiB7XG4gIGNvbnN0IG9iaiA9IGFzc2VydGlvbi5fb2JqXG4gIGNvbnN0IGlzTm90ID0gdXRpbC5mbGFnKGFzc2VydGlvbiwgJ25lZ2F0ZScpIGFzIGJvb2xlYW5cbiAgY29uc3QgcHJvbWlzZSA9IHV0aWwuZmxhZyhhc3NlcnRpb24sICdwcm9taXNlJykgfHwgJydcbiAgY29uc3QgamVzdFV0aWxzID0ge1xuICAgIC4uLm1hdGNoZXJVdGlscyxcbiAgICBpdGVyYWJsZUVxdWFsaXR5LFxuICAgIHN1YnNldEVxdWFsaXR5LFxuICB9XG5cbiAgY29uc3QgbWF0Y2hlclN0YXRlOiBNYXRjaGVyU3RhdGUgPSB7XG4gICAgLi4uZ2V0U3RhdGUoKSxcbiAgICBpc05vdCxcbiAgICB1dGlsczogamVzdFV0aWxzLFxuICAgIHByb21pc2UsXG4gICAgZXF1YWxzLFxuICAgIC8vIG5lZWRlZCBmb3IgYnVpbHQtaW4gamVzdC1zbmFwc2hvdHMsIGJ1dCB3ZSBkb24ndCB1c2UgaXRcbiAgICBzdXBwcmVzc2VkRXJyb3JzOiBbXSxcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3RhdGU6IG1hdGNoZXJTdGF0ZSxcbiAgICBpc05vdCxcbiAgICBvYmosXG4gIH1cbn1cblxuY2xhc3MgSmVzdEV4dGVuZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHB1YmxpYyBhY3R1YWw/OiBhbnksIHB1YmxpYyBleHBlY3RlZD86IGFueSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gIH1cbn1cblxuZnVuY3Rpb24gSmVzdEV4dGVuZFBsdWdpbihleHBlY3RzOiBNYXRjaGVyc09iamVjdCk6IENoYWlQbHVnaW4ge1xuICByZXR1cm4gKGMsIHV0aWxzKSA9PiB7XG4gICAgT2JqZWN0LmVudHJpZXMoZXhwZWN0cykuZm9yRWFjaCgoW2V4cGVjdEFzc2VydGlvbk5hbWUsIGV4cGVjdEFzc2VydGlvbl0pID0+IHtcbiAgICAgIGZ1bmN0aW9uIGV4cGVjdFN5bmNXcmFwcGVyKHRoaXM6IENoYWkuQXNzZXJ0aW9uU3RhdGljICYgQ2hhaS5Bc3NlcnRpb24sIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgIGNvbnN0IHsgc3RhdGUsIGlzTm90LCBvYmogfSA9IGdldE1hdGNoZXJTdGF0ZSh0aGlzKVxuXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYXJncyB3YW50aW5nIHR1cGxlXG4gICAgICAgIGNvbnN0IHsgcGFzcywgbWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCB9ID0gZXhwZWN0QXNzZXJ0aW9uLmNhbGwoc3RhdGUsIG9iaiwgLi4uYXJncykgYXMgU3luY0V4cGVjdGF0aW9uUmVzdWx0XG5cbiAgICAgICAgaWYgKChwYXNzICYmIGlzTm90KSB8fCAoIXBhc3MgJiYgIWlzTm90KSlcbiAgICAgICAgICB0aHJvdyBuZXcgSmVzdEV4dGVuZEVycm9yKG1lc3NhZ2UoKSwgYWN0dWFsLCBleHBlY3RlZClcbiAgICAgIH1cblxuICAgICAgYXN5bmMgZnVuY3Rpb24gZXhwZWN0QXN5bmNXcmFwcGVyKHRoaXM6IENoYWkuQXNzZXJ0aW9uU3RhdGljICYgQ2hhaS5Bc3NlcnRpb24sIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgIGNvbnN0IHsgc3RhdGUsIGlzTm90LCBvYmogfSA9IGdldE1hdGNoZXJTdGF0ZSh0aGlzKVxuXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYXJncyB3YW50aW5nIHR1cGxlXG4gICAgICAgIGNvbnN0IHsgcGFzcywgbWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCB9ID0gYXdhaXQgZXhwZWN0QXNzZXJ0aW9uLmNhbGwoc3RhdGUsIG9iaiwgLi4uYXJncykgYXMgU3luY0V4cGVjdGF0aW9uUmVzdWx0XG5cbiAgICAgICAgaWYgKChwYXNzICYmIGlzTm90KSB8fCAoIXBhc3MgJiYgIWlzTm90KSlcbiAgICAgICAgICB0aHJvdyBuZXcgSmVzdEV4dGVuZEVycm9yKG1lc3NhZ2UoKSwgYWN0dWFsLCBleHBlY3RlZClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXhwZWN0QXNzZXJ0aW9uV3JhcHBlciA9IGlzQXN5bmNGdW5jdGlvbihleHBlY3RBc3NlcnRpb24pID8gZXhwZWN0QXN5bmNXcmFwcGVyIDogZXhwZWN0U3luY1dyYXBwZXJcblxuICAgICAgdXRpbHMuYWRkTWV0aG9kKGNoYWkuQXNzZXJ0aW9uLnByb3RvdHlwZSwgZXhwZWN0QXNzZXJ0aW9uTmFtZSwgZXhwZWN0QXNzZXJ0aW9uV3JhcHBlcilcbiAgICB9KVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBKZXN0RXh0ZW5kOiBDaGFpUGx1Z2luID0gKGNoYWksIHV0aWxzKSA9PiB7XG4gIHV0aWxzLmFkZE1ldGhvZChjaGFpLmV4cGVjdCwgJ2V4dGVuZCcsIChleHBlY3RzOiBNYXRjaGVyc09iamVjdCkgPT4ge1xuICAgIGNoYWkudXNlKEplc3RFeHRlbmRQbHVnaW4oZXhwZWN0cykpXG4gIH0pXG59XG4iLCJpbXBvcnQgKiBhcyBtYXRjaGVyVXRpbHMgZnJvbSAnLi9qZXN0LW1hdGNoZXItdXRpbHMnXG5cbmltcG9ydCB7IGVxdWFscywgaXNBIH0gZnJvbSAnLi9qZXN0LXV0aWxzJ1xuaW1wb3J0IHR5cGUgeyBDaGFpUGx1Z2luLCBNYXRjaGVyU3RhdGUgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEFzeW1tZXRyaWNNYXRjaGVySW50ZXJmYWNlIHtcbiAgYXN5bW1ldHJpY01hdGNoKG90aGVyOiB1bmtub3duKTogYm9vbGVhblxuICB0b1N0cmluZygpOiBzdHJpbmdcbiAgZ2V0RXhwZWN0ZWRUeXBlPygpOiBzdHJpbmdcbiAgdG9Bc3ltbWV0cmljTWF0Y2hlcj8oKTogc3RyaW5nXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBc3ltbWV0cmljTWF0Y2hlcjxcbiAgVCxcbiAgU3RhdGUgZXh0ZW5kcyBNYXRjaGVyU3RhdGUgPSBNYXRjaGVyU3RhdGUsXG4+IGltcGxlbWVudHMgQXN5bW1ldHJpY01hdGNoZXJJbnRlcmZhY2Uge1xuICAkJHR5cGVvZiA9IFN5bWJvbC5mb3IoJ2plc3QuYXN5bW1ldHJpY01hdGNoZXInKVxuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzYW1wbGU6IFQsIHByb3RlY3RlZCBpbnZlcnNlID0gZmFsc2UpIHt9XG5cbiAgcHJvdGVjdGVkIGdldE1hdGNoZXJDb250ZXh0KCk6IFN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXF1YWxzLFxuICAgICAgaXNOb3Q6IHRoaXMuaW52ZXJzZSxcbiAgICAgIHV0aWxzOiBtYXRjaGVyVXRpbHMsXG4gICAgfSBhcyBhbnlcbiAgfVxuXG4gIGFic3RyYWN0IGFzeW1tZXRyaWNNYXRjaChvdGhlcjogdW5rbm93bik6IGJvb2xlYW5cbiAgYWJzdHJhY3QgdG9TdHJpbmcoKTogc3RyaW5nXG4gIGdldEV4cGVjdGVkVHlwZT8oKTogc3RyaW5nXG4gIHRvQXN5bW1ldHJpY01hdGNoZXI/KCk6IHN0cmluZ1xufVxuXG5leHBvcnQgY2xhc3MgU3RyaW5nQ29udGFpbmluZyBleHRlbmRzIEFzeW1tZXRyaWNNYXRjaGVyPHN0cmluZz4ge1xuICBjb25zdHJ1Y3RvcihzYW1wbGU6IHN0cmluZywgaW52ZXJzZSA9IGZhbHNlKSB7XG4gICAgaWYgKCFpc0EoJ1N0cmluZycsIHNhbXBsZSkpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGlzIG5vdCBhIHN0cmluZycpXG5cbiAgICBzdXBlcihzYW1wbGUsIGludmVyc2UpXG4gIH1cblxuICBhc3ltbWV0cmljTWF0Y2gob3RoZXI6IHN0cmluZykge1xuICAgIGNvbnN0IHJlc3VsdCA9IGlzQSgnU3RyaW5nJywgb3RoZXIpICYmIG90aGVyLmluY2x1ZGVzKHRoaXMuc2FtcGxlKVxuXG4gICAgcmV0dXJuIHRoaXMuaW52ZXJzZSA/ICFyZXN1bHQgOiByZXN1bHRcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBgU3RyaW5nJHt0aGlzLmludmVyc2UgPyAnTm90JyA6ICcnfUNvbnRhaW5pbmdgXG4gIH1cblxuICBnZXRFeHBlY3RlZFR5cGUoKSB7XG4gICAgcmV0dXJuICdzdHJpbmcnXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFueXRoaW5nIGV4dGVuZHMgQXN5bW1ldHJpY01hdGNoZXI8dm9pZD4ge1xuICBhc3ltbWV0cmljTWF0Y2gob3RoZXI6IHVua25vd24pIHtcbiAgICByZXR1cm4gb3RoZXIgIT0gbnVsbFxuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICdBbnl0aGluZydcbiAgfVxuXG4gIHRvQXN5bW1ldHJpY01hdGNoZXIoKSB7XG4gICAgcmV0dXJuICdBbnl0aGluZydcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT2JqZWN0Q29udGFpbmluZyBleHRlbmRzIEFzeW1tZXRyaWNNYXRjaGVyPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIGNvbnN0cnVjdG9yKHNhbXBsZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGludmVyc2UgPSBmYWxzZSkge1xuICAgIHN1cGVyKHNhbXBsZSwgaW52ZXJzZSlcbiAgfVxuXG4gIGdldFByb3RvdHlwZShvYmo6IG9iamVjdCkge1xuICAgIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2YpXG4gICAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iailcblxuICAgIGlmIChvYmouY29uc3RydWN0b3IucHJvdG90eXBlID09PSBvYmopXG4gICAgICByZXR1cm4gbnVsbFxuXG4gICAgcmV0dXJuIG9iai5jb25zdHJ1Y3Rvci5wcm90b3R5cGVcbiAgfVxuXG4gIGhhc1Byb3BlcnR5KG9iajogb2JqZWN0IHwgbnVsbCwgcHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghb2JqKVxuICAgICAgcmV0dXJuIGZhbHNlXG5cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcGVydHkpKVxuICAgICAgcmV0dXJuIHRydWVcblxuICAgIHJldHVybiB0aGlzLmhhc1Byb3BlcnR5KHRoaXMuZ2V0UHJvdG90eXBlKG9iaiksIHByb3BlcnR5KVxuICB9XG5cbiAgYXN5bW1ldHJpY01hdGNoKG90aGVyOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuc2FtcGxlICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgYFlvdSBtdXN0IHByb3ZpZGUgYW4gb2JqZWN0IHRvICR7dGhpcy50b1N0cmluZygpfSwgbm90ICcke1xuICAgICAgICAgIHR5cGVvZiB0aGlzLnNhbXBsZVxuICAgICAgICB9Jy5gLFxuICAgICAgKVxuICAgIH1cblxuICAgIGxldCByZXN1bHQgPSB0cnVlXG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIHRoaXMuc2FtcGxlKSB7XG4gICAgICBpZiAoIXRoaXMuaGFzUHJvcGVydHkob3RoZXIsIHByb3BlcnR5KSB8fCAhZXF1YWxzKHRoaXMuc2FtcGxlW3Byb3BlcnR5XSwgb3RoZXJbcHJvcGVydHldKSkge1xuICAgICAgICByZXN1bHQgPSBmYWxzZVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmludmVyc2UgPyAhcmVzdWx0IDogcmVzdWx0XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYE9iamVjdCR7dGhpcy5pbnZlcnNlID8gJ05vdCcgOiAnJ31Db250YWluaW5nYFxuICB9XG5cbiAgZ2V0RXhwZWN0ZWRUeXBlKCkge1xuICAgIHJldHVybiAnb2JqZWN0J1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcnJheUNvbnRhaW5pbmcgZXh0ZW5kcyBBc3ltbWV0cmljTWF0Y2hlcjxBcnJheTx1bmtub3duPj4ge1xuICBjb25zdHJ1Y3RvcihzYW1wbGU6IEFycmF5PHVua25vd24+LCBpbnZlcnNlID0gZmFsc2UpIHtcbiAgICBzdXBlcihzYW1wbGUsIGludmVyc2UpXG4gIH1cblxuICBhc3ltbWV0cmljTWF0Y2gob3RoZXI6IEFycmF5PHVua25vd24+KSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuc2FtcGxlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgYFlvdSBtdXN0IHByb3ZpZGUgYW4gYXJyYXkgdG8gJHt0aGlzLnRvU3RyaW5nKCl9LCBub3QgJyR7XG4gICAgICAgICAgdHlwZW9mIHRoaXMuc2FtcGxlXG4gICAgICAgIH0nLmAsXG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0XG4gICAgICA9IHRoaXMuc2FtcGxlLmxlbmd0aCA9PT0gMFxuICAgICAgfHwgKEFycmF5LmlzQXJyYXkob3RoZXIpXG4gICAgICAgICYmIHRoaXMuc2FtcGxlLmV2ZXJ5KGl0ZW0gPT5cbiAgICAgICAgICBvdGhlci5zb21lKGFub3RoZXIgPT4gZXF1YWxzKGl0ZW0sIGFub3RoZXIpKSxcbiAgICAgICAgKSlcblxuICAgIHJldHVybiB0aGlzLmludmVyc2UgPyAhcmVzdWx0IDogcmVzdWx0XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYEFycmF5JHt0aGlzLmludmVyc2UgPyAnTm90JyA6ICcnfUNvbnRhaW5pbmdgXG4gIH1cblxuICBnZXRFeHBlY3RlZFR5cGUoKSB7XG4gICAgcmV0dXJuICdhcnJheSdcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQW55IGV4dGVuZHMgQXN5bW1ldHJpY01hdGNoZXI8YW55PiB7XG4gIGNvbnN0cnVjdG9yKHNhbXBsZTogdW5rbm93bikge1xuICAgIGlmICh0eXBlb2Ygc2FtcGxlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgJ2FueSgpIGV4cGVjdHMgdG8gYmUgcGFzc2VkIGEgY29uc3RydWN0b3IgZnVuY3Rpb24uICdcbiAgICAgICAgICArICdQbGVhc2UgcGFzcyBvbmUgb3IgdXNlIGFueXRoaW5nKCkgdG8gbWF0Y2ggYW55IG9iamVjdC4nLFxuICAgICAgKVxuICAgIH1cbiAgICBzdXBlcihzYW1wbGUpXG4gIH1cblxuICBmbk5hbWVGb3IoZnVuYzogRnVuY3Rpb24pIHtcbiAgICBpZiAoZnVuYy5uYW1lKVxuICAgICAgcmV0dXJuIGZ1bmMubmFtZVxuXG4gICAgY29uc3QgZnVuY3Rpb25Ub1N0cmluZyA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZ1xuXG4gICAgY29uc3QgbWF0Y2hlcyA9IGZ1bmN0aW9uVG9TdHJpbmdcbiAgICAgIC5jYWxsKGZ1bmMpXG4gICAgICAubWF0Y2goL14oPzphc3luYyk/XFxzKmZ1bmN0aW9uXFxzKlxcKj9cXHMqKFtcXHckXSspXFxzKlxcKC8pXG4gICAgcmV0dXJuIG1hdGNoZXMgPyBtYXRjaGVzWzFdIDogJzxhbm9ueW1vdXM+J1xuICB9XG5cbiAgYXN5bW1ldHJpY01hdGNoKG90aGVyOiB1bmtub3duKSB7XG4gICAgaWYgKHRoaXMuc2FtcGxlID09PSBTdHJpbmcpXG4gICAgICByZXR1cm4gdHlwZW9mIG90aGVyID09ICdzdHJpbmcnIHx8IG90aGVyIGluc3RhbmNlb2YgU3RyaW5nXG5cbiAgICBpZiAodGhpcy5zYW1wbGUgPT09IE51bWJlcilcbiAgICAgIHJldHVybiB0eXBlb2Ygb3RoZXIgPT0gJ251bWJlcicgfHwgb3RoZXIgaW5zdGFuY2VvZiBOdW1iZXJcblxuICAgIGlmICh0aGlzLnNhbXBsZSA9PT0gRnVuY3Rpb24pXG4gICAgICByZXR1cm4gdHlwZW9mIG90aGVyID09ICdmdW5jdGlvbicgfHwgb3RoZXIgaW5zdGFuY2VvZiBGdW5jdGlvblxuXG4gICAgaWYgKHRoaXMuc2FtcGxlID09PSBCb29sZWFuKVxuICAgICAgcmV0dXJuIHR5cGVvZiBvdGhlciA9PSAnYm9vbGVhbicgfHwgb3RoZXIgaW5zdGFuY2VvZiBCb29sZWFuXG5cbiAgICBpZiAodGhpcy5zYW1wbGUgPT09IEJpZ0ludClcbiAgICAgIHJldHVybiB0eXBlb2Ygb3RoZXIgPT0gJ2JpZ2ludCcgfHwgb3RoZXIgaW5zdGFuY2VvZiBCaWdJbnRcblxuICAgIGlmICh0aGlzLnNhbXBsZSA9PT0gU3ltYm9sKVxuICAgICAgcmV0dXJuIHR5cGVvZiBvdGhlciA9PSAnc3ltYm9sJyB8fCBvdGhlciBpbnN0YW5jZW9mIFN5bWJvbFxuXG4gICAgaWYgKHRoaXMuc2FtcGxlID09PSBPYmplY3QpXG4gICAgICByZXR1cm4gdHlwZW9mIG90aGVyID09ICdvYmplY3QnXG5cbiAgICByZXR1cm4gb3RoZXIgaW5zdGFuY2VvZiB0aGlzLnNhbXBsZVxuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICdBbnknXG4gIH1cblxuICBnZXRFeHBlY3RlZFR5cGUoKSB7XG4gICAgaWYgKHRoaXMuc2FtcGxlID09PSBTdHJpbmcpXG4gICAgICByZXR1cm4gJ3N0cmluZydcblxuICAgIGlmICh0aGlzLnNhbXBsZSA9PT0gTnVtYmVyKVxuICAgICAgcmV0dXJuICdudW1iZXInXG5cbiAgICBpZiAodGhpcy5zYW1wbGUgPT09IEZ1bmN0aW9uKVxuICAgICAgcmV0dXJuICdmdW5jdGlvbidcblxuICAgIGlmICh0aGlzLnNhbXBsZSA9PT0gT2JqZWN0KVxuICAgICAgcmV0dXJuICdvYmplY3QnXG5cbiAgICBpZiAodGhpcy5zYW1wbGUgPT09IEJvb2xlYW4pXG4gICAgICByZXR1cm4gJ2Jvb2xlYW4nXG5cbiAgICByZXR1cm4gdGhpcy5mbk5hbWVGb3IodGhpcy5zYW1wbGUpXG4gIH1cblxuICB0b0FzeW1tZXRyaWNNYXRjaGVyKCkge1xuICAgIHJldHVybiBgQW55PCR7dGhpcy5mbk5hbWVGb3IodGhpcy5zYW1wbGUpfT5gXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN0cmluZ01hdGNoaW5nIGV4dGVuZHMgQXN5bW1ldHJpY01hdGNoZXI8UmVnRXhwPiB7XG4gIGNvbnN0cnVjdG9yKHNhbXBsZTogc3RyaW5nIHwgUmVnRXhwLCBpbnZlcnNlID0gZmFsc2UpIHtcbiAgICBpZiAoIWlzQSgnU3RyaW5nJywgc2FtcGxlKSAmJiAhaXNBKCdSZWdFeHAnLCBzYW1wbGUpKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBpcyBub3QgYSBTdHJpbmcgb3IgYSBSZWdFeHAnKVxuXG4gICAgc3VwZXIobmV3IFJlZ0V4cChzYW1wbGUpLCBpbnZlcnNlKVxuICB9XG5cbiAgYXN5bW1ldHJpY01hdGNoKG90aGVyOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXN1bHQgPSBpc0EoJ1N0cmluZycsIG90aGVyKSAmJiB0aGlzLnNhbXBsZS50ZXN0KG90aGVyKVxuXG4gICAgcmV0dXJuIHRoaXMuaW52ZXJzZSA/ICFyZXN1bHQgOiByZXN1bHRcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBgU3RyaW5nJHt0aGlzLmludmVyc2UgPyAnTm90JyA6ICcnfU1hdGNoaW5nYFxuICB9XG5cbiAgZ2V0RXhwZWN0ZWRUeXBlKCkge1xuICAgIHJldHVybiAnc3RyaW5nJ1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBKZXN0QXN5bW1ldHJpY01hdGNoZXJzOiBDaGFpUGx1Z2luID0gKGNoYWksIHV0aWxzKSA9PiB7XG4gIHV0aWxzLmFkZE1ldGhvZChcbiAgICBjaGFpLmV4cGVjdCxcbiAgICAnYW55dGhpbmcnLFxuICAgICgpID0+IG5ldyBBbnl0aGluZygpLFxuICApXG5cbiAgdXRpbHMuYWRkTWV0aG9kKFxuICAgIGNoYWkuZXhwZWN0LFxuICAgICdhbnknLFxuICAgIChleHBlY3RlZDogdW5rbm93bikgPT4gbmV3IEFueShleHBlY3RlZCksXG4gIClcblxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5leHBlY3QsXG4gICAgJ3N0cmluZ0NvbnRhaW5pbmcnLFxuICAgIChleHBlY3RlZDogc3RyaW5nKSA9PiBuZXcgU3RyaW5nQ29udGFpbmluZyhleHBlY3RlZCksXG4gIClcblxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5leHBlY3QsXG4gICAgJ29iamVjdENvbnRhaW5pbmcnLFxuICAgIChleHBlY3RlZDogYW55KSA9PiBuZXcgT2JqZWN0Q29udGFpbmluZyhleHBlY3RlZCksXG4gIClcblxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5leHBlY3QsXG4gICAgJ2FycmF5Q29udGFpbmluZycsXG4gICAgKGV4cGVjdGVkOiBhbnkpID0+IG5ldyBBcnJheUNvbnRhaW5pbmcoZXhwZWN0ZWQpLFxuICApXG5cbiAgdXRpbHMuYWRkTWV0aG9kKFxuICAgIGNoYWkuZXhwZWN0LFxuICAgICdzdHJpbmdNYXRjaGluZycsXG4gICAgKGV4cGVjdGVkOiBhbnkpID0+IG5ldyBTdHJpbmdNYXRjaGluZyhleHBlY3RlZCksXG4gIClcblxuICAvLyBkZWZpbmVQcm9wZXJ0eSBkb2VzIG5vdCB3b3JrXG4gIDsoY2hhaS5leHBlY3QgYXMgYW55KS5ub3QgPSB7XG4gICAgc3RyaW5nQ29udGFpbmluZzogKGV4cGVjdGVkOiBzdHJpbmcpID0+IG5ldyBTdHJpbmdDb250YWluaW5nKGV4cGVjdGVkLCB0cnVlKSxcbiAgICBvYmplY3RDb250YWluaW5nOiAoZXhwZWN0ZWQ6IGFueSkgPT4gbmV3IE9iamVjdENvbnRhaW5pbmcoZXhwZWN0ZWQsIHRydWUpLFxuICAgIGFycmF5Q29udGFpbmluZzogKGV4cGVjdGVkOiB1bmtub3duW10pID0+IG5ldyBBcnJheUNvbnRhaW5pbmcoZXhwZWN0ZWQsIHRydWUpLFxuICAgIHN0cmluZ01hdGNoaW5nOiAoZXhwZWN0ZWQ6IHN0cmluZyB8IFJlZ0V4cCkgPT4gbmV3IFN0cmluZ01hdGNoaW5nKGV4cGVjdGVkLCB0cnVlKSxcbiAgfVxufVxuIiwiaW1wb3J0IGNoYWkgZnJvbSAnY2hhaSdcbmltcG9ydCBTdWJzZXQgZnJvbSAnY2hhaS1zdWJzZXQnXG5pbXBvcnQgeyBTbmFwc2hvdFBsdWdpbiB9IGZyb20gJy4uL3NuYXBzaG90L2NoYWknXG5pbXBvcnQgeyBKZXN0RXh0ZW5kIH0gZnJvbSAnLi9qZXN0LWV4dGVuZCdcbmltcG9ydCB7IEplc3RDaGFpRXhwZWN0IH0gZnJvbSAnLi9qZXN0LWV4cGVjdCdcbmltcG9ydCB7IEplc3RBc3ltbWV0cmljTWF0Y2hlcnMgfSBmcm9tICcuL2plc3QtYXN5bW1ldHJpYy1tYXRjaGVycydcblxubGV0IGluc3RhbGxlZCA9IGZhbHNlXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2V0dXBDaGFpKCkge1xuICBpZiAoaW5zdGFsbGVkKVxuICAgIHJldHVyblxuXG4gIGNoYWkudXNlKEplc3RFeHRlbmQpXG4gIGNoYWkudXNlKEplc3RDaGFpRXhwZWN0KVxuICBjaGFpLnVzZShTdWJzZXQpXG4gIGNoYWkudXNlKFNuYXBzaG90UGx1Z2luKVxuICBjaGFpLnVzZShKZXN0QXN5bW1ldHJpY01hdGNoZXJzKVxuICBpbnN0YWxsZWQgPSB0cnVlXG59XG4iLCJpbXBvcnQgeyBDb25zb2xlIH0gZnJvbSAnY29uc29sZSdcbmltcG9ydCB7IFdyaXRhYmxlIH0gZnJvbSAnc3RyZWFtJ1xuaW1wb3J0IHsgZW52aXJvbm1lbnRzIH0gZnJvbSAnLi4vaW50ZWdyYXRpb25zL2VudidcbmltcG9ydCB7IHNldHVwQ2hhaSB9IGZyb20gJy4uL2ludGVncmF0aW9ucy9jaGFpL3NldHVwJ1xuaW1wb3J0IHR5cGUgeyBSZXNvbHZlZENvbmZpZyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgdG9BcnJheSB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgcnBjIH0gZnJvbSAnLi9ycGMnXG5cbmxldCBnbG9iYWxTZXR1cCA9IGZhbHNlXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2V0dXBHbG9iYWxFbnYoY29uZmlnOiBSZXNvbHZlZENvbmZpZykge1xuICBpZiAoZ2xvYmFsU2V0dXApXG4gICAgcmV0dXJuXG5cbiAgZ2xvYmFsU2V0dXAgPSB0cnVlXG5cbiAgc2V0dXBDb25zb2xlTG9nU3B5KClcbiAgYXdhaXQgc2V0dXBDaGFpKClcblxuICBpZiAoY29uZmlnLmdsb2JhbHMpXG4gICAgKGF3YWl0IGltcG9ydCgnLi4vaW50ZWdyYXRpb25zL2dsb2JhbHMnKSkucmVnaXN0ZXJBcGlHbG9iYWxseSgpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cENvbnNvbGVMb2dTcHkoKSB7XG4gIGNvbnN0IHN0ZG91dCA9IG5ldyBXcml0YWJsZSh7XG4gICAgd3JpdGUoZGF0YSwgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gICAgICBycGMoKS5vblVzZXJDb25zb2xlTG9nKHtcbiAgICAgICAgdHlwZTogJ3N0ZG91dCcsXG4gICAgICAgIGNvbnRlbnQ6IFN0cmluZyhkYXRhKSxcbiAgICAgICAgdGFza0lkOiBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLmN1cnJlbnQ/LmlkLFxuICAgICAgICB0aW1lOiBEYXRlLm5vdygpLFxuICAgICAgfSlcbiAgICAgIGNhbGxiYWNrKClcbiAgICB9LFxuICB9KVxuICBjb25zdCBzdGRlcnIgPSBuZXcgV3JpdGFibGUoe1xuICAgIHdyaXRlKGRhdGEsIGVuY29kaW5nLCBjYWxsYmFjaykge1xuICAgICAgcnBjKCkub25Vc2VyQ29uc29sZUxvZyh7XG4gICAgICAgIHR5cGU6ICdzdGRlcnInLFxuICAgICAgICBjb250ZW50OiBTdHJpbmcoZGF0YSksXG4gICAgICAgIHRhc2tJZDogcHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXy5jdXJyZW50Py5pZCxcbiAgICAgICAgdGltZTogRGF0ZS5ub3coKSxcbiAgICAgIH0pXG4gICAgICBjYWxsYmFjaygpXG4gICAgfSxcbiAgfSlcbiAgZ2xvYmFsVGhpcy5jb25zb2xlID0gbmV3IENvbnNvbGUoe1xuICAgIHN0ZG91dCxcbiAgICBzdGRlcnIsXG4gICAgY29sb3JNb2RlOiB0cnVlLFxuICAgIGdyb3VwSW5kZW50YXRpb246IDIsXG4gIH0pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3aXRoRW52KFxuICBuYW1lOiBSZXNvbHZlZENvbmZpZ1snZW52aXJvbm1lbnQnXSxcbiAgb3B0aW9uczogUmVzb2x2ZWRDb25maWdbJ2Vudmlyb25tZW50T3B0aW9ucyddLFxuICBmbjogKCkgPT4gUHJvbWlzZTx2b2lkPixcbikge1xuICBjb25zdCBlbnYgPSBhd2FpdCBlbnZpcm9ubWVudHNbbmFtZV0uc2V0dXAoZ2xvYmFsVGhpcywgb3B0aW9ucylcbiAgdHJ5IHtcbiAgICBhd2FpdCBmbigpXG4gIH1cbiAgZmluYWxseSB7XG4gICAgYXdhaXQgZW52LnRlYXJkb3duKGdsb2JhbFRoaXMpXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blNldHVwRmlsZXMoY29uZmlnOiBSZXNvbHZlZENvbmZpZykge1xuICBjb25zdCBmaWxlcyA9IHRvQXJyYXkoY29uZmlnLnNldHVwRmlsZXMpXG4gIGF3YWl0IFByb21pc2UuYWxsKFxuICAgIGZpbGVzLm1hcChhc3luYyhmaWxlKSA9PiB7XG4gICAgICBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLm1vZHVsZUNhY2hlLmRlbGV0ZShmaWxlKVxuICAgICAgYXdhaXQgaW1wb3J0KGZpbGUpXG4gICAgfSksXG4gIClcbn1cbiIsImltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ3V0aWwnXG5pbXBvcnQgeyBzdHJpbmdpZnkgfSBmcm9tICcuLi9pbnRlZ3JhdGlvbnMvY2hhaS9qZXN0LW1hdGNoZXItdXRpbHMnXG5cbmNvbnN0IE9CSkVDVF9QUk9UTyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih7fSlcblxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1dlYl9Xb3JrZXJzX0FQSS9TdHJ1Y3R1cmVkX2Nsb25lX2FsZ29yaXRobVxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUVycm9yKHZhbDogYW55LCBzZWVuID0gbmV3IFdlYWtNYXAoKSk6IGFueSB7XG4gIGlmICghdmFsIHx8IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKVxuICAgIHJldHVybiB2YWxcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbicpXG4gICAgcmV0dXJuIGBGdW5jdGlvbjwke3ZhbC5uYW1lfT5gXG4gIGlmICh0eXBlb2YgdmFsICE9PSAnb2JqZWN0JylcbiAgICByZXR1cm4gdmFsXG4gIGlmICh2YWwgaW5zdGFuY2VvZiBQcm9taXNlIHx8ICd0aGVuJyBpbiB2YWwgfHwgKHZhbC5jb25zdHJ1Y3RvciAmJiB2YWwuY29uc3RydWN0b3IucHJvdG90eXBlID09PSAnQXN5bmNGdW5jdGlvbicpKVxuICAgIHJldHVybiAnUHJvbWlzZSdcbiAgaWYgKHR5cGVvZiBFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB2YWwgaW5zdGFuY2VvZiBFbGVtZW50KVxuICAgIHJldHVybiB2YWwudGFnTmFtZVxuICBpZiAodHlwZW9mIHZhbC5hc3ltbWV0cmljTWF0Y2ggPT09ICdmdW5jdGlvbicpXG4gICAgcmV0dXJuIGAke3ZhbC50b1N0cmluZygpfSAke2Zvcm1hdCh2YWwuc2FtcGxlKX1gXG5cbiAgaWYgKHNlZW4uaGFzKHZhbCkpXG4gICAgcmV0dXJuIHNlZW4uZ2V0KHZhbClcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgY29uc3QgY2xvbmU6IGFueVtdID0gbmV3IEFycmF5KHZhbC5sZW5ndGgpXG4gICAgc2Vlbi5zZXQodmFsLCBjbG9uZSlcbiAgICB2YWwuZm9yRWFjaCgoZSwgaSkgPT4ge1xuICAgICAgY2xvbmVbaV0gPSBzZXJpYWxpemVFcnJvcihlLCBzZWVuKVxuICAgIH0pXG4gICAgcmV0dXJuIGNsb25lXG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gT2JqZWN0cyB3aXRoIGBFcnJvcmAgY29uc3RydWN0b3JzIGFwcGVhciB0byBjYXVzZSBwcm9ibGVtcyBkdXJpbmcgd29ya2VyIGNvbW11bmljYXRpb25cbiAgICAvLyB1c2luZyBgTWVzc2FnZVBvcnRgLCBzbyB0aGUgc2VyaWFsaXplZCBlcnJvciBvYmplY3QgaXMgYmVpbmcgcmVjcmVhdGVkIGFzIHBsYWluIG9iamVjdC5cbiAgICBjb25zdCBjbG9uZSA9IE9iamVjdC5jcmVhdGUobnVsbClcbiAgICBzZWVuLnNldCh2YWwsIGNsb25lKVxuXG4gICAgbGV0IG9iaiA9IHZhbFxuICAgIHdoaWxlIChvYmogJiYgb2JqICE9PSBPQkpFQ1RfUFJPVE8pIHtcbiAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGlmICghKGtleSBpbiBjbG9uZSkpXG4gICAgICAgICAgY2xvbmVba2V5XSA9IHNlcmlhbGl6ZUVycm9yKG9ialtrZXldLCBzZWVuKVxuICAgICAgfSlcbiAgICAgIG9iaiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopXG4gICAgfVxuICAgIHJldHVybiBjbG9uZVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzRXJyb3IoZXJyOiBhbnkpIHtcbiAgaWYgKCFlcnIpXG4gICAgcmV0dXJuIGVyclxuICAvLyBzdGFjayBpcyBub3Qgc2VyaWFsaXplZCBpbiB3b3JrZXIgY29tbXVuaWNhdGlvblxuICAvLyB3ZSBzdHJpbmdpZnkgaXQgZmlyc3RcbiAgaWYgKGVyci5zdGFjaylcbiAgICBlcnIuc3RhY2tTdHIgPSBTdHJpbmcoZXJyLnN0YWNrKVxuICBpZiAoZXJyLm5hbWUpXG4gICAgZXJyLm5hbWVTdHIgPSBTdHJpbmcoZXJyLm5hbWUpXG5cbiAgaWYgKHR5cGVvZiBlcnIuZXhwZWN0ZWQgIT09ICdzdHJpbmcnKVxuICAgIGVyci5leHBlY3RlZCA9IHN0cmluZ2lmeShlcnIuZXhwZWN0ZWQpXG4gIGlmICh0eXBlb2YgZXJyLmFjdHVhbCAhPT0gJ3N0cmluZycpXG4gICAgZXJyLmFjdHVhbCA9IHN0cmluZ2lmeShlcnIuYWN0dWFsKVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZUVycm9yKGVycilcbiAgfVxuICBjYXRjaCAoZTogYW55KSB7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZUVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIGZ1bGx5IHNlcmlhbGl6ZSBlcnJvcjogJHtlPy5tZXNzYWdlfS5cXG5Jbm5lciBlcnJvciBtZXNzYWdlOiAke2Vycj8ubWVzc2FnZX1gKSlcbiAgfVxufVxuIiwiaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0bydcbmltcG9ydCB7IHJlbGF0aXZlIH0gZnJvbSAncGF0aGUnXG5pbXBvcnQgdHlwZSB7IEZpbGUsIFJlc29sdmVkQ29uZmlnLCBTdWl0ZSwgVGFza0Jhc2UgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IGNsZWFyQ29udGV4dCwgZGVmYXVsdFN1aXRlIH0gZnJvbSAnLi9zdWl0ZSdcbmltcG9ydCB7IGdldEhvb2tzLCBzZXRIb29rcyB9IGZyb20gJy4vbWFwJ1xuaW1wb3J0IHsgcHJvY2Vzc0Vycm9yIH0gZnJvbSAnLi9lcnJvcidcbmltcG9ydCB7IGNvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnXG5pbXBvcnQgeyBydW5TZXR1cEZpbGVzIH0gZnJvbSAnLi9zZXR1cCdcblxuZnVuY3Rpb24gaGFzaChzdHI6IHN0cmluZywgbGVuZ3RoID0gMTApIHtcbiAgcmV0dXJuIGNyZWF0ZUhhc2goJ21kNScpXG4gICAgLnVwZGF0ZShzdHIpXG4gICAgLmRpZ2VzdCgnaGV4JylcbiAgICAuc2xpY2UoMCwgbGVuZ3RoKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29sbGVjdFRlc3RzKHBhdGhzOiBzdHJpbmdbXSwgY29uZmlnOiBSZXNvbHZlZENvbmZpZykge1xuICBjb25zdCBmaWxlczogRmlsZVtdID0gW11cblxuICBmb3IgKGNvbnN0IGZpbGVwYXRoIG9mIHBhdGhzKSB7XG4gICAgY29uc3QgcGF0aCA9IHJlbGF0aXZlKGNvbmZpZy5yb290LCBmaWxlcGF0aClcbiAgICBjb25zdCBmaWxlOiBGaWxlID0ge1xuICAgICAgaWQ6IGhhc2gocGF0aCksXG4gICAgICBuYW1lOiBwYXRoLFxuICAgICAgdHlwZTogJ3N1aXRlJyxcbiAgICAgIG1vZGU6ICdydW4nLFxuICAgICAgZmlsZXBhdGgsXG4gICAgICB0YXNrczogW10sXG4gICAgfVxuXG4gICAgY2xlYXJDb250ZXh0KClcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcnVuU2V0dXBGaWxlcyhjb25maWcpXG4gICAgICBhd2FpdCBpbXBvcnQoZmlsZXBhdGgpXG5cbiAgICAgIGNvbnN0IGRlZmF1bHRUYXNrcyA9IGF3YWl0IGRlZmF1bHRTdWl0ZS5jb2xsZWN0KGZpbGUpXG5cbiAgICAgIHNldEhvb2tzKGZpbGUsIGdldEhvb2tzKGRlZmF1bHRUYXNrcykpXG5cbiAgICAgIGZvciAoY29uc3QgYyBvZiBbLi4uZGVmYXVsdFRhc2tzLnRhc2tzLCAuLi5jb250ZXh0LnRhc2tzXSkge1xuICAgICAgICBpZiAoYy50eXBlID09PSAndGVzdCcpIHtcbiAgICAgICAgICBmaWxlLnRhc2tzLnB1c2goYylcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjLnR5cGUgPT09ICdzdWl0ZScpIHtcbiAgICAgICAgICBmaWxlLnRhc2tzLnB1c2goYylcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpXG4gICAgICAgICAgY29uc3Qgc3VpdGUgPSBhd2FpdCBjLmNvbGxlY3QoZmlsZSlcbiAgICAgICAgICBmaWxlLmNvbGxlY3REdXJhdGlvbiA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRcbiAgICAgICAgICBpZiAoc3VpdGUubmFtZSB8fCBzdWl0ZS50YXNrcy5sZW5ndGgpXG4gICAgICAgICAgICBmaWxlLnRhc2tzLnB1c2goc3VpdGUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgIGZpbGUucmVzdWx0ID0ge1xuICAgICAgICBzdGF0ZTogJ2ZhaWwnLFxuICAgICAgICBlcnJvcjogcHJvY2Vzc0Vycm9yKGUpLFxuICAgICAgfVxuICAgICAgLy8gbm90IHN1cmUgdGh5LCB0aGlzIHRoaXMgbGluZSBpcyBuZWVkZWQgdG8gdHJpZ2dlciB0aGUgZXJyb3JcbiAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCdcXDAnKVxuICAgIH1cblxuICAgIGNhbGN1bGF0ZUhhc2goZmlsZSlcblxuICAgIGNvbnN0IGhhc09ubHlUYXNrcyA9IHNvbWVUYXNrc0FyZU9ubHkoZmlsZSlcbiAgICBpbnRlcnByZXRUYXNrTW9kZXMoZmlsZSwgY29uZmlnLnRlc3ROYW1lUGF0dGVybiwgaGFzT25seVRhc2tzLCBmYWxzZSwgY29uZmlnLmFsbG93T25seSlcblxuICAgIGZpbGVzLnB1c2goZmlsZSlcbiAgfVxuXG4gIHJldHVybiBmaWxlc1xufVxuXG4vKipcbiAqIElmIGFueSB0YXNrcyBiZWVuIG1hcmtlZCBhcyBgb25seWAsIG1hcmsgYWxsIG90aGVyIHRhc2tzIGFzIGBza2lwYC5cbiAqL1xuZnVuY3Rpb24gaW50ZXJwcmV0VGFza01vZGVzKHN1aXRlOiBTdWl0ZSwgbmFtZVBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHAsIG9ubHlNb2RlPzogYm9vbGVhbiwgcGFyZW50SXNPbmx5PzogYm9vbGVhbiwgYWxsb3dPbmx5PzogYm9vbGVhbikge1xuICBjb25zdCBzdWl0ZUlzT25seSA9IHBhcmVudElzT25seSB8fCBzdWl0ZS5tb2RlID09PSAnb25seSdcblxuICBzdWl0ZS50YXNrcy5mb3JFYWNoKCh0KSA9PiB7XG4gICAgLy8gQ2hlY2sgaWYgZWl0aGVyIHRoZSBwYXJlbnQgc3VpdGUgb3IgdGhlIHRhc2sgaXRzZWxmIGFyZSBtYXJrZWQgYXMgaW5jbHVkZWRcbiAgICBjb25zdCBpbmNsdWRlVGFzayA9IHN1aXRlSXNPbmx5IHx8IHQubW9kZSA9PT0gJ29ubHknXG4gICAgaWYgKG9ubHlNb2RlKSB7XG4gICAgICBpZiAodC50eXBlID09PSAnc3VpdGUnICYmIChpbmNsdWRlVGFzayB8fCBzb21lVGFza3NBcmVPbmx5KHQpKSkge1xuICAgICAgICAvLyBEb24ndCBza2lwIHRoaXMgc3VpdGVcbiAgICAgICAgaWYgKHQubW9kZSA9PT0gJ29ubHknKSB7XG4gICAgICAgICAgY2hlY2tBbGxvd09ubHkodCwgYWxsb3dPbmx5KVxuICAgICAgICAgIHQubW9kZSA9ICdydW4nXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHQubW9kZSA9PT0gJ3J1bicgJiYgIWluY2x1ZGVUYXNrKSB7IHQubW9kZSA9ICdza2lwJyB9XG4gICAgICBlbHNlIGlmICh0Lm1vZGUgPT09ICdvbmx5Jykge1xuICAgICAgICBjaGVja0FsbG93T25seSh0LCBhbGxvd09ubHkpXG4gICAgICAgIHQubW9kZSA9ICdydW4nXG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0LnR5cGUgPT09ICd0ZXN0Jykge1xuICAgICAgaWYgKG5hbWVQYXR0ZXJuICYmICF0Lm5hbWUubWF0Y2gobmFtZVBhdHRlcm4pKVxuICAgICAgICB0Lm1vZGUgPSAnc2tpcCdcbiAgICB9XG4gICAgZWxzZSBpZiAodC50eXBlID09PSAnc3VpdGUnKSB7XG4gICAgICBpZiAodC5tb2RlID09PSAnc2tpcCcpXG4gICAgICAgIHNraXBBbGxUYXNrcyh0KVxuICAgICAgZWxzZVxuICAgICAgICBpbnRlcnByZXRUYXNrTW9kZXModCwgbmFtZVBhdHRlcm4sIG9ubHlNb2RlLCBpbmNsdWRlVGFzaywgYWxsb3dPbmx5KVxuICAgIH1cbiAgfSlcblxuICAvLyBpZiBhbGwgc3VidGFza3MgYXJlIHNraXBwZWQsIG1hcmsgYXMgc2tpcFxuICBpZiAoc3VpdGUubW9kZSA9PT0gJ3J1bicpIHtcbiAgICBpZiAoc3VpdGUudGFza3MuZXZlcnkoaSA9PiBpLm1vZGUgIT09ICdydW4nKSlcbiAgICAgIHN1aXRlLm1vZGUgPSAnc2tpcCdcbiAgfVxufVxuXG5mdW5jdGlvbiBzb21lVGFza3NBcmVPbmx5KHN1aXRlOiBTdWl0ZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3VpdGUudGFza3Muc29tZSh0ID0+IHQubW9kZSA9PT0gJ29ubHknIHx8ICh0LnR5cGUgPT09ICdzdWl0ZScgJiYgc29tZVRhc2tzQXJlT25seSh0KSkpXG59XG5cbmZ1bmN0aW9uIHNraXBBbGxUYXNrcyhzdWl0ZTogU3VpdGUpIHtcbiAgc3VpdGUudGFza3MuZm9yRWFjaCgodCkgPT4ge1xuICAgIGlmICh0Lm1vZGUgPT09ICdydW4nKSB7XG4gICAgICB0Lm1vZGUgPSAnc2tpcCdcbiAgICAgIGlmICh0LnR5cGUgPT09ICdzdWl0ZScpXG4gICAgICAgIHNraXBBbGxUYXNrcyh0KVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gY2hlY2tBbGxvd09ubHkodGFzazogVGFza0Jhc2UsIGFsbG93T25seT86IGJvb2xlYW4pIHtcbiAgaWYgKGFsbG93T25seSkgcmV0dXJuXG4gIHRhc2sucmVzdWx0ID0ge1xuICAgIHN0YXRlOiAnZmFpbCcsXG4gICAgZXJyb3I6IHByb2Nlc3NFcnJvcihuZXcgRXJyb3IoJ1tWaXRlc3RdIFVuZXhwZWN0ZWQgLm9ubHkgbW9kaWZpZXIuIFJlbW92ZSBpdCBvciBwYXNzIC0tYWxsb3dPbmx5IGFyZ3VlbWVudCB0byBieXBhc3MgdGhpcyBlcnJvcicpKSxcbiAgfVxufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVIYXNoKHBhcmVudDogU3VpdGUpIHtcbiAgcGFyZW50LnRhc2tzLmZvckVhY2goKHQsIGlkeCkgPT4ge1xuICAgIHQuaWQgPSBgJHtwYXJlbnQuaWR9XyR7aWR4fWBcbiAgICBpZiAodC50eXBlID09PSAnc3VpdGUnKVxuICAgICAgY2FsY3VsYXRlSGFzaCh0KVxuICB9KVxufVxuIiwiaW1wb3J0IHsgcGVyZm9ybWFuY2UgfSBmcm9tICdwZXJmX2hvb2tzJ1xuaW1wb3J0IHR5cGUgeyBIb29rTGlzdGVuZXIsIFJlc29sdmVkQ29uZmlnLCBTdWl0ZSwgU3VpdGVIb29rcywgVGFzaywgVGFza1Jlc3VsdCwgVGVzdCB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgdmkgfSBmcm9tICcuLi9pbnRlZ3JhdGlvbnMvdmknXG5pbXBvcnQgeyBnZXRTbmFwc2hvdENsaWVudCB9IGZyb20gJy4uL2ludGVncmF0aW9ucy9zbmFwc2hvdC9jaGFpJ1xuaW1wb3J0IHsgZ2V0RnVsbE5hbWUsIGhhc0ZhaWxlZCwgaGFzVGVzdHMsIHBhcnRpdGlvblN1aXRlQ2hpbGRyZW4gfSBmcm9tICcuLi91dGlscydcbmltcG9ydCB7IGdldFN0YXRlLCBzZXRTdGF0ZSB9IGZyb20gJy4uL2ludGVncmF0aW9ucy9jaGFpL2plc3QtZXhwZWN0J1xuaW1wb3J0IHsgZ2V0Rm4sIGdldEhvb2tzIH0gZnJvbSAnLi9tYXAnXG5pbXBvcnQgeyBycGMgfSBmcm9tICcuL3JwYydcbmltcG9ydCB7IGNvbGxlY3RUZXN0cyB9IGZyb20gJy4vY29sbGVjdCdcbmltcG9ydCB7IHByb2Nlc3NFcnJvciB9IGZyb20gJy4vZXJyb3InXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjYWxsU3VpdGVIb29rPFQgZXh0ZW5kcyBrZXlvZiBTdWl0ZUhvb2tzPihzdWl0ZTogU3VpdGUsIG5hbWU6IFQsIGFyZ3M6IFN1aXRlSG9va3NbVF1bMF0gZXh0ZW5kcyBIb29rTGlzdGVuZXI8aW5mZXIgQT4gPyBBIDogbmV2ZXIpIHtcbiAgaWYgKG5hbWUgPT09ICdiZWZvcmVFYWNoJyAmJiBzdWl0ZS5zdWl0ZSlcbiAgICBhd2FpdCBjYWxsU3VpdGVIb29rKHN1aXRlLnN1aXRlLCBuYW1lLCBhcmdzKVxuXG4gIGF3YWl0IFByb21pc2UuYWxsKGdldEhvb2tzKHN1aXRlKVtuYW1lXS5tYXAoZm4gPT4gZm4oLi4uKGFyZ3MgYXMgYW55KSkpKVxuXG4gIGlmIChuYW1lID09PSAnYWZ0ZXJFYWNoJyAmJiBzdWl0ZS5zdWl0ZSlcbiAgICBhd2FpdCBjYWxsU3VpdGVIb29rKHN1aXRlLnN1aXRlLCBuYW1lLCBhcmdzKVxufVxuXG5jb25zdCBwYWNrcyA9IG5ldyBNYXA8c3RyaW5nLCBUYXNrUmVzdWx0fHVuZGVmaW5lZD4oKVxubGV0IHVwZGF0ZVRpbWVyOiBhbnlcbmxldCBwcmV2aW91c1VwZGF0ZTogUHJvbWlzZTx2b2lkPnx1bmRlZmluZWRcblxuZnVuY3Rpb24gdXBkYXRlVGFzayh0YXNrOiBUYXNrKSB7XG4gIHBhY2tzLnNldCh0YXNrLmlkLCB0YXNrLnJlc3VsdClcblxuICBjbGVhclRpbWVvdXQodXBkYXRlVGltZXIpXG4gIHVwZGF0ZVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgcHJldmlvdXNVcGRhdGUgPSBzZW5kVGFza3NVcGRhdGUoKVxuICB9LCAxMClcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2VuZFRhc2tzVXBkYXRlKCkge1xuICBjbGVhclRpbWVvdXQodXBkYXRlVGltZXIpXG4gIGF3YWl0IHByZXZpb3VzVXBkYXRlXG5cbiAgaWYgKHBhY2tzLnNpemUpIHtcbiAgICBjb25zdCBwID0gcnBjKCkub25UYXNrVXBkYXRlKEFycmF5LmZyb20ocGFja3MpKVxuICAgIHBhY2tzLmNsZWFyKClcbiAgICByZXR1cm4gcFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5UZXN0KHRlc3Q6IFRlc3QpIHtcbiAgaWYgKHRlc3QubW9kZSAhPT0gJ3J1bicpXG4gICAgcmV0dXJuXG5cbiAgaWYgKHRlc3QucmVzdWx0Py5zdGF0ZSA9PT0gJ2ZhaWwnKSB7XG4gICAgdXBkYXRlVGFzayh0ZXN0KVxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3Qgc3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKVxuXG4gIHRlc3QucmVzdWx0ID0ge1xuICAgIHN0YXRlOiAncnVuJyxcbiAgfVxuICB1cGRhdGVUYXNrKHRlc3QpXG5cbiAgY2xlYXJNb2R1bGVNb2NrcygpXG5cbiAgZ2V0U25hcHNob3RDbGllbnQoKS5zZXRUZXN0KHRlc3QpXG5cbiAgcHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXy5jdXJyZW50ID0gdGVzdFxuXG4gIHRyeSB7XG4gICAgYXdhaXQgY2FsbFN1aXRlSG9vayh0ZXN0LnN1aXRlLCAnYmVmb3JlRWFjaCcsIFt0ZXN0LCB0ZXN0LnN1aXRlXSlcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBhc3NlcnRpb25DYWxsczogMCxcbiAgICAgIGlzRXhwZWN0aW5nQXNzZXJ0aW9uczogZmFsc2UsXG4gICAgICBpc0V4cGVjdGluZ0Fzc2VydGlvbnNFcnJvcjogbnVsbCxcbiAgICAgIGV4cGVjdGVkQXNzZXJ0aW9uc051bWJlcjogbnVsbCxcbiAgICAgIGV4cGVjdGVkQXNzZXJ0aW9uc051bWJlckVycm9yOiBudWxsLFxuICAgICAgdGVzdFBhdGg6IHRlc3Quc3VpdGUuZmlsZT8uZmlsZXBhdGgsXG4gICAgICBjdXJyZW50VGVzdE5hbWU6IGdldEZ1bGxOYW1lKHRlc3QpLFxuICAgIH0pXG4gICAgYXdhaXQgZ2V0Rm4odGVzdCkoKVxuICAgIGNvbnN0IHsgYXNzZXJ0aW9uQ2FsbHMsIGV4cGVjdGVkQXNzZXJ0aW9uc051bWJlciwgZXhwZWN0ZWRBc3NlcnRpb25zTnVtYmVyRXJyb3IsIGlzRXhwZWN0aW5nQXNzZXJ0aW9ucywgaXNFeHBlY3RpbmdBc3NlcnRpb25zRXJyb3IgfSA9IGdldFN0YXRlKClcbiAgICBpZiAoZXhwZWN0ZWRBc3NlcnRpb25zTnVtYmVyICE9PSBudWxsICYmIGFzc2VydGlvbkNhbGxzICE9PSBleHBlY3RlZEFzc2VydGlvbnNOdW1iZXIpXG4gICAgICB0aHJvdyBleHBlY3RlZEFzc2VydGlvbnNOdW1iZXJFcnJvclxuICAgIGlmIChpc0V4cGVjdGluZ0Fzc2VydGlvbnMgPT09IHRydWUgJiYgYXNzZXJ0aW9uQ2FsbHMgPT09IDApXG4gICAgICB0aHJvdyBpc0V4cGVjdGluZ0Fzc2VydGlvbnNFcnJvclxuXG4gICAgdGVzdC5yZXN1bHQuc3RhdGUgPSAncGFzcydcbiAgfVxuICBjYXRjaCAoZSkge1xuICAgIHRlc3QucmVzdWx0LnN0YXRlID0gJ2ZhaWwnXG4gICAgdGVzdC5yZXN1bHQuZXJyb3IgPSBwcm9jZXNzRXJyb3IoZSlcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgY2FsbFN1aXRlSG9vayh0ZXN0LnN1aXRlLCAnYWZ0ZXJFYWNoJywgW3Rlc3QsIHRlc3Quc3VpdGVdKVxuICB9XG4gIGNhdGNoIChlKSB7XG4gICAgdGVzdC5yZXN1bHQuc3RhdGUgPSAnZmFpbCdcbiAgICB0ZXN0LnJlc3VsdC5lcnJvciA9IHByb2Nlc3NFcnJvcihlKVxuICB9XG5cbiAgLy8gaWYgdGVzdCBpcyBtYXJrZWQgdG8gYmUgZmFpbGVkLCBmbGlwIHRoZSByZXN1bHRcbiAgaWYgKHRlc3QuZmFpbHMpIHtcbiAgICBpZiAodGVzdC5yZXN1bHQuc3RhdGUgPT09ICdwYXNzJykge1xuICAgICAgdGVzdC5yZXN1bHQuc3RhdGUgPSAnZmFpbCdcbiAgICAgIHRlc3QucmVzdWx0LmVycm9yID0gcHJvY2Vzc0Vycm9yKG5ldyBFcnJvcignRXhwZWN0IHRlc3QgdG8gZmFpbCcpKVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRlc3QucmVzdWx0LnN0YXRlID0gJ3Bhc3MnXG4gICAgICB0ZXN0LnJlc3VsdC5lcnJvciA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuXG4gIGdldFNuYXBzaG90Q2xpZW50KCkuY2xlYXJUZXN0KClcblxuICB0ZXN0LnJlc3VsdC5kdXJhdGlvbiA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRcblxuICBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLmN1cnJlbnQgPSB1bmRlZmluZWRcblxuICB1cGRhdGVUYXNrKHRlc3QpXG59XG5cbmZ1bmN0aW9uIG1hcmtUYXNrc0FzU2tpcHBlZChzdWl0ZTogU3VpdGUpIHtcbiAgc3VpdGUudGFza3MuZm9yRWFjaCgodCkgPT4ge1xuICAgIHQubW9kZSA9ICdza2lwJ1xuICAgIHQucmVzdWx0ID0geyAuLi50LnJlc3VsdCwgc3RhdGU6ICdza2lwJyB9XG4gICAgdXBkYXRlVGFzayh0KVxuICAgIGlmICh0LnR5cGUgPT09ICdzdWl0ZScpIG1hcmtUYXNrc0FzU2tpcHBlZCh0KVxuICB9KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuU3VpdGUoc3VpdGU6IFN1aXRlKSB7XG4gIGlmIChzdWl0ZS5yZXN1bHQ/LnN0YXRlID09PSAnZmFpbCcpIHtcbiAgICBtYXJrVGFza3NBc1NraXBwZWQoc3VpdGUpXG4gICAgdXBkYXRlVGFzayhzdWl0ZSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KClcblxuICBzdWl0ZS5yZXN1bHQgPSB7XG4gICAgc3RhdGU6ICdydW4nLFxuICB9XG5cbiAgdXBkYXRlVGFzayhzdWl0ZSlcblxuICBpZiAoc3VpdGUubW9kZSA9PT0gJ3NraXAnKSB7XG4gICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ3NraXAnXG4gIH1cbiAgZWxzZSBpZiAoc3VpdGUubW9kZSA9PT0gJ3RvZG8nKSB7XG4gICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ3RvZG8nXG4gIH1cbiAgZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNhbGxTdWl0ZUhvb2soc3VpdGUsICdiZWZvcmVBbGwnLCBbc3VpdGVdKVxuXG4gICAgICBmb3IgKGNvbnN0IHRhc2tzR3JvdXAgb2YgcGFydGl0aW9uU3VpdGVDaGlsZHJlbihzdWl0ZSkpIHtcbiAgICAgICAgaWYgKHRhc2tzR3JvdXBbMF0uY29uY3VycmVudCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHRhc2tzR3JvdXAubWFwKGMgPT4gcnVuU3VpdGVDaGlsZChjKSkpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZm9yIChjb25zdCBjIG9mIHRhc2tzR3JvdXApXG4gICAgICAgICAgICBhd2FpdCBydW5TdWl0ZUNoaWxkKGMpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYXdhaXQgY2FsbFN1aXRlSG9vayhzdWl0ZSwgJ2FmdGVyQWxsJywgW3N1aXRlXSlcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgIHN1aXRlLnJlc3VsdC5zdGF0ZSA9ICdmYWlsJ1xuICAgICAgc3VpdGUucmVzdWx0LmVycm9yID0gcHJvY2Vzc0Vycm9yKGUpXG4gICAgfVxuICB9XG4gIHN1aXRlLnJlc3VsdC5kdXJhdGlvbiA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRcblxuICBpZiAoc3VpdGUubW9kZSA9PT0gJ3J1bicpIHtcbiAgICBpZiAoIWhhc1Rlc3RzKHN1aXRlKSkge1xuICAgICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ2ZhaWwnXG4gICAgICBpZiAoIXN1aXRlLnJlc3VsdC5lcnJvcilcbiAgICAgICAgc3VpdGUucmVzdWx0LmVycm9yID0gbmV3IEVycm9yKGBObyB0ZXN0cyBmb3VuZCBpbiBzdWl0ZSAke3N1aXRlLm5hbWV9YClcbiAgICB9XG4gICAgZWxzZSBpZiAoaGFzRmFpbGVkKHN1aXRlKSkge1xuICAgICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ2ZhaWwnXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ3Bhc3MnXG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVGFzayhzdWl0ZSlcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuU3VpdGVDaGlsZChjOiBUYXNrKSB7XG4gIHJldHVybiBjLnR5cGUgPT09ICd0ZXN0J1xuICAgID8gcnVuVGVzdChjKVxuICAgIDogcnVuU3VpdGUoYylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blN1aXRlcyhzdWl0ZXM6IFN1aXRlW10pIHtcbiAgZm9yIChjb25zdCBzdWl0ZSBvZiBzdWl0ZXMpXG4gICAgYXdhaXQgcnVuU3VpdGUoc3VpdGUpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydFRlc3RzKHBhdGhzOiBzdHJpbmdbXSwgY29uZmlnOiBSZXNvbHZlZENvbmZpZykge1xuICBjb25zdCBmaWxlcyA9IGF3YWl0IGNvbGxlY3RUZXN0cyhwYXRocywgY29uZmlnKVxuXG4gIHJwYygpLm9uQ29sbGVjdGVkKGZpbGVzKVxuXG4gIGF3YWl0IHJ1blN1aXRlcyhmaWxlcylcblxuICBhd2FpdCBnZXRTbmFwc2hvdENsaWVudCgpLnNhdmVTbmFwKClcblxuICBhd2FpdCBzZW5kVGFza3NVcGRhdGUoKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJNb2R1bGVNb2NrcygpIHtcbiAgY29uc3QgeyBjbGVhck1vY2tzLCBtb2NrUmVzZXQsIHJlc3RvcmVNb2NrcyB9ID0gcHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXy5jb25maWdcblxuICAvLyBzaW5jZSBlYWNoIGZ1bmN0aW9uIGNhbGxzIGFub3RoZXIsIHdlIGNhbiBqdXN0IGNhbGwgb25lXG4gIGlmIChyZXN0b3JlTW9ja3MpXG4gICAgdmkucmVzdG9yZUFsbE1vY2tzKClcbiAgZWxzZSBpZiAobW9ja1Jlc2V0KVxuICAgIHZpLnJlc2V0QWxsTW9ja3MoKVxuICBlbHNlIGlmIChjbGVhck1vY2tzKVxuICAgIHZpLmNsZWFyQWxsTW9ja3MoKVxufVxuIiwiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcydcbmltcG9ydCB0eXBlIHsgQnVpbHRpbkVudmlyb25tZW50LCBSZXNvbHZlZENvbmZpZyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgc2V0dXBHbG9iYWxFbnYsIHdpdGhFbnYgfSBmcm9tICcuL3NldHVwJ1xuaW1wb3J0IHsgc3RhcnRUZXN0cyB9IGZyb20gJy4vcnVuJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuKGZpbGVzOiBzdHJpbmdbXSwgY29uZmlnOiBSZXNvbHZlZENvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBzZXR1cEdsb2JhbEVudihjb25maWcpXG5cbiAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgY29uc3QgY29kZSA9IGF3YWl0IGZzLnJlYWRGaWxlKGZpbGUsICd1dGYtOCcpXG5cbiAgICBjb25zdCBlbnYgPSBjb2RlLm1hdGNoKC9AKD86dml0ZXN0fGplc3QpLWVudmlyb25tZW50XFxzKz8oW1xcdy1dKylcXGIvKT8uWzFdIHx8IGNvbmZpZy5lbnZpcm9ubWVudCB8fCAnbm9kZSdcblxuICAgIGlmICghWydub2RlJywgJ2pzZG9tJywgJ2hhcHB5LWRvbSddLmluY2x1ZGVzKGVudikpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGVudmlyb25tZW50OiAke2Vudn1gKVxuXG4gICAgcHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXy5maWxlcGF0aCA9IGZpbGVcblxuICAgIGF3YWl0IHdpdGhFbnYoZW52IGFzIEJ1aWx0aW5FbnZpcm9ubWVudCwgY29uZmlnLmVudmlyb25tZW50T3B0aW9ucyB8fCB7fSwgYXN5bmMoKSA9PiB7XG4gICAgICBhd2FpdCBzdGFydFRlc3RzKFtmaWxlXSwgY29uZmlnKVxuICAgIH0pXG5cbiAgICBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLmZpbGVwYXRoID0gdW5kZWZpbmVkXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfX2RlZlByb3AiLCJfX2dldE93blByb3BTeW1ib2xzIiwiX19oYXNPd25Qcm9wIiwiX19wcm9wSXNFbnVtIiwiX19kZWZOb3JtYWxQcm9wIiwiX19zcHJlYWRWYWx1ZXMiLCJyZXF1aXJlIiwidGhpcyIsIm5hdHVyYWxDb21wYXJlTW9kdWxlIiwicHJldHR5Rm9ybWF0IiwicGF0aCIsIm5hdHVyYWxDb21wYXJlIiwiZnNwIiwiZnMiLCJBc3ltbWV0cmljTWF0Y2hlciIsInByZXR0eUZvcm1hdFBsdWdpbnMiLCJfX2RlZlByb3BzIiwiX19nZXRPd25Qcm9wRGVzY3MiLCJfX3NwcmVhZFByb3BzIiwiY2hhaSIsInBlcmZvcm1hbmNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFdBQWU7QUFDZixFQUFFLElBQUksRUFBRSxNQUFNO0FBQ2QsRUFBRSxNQUFNLEtBQUssR0FBRztBQUNoQixJQUFJLE9BQU87QUFDWCxNQUFNLFFBQVEsR0FBRztBQUNqQixPQUFPO0FBQ1AsS0FBSyxDQUFDO0FBQ04sR0FBRztBQUNILENBQUM7O0FDUkQsTUFBTSxXQUFXLEdBQUc7QUFDcEIsRUFBRSxjQUFjO0FBQ2hCLEVBQUUsS0FBSztBQUNQLEVBQUUsaUJBQWlCO0FBQ25CLEVBQUUsYUFBYTtBQUNmLEVBQUUsY0FBYztBQUNoQixFQUFFLE1BQU07QUFDUixFQUFFLE1BQU07QUFDUixFQUFFLFNBQVM7QUFDWCxFQUFFLGtCQUFrQjtBQUNwQixFQUFFLG1CQUFtQjtBQUNyQixFQUFFLFVBQVU7QUFDWixFQUFFLGFBQWE7QUFDZixFQUFFLGVBQWU7QUFDakIsRUFBRSxNQUFNO0FBQ1IsRUFBRSxjQUFjO0FBQ2hCLEVBQUUsdUJBQXVCO0FBQ3pCLEVBQUUsU0FBUztBQUNYLEVBQUUsY0FBYztBQUNoQixFQUFFLFVBQVU7QUFDWixFQUFFLGdCQUFnQjtBQUNsQixFQUFFLHVCQUF1QjtBQUN6QixFQUFFLGNBQWM7QUFDaEIsRUFBRSxjQUFjO0FBQ2hCLEVBQUUsZ0JBQWdCO0FBQ2xCLEVBQUUsYUFBYTtBQUNmLEVBQUUsaUJBQWlCO0FBQ25CLEVBQUUsa0JBQWtCO0FBQ3BCLEVBQUUsaUJBQWlCO0FBQ25CLEVBQUUsaUJBQWlCO0FBQ25CLEVBQUUsaUJBQWlCO0FBQ25CLEVBQUUsa0JBQWtCO0FBQ3BCLEVBQUUsaUJBQWlCO0FBQ25CLEVBQUUsb0JBQW9CO0FBQ3RCLEVBQUUsc0JBQXNCO0FBQ3hCLEVBQUUsZUFBZTtBQUNqQixFQUFFLGdCQUFnQjtBQUNsQixFQUFFLGtCQUFrQjtBQUNwQixFQUFFLGtCQUFrQjtBQUNwQixFQUFFLGVBQWU7QUFDakIsRUFBRSxpQkFBaUI7QUFDbkIsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxnQkFBZ0I7QUFDbEIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxpQkFBaUI7QUFDbkIsRUFBRSxlQUFlO0FBQ2pCLEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsaUJBQWlCO0FBQ25CLEVBQUUscUJBQXFCO0FBQ3ZCLEVBQUUsb0JBQW9CO0FBQ3RCLEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsc0JBQXNCO0FBQ3hCLEVBQUUscUJBQXFCO0FBQ3ZCLEVBQUUsaUJBQWlCO0FBQ25CLEVBQUUsaUJBQWlCO0FBQ25CLEVBQUUsaUJBQWlCO0FBQ25CLEVBQUUsa0JBQWtCO0FBQ3BCLEVBQUUsa0JBQWtCO0FBQ3BCLEVBQUUsa0JBQWtCO0FBQ3BCLEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsZ0JBQWdCO0FBQ2xCLEVBQUUsb0JBQW9CO0FBQ3RCLEVBQUUsa0JBQWtCO0FBQ3BCLEVBQUUsa0JBQWtCO0FBQ3BCLEVBQUUsZ0JBQWdCO0FBQ2xCLEVBQUUscUJBQXFCO0FBQ3ZCLEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsb0JBQW9CO0FBQ3RCLEVBQUUscUJBQXFCO0FBQ3ZCLEVBQUUsa0JBQWtCO0FBQ3BCLEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsaUJBQWlCO0FBQ25CLEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsaUJBQWlCO0FBQ25CLEVBQUUseUJBQXlCO0FBQzNCLEVBQUUsc0JBQXNCO0FBQ3hCLEVBQUUscUJBQXFCO0FBQ3ZCLEVBQUUsa0JBQWtCO0FBQ3BCLEVBQUUsaUJBQWlCO0FBQ25CLEVBQUUscUJBQXFCO0FBQ3ZCLEVBQUUseUJBQXlCO0FBQzNCLEVBQUUscUJBQXFCO0FBQ3ZCLEVBQUUscUJBQXFCO0FBQ3ZCLEVBQUUsb0JBQW9CO0FBQ3RCLEVBQUUsa0JBQWtCO0FBQ3BCLEVBQUUscUJBQXFCO0FBQ3ZCLEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsa0JBQWtCO0FBQ3BCLEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsa0JBQWtCO0FBQ3BCLEVBQUUsa0JBQWtC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QUFPLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUk7QUFDcEcsS0FBSyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDbkIsS0FBSyxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxDQUFDO0FBQ3pCLEtBQUssSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRTtBQUMxQixLQUFLLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUU7QUFDMUIsS0FBSyxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFO0FBQzFCLEtBQUssSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRTtBQUMxQixLQUFLLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUM7QUFDMUIsS0FBSyxJQUFJLEdBQUcsRUFBRTtBQUNkLEVBQUU7QUFDRjtBQUNBO0FBQ0EsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLEdBQUc7QUFDdkMsRUFBRSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBQztBQUM1QixFQUFFLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFDO0FBQzVCO0FBQ0EsRUFBRSxJQUFJLEtBQUssR0FBRyxFQUFFLElBQUksS0FBSyxHQUFHLEVBQUUsSUFBSSxLQUFLLEdBQUcsRUFBRSxJQUFJLEtBQUssR0FBRyxFQUFFLEVBQUU7QUFDNUQsR0FBRyxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDO0FBQ2pDLEdBQUcsS0FBSyxHQUFHLE9BQU8sQ0FB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
|