@dcl/sdk 7.0.0-2598240213.commit-e7b25e0 → 7.0.0-2649664321.commit-63b4b53
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/ecs7/index.d.ts +11 -7
- package/dist/ecs7/index.js +23 -7
- package/dist/ecs7/index.min.js +1 -1
- package/dist/ecs7/index.min.js.map +1 -1
- package/dist/ecs7/proto-definitions/BoxShape.proto +1 -2
- package/dist/ecs7/proto-definitions/CylinderShape.proto +1 -2
- package/dist/ecs7/proto-definitions/NFTShape.proto +0 -1
- package/dist/ecs7/proto-definitions/PlaneShape.proto +1 -3
- package/dist/ecs7/proto-definitions/README.md +1 -1
- package/dist/ecs7/proto-definitions/SphereShape.proto +1 -1
- package/dist/ecs7/proto-definitions/TextShape.proto +5 -7
- package/package.json +5 -5
- package/types/ecs7/index.d.ts +11 -7
package/dist/ecs7/index.js
CHANGED
@@ -6110,11 +6110,9 @@
|
|
6110
6110
|
* @internal
|
6111
6111
|
*/
|
6112
6112
|
function sameData(a, b) {
|
6113
|
+
// At reference level
|
6113
6114
|
if (a === b)
|
6114
6115
|
return true;
|
6115
|
-
if (a instanceof Buffer && b instanceof Buffer) {
|
6116
|
-
return a.equals(b);
|
6117
|
-
}
|
6118
6116
|
if (a instanceof Uint8Array && b instanceof Uint8Array) {
|
6119
6117
|
if (a.byteLength !== b.byteLength) {
|
6120
6118
|
return false;
|
@@ -6126,7 +6124,13 @@
|
|
6126
6124
|
}
|
6127
6125
|
return true;
|
6128
6126
|
}
|
6129
|
-
|
6127
|
+
if (globalThis.Buffer) {
|
6128
|
+
if (a instanceof Buffer && b instanceof Buffer) {
|
6129
|
+
// Deep level
|
6130
|
+
return a.equals(b);
|
6131
|
+
}
|
6132
|
+
}
|
6133
|
+
return false;
|
6130
6134
|
}
|
6131
6135
|
exports.sameData = sameData;
|
6132
6136
|
/**
|
@@ -6392,11 +6396,23 @@
|
|
6392
6396
|
return woffset;
|
6393
6397
|
},
|
6394
6398
|
/**
|
6395
|
-
*
|
6399
|
+
* Take care using this function, if you modify the data after, the
|
6400
|
+
* returned subarray will change too. If you'll modify the content of the
|
6401
|
+
* bytebuffer, maybe you want to use toCopiedBinary()
|
6402
|
+
*
|
6403
|
+
* @returns The subarray from 0 to offset as reference.
|
6396
6404
|
*/
|
6397
6405
|
toBinary() {
|
6398
6406
|
return buffer.subarray(0, woffset);
|
6399
6407
|
},
|
6408
|
+
/**
|
6409
|
+
* Safe copied buffer of the current data of ByteBuffer
|
6410
|
+
*
|
6411
|
+
* @returns The subarray from 0 to offset.
|
6412
|
+
*/
|
6413
|
+
toCopiedBinary() {
|
6414
|
+
return new Uint8Array(this.toBinary());
|
6415
|
+
},
|
6400
6416
|
writeBuffer(value, writeLength = true) {
|
6401
6417
|
if (writeLength) {
|
6402
6418
|
this.writeUint32(value.byteLength);
|
@@ -7330,7 +7346,7 @@
|
|
7330
7346
|
// TODO: replace with new rpc
|
7331
7347
|
dcl
|
7332
7348
|
.callRpc('@decentraland/ExperimentalAPI', 'sendToRenderer', [
|
7333
|
-
{ data: message }
|
7349
|
+
{ data: new Uint8Array(message) }
|
7334
7350
|
])
|
7335
7351
|
.catch(dcl.error);
|
7336
7352
|
},
|
@@ -7424,4 +7440,4 @@
|
|
7424
7440
|
Object.defineProperty(exports, '__esModule', { value: true });
|
7425
7441
|
|
7426
7442
|
})(this.self = this.self || {});
|
7427
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy9AZGNsL2Vjcy1tYXRoL2Rpc3QvVmVjdG9yMy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZGNsL2Vjcy1tYXRoL2Rpc3QvU2NhbGFyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BkY2wvZWNzLW1hdGgvZGlzdC90eXBlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZGNsL2Vjcy1tYXRoL2Rpc3QvUXVhdGVybmlvbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZGNsL2Vjcy1tYXRoL2Rpc3QvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvQHByb3RvYnVmanMvYXNwcm9taXNlL2luZGV4LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0Bwcm90b2J1ZmpzL2Jhc2U2NC9pbmRleC5qcyIsIi4uL25vZGVfbW9kdWxlcy9AcHJvdG9idWZqcy9ldmVudGVtaXR0ZXIvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvQHByb3RvYnVmanMvZmxvYXQvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvQHByb3RvYnVmanMvaW5xdWlyZS9pbmRleC5qcyIsIi4uL25vZGVfbW9kdWxlcy9AcHJvdG9idWZqcy91dGY4L2luZGV4LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0Bwcm90b2J1ZmpzL3Bvb2wvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvcHJvdG9idWZqcy9zcmMvdXRpbC9sb25nYml0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9wcm90b2J1ZmpzL3NyYy91dGlsL21pbmltYWwuanMiLCIuLi9ub2RlX21vZHVsZXMvcHJvdG9idWZqcy9zcmMvd3JpdGVyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3Byb3RvYnVmanMvc3JjL3dyaXRlcl9idWZmZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvcHJvdG9idWZqcy9zcmMvcmVhZGVyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3Byb3RvYnVmanMvc3JjL3JlYWRlcl9idWZmZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvcHJvdG9idWZqcy9zcmMvcnBjL3NlcnZpY2UuanMiLCIuLi9ub2RlX21vZHVsZXMvcHJvdG9idWZqcy9zcmMvcnBjLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3Byb3RvYnVmanMvc3JjL3Jvb3RzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3Byb3RvYnVmanMvc3JjL2luZGV4LW1pbmltYWwuanMiLCIuLi9ub2RlX21vZHVsZXMvcHJvdG9idWZqcy9taW5pbWFsLmpzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL3BiL0FuaW1hdG9yLmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2dlbmVyYXRlZC9BbmltYXRvci5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvcGIvQXVkaW9Tb3VyY2UuZ2VuLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL0F1ZGlvU291cmNlLmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2dlbmVyYXRlZC9wYi9BdWRpb1N0cmVhbS5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvQXVkaW9TdHJlYW0uZ2VuLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL3BiL0JveFNoYXBlLmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2dlbmVyYXRlZC9Cb3hTaGFwZS5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvcGIvQ3lsaW5kZXJTaGFwZS5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvQ3lsaW5kZXJTaGFwZS5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvcGIvR0xURlNoYXBlLmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2dlbmVyYXRlZC9HTFRGU2hhcGUuZ2VuLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL3BiL2NvbW1vbi9Db2xvcjMuZ2VuLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL3BiL05GVFNoYXBlLmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2dlbmVyYXRlZC9ORlRTaGFwZS5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvcGIvT25Qb2ludGVyRG93bi5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvT25Qb2ludGVyRG93bi5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvcGIvY29tbW9uL1ZlY3RvcjMuZ2VuLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL3BiL09uUG9pbnRlckRvd25SZXN1bHQuZ2VuLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL09uUG9pbnRlckRvd25SZXN1bHQuZ2VuLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL3BiL09uUG9pbnRlclVwLmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2dlbmVyYXRlZC9PblBvaW50ZXJVcC5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvcGIvT25Qb2ludGVyVXBSZXN1bHQuZ2VuLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL09uUG9pbnRlclVwUmVzdWx0Lmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2dlbmVyYXRlZC9wYi9QbGFuZVNoYXBlLmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2dlbmVyYXRlZC9QbGFuZVNoYXBlLmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2dlbmVyYXRlZC9wYi9TcGhlcmVTaGFwZS5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvU3BoZXJlU2hhcGUuZ2VuLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL3BiL1RleHRTaGFwZS5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvVGV4dFNoYXBlLmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2dlbmVyYXRlZC9wYi9VaVRyYW5zZm9ybS5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvVWlUcmFuc2Zvcm0uZ2VuLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL2luZGV4Lmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2xlZ2FjeS9UcmFuc2Zvcm0udHMiLCIuLi9zcmMvY29tcG9uZW50cy9sZWdhY3kvdHlwZXMudHMiLCIuLi9zcmMvY29tcG9uZW50cy9sZWdhY3kvaW5kZXgudHMiLCIuLi9zcmMvY29tcG9uZW50cy90eXBlcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL2luZGV4LnRzIiwiLi4vbm9kZV9tb2R1bGVzL0BkY2wvY3JkdC9kaXN0L3R5cGVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BkY2wvY3JkdC9kaXN0L2luZGV4LmpzIiwiLi4vc3JjL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlci9pbmRleC50cyIsIi4uL3NyYy9zZXJpYWxpemF0aW9uL3dpcmVNZXNzYWdlLnRzIiwiLi4vc3JjL3NlcmlhbGl6YXRpb24vY3JkdC9jb21wb25lbnRPcGVyYXRpb24udHMiLCIuLi9zcmMvc3lzdGVtcy9jcmR0L3V0aWxzLnRzIiwiLi4vc3JjL3N5c3RlbXMvY3JkdC9pbmRleC50cyIsIi4uL3NyYy9lbmdpbmUvZW50aXR5LXV0aWxzLnRzIiwiLi4vc3JjL2VuZ2luZS9lbnRpdHkudHMiLCIuLi9zcmMvZW5naW5lL3V0aWxzLnRzIiwiLi4vc3JjL2VuZ2luZS9jb21wb25lbnQudHMiLCIuLi9zcmMvZW5naW5lL2luZGV4LnRzIiwiLi4vc3JjL2J1aWx0LWluLXR5cGVzL01hcFR5cGUudHMiLCIuLi9zcmMvYnVpbHQtaW4tdHlwZXMvQXJyYXlUeXBlLnRzIiwiLi4vc3JjL2J1aWx0LWluLXR5cGVzL09wdGlvbmFsLnRzIiwiLi4vc3JjL2J1aWx0LWluLXR5cGVzL2Jhc2ljL0ludGVnZXIudHMiLCIuLi9zcmMvYnVpbHQtaW4tdHlwZXMvYmFzaWMvRmxvYXQudHMiLCIuLi9zcmMvYnVpbHQtaW4tdHlwZXMvYmFzaWMvU3RyaW5nLnRzIiwiLi4vc3JjL2J1aWx0LWluLXR5cGVzL2Jhc2ljL0VudW0udHMiLCIuLi9zcmMvYnVpbHQtaW4tdHlwZXMvYmFzaWMvQm9vbGVhbi50cyIsIi4uL3NyYy9zeXN0ZW1zL2NyZHQvdHJhbnNwb3J0cy9yZW5kZXJlclRyYW5zcG9ydC50cyIsIi4uL3NyYy9zeXN0ZW1zL2NyZHQvdHJhbnNwb3J0cy9uZXR3b3JrVHJhbnNwb3J0LnRzIiwiLi4vc3JjL2luaXRpYWxpemF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5WZWN0b3IzID0gdm9pZCAwO1xuLyoqXG4gKiBAcHVibGljXG4gKi9cbnZhciBWZWN0b3IzO1xuKGZ1bmN0aW9uIChWZWN0b3IzKSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBWZWN0b3IzIG9iamVjdCBmcm9tIHRoZSBnaXZlbiB4LCB5LCB6IChmbG9hdHMpIGNvb3JkaW5hdGVzLlxuICAgICAqIEBwYXJhbSB4IC0gZGVmaW5lcyB0aGUgZmlyc3QgY29vcmRpbmF0ZXMgKG9uIFggYXhpcylcbiAgICAgKiBAcGFyYW0geSAtIGRlZmluZXMgdGhlIHNlY29uZCBjb29yZGluYXRlcyAob24gWSBheGlzKVxuICAgICAqIEBwYXJhbSB6IC0gZGVmaW5lcyB0aGUgdGhpcmQgY29vcmRpbmF0ZXMgKG9uIFogYXhpcylcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGUoXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgZmlyc3QgY29vcmRpbmF0ZXMgKG9uIFggYXhpcylcbiAgICAgKi9cbiAgICB4ID0gMCwgXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgc2Vjb25kIGNvb3JkaW5hdGVzIChvbiBZIGF4aXMpXG4gICAgICovXG4gICAgeSA9IDAsIFxuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGhlIHRoaXJkIGNvb3JkaW5hdGVzIChvbiBaIGF4aXMpXG4gICAgICovXG4gICAgeiA9IDApIHtcbiAgICAgICAgcmV0dXJuIHsgeCwgeSwgeiB9O1xuICAgIH1cbiAgICBWZWN0b3IzLmNyZWF0ZSA9IGNyZWF0ZTtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbmV3IFZlY3RvcjMgYXMgdGhlIHJlc3VsdCBvZiB0aGUgYWRkaXRpb24gb2YgdGhlIHR3byBnaXZlbiB2ZWN0b3JzLlxuICAgICAqIEBwYXJhbSB2ZWN0b3IxIC0gdGhlIGZpcnN0IHZlY3RvclxuICAgICAqIEBwYXJhbSB2ZWN0b3IyIC0gdGhlIHNlY29uZCB2ZWN0b3JcbiAgICAgKiBAcmV0dXJucyB0aGUgcmVzdWx0aW5nIHZlY3RvclxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFkZCh2ZWN0b3IxLCB2ZWN0b3IyKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB2ZWN0b3IxLnggKyB2ZWN0b3IyLngsXG4gICAgICAgICAgICB5OiB2ZWN0b3IxLnkgKyB2ZWN0b3IyLnksXG4gICAgICAgICAgICB6OiB2ZWN0b3IxLnogKyB2ZWN0b3IyLnpcbiAgICAgICAgfTtcbiAgICB9XG4gICAgVmVjdG9yMy5hZGQgPSBhZGQ7XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIG5ldyBWZWN0b3IzIGFzIHRoZSByZXN1bHQgb2YgdGhlIHN1YnN0cmFjdGlvbiBvZiB0aGUgdHdvIGdpdmVuIHZlY3RvcnMuXG4gICAgICogQHJldHVybnMgdGhlIHJlc3VsdGluZyB2ZWN0b3JcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdWJ0cmFjdChtaW51ZW5kLCBzdWJ0cmFoZW5kKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBtaW51ZW5kLnggLSBzdWJ0cmFoZW5kLngsXG4gICAgICAgICAgICB5OiBtaW51ZW5kLnkgLSBzdWJ0cmFoZW5kLnksXG4gICAgICAgICAgICB6OiBtaW51ZW5kLnogLSBzdWJ0cmFoZW5kLnpcbiAgICAgICAgfTtcbiAgICB9XG4gICAgVmVjdG9yMy5zdWJ0cmFjdCA9IHN1YnRyYWN0O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgVmVjdG9yMyBhcyB0aGUgcmVzdWx0IG9mIHRoZSBzdWJzdHJhY3Rpb24gb2YgdGhlIHR3byBnaXZlbiB2ZWN0b3JzLlxuICAgICAqIEByZXR1cm5zIHRoZSByZXN1bHRpbmcgdmVjdG9yXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3VidHJhY3RUb1JlZihtaW51ZW5kLCBzdWJ0cmFoZW5kLCByZXN1bHQpIHtcbiAgICAgICAgcmVzdWx0LnggPSBtaW51ZW5kLnggLSBzdWJ0cmFoZW5kLng7XG4gICAgICAgIHJlc3VsdC55ID0gbWludWVuZC55IC0gc3VidHJhaGVuZC55O1xuICAgICAgICByZXN1bHQueiA9IG1pbnVlbmQueiAtIHN1YnRyYWhlbmQuejtcbiAgICB9XG4gICAgVmVjdG9yMy5zdWJ0cmFjdFRvUmVmID0gc3VidHJhY3RUb1JlZjtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbmV3IFZlY3RvcjMgd2l0aCB0aGUgb3RoZXIgc2lnblxuICAgICAqIEByZXR1cm5zIHRoZSByZXN1bHRpbmcgdmVjdG9yXG4gICAgICovXG4gICAgZnVuY3Rpb24gb3Bwb3NpdGUodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHsgeDogLXZhbHVlLngsIHk6IC12YWx1ZS55LCB6OiAtdmFsdWUueiB9O1xuICAgIH1cbiAgICBWZWN0b3IzLm9wcG9zaXRlID0gb3Bwb3NpdGU7XG4gICAgLyoqXG4gICAgICogQ29weSBzb3VyY2UgaW50byBkZXN0XG4gICAgICpcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb3B5KHNvdXJjZSwgZGVzdCkge1xuICAgICAgICBkZXN0LnggPSBzb3VyY2UueDtcbiAgICAgICAgZGVzdC55ID0gc291cmNlLnk7XG4gICAgICAgIGRlc3QueiA9IHNvdXJjZS56O1xuICAgIH1cbiAgICBWZWN0b3IzLmNvcHkgPSBjb3B5O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgVmVjdG9yMyB3aXRoIHRoZSBzYW1lIHZhbHVlXG4gICAgICogQHJldHVybnMgdGhlIHJlc3VsdGluZyB2ZWN0b3JcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZShzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHNvdXJjZSk7XG4gICAgfVxuICAgIFZlY3RvcjMuY2xvbmUgPSBjbG9uZTtcbiAgICAvLyBQcm9wZXJ0aWVzXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbGVuZ3RoIG9mIHRoZSBWZWN0b3IzXG4gICAgICogQHJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgVmVjdG8zXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGVuZ3RoKHZlY3Rvcikge1xuICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KHZlY3Rvci54ICogdmVjdG9yLnggKyB2ZWN0b3IueSAqIHZlY3Rvci55ICsgdmVjdG9yLnogKiB2ZWN0b3Iueik7XG4gICAgfVxuICAgIFZlY3RvcjMubGVuZ3RoID0gbGVuZ3RoO1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHNxdWFyZWQgbGVuZ3RoIG9mIHRoZSBWZWN0b3IzXG4gICAgICogQHJldHVybnMgc3F1YXJlZCBsZW5ndGggb2YgdGhlIFZlY3RvcjNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsZW5ndGhTcXVhcmVkKHZlY3Rvcikge1xuICAgICAgICByZXR1cm4gdmVjdG9yLnggKiB2ZWN0b3IueCArIHZlY3Rvci55ICogdmVjdG9yLnkgKyB2ZWN0b3IueiAqIHZlY3Rvci56O1xuICAgIH1cbiAgICBWZWN0b3IzLmxlbmd0aFNxdWFyZWQgPSBsZW5ndGhTcXVhcmVkO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgVmVjdG9yMyBzZXQgd2l0aCB0aGUgY3VycmVudCBWZWN0b3IzIGNvb3JkaW5hdGVzIG11bHRpcGxpZWQgYnkgdGhlIGZsb2F0IFwic2NhbGVcIlxuICAgICAqIEBwYXJhbSBzY2FsZSAtIGRlZmluZXMgdGhlIG11bHRpcGxpZXIgZmFjdG9yXG4gICAgICogQHJldHVybnMgYSBuZXcgVmVjdG9yM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNjYWxlVG9SZWYodmVjdG9yLCBzY2FsZSwgcmVzdWx0KSB7XG4gICAgICAgIHJlc3VsdC54ID0gdmVjdG9yLnggKiBzY2FsZTtcbiAgICAgICAgcmVzdWx0LnkgPSB2ZWN0b3IueSAqIHNjYWxlO1xuICAgICAgICByZXN1bHQueiA9IHZlY3Rvci56ICogc2NhbGU7XG4gICAgfVxuICAgIFZlY3RvcjMuc2NhbGVUb1JlZiA9IHNjYWxlVG9SZWY7XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIG5ldyBWZWN0b3IzIHNldCB3aXRoIHRoZSBjdXJyZW50IFZlY3RvcjMgY29vcmRpbmF0ZXMgbXVsdGlwbGllZCBieSB0aGUgZmxvYXQgXCJzY2FsZVwiXG4gICAgICogQHBhcmFtIHNjYWxlIC0gZGVmaW5lcyB0aGUgbXVsdGlwbGllciBmYWN0b3JcbiAgICAgKiBAcmV0dXJucyBhIG5ldyBWZWN0b3IzXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2NhbGUodmVjdG9yLCBzY2FsZSkge1xuICAgICAgICByZXR1cm4gY3JlYXRlKHZlY3Rvci54ICogc2NhbGUsIHZlY3Rvci55ICogc2NhbGUsIHZlY3Rvci56ICogc2NhbGUpO1xuICAgIH1cbiAgICBWZWN0b3IzLnNjYWxlID0gc2NhbGU7XG4gICAgLyoqXG4gICAgICogTm9ybWFsaXplIHRoZSBjdXJyZW50IFZlY3RvcjMgd2l0aCB0aGUgZ2l2ZW4gaW5wdXQgbGVuZ3RoLlxuICAgICAqIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBpcyBhbiBpbiBwbGFjZSBvcGVyYXRpb24uXG4gICAgICogQHBhcmFtIGxlbiAtIHRoZSBsZW5ndGggb2YgdGhlIHZlY3RvclxuICAgICAqIEByZXR1cm5zIHRoZSBjdXJyZW50IHVwZGF0ZWQgVmVjdG9yM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUZyb21MZW5ndGgodmVjdG9yLCBsZW4pIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY3JlYXRlKDAsIDAsIDApO1xuICAgICAgICBub3JtYWxpemVGcm9tTGVuZ3RoVG9SZWYodmVjdG9yLCBsZW4sIHJlc3VsdCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIFZlY3RvcjMubm9ybWFsaXplRnJvbUxlbmd0aCA9IG5vcm1hbGl6ZUZyb21MZW5ndGg7XG4gICAgLyoqXG4gICAgICogTm9ybWFsaXplIHRoZSBjdXJyZW50IFZlY3RvcjMgd2l0aCB0aGUgZ2l2ZW4gaW5wdXQgbGVuZ3RoLlxuICAgICAqIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBpcyBhbiBpbiBwbGFjZSBvcGVyYXRpb24uXG4gICAgICogQHBhcmFtIGxlbiAtIHRoZSBsZW5ndGggb2YgdGhlIHZlY3RvclxuICAgICAqIEByZXR1cm5zIHRoZSBjdXJyZW50IHVwZGF0ZWQgVmVjdG9yM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUZyb21MZW5ndGhUb1JlZih2ZWN0b3IsIGxlbiwgcmVzdWx0KSB7XG4gICAgICAgIGlmIChsZW4gPT09IDAgfHwgbGVuID09PSAxLjApIHtcbiAgICAgICAgICAgIGNvcHkodmVjdG9yLCByZXN1bHQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNjYWxlVG9SZWYodmVjdG9yLCAxLjAgLyBsZW4sIHJlc3VsdCk7XG4gICAgfVxuICAgIFZlY3RvcjMubm9ybWFsaXplRnJvbUxlbmd0aFRvUmVmID0gbm9ybWFsaXplRnJvbUxlbmd0aFRvUmVmO1xuICAgIC8qKlxuICAgICAqIE5vcm1hbGl6ZSB0aGUgY3VycmVudCBWZWN0b3IzLlxuICAgICAqIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBpcyBhbiBpbiBwbGFjZSBvcGVyYXRpb24uXG4gICAgICogQHJldHVybnMgdGhlIGN1cnJlbnQgdXBkYXRlZCBWZWN0b3IzXG4gICAgICovXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplKHZlY3Rvcikge1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplRnJvbUxlbmd0aCh2ZWN0b3IsIGxlbmd0aCh2ZWN0b3IpKTtcbiAgICB9XG4gICAgVmVjdG9yMy5ub3JtYWxpemUgPSBub3JtYWxpemU7XG4gICAgLyoqXG4gICAgICogTm9ybWFsaXplIHRoZSBjdXJyZW50IFZlY3RvcjMuXG4gICAgICogUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGlzIGFuIGluIHBsYWNlIG9wZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB0aGUgY3VycmVudCB1cGRhdGVkIFZlY3RvcjNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBub3JtYWxpemVUb1JlZih2ZWN0b3IsIHJlc3VsdCkge1xuICAgICAgICBub3JtYWxpemVGcm9tTGVuZ3RoVG9SZWYodmVjdG9yLCBsZW5ndGgodmVjdG9yKSwgcmVzdWx0KTtcbiAgICB9XG4gICAgVmVjdG9yMy5ub3JtYWxpemVUb1JlZiA9IG5vcm1hbGl6ZVRvUmVmO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGRvdCBwcm9kdWN0IChmbG9hdCkgYmV0d2VlbiB0aGUgdmVjdG9ycyBcImxlZnRcIiBhbmQgXCJyaWdodFwiXG4gICAgICogQHBhcmFtIGxlZnQgLSBkZWZpbmVzIHRoZSBsZWZ0IG9wZXJhbmRcbiAgICAgKiBAcGFyYW0gcmlnaHQgLSBkZWZpbmVzIHRoZSByaWdodCBvcGVyYW5kXG4gICAgICogQHJldHVybnMgdGhlIGRvdCBwcm9kdWN0XG4gICAgICovXG4gICAgZnVuY3Rpb24gZG90KGxlZnQsIHJpZ2h0KSB7XG4gICAgICAgIHJldHVybiBsZWZ0LnggKiByaWdodC54ICsgbGVmdC55ICogcmlnaHQueSArIGxlZnQueiAqIHJpZ2h0Lno7XG4gICAgfVxuICAgIFZlY3RvcjMuZG90ID0gZG90O1xuICAgIC8qKlxuICAgICAqIFJvdGF0ZXMgY3VycmVudCBWZWN0b3IzIGJhc2VkIG9uIHRoZSBnaXZlbiBxdWF0ZXJuaW9uLCBidXQgYXBwbGllcyB0aGUgcm90YXRpb24gdG8gdGFyZ2V0IFZlY3RvcjMuXG4gICAgICogQHBhcmFtIHEgLSBkZWZpbmVzIHRoZSBRdWF0ZXJuaW9uXG4gICAgICogQHBhcmFtIHJlc3VsdCAtIGRlZmluZXMgdGhlIHRhcmdldCBWZWN0b3IzXG4gICAgICogQHJldHVybnMgdGhlIGN1cnJlbnQgVmVjdG9yM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJvdGF0ZSh2ZWN0b3IsIHEpIHtcbiAgICAgICAgY29uc3QgeyB4LCB5LCB6IH0gPSB2ZWN0b3I7XG4gICAgICAgIGNvbnN0IHsgeDogcXgsIHk6IHF5LCB6OiBxeiwgdzogcXcgfSA9IHE7XG4gICAgICAgIC8vIGNhbGN1bGF0ZSBxdWF0ICogdmVjdG9yXG4gICAgICAgIGNvbnN0IGl4ID0gcXcgKiB4ICsgcXkgKiB6IC0gcXogKiB5O1xuICAgICAgICBjb25zdCBpeSA9IHF3ICogeSArIHF6ICogeCAtIHF4ICogejtcbiAgICAgICAgY29uc3QgaXogPSBxdyAqIHogKyBxeCAqIHkgLSBxeSAqIHg7XG4gICAgICAgIGNvbnN0IGl3ID0gLXF4ICogeCAtIHF5ICogeSAtIHF6ICogejtcbiAgICAgICAgLy8gY2FsY3VsYXRlIHJlc3VsdCAqIGludmVyc2UgcXVhdFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogaXggKiBxdyArIGl3ICogLXF4ICsgaXkgKiAtcXogLSBpeiAqIC1xeSxcbiAgICAgICAgICAgIHk6IGl5ICogcXcgKyBpdyAqIC1xeSArIGl6ICogLXF4IC0gaXggKiAtcXosXG4gICAgICAgICAgICB6OiBpeiAqIHF3ICsgaXcgKiAtcXogKyBpeCAqIC1xeSAtIGl5ICogLXF4XG4gICAgICAgIH07XG4gICAgfVxuICAgIFZlY3RvcjMucm90YXRlID0gcm90YXRlO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgVmVjdG9yMyBsb2NhdGVkIGZvciBcImFtb3VudFwiIChmbG9hdCkgb24gdGhlIGxpbmVhciBpbnRlcnBvbGF0aW9uIGJldHdlZW4gdGhlIHZlY3RvcnMgXCJzdGFydFwiIGFuZCBcImVuZFwiXG4gICAgICogQHBhcmFtIHN0YXJ0IC0gZGVmaW5lcyB0aGUgc3RhcnQgdmFsdWVcbiAgICAgKiBAcGFyYW0gZW5kIC0gZGVmaW5lcyB0aGUgZW5kIHZhbHVlXG4gICAgICogQHBhcmFtIGFtb3VudCAtIG1heCBkZWZpbmVzIGFtb3VudCBiZXR3ZWVuIGJvdGggKGJldHdlZW4gMCBhbmQgMSlcbiAgICAgKiBAcmV0dXJucyB0aGUgbmV3IFZlY3RvcjNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsZXJwKHN0YXJ0LCBlbmQsIGFtb3VudCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBjcmVhdGUoMCwgMCwgMCk7XG4gICAgICAgIGxlcnBUb1JlZihzdGFydCwgZW5kLCBhbW91bnQsIHJlc3VsdCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIFZlY3RvcjMubGVycCA9IGxlcnA7XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgZ2l2ZW4gdmVjdG9yIFwicmVzdWx0XCIgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBmcm9tIHRoZSB2ZWN0b3IgXCJzdGFydFwiIGZvciBcImFtb3VudFwiIHRvIHRoZSB2ZWN0b3IgXCJlbmRcIlxuICAgICAqIEBwYXJhbSBzdGFydCAtIGRlZmluZXMgdGhlIHN0YXJ0IHZhbHVlXG4gICAgICogQHBhcmFtIGVuZCAtIGRlZmluZXMgdGhlIGVuZCB2YWx1ZVxuICAgICAqIEBwYXJhbSBhbW91bnQgLSBtYXggZGVmaW5lcyBhbW91bnQgYmV0d2VlbiBib3RoIChiZXR3ZWVuIDAgYW5kIDEpXG4gICAgICogQHBhcmFtIHJlc3VsdCAtIGRlZmluZXMgdGhlIFZlY3RvcjMgd2hlcmUgdG8gc3RvcmUgdGhlIHJlc3VsdFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxlcnBUb1JlZihzdGFydCwgZW5kLCBhbW91bnQsIHJlc3VsdCkge1xuICAgICAgICByZXN1bHQueCA9IHN0YXJ0LnggKyAoZW5kLnggLSBzdGFydC54KSAqIGFtb3VudDtcbiAgICAgICAgcmVzdWx0LnkgPSBzdGFydC55ICsgKGVuZC55IC0gc3RhcnQueSkgKiBhbW91bnQ7XG4gICAgICAgIHJlc3VsdC56ID0gc3RhcnQueiArIChlbmQueiAtIHN0YXJ0LnopICogYW1vdW50O1xuICAgIH1cbiAgICBWZWN0b3IzLmxlcnBUb1JlZiA9IGxlcnBUb1JlZjtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbmV3IFZlY3RvcjMgYXMgdGhlIGNyb3NzIHByb2R1Y3Qgb2YgdGhlIHZlY3RvcnMgXCJsZWZ0XCIgYW5kIFwicmlnaHRcIlxuICAgICAqIFRoZSBjcm9zcyBwcm9kdWN0IGlzIHRoZW4gb3J0aG9nb25hbCB0byBib3RoIFwibGVmdFwiIGFuZCBcInJpZ2h0XCJcbiAgICAgKiBAcGFyYW0gbGVmdCAtIGRlZmluZXMgdGhlIGxlZnQgb3BlcmFuZFxuICAgICAqIEBwYXJhbSByaWdodCAtIGRlZmluZXMgdGhlIHJpZ2h0IG9wZXJhbmRcbiAgICAgKiBAcmV0dXJucyB0aGUgY3Jvc3MgcHJvZHVjdFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyb3NzKGxlZnQsIHJpZ2h0KSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFZlY3RvcjMuWmVybygpO1xuICAgICAgICBWZWN0b3IzLmNyb3NzVG9SZWYobGVmdCwgcmlnaHQsIHJlc3VsdCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIFZlY3RvcjMuY3Jvc3MgPSBjcm9zcztcbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBnaXZlbiB2ZWN0b3IgXCJyZXN1bHRcIiB3aXRoIHRoZSBjcm9zcyBwcm9kdWN0IG9mIFwibGVmdFwiIGFuZCBcInJpZ2h0XCJcbiAgICAgKiBUaGUgY3Jvc3MgcHJvZHVjdCBpcyB0aGVuIG9ydGhvZ29uYWwgdG8gYm90aCBcImxlZnRcIiBhbmQgXCJyaWdodFwiXG4gICAgICogQHBhcmFtIGxlZnQgLSBkZWZpbmVzIHRoZSBsZWZ0IG9wZXJhbmRcbiAgICAgKiBAcGFyYW0gcmlnaHQgLSBkZWZpbmVzIHRoZSByaWdodCBvcGVyYW5kXG4gICAgICogQHBhcmFtIHJlc3VsdCAtIGRlZmluZXMgdGhlIFZlY3RvcjMgd2hlcmUgdG8gc3RvcmUgdGhlIHJlc3VsdFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyb3NzVG9SZWYobGVmdCwgcmlnaHQsIHJlc3VsdCkge1xuICAgICAgICByZXN1bHQueCA9IGxlZnQueSAqIHJpZ2h0LnogLSBsZWZ0LnogKiByaWdodC55O1xuICAgICAgICByZXN1bHQueSA9IGxlZnQueiAqIHJpZ2h0LnggLSBsZWZ0LnggKiByaWdodC56O1xuICAgICAgICByZXN1bHQueiA9IGxlZnQueCAqIHJpZ2h0LnkgLSBsZWZ0LnkgKiByaWdodC54O1xuICAgIH1cbiAgICBWZWN0b3IzLmNyb3NzVG9SZWYgPSBjcm9zc1RvUmVmO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgVmVjdG9yMyBzZXQgdG8gKDAuMCwgMC4wLCAwLjApXG4gICAgICogQHJldHVybnMgYSBuZXcgZW1wdHkgVmVjdG9yM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIFplcm8oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGUoMC4wLCAwLjAsIDAuMCk7XG4gICAgfVxuICAgIFZlY3RvcjMuWmVybyA9IFplcm87XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIG5ldyBWZWN0b3IzIHNldCB0byAoMS4wLCAxLjAsIDEuMClcbiAgICAgKiBAcmV0dXJucyBhIG5ldyB1bml0IFZlY3RvcjNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBPbmUoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGUoMS4wLCAxLjAsIDEuMCk7XG4gICAgfVxuICAgIFZlY3RvcjMuT25lID0gT25lO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgVmVjdG9yMyBzZXQgdG9sZW5ndGhTcXVhcmVkICgwLjAsIDEuMCwgMC4wKVxuICAgICAqIEByZXR1cm5zIGEgbmV3IHVwIFZlY3RvcjNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBVcCgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZSgwLjAsIDEuMCwgMC4wKTtcbiAgICB9XG4gICAgVmVjdG9yMy5VcCA9IFVwO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgVmVjdG9yMyBzZXQgdG8gKDAuMCwgLTEuMCwgMC4wKVxuICAgICAqIEByZXR1cm5zIGEgbmV3IGRvd24gVmVjdG9yM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIERvd24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGUoMC4wLCAtMS4wLCAwLjApO1xuICAgIH1cbiAgICBWZWN0b3IzLkRvd24gPSBEb3duO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgVmVjdG9yMyBzZXQgdG8gKDAuMCwgMC4wLCAxLjApXG4gICAgICogQHJldHVybnMgYSBuZXcgZm9yd2FyZCBWZWN0b3IzXG4gICAgICovXG4gICAgZnVuY3Rpb24gRm9yd2FyZCgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZSgwLjAsIDAuMCwgMS4wKTtcbiAgICB9XG4gICAgVmVjdG9yMy5Gb3J3YXJkID0gRm9yd2FyZDtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbmV3IFZlY3RvcjMgc2V0IHRvICgwLjAsIDAuMCwgLTEuMClcbiAgICAgKiBAcmV0dXJucyBhIG5ldyBmb3J3YXJkIFZlY3RvcjNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBCYWNrd2FyZCgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZSgwLjAsIDAuMCwgLTEuMCk7XG4gICAgfVxuICAgIFZlY3RvcjMuQmFja3dhcmQgPSBCYWNrd2FyZDtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbmV3IFZlY3RvcjMgc2V0IHRvICgxLjAsIDAuMCwgMC4wKVxuICAgICAqIEByZXR1cm5zIGEgbmV3IHJpZ2h0IFZlY3RvcjNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBSaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZSgxLjAsIDAuMCwgMC4wKTtcbiAgICB9XG4gICAgVmVjdG9yMy5SaWdodCA9IFJpZ2h0O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgVmVjdG9yMyBzZXQgdG8gKC0xLjAsIDAuMCwgMC4wKVxuICAgICAqIEByZXR1cm5zIGEgbmV3IGxlZnQgVmVjdG9yM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIExlZnQoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGUoLTEuMCwgMC4wLCAwLjApO1xuICAgIH1cbiAgICBWZWN0b3IzLkxlZnQgPSBMZWZ0O1xufSkoVmVjdG9yMyA9IGV4cG9ydHMuVmVjdG9yMyB8fCAoZXhwb3J0cy5WZWN0b3IzID0ge30pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVZlY3RvcjMuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlNjYWxhciA9IHZvaWQgMDtcbi8qKlxuICogVHdvIHBpIGNvbnN0YW50cyBjb252ZW5pZW50IGZvciBjb21wdXRhdGlvbi5cbiAqL1xuY29uc3QgVHdvUGkgPSBNYXRoLlBJICogMjtcbi8qKlxuICogQm9vbGVhbiA6IHRydWUgaWYgdGhlIGFic29sdXRlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGFuZCBiIGlzIGxvd2VyIHRoYW4gZXBzaWxvbiAoZGVmYXVsdCA9IDEuNDAxMjk4RS00NSlcbiAqIEBwYXJhbSBhIC0gbnVtYmVyXG4gKiBAcGFyYW0gYiAtIG51bWJlclxuICogQHBhcmFtIGVwc2lsb24gLSAoZGVmYXVsdCA9IDEuNDAxMjk4RS00NSlcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGFic29sdXRlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGFuZCBiIGlzIGxvd2VyIHRoYW4gZXBzaWxvbiAoZGVmYXVsdCA9IDEuNDAxMjk4RS00NSlcbiAqL1xuZnVuY3Rpb24gd2l0aGluRXBzaWxvbihhLCBiLCBlcHNpbG9uID0gMS40MDEyOThlLTQ1KSB7XG4gICAgY29uc3QgbnVtID0gYSAtIGI7XG4gICAgcmV0dXJuIC1lcHNpbG9uIDw9IG51bSAmJiBudW0gPD0gZXBzaWxvbjtcbn1cbi8qKlxuICogUmV0dXJucyBhIHN0cmluZyA6IHRoZSB1cHBlciBjYXNlIHRyYW5zbGF0aW9uIG9mIHRoZSBudW1iZXIgaSB0byBoZXhhZGVjaW1hbC5cbiAqIEBwYXJhbSBpIC0gbnVtYmVyXG4gKiBAcmV0dXJucyB0aGUgdXBwZXIgY2FzZSB0cmFuc2xhdGlvbiBvZiB0aGUgbnVtYmVyIGkgdG8gaGV4YWRlY2ltYWwuXG4gKi9cbmZ1bmN0aW9uIHRvSGV4KGkpIHtcbiAgICBjb25zdCBzdHIgPSBpLnRvU3RyaW5nKDE2KTtcbiAgICBpZiAoaSA8PSAxNSkge1xuICAgICAgICByZXR1cm4gKCcwJyArIHN0cikudG9VcHBlckNhc2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0ci50b1VwcGVyQ2FzZSgpO1xufVxuLyoqXG4gKiBSZXR1cm5zIC0xIGlmIHZhbHVlIGlzIG5lZ2F0aXZlIGFuZCArMSBpcyB2YWx1ZSBpcyBwb3NpdGl2ZS5cbiAqIEBwYXJhbSBfdmFsdWUgLSB0aGUgdmFsdWVcbiAqIEByZXR1cm5zIHRoZSB2YWx1ZSBpdHNlbGYgaWYgaXQncyBlcXVhbCB0byB6ZXJvLlxuICovXG5mdW5jdGlvbiBzaWduKHZhbHVlKSB7XG4gICAgY29uc3QgX3ZhbHVlID0gK3ZhbHVlOyAvLyBjb252ZXJ0IHRvIGEgbnVtYmVyXG4gICAgaWYgKF92YWx1ZSA9PT0gMCB8fCBpc05hTihfdmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBfdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBfdmFsdWUgPiAwID8gMSA6IC0xO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSB2YWx1ZSBpdHNlbGYgaWYgaXQncyBiZXR3ZWVuIG1pbiBhbmQgbWF4LlxuICogUmV0dXJucyBtaW4gaWYgdGhlIHZhbHVlIGlzIGxvd2VyIHRoYW4gbWluLlxuICogUmV0dXJucyBtYXggaWYgdGhlIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBtYXguXG4gKiBAcGFyYW0gdmFsdWUgLSB0aGUgdmFsdWUgdG8gY2xtYXBcbiAqIEBwYXJhbSBtaW4gLSB0aGUgbWluIHZhbHVlIHRvIGNsYW1wIHRvIChkZWZhdWx0OiAwKVxuICogQHBhcmFtIG1heCAtIHRoZSBtYXggdmFsdWUgdG8gY2xhbXAgdG8gKGRlZmF1bHQ6IDEpXG4gKiBAcmV0dXJucyB0aGUgY2xhbXBlZCB2YWx1ZVxuICovXG5mdW5jdGlvbiBjbGFtcCh2YWx1ZSwgbWluID0gMCwgbWF4ID0gMSkge1xuICAgIHJldHVybiBNYXRoLm1pbihtYXgsIE1hdGgubWF4KG1pbiwgdmFsdWUpKTtcbn1cbi8qKlxuICogdGhlIGxvZzIgb2YgdmFsdWUuXG4gKiBAcGFyYW0gdmFsdWUgLSB0aGUgdmFsdWUgdG8gY29tcHV0ZSBsb2cyIG9mXG4gKiBAcmV0dXJucyB0aGUgbG9nMiBvZiB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbG9nMih2YWx1ZSkge1xuICAgIHJldHVybiBNYXRoLmxvZyh2YWx1ZSkgKiBNYXRoLkxPRzJFO1xufVxuLyoqXG4gKiBMb29wcyB0aGUgdmFsdWUsIHNvIHRoYXQgaXQgaXMgbmV2ZXIgbGFyZ2VyIHRoYW4gbGVuZ3RoIGFuZCBuZXZlciBzbWFsbGVyIHRoYW4gMC5cbiAqXG4gKiBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIG1vZHVsbyBvcGVyYXRvciBidXQgaXQgd29ya3Mgd2l0aCBmbG9hdGluZyBwb2ludCBudW1iZXJzLlxuICogRm9yIGV4YW1wbGUsIHVzaW5nIDMuMCBmb3IgdCBhbmQgMi41IGZvciBsZW5ndGgsIHRoZSByZXN1bHQgd291bGQgYmUgMC41LlxuICogV2l0aCB0ID0gNSBhbmQgbGVuZ3RoID0gMi41LCB0aGUgcmVzdWx0IHdvdWxkIGJlIDAuMC5cbiAqIE5vdGUsIGhvd2V2ZXIsIHRoYXQgdGhlIGJlaGF2aW91ciBpcyBub3QgZGVmaW5lZCBmb3IgbmVnYXRpdmUgbnVtYmVycyBhcyBpdCBpcyBmb3IgdGhlIG1vZHVsbyBvcGVyYXRvclxuICogQHBhcmFtIHZhbHVlIC0gdGhlIHZhbHVlXG4gKiBAcGFyYW0gbGVuZ3RoIC0gdGhlIGxlbmd0aFxuICogQHJldHVybnMgdGhlIGxvb3BlZCB2YWx1ZVxuICovXG5mdW5jdGlvbiByZXBlYXQodmFsdWUsIGxlbmd0aCkge1xuICAgIHJldHVybiB2YWx1ZSAtIE1hdGguZmxvb3IodmFsdWUgLyBsZW5ndGgpICogbGVuZ3RoO1xufVxuLyoqXG4gKiBOb3JtYWxpemUgdGhlIHZhbHVlIGJldHdlZW4gMC4wIGFuZCAxLjAgdXNpbmcgbWluIGFuZCBtYXggdmFsdWVzXG4gKiBAcGFyYW0gdmFsdWUgLSB2YWx1ZSB0byBub3JtYWxpemVcbiAqIEBwYXJhbSBtaW4gLSBtYXggdG8gbm9ybWFsaXplIGJldHdlZW5cbiAqIEBwYXJhbSBtYXggLSBtaW4gdG8gbm9ybWFsaXplIGJldHdlZW5cbiAqIEByZXR1cm5zIHRoZSBub3JtYWxpemVkIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZSh2YWx1ZSwgbWluLCBtYXgpIHtcbiAgICByZXR1cm4gKHZhbHVlIC0gbWluKSAvIChtYXggLSBtaW4pO1xufVxuLyoqXG4gKiBEZW5vcm1hbGl6ZSB0aGUgdmFsdWUgZnJvbSAwLjAgYW5kIDEuMCB1c2luZyBtaW4gYW5kIG1heCB2YWx1ZXNcbiAqIEBwYXJhbSBub3JtYWxpemVkIC0gdmFsdWUgdG8gZGVub3JtYWxpemVcbiAqIEBwYXJhbSBtaW4gLSBtYXggdG8gZGVub3JtYWxpemUgYmV0d2VlblxuICogQHBhcmFtIG1heCAtIG1pbiB0byBkZW5vcm1hbGl6ZSBiZXR3ZWVuXG4gKiBAcmV0dXJucyB0aGUgZGVub3JtYWxpemVkIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIGRlbm9ybWFsaXplKG5vcm1hbGl6ZWQsIG1pbiwgbWF4KSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQgKiAobWF4IC0gbWluKSArIG1pbjtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgc2hvcnRlc3QgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBnaXZlbiBhbmdsZXMgZ2l2ZW4gaW4gZGVncmVlcy5cbiAqIEBwYXJhbSBjdXJyZW50IC0gY3VycmVudCBhbmdsZSBpbiBkZWdyZWVzXG4gKiBAcGFyYW0gdGFyZ2V0IC0gdGFyZ2V0IGFuZ2xlIGluIGRlZ3JlZXNcbiAqIEByZXR1cm5zIHRoZSBkZWx0YVxuICovXG5mdW5jdGlvbiBkZWx0YUFuZ2xlKGN1cnJlbnQsIHRhcmdldCkge1xuICAgIGxldCBudW0gPSByZXBlYXQodGFyZ2V0IC0gY3VycmVudCwgMzYwLjApO1xuICAgIGlmIChudW0gPiAxODAuMCkge1xuICAgICAgICBudW0gLT0gMzYwLjA7XG4gICAgfVxuICAgIHJldHVybiBudW07XG59XG4vKipcbiAqIFBpbmdQb25ncyB0aGUgdmFsdWUgdCwgc28gdGhhdCBpdCBpcyBuZXZlciBsYXJnZXIgdGhhbiBsZW5ndGggYW5kIG5ldmVyIHNtYWxsZXIgdGhhbiAwLlxuICogQHBhcmFtIHR4IC0gdmFsdWVcbiAqIEBwYXJhbSBsZW5ndGggLSBsZW5ndGhcbiAqIEByZXR1cm5zIFRoZSByZXR1cm5lZCB2YWx1ZSB3aWxsIG1vdmUgYmFjayBhbmQgZm9ydGggYmV0d2VlbiAwIGFuZCBsZW5ndGhcbiAqL1xuZnVuY3Rpb24gcGluZ1BvbmcodHgsIGxlbmd0aCkge1xuICAgIGNvbnN0IHQgPSByZXBlYXQodHgsIGxlbmd0aCAqIDIuMCk7XG4gICAgcmV0dXJuIGxlbmd0aCAtIE1hdGguYWJzKHQgLSBsZW5ndGgpO1xufVxuLyoqXG4gKiBJbnRlcnBvbGF0ZXMgYmV0d2VlbiBtaW4gYW5kIG1heCB3aXRoIHNtb290aGluZyBhdCB0aGUgbGltaXRzLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gaW50ZXJwb2xhdGVzIGJldHdlZW4gbWluIGFuZCBtYXggaW4gYSBzaW1pbGFyIHdheSB0byBMZXJwLiBIb3dldmVyLCB0aGUgaW50ZXJwb2xhdGlvbiB3aWxsIGdyYWR1YWxseSBzcGVlZCB1cFxuICogZnJvbSB0aGUgc3RhcnQgYW5kIHNsb3cgZG93biB0b3dhcmQgdGhlIGVuZC4gVGhpcyBpcyB1c2VmdWwgZm9yIGNyZWF0aW5nIG5hdHVyYWwtbG9va2luZyBhbmltYXRpb24sIGZhZGluZyBhbmQgb3RoZXIgdHJhbnNpdGlvbnMuXG4gKiBAcGFyYW0gZnJvbSAtIGZyb21cbiAqIEBwYXJhbSB0byAtIHRvXG4gKiBAcGFyYW0gdHggLSB2YWx1ZVxuICogQHJldHVybnMgdGhlIHNtb290aCBzdGVwcGVkIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIHNtb290aFN0ZXAoZnJvbSwgdG8sIHR4KSB7XG4gICAgbGV0IHQgPSBjbGFtcCh0eCk7XG4gICAgdCA9IC0yLjAgKiB0ICogdCAqIHQgKyAzLjAgKiB0ICogdDtcbiAgICByZXR1cm4gdG8gKiB0ICsgZnJvbSAqICgxLjAgLSB0KTtcbn1cbi8qKlxuICogTW92ZXMgYSB2YWx1ZSBjdXJyZW50IHRvd2FyZHMgdGFyZ2V0LlxuICpcbiAqIFRoaXMgaXMgZXNzZW50aWFsbHkgdGhlIHNhbWUgYXMgTWF0aGYuTGVycCBidXQgaW5zdGVhZCB0aGUgZnVuY3Rpb24gd2lsbCBlbnN1cmUgdGhhdCB0aGUgc3BlZWQgbmV2ZXIgZXhjZWVkcyBtYXhEZWx0YS5cbiAqIE5lZ2F0aXZlIHZhbHVlcyBvZiBtYXhEZWx0YSBwdXNoZXMgdGhlIHZhbHVlIGF3YXkgZnJvbSB0YXJnZXQuXG4gKiBAcGFyYW0gY3VycmVudCAtIGN1cnJlbnQgdmFsdWVcbiAqIEBwYXJhbSB0YXJnZXQgLSB0YXJnZXQgdmFsdWVcbiAqIEBwYXJhbSBtYXhEZWx0YSAtIG1heCBkaXN0YW5jZSB0byBtb3ZlXG4gKiBAcmV0dXJucyByZXN1bHRpbmcgdmFsdWVcbiAqL1xuZnVuY3Rpb24gbW92ZVRvd2FyZHMoY3VycmVudCwgdGFyZ2V0LCBtYXhEZWx0YSkge1xuICAgIGxldCByZXN1bHQgPSAwO1xuICAgIGlmIChNYXRoLmFicyh0YXJnZXQgLSBjdXJyZW50KSA8PSBtYXhEZWx0YSkge1xuICAgICAgICByZXN1bHQgPSB0YXJnZXQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBjdXJyZW50ICsgc2lnbih0YXJnZXQgLSBjdXJyZW50KSAqIG1heERlbHRhO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLyoqXG4gKiBTYW1lIGFzIE1vdmVUb3dhcmRzIGJ1dCBtYWtlcyBzdXJlIHRoZSB2YWx1ZXMgaW50ZXJwb2xhdGUgY29ycmVjdGx5IHdoZW4gdGhleSB3cmFwIGFyb3VuZCAzNjAgZGVncmVlcy5cbiAqXG4gKiBWYXJpYWJsZXMgY3VycmVudCBhbmQgdGFyZ2V0IGFyZSBhc3N1bWVkIHRvIGJlIGluIGRlZ3JlZXMuIEZvciBvcHRpbWl6YXRpb24gcmVhc29ucywgbmVnYXRpdmUgdmFsdWVzIG9mIG1heERlbHRhXG4gKiAgYXJlIG5vdCBzdXBwb3J0ZWQgYW5kIG1heSBjYXVzZSBvc2NpbGxhdGlvbi4gVG8gcHVzaCBjdXJyZW50IGF3YXkgZnJvbSBhIHRhcmdldCBhbmdsZSwgYWRkIDE4MCB0byB0aGF0IGFuZ2xlIGluc3RlYWQuXG4gKiBAcGFyYW0gY3VycmVudCAtIGN1cnJlbnQgdmFsdWVcbiAqIEBwYXJhbSB0YXJnZXQgLSB0YXJnZXQgdmFsdWVcbiAqIEBwYXJhbSBtYXhEZWx0YSAtIG1heCBkaXN0YW5jZSB0byBtb3ZlXG4gKiBAcmV0dXJucyByZXN1bHRpbmcgYW5nbGVcbiAqL1xuZnVuY3Rpb24gbW92ZVRvd2FyZHNBbmdsZShjdXJyZW50LCB0YXJnZXQsIG1heERlbHRhKSB7XG4gICAgY29uc3QgbnVtID0gZGVsdGFBbmdsZShjdXJyZW50LCB0YXJnZXQpO1xuICAgIGxldCByZXN1bHQgPSAwO1xuICAgIGlmICgtbWF4RGVsdGEgPCBudW0gJiYgbnVtIDwgbWF4RGVsdGEpIHtcbiAgICAgICAgcmVzdWx0ID0gdGFyZ2V0O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gbW92ZVRvd2FyZHMoY3VycmVudCwgY3VycmVudCArIG51bSwgbWF4RGVsdGEpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHNjYWxhciB3aXRoIHZhbHVlcyBsaW5lYXJseSBpbnRlcnBvbGF0ZWQgb2YgXCJhbW91bnRcIiBiZXR3ZWVuIHRoZSBzdGFydCBzY2FsYXIgYW5kIHRoZSBlbmQgc2NhbGFyXG4gKiBAcGFyYW0gc3RhcnQgLSBzdGFydCB2YWx1ZVxuICogQHBhcmFtIGVuZCAtIHRhcmdldCB2YWx1ZVxuICogQHBhcmFtIGFtb3VudCAtIGFtb3VudCB0byBsZXJwIGJldHdlZW5cbiAqIEByZXR1cm5zIHRoZSBsZXJwZWQgdmFsdWVcbiAqL1xuZnVuY3Rpb24gbGVycChzdGFydCwgZW5kLCBhbW91bnQpIHtcbiAgICByZXR1cm4gc3RhcnQgKyAoZW5kIC0gc3RhcnQpICogYW1vdW50O1xufVxuLyoqXG4gKiBTYW1lIGFzIExlcnAgYnV0IG1ha2VzIHN1cmUgdGhlIHZhbHVlcyBpbnRlcnBvbGF0ZSBjb3JyZWN0bHkgd2hlbiB0aGV5IHdyYXAgYXJvdW5kIDM2MCBkZWdyZWVzLlxuICogVGhlIHBhcmFtZXRlciB0IGlzIGNsYW1wZWQgdG8gdGhlIHJhbmdlIFswLCAxXS4gVmFyaWFibGVzIGEgYW5kIGIgYXJlIGFzc3VtZWQgdG8gYmUgaW4gZGVncmVlcy5cbiAqIEBwYXJhbSBzdGFydCAtIHN0YXJ0IHZhbHVlXG4gKiBAcGFyYW0gZW5kIC0gdGFyZ2V0IHZhbHVlXG4gKiBAcGFyYW0gYW1vdW50IC0gYW1vdW50IHRvIGxlcnAgYmV0d2VlblxuICogQHJldHVybnMgdGhlIGxlcnBlZCB2YWx1ZVxuICovXG5mdW5jdGlvbiBsZXJwQW5nbGUoc3RhcnQsIGVuZCwgYW1vdW50KSB7XG4gICAgbGV0IG51bSA9IHJlcGVhdChlbmQgLSBzdGFydCwgMzYwLjApO1xuICAgIGlmIChudW0gPiAxODAuMCkge1xuICAgICAgICBudW0gLT0gMzYwLjA7XG4gICAgfVxuICAgIHJldHVybiBzdGFydCArIG51bSAqIGNsYW1wKGFtb3VudCk7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGxpbmVhciBwYXJhbWV0ZXIgdCB0aGF0IHByb2R1Y2VzIHRoZSBpbnRlcnBvbGFudCB2YWx1ZSB3aXRoaW4gdGhlIHJhbmdlIFthLCBiXS5cbiAqIEBwYXJhbSBhIC0gc3RhcnQgdmFsdWVcbiAqIEBwYXJhbSBiIC0gdGFyZ2V0IHZhbHVlXG4gKiBAcGFyYW0gdmFsdWUgLSB2YWx1ZSBiZXR3ZWVuIGEgYW5kIGJcbiAqIEByZXR1cm5zIHRoZSBpbnZlcnNlTGVycCB2YWx1ZVxuICovXG5mdW5jdGlvbiBpbnZlcnNlTGVycChhLCBiLCB2YWx1ZSkge1xuICAgIGxldCByZXN1bHQgPSAwO1xuICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgIHJlc3VsdCA9IGNsYW1wKCh2YWx1ZSAtIGEpIC8gKGIgLSBhKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXN1bHQgPSAwLjA7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4vKipcbiAqIFJldHVybnMgYSBuZXcgc2NhbGFyIGxvY2F0ZWQgZm9yIFwiYW1vdW50XCIgKGZsb2F0KSBvbiB0aGUgSGVybWl0ZSBzcGxpbmUgZGVmaW5lZCBieSB0aGUgc2NhbGFycyBcInZhbHVlMVwiLCBcInZhbHVlM1wiLCBcInRhbmdlbnQxXCIsIFwidGFuZ2VudDJcIi5cbiAqIHtAbGluayBodHRwOi8vbWF0aHdvcmxkLndvbGZyYW0uY29tL0hlcm1pdGVQb2x5bm9taWFsLmh0bWx9XG4gKiBAcGFyYW0gdmFsdWUxIC0gc3BsaW5lIHZhbHVlXG4gKiBAcGFyYW0gdGFuZ2VudDEgLSBzcGxpbmUgdmFsdWVcbiAqIEBwYXJhbSB2YWx1ZTIgLSBzcGxpbmUgdmFsdWVcbiAqIEBwYXJhbSB0YW5nZW50MiAtIHNwbGluZSB2YWx1ZVxuICogQHBhcmFtIGFtb3VudCAtIGlucHV0IHZhbHVlXG4gKiBAcmV0dXJucyBoZXJtaXRlIHJlc3VsdFxuICovXG5mdW5jdGlvbiBoZXJtaXRlKHZhbHVlMSwgdGFuZ2VudDEsIHZhbHVlMiwgdGFuZ2VudDIsIGFtb3VudCkge1xuICAgIGNvbnN0IHNxdWFyZWQgPSBhbW91bnQgKiBhbW91bnQ7XG4gICAgY29uc3QgY3ViZWQgPSBhbW91bnQgKiBzcXVhcmVkO1xuICAgIGNvbnN0IHBhcnQxID0gMi4wICogY3ViZWQgLSAzLjAgKiBzcXVhcmVkICsgMS4wO1xuICAgIGNvbnN0IHBhcnQyID0gLTIuMCAqIGN1YmVkICsgMy4wICogc3F1YXJlZDtcbiAgICBjb25zdCBwYXJ0MyA9IGN1YmVkIC0gMi4wICogc3F1YXJlZCArIGFtb3VudDtcbiAgICBjb25zdCBwYXJ0NCA9IGN1YmVkIC0gc3F1YXJlZDtcbiAgICByZXR1cm4gdmFsdWUxICogcGFydDEgKyB2YWx1ZTIgKiBwYXJ0MiArIHRhbmdlbnQxICogcGFydDMgKyB0YW5nZW50MiAqIHBhcnQ0O1xufVxuLyoqXG4gKiBSZXR1cm5zIGEgcmFuZG9tIGZsb2F0IG51bWJlciBiZXR3ZWVuIGFuZCBtaW4gYW5kIG1heCB2YWx1ZXNcbiAqIEBwYXJhbSBtaW4gLSBtaW4gdmFsdWUgb2YgcmFuZG9tXG4gKiBAcGFyYW0gbWF4IC0gbWF4IHZhbHVlIG9mIHJhbmRvbVxuICogQHJldHVybnMgcmFuZG9tIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIHJhbmRvbVJhbmdlKG1pbiwgbWF4KSB7XG4gICAgaWYgKG1pbiA9PT0gbWF4KSB7XG4gICAgICAgIHJldHVybiBtaW47XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikgKyBtaW47XG59XG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBwZXJjZW50YWdlIG9mIGEgbnVtYmVyIGluIGEgZ2l2ZW4gcmFuZ2UuXG4gKlxuICogUmFuZ2VUb1BlcmNlbnQoNDAsMjAsNjApIHdpbGwgcmV0dXJuIDAuNSAoNTAlKVxuICogUmFuZ2VUb1BlcmNlbnQoMzQsMCwxMDApIHdpbGwgcmV0dXJuIDAuMzQgKDM0JSlcbiAqIEBwYXJhbSBudW0gLSB0byBjb252ZXJ0IHRvIHBlcmNlbnRhZ2VcbiAqIEBwYXJhbSBtaW4gLSBtaW4gcmFuZ2VcbiAqIEBwYXJhbSBtYXggLSBtYXggcmFuZ2VcbiAqIEByZXR1cm5zIHRoZSBwZXJjZW50YWdlXG4gKi9cbmZ1bmN0aW9uIHJhbmdlVG9QZXJjZW50KG51bSwgbWluLCBtYXgpIHtcbiAgICByZXR1cm4gKG51bSAtIG1pbikgLyAobWF4IC0gbWluKTtcbn1cbi8qKlxuICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIG51bWJlciB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBwZXJjZW50YWdlIGluIGEgZ2l2ZW4gcmFuZ2UuXG4gKlxuICogUGVyY2VudFRvUmFuZ2UoMC4zNCwwLDEwMCkgd2lsbCByZXR1cm4gMzQuXG4gKiBAcGFyYW0gcGVyY2VudCAtIHRvIGNvbnZlcnQgdG8gbnVtYmVyXG4gKiBAcGFyYW0gbWluIC0gbWluIHJhbmdlXG4gKiBAcGFyYW0gbWF4IC0gbWF4IHJhbmdlXG4gKiBAcmV0dXJucyB0aGUgbnVtYmVyXG4gKi9cbmZ1bmN0aW9uIHBlcmNlbnRUb1JhbmdlKHBlcmNlbnQsIG1pbiwgbWF4KSB7XG4gICAgcmV0dXJuIChtYXggLSBtaW4pICogcGVyY2VudCArIG1pbjtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgYW5nbGUgY29udmVydGVkIHRvIGVxdWl2YWxlbnQgdmFsdWUgYmV0d2VlbiAtTWF0aC5QSSBhbmQgTWF0aC5QSSByYWRpYW5zLlxuICogQHBhcmFtIGFuZ2xlIC0gVGhlIGFuZ2xlIHRvIG5vcm1hbGl6ZSBpbiByYWRpYW4uXG4gKiBAcmV0dXJucyBUaGUgY29udmVydGVkIGFuZ2xlLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVSYWRpYW5zKGFuZ2xlKSB7XG4gICAgLy8gTW9yZSBwcmVjaXNlIGJ1dCBzbG93ZXIgdmVyc2lvbiBrZXB0IGZvciByZWZlcmVuY2UuXG4gICAgLy8gdHNsaW50OmRpc2FibGU6bm8tY29tbWVudGVkLW91dC1jb2RlXG4gICAgLypcbiAgICAgIC8vIGFuZ2xlID0gYW5nbGUgJSBUb29scy5Ud29QaTtcbiAgICAgIC8vIGFuZ2xlID0gKGFuZ2xlICsgVG9vbHMuVHdvUGkpICUgVG9vbHMuVHdvUGk7XG4gIFxuICAgICAgLy9pZiAoYW5nbGUgPiBNYXRoLlBJKSB7XG4gICAgICAvL1x0YW5nbGUgLT0gVG9vbHMuVHdvUGk7XG4gICAgICAvL31cbiAgICAgICAgKi9cbiAgICByZXR1cm4gYW5nbGUgLSBUd29QaSAqIE1hdGguZmxvb3IoKGFuZ2xlICsgTWF0aC5QSSkgLyBUd29QaSk7XG59XG4vKipcbiAqIFNjYWxhciBjb21wdXRhdGlvbiBsaWJyYXJ5XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydHMuU2NhbGFyID0ge1xuICAgIHdpdGhpbkVwc2lsb24sXG4gICAgdG9IZXgsXG4gICAgc2lnbixcbiAgICBjbGFtcCxcbiAgICBsb2cyLFxuICAgIHJlcGVhdCxcbiAgICBub3JtYWxpemUsXG4gICAgZGVub3JtYWxpemUsXG4gICAgZGVsdGFBbmdsZSxcbiAgICBwaW5nUG9uZyxcbiAgICBzbW9vdGhTdGVwLFxuICAgIG1vdmVUb3dhcmRzLFxuICAgIG1vdmVUb3dhcmRzQW5nbGUsXG4gICAgbGVycCxcbiAgICBsZXJwQW5nbGUsXG4gICAgaW52ZXJzZUxlcnAsXG4gICAgaGVybWl0ZSxcbiAgICByYW5kb21SYW5nZSxcbiAgICByYW5nZVRvUGVyY2VudCxcbiAgICBwZXJjZW50VG9SYW5nZSxcbiAgICBub3JtYWxpemVSYWRpYW5zLFxuICAgIFR3b1BpXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2NhbGFyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5SQUQyREVHID0gZXhwb3J0cy5ERUcyUkFEID0gZXhwb3J0cy5FcHNpbG9uID0gZXhwb3J0cy5Ub0xpbmVhclNwYWNlID0gZXhwb3J0cy5Ub0dhbW1hU3BhY2UgPSBleHBvcnRzLlNwYWNlID0gZXhwb3J0cy5PcmllbnRhdGlvbiA9IHZvaWQgMDtcbi8qKlxuICogRGVmaW5lcyBwb3RlbnRpYWwgb3JpZW50YXRpb24gZm9yIGJhY2sgZmFjZSBjdWxsaW5nXG4gKiBAcHVibGljXG4gKi9cbnZhciBPcmllbnRhdGlvbjtcbihmdW5jdGlvbiAoT3JpZW50YXRpb24pIHtcbiAgICAvKipcbiAgICAgKiBDbG9ja3dpc2VcbiAgICAgKi9cbiAgICBPcmllbnRhdGlvbltPcmllbnRhdGlvbltcIkNXXCJdID0gMF0gPSBcIkNXXCI7XG4gICAgLyoqIENvdW50ZXIgY2xvY2t3aXNlICovXG4gICAgT3JpZW50YXRpb25bT3JpZW50YXRpb25bXCJDQ1dcIl0gPSAxXSA9IFwiQ0NXXCI7XG59KShPcmllbnRhdGlvbiA9IGV4cG9ydHMuT3JpZW50YXRpb24gfHwgKGV4cG9ydHMuT3JpZW50YXRpb24gPSB7fSkpO1xuLyoqXG4gKiBEZWZpbmVzIHN1cHBvcnRlZCBzcGFjZXNcbiAqIEBwdWJsaWNcbiAqL1xudmFyIFNwYWNlO1xuKGZ1bmN0aW9uIChTcGFjZSkge1xuICAgIC8qKiBMb2NhbCAob2JqZWN0KSBzcGFjZSAqL1xuICAgIFNwYWNlW1NwYWNlW1wiTE9DQUxcIl0gPSAwXSA9IFwiTE9DQUxcIjtcbiAgICAvKiogV29ybGQgc3BhY2UgKi9cbiAgICBTcGFjZVtTcGFjZVtcIldPUkxEXCJdID0gMV0gPSBcIldPUkxEXCI7XG4gICAgLyoqIEJvbmUgc3BhY2UgKi9cbiAgICBTcGFjZVtTcGFjZVtcIkJPTkVcIl0gPSAyXSA9IFwiQk9ORVwiO1xufSkoU3BhY2UgPSBleHBvcnRzLlNwYWNlIHx8IChleHBvcnRzLlNwYWNlID0ge30pKTtcbi8qKlxuICogQ29uc3RhbnQgdXNlZCB0byBjb252ZXJ0IGEgdmFsdWUgdG8gZ2FtbWEgc3BhY2VcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0cy5Ub0dhbW1hU3BhY2UgPSAxIC8gMi4yO1xuLyoqXG4gKiBDb25zdGFudCB1c2VkIHRvIGNvbnZlcnQgYSB2YWx1ZSB0byBsaW5lYXIgc3BhY2VcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0cy5Ub0xpbmVhclNwYWNlID0gMi4yO1xuLyoqXG4gKiBDb25zdGFudCB1c2VkIHRvIGRlZmluZSB0aGUgbWluaW1hbCBudW1iZXIgdmFsdWUgaW4gQmFieWxvbi5qc1xuICogQHB1YmxpY1xuICovXG5leHBvcnRzLkVwc2lsb24gPSAwLjAwMDAwMTtcbi8qKlxuICogQ29uc3RhbnQgdXNlZCB0byBjb252ZXJ0IGZyb20gRXVsZXIgZGVncmVlcyB0byByYWRpYW5zXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydHMuREVHMlJBRCA9IE1hdGguUEkgLyAxODA7XG4vKipcbiAqIENvbnN0YW50IHVzZWQgdG8gY29udmVydCBmcm9tIHJhZGlhbnMgdG8gRXVsZXIgZGVncmVlc1xuICogQHB1YmxpY1xuICovXG5leHBvcnRzLlJBRDJERUcgPSAzNjAgLyAoTWF0aC5QSSAqIDIpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dHlwZXMuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlF1YXRlcm5pb24gPSB2b2lkIDA7XG5jb25zdCBWZWN0b3IzXzEgPSByZXF1aXJlKFwiLi9WZWN0b3IzXCIpO1xuY29uc3QgU2NhbGFyXzEgPSByZXF1aXJlKFwiLi9TY2FsYXJcIik7XG5jb25zdCB0eXBlc18xID0gcmVxdWlyZShcIi4vdHlwZXNcIik7XG4vKipcbiAqIEBwdWJsaWNcbiAqL1xudmFyIFF1YXRlcm5pb247XG4oZnVuY3Rpb24gKFF1YXRlcm5pb24pIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IFF1YXRlcm5pb24gZnJvbSB0aGUgZ2l2ZW4gZmxvYXRzXG4gICAgICogQHBhcmFtIHggLSBkZWZpbmVzIHRoZSBmaXJzdCBjb21wb25lbnQgKDAgYnkgZGVmYXVsdClcbiAgICAgKiBAcGFyYW0geSAtIGRlZmluZXMgdGhlIHNlY29uZCBjb21wb25lbnQgKDAgYnkgZGVmYXVsdClcbiAgICAgKiBAcGFyYW0geiAtIGRlZmluZXMgdGhlIHRoaXJkIGNvbXBvbmVudCAoMCBieSBkZWZhdWx0KVxuICAgICAqIEBwYXJhbSB3IC0gZGVmaW5lcyB0aGUgZm91cnRoIGNvbXBvbmVudCAoMS4wIGJ5IGRlZmF1bHQpXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlKFxuICAgIC8qKiBkZWZpbmVzIHRoZSBmaXJzdCBjb21wb25lbnQgKDAgYnkgZGVmYXVsdCkgKi9cbiAgICB4ID0gMC4wLCBcbiAgICAvKiogZGVmaW5lcyB0aGUgc2Vjb25kIGNvbXBvbmVudCAoMCBieSBkZWZhdWx0KSAqL1xuICAgIHkgPSAwLjAsIFxuICAgIC8qKiBkZWZpbmVzIHRoZSB0aGlyZCBjb21wb25lbnQgKDAgYnkgZGVmYXVsdCkgKi9cbiAgICB6ID0gMC4wLCBcbiAgICAvKiogZGVmaW5lcyB0aGUgZm91cnRoIGNvbXBvbmVudCAoMS4wIGJ5IGRlZmF1bHQpICovXG4gICAgdyA9IDEuMCkge1xuICAgICAgICByZXR1cm4geyB4LCB5LCB6LCB3IH07XG4gICAgfVxuICAgIFF1YXRlcm5pb24uY3JlYXRlID0gY3JlYXRlO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgUXVhdGVybmlvbiBhcyB0aGUgcmVzdWx0IG9mIHRoZSBhZGRpdGlvbiBvZiB0aGUgdHdvIGdpdmVuIHF1YXRlcm5pb25zLlxuICAgICAqIEBwYXJhbSBxMSAtIHRoZSBmaXJzdCBxdWF0ZXJuaW9uXG4gICAgICogQHBhcmFtIHEyIC0gdGhlIHNlY29uZCBxdWF0ZXJuaW9uXG4gICAgICogQHJldHVybnMgdGhlIHJlc3VsdGluZyBxdWF0ZXJuaW9uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYWRkKHExLCBxMikge1xuICAgICAgICByZXR1cm4geyB4OiBxMS54ICsgcTIueCwgeTogcTEueSArIHEyLnksIHo6IHExLnogKyBxMi56LCB3OiBxMS53ICsgcTIudyB9O1xuICAgIH1cbiAgICBRdWF0ZXJuaW9uLmFkZCA9IGFkZDtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHJvdGF0aW9uIGZyb20gdGhlIGdpdmVuIEV1bGVyIGZsb2F0IGFuZ2xlcyAoeSwgeCwgeikgYW5kIHN0b3JlcyBpdCBpbiB0aGUgdGFyZ2V0IHF1YXRlcm5pb25cbiAgICAgKiBAcGFyYW0geWF3IC0gZGVmaW5lcyB0aGUgcm90YXRpb24gYXJvdW5kIFkgYXhpc1xuICAgICAqIEBwYXJhbSBwaXRjaCAtIGRlZmluZXMgdGhlIHJvdGF0aW9uIGFyb3VuZCBYIGF4aXNcbiAgICAgKiBAcGFyYW0gcm9sbCAtIGRlZmluZXMgdGhlIHJvdGF0aW9uIGFyb3VuZCBaIGF4aXNcbiAgICAgKiBAcGFyYW0gcmVzdWx0IC0gZGVmaW5lcyB0aGUgdGFyZ2V0IHF1YXRlcm5pb25cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByb3RhdGlvbllhd1BpdGNoUm9sbCh5YXcsIHBpdGNoLCByb2xsKSB7XG4gICAgICAgIC8vIEltcGxlbWVudGVkIHVuaXR5LWJhc2VkIGNhbGN1bGF0aW9ucyBmcm9tOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNTYwNTU4MTNcbiAgICAgICAgY29uc3QgaGFsZlBpdGNoID0gcGl0Y2ggKiAwLjU7XG4gICAgICAgIGNvbnN0IGhhbGZZYXcgPSB5YXcgKiAwLjU7XG4gICAgICAgIGNvbnN0IGhhbGZSb2xsID0gcm9sbCAqIDAuNTtcbiAgICAgICAgY29uc3QgYzEgPSBNYXRoLmNvcyhoYWxmUGl0Y2gpO1xuICAgICAgICBjb25zdCBjMiA9IE1hdGguY29zKGhhbGZZYXcpO1xuICAgICAgICBjb25zdCBjMyA9IE1hdGguY29zKGhhbGZSb2xsKTtcbiAgICAgICAgY29uc3QgczEgPSBNYXRoLnNpbihoYWxmUGl0Y2gpO1xuICAgICAgICBjb25zdCBzMiA9IE1hdGguc2luKGhhbGZZYXcpO1xuICAgICAgICBjb25zdCBzMyA9IE1hdGguc2luKGhhbGZSb2xsKTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZShjMiAqIHMxICogYzMgKyBzMiAqIGMxICogczMsIHMyICogYzEgKiBjMyAtIGMyICogczEgKiBzMywgYzIgKiBjMSAqIHMzIC0gczIgKiBzMSAqIGMzLCBjMiAqIGMxICogYzMgKyBzMiAqIHMxICogczMpO1xuICAgIH1cbiAgICBRdWF0ZXJuaW9uLnJvdGF0aW9uWWF3UGl0Y2hSb2xsID0gcm90YXRpb25ZYXdQaXRjaFJvbGw7XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHJvdGF0aW9uIHRoYXQgcm90YXRlcyB6IGRlZ3JlZXMgYXJvdW5kIHRoZSB6IGF4aXMsIHggZGVncmVlcyBhcm91bmQgdGhlIHggYXhpcywgYW5kIHkgZGVncmVlcyBhcm91bmQgdGhlIHkgYXhpcy5cbiAgICAgKiBAcGFyYW0geCAtIHRoZSByb3RhdGlvbiBvbiB0aGUgeCBheGlzIGluIGV1bGVyIGRlZ3JlZXNcbiAgICAgKiBAcGFyYW0geSAtIHRoZSByb3RhdGlvbiBvbiB0aGUgeSBheGlzIGluIGV1bGVyIGRlZ3JlZXNcbiAgICAgKiBAcGFyYW0geiAtIHRoZSByb3RhdGlvbiBvbiB0aGUgeiBheGlzIGluIGV1bGVyIGRlZ3JlZXNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBldWxlcih4LCB5LCB6KSB7XG4gICAgICAgIHJldHVybiByb3RhdGlvbllhd1BpdGNoUm9sbCh5ICogdHlwZXNfMS5ERUcyUkFELCB4ICogdHlwZXNfMS5ERUcyUkFELCB6ICogdHlwZXNfMS5ERUcyUkFEKTtcbiAgICB9XG4gICAgUXVhdGVybmlvbi5ldWxlciA9IGV1bGVyO1xuICAgIC8qKlxuICAgICAqIEdldHMgbGVuZ3RoIG9mIGN1cnJlbnQgcXVhdGVybmlvblxuICAgICAqIEByZXR1cm5zIHRoZSBxdWF0ZXJuaW9uIGxlbmd0aCAoZmxvYXQpXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGVuZ3RoKHEpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguc3FydChsZW5ndGhTcXVhcmVkKHEpKTtcbiAgICB9XG4gICAgUXVhdGVybmlvbi5sZW5ndGggPSBsZW5ndGg7XG4gICAgLyoqXG4gICAgICogR2V0cyBsZW5ndGggb2YgY3VycmVudCBxdWF0ZXJuaW9uXG4gICAgICogQHJldHVybnMgdGhlIHF1YXRlcm5pb24gbGVuZ3RoIChmbG9hdClcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsZW5ndGhTcXVhcmVkKHEpIHtcbiAgICAgICAgcmV0dXJuIHEueCAqIHEueCArIHEueSAqIHEueSArIHEueiAqIHEueiArIHEudyAqIHEudztcbiAgICB9XG4gICAgUXVhdGVybmlvbi5sZW5ndGhTcXVhcmVkID0gbGVuZ3RoU3F1YXJlZDtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBkb3QgcHJvZHVjdCAoZmxvYXQpIGJldHdlZW4gdGhlIHF1YXRlcm5pb25zIFwibGVmdFwiIGFuZCBcInJpZ2h0XCJcbiAgICAgKiBAcGFyYW0gbGVmdCAtIGRlZmluZXMgdGhlIGxlZnQgb3BlcmFuZFxuICAgICAqIEBwYXJhbSByaWdodCAtIGRlZmluZXMgdGhlIHJpZ2h0IG9wZXJhbmRcbiAgICAgKiBAcmV0dXJucyB0aGUgZG90IHByb2R1Y3RcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkb3QobGVmdCwgcmlnaHQpIHtcbiAgICAgICAgcmV0dXJuIChsZWZ0LnggKiByaWdodC54ICsgbGVmdC55ICogcmlnaHQueSArIGxlZnQueiAqIHJpZ2h0LnogKyBsZWZ0LncgKiByaWdodC53KTtcbiAgICB9XG4gICAgUXVhdGVybmlvbi5kb3QgPSBkb3Q7XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYW5nbGUgaW4gZGVncmVlcyBiZXR3ZWVuIHR3byByb3RhdGlvbnMgYSBhbmQgYi5cbiAgICAgKiBAcGFyYW0gcXVhdDEgLSBkZWZpbmVzIHRoZSBmaXJzdCBxdWF0ZXJuaW9uXG4gICAgICogQHBhcmFtIHF1YXQyIC0gZGVmaW5lcyB0aGUgc2Vjb25kIHF1YXRlcm5pb25cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhbmdsZShxdWF0MSwgcXVhdDIpIHtcbiAgICAgICAgY29uc3QgZG90VmFsID0gZG90KHF1YXQxLCBxdWF0Mik7XG4gICAgICAgIHJldHVybiBNYXRoLmFjb3MoTWF0aC5taW4oTWF0aC5hYnMoZG90VmFsKSwgMSkpICogMiAqIHR5cGVzXzEuUkFEMkRFRztcbiAgICB9XG4gICAgUXVhdGVybmlvbi5hbmdsZSA9IGFuZ2xlO1xuICAgIC8qKlxuICAgICAqIFRoZSBmcm9tIHF1YXRlcm5pb24gaXMgcm90YXRlZCB0b3dhcmRzIHRvIGJ5IGFuIGFuZ3VsYXIgc3RlcCBvZiBtYXhEZWdyZWVzRGVsdGEuXG4gICAgICogQHBhcmFtIGZyb20gLSBkZWZpbmVzIHRoZSBmaXJzdCBxdWF0ZXJuaW9uXG4gICAgICogQHBhcmFtIHRvIC0gZGVmaW5lcyB0aGUgc2Vjb25kIHF1YXRlcm5pb25cbiAgICAgKiBAcGFyYW0gbWF4RGVncmVlc0RlbHRhIC0gdGhlIGludGVydmFsIHN0ZXBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByb3RhdGVUb3dhcmRzKGZyb20sIHRvLCBtYXhEZWdyZWVzRGVsdGEpIHtcbiAgICAgICAgY29uc3QgbnVtID0gYW5nbGUoZnJvbSwgdG8pO1xuICAgICAgICBpZiAobnVtID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdG87XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdCA9IE1hdGgubWluKDEsIG1heERlZ3JlZXNEZWx0YSAvIG51bSk7XG4gICAgICAgIHJldHVybiBzbGVycChmcm9tLCB0bywgdCk7XG4gICAgfVxuICAgIFF1YXRlcm5pb24ucm90YXRlVG93YXJkcyA9IHJvdGF0ZVRvd2FyZHM7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHJvdGF0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBmb3J3YXJkIGFuZCB1cHdhcmRzIGRpcmVjdGlvbnMuXG4gICAgICogQHBhcmFtIGZvcndhcmQgLSB0aGUgZGlyZWN0aW9uIHRvIGxvb2sgaW5cbiAgICAgKiBAcGFyYW0gdXAgLSB0aGUgdmVjdG9yIHRoYXQgZGVmaW5lcyBpbiB3aGljaCBkaXJlY3Rpb24gdXAgaXNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsb29rUm90YXRpb24oZm9yd2FyZCwgdXAgPSB7IHg6IDAuMCwgeTogMS4wLCB6OiAwLjAgfSkge1xuICAgICAgICBjb25zdCBmb3J3YXJkTmV3ID0gVmVjdG9yM18xLlZlY3RvcjMubm9ybWFsaXplKGZvcndhcmQpO1xuICAgICAgICBjb25zdCByaWdodCA9IFZlY3RvcjNfMS5WZWN0b3IzLm5vcm1hbGl6ZShWZWN0b3IzXzEuVmVjdG9yMy5jcm9zcyh1cCwgZm9yd2FyZE5ldykpO1xuICAgICAgICBjb25zdCB1cE5ldyA9IFZlY3RvcjNfMS5WZWN0b3IzLmNyb3NzKGZvcndhcmROZXcsIHJpZ2h0KTtcbiAgICAgICAgY29uc3QgbTAwID0gcmlnaHQueDtcbiAgICAgICAgY29uc3QgbTAxID0gcmlnaHQueTtcbiAgICAgICAgY29uc3QgbTAyID0gcmlnaHQuejtcbiAgICAgICAgY29uc3QgbTEwID0gdXBOZXcueDtcbiAgICAgICAgY29uc3QgbTExID0gdXBOZXcueTtcbiAgICAgICAgY29uc3QgbTEyID0gdXBOZXcuejtcbiAgICAgICAgY29uc3QgbTIwID0gZm9yd2FyZE5ldy54O1xuICAgICAgICBjb25zdCBtMjEgPSBmb3J3YXJkTmV3Lnk7XG4gICAgICAgIGNvbnN0IG0yMiA9IGZvcndhcmROZXcuejtcbiAgICAgICAgY29uc3QgbnVtOCA9IG0wMCArIG0xMSArIG0yMjtcbiAgICAgICAgY29uc3QgcXVhdGVybmlvbiA9IGNyZWF0ZSgpO1xuICAgICAgICBpZiAobnVtOCA+IDApIHtcbiAgICAgICAgICAgIGxldCBudW0gPSBNYXRoLnNxcnQobnVtOCArIDEpO1xuICAgICAgICAgICAgcXVhdGVybmlvbi53ID0gbnVtICogMC41O1xuICAgICAgICAgICAgbnVtID0gMC41IC8gbnVtO1xuICAgICAgICAgICAgcXVhdGVybmlvbi54ID0gKG0xMiAtIG0yMSkgKiBudW07XG4gICAgICAgICAgICBxdWF0ZXJuaW9uLnkgPSAobTIwIC0gbTAyKSAqIG51bTtcbiAgICAgICAgICAgIHF1YXRlcm5pb24ueiA9IChtMDEgLSBtMTApICogbnVtO1xuICAgICAgICAgICAgcmV0dXJuIHF1YXRlcm5pb247XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG0wMCA+PSBtMTEgJiYgbTAwID49IG0yMikge1xuICAgICAgICAgICAgY29uc3QgbnVtNyA9IE1hdGguc3FydCgxICsgbTAwIC0gbTExIC0gbTIyKTtcbiAgICAgICAgICAgIGNvbnN0IG51bTQgPSAwLjUgLyBudW03O1xuICAgICAgICAgICAgcXVhdGVybmlvbi54ID0gMC41ICogbnVtNztcbiAgICAgICAgICAgIHF1YXRlcm5pb24ueSA9IChtMDEgKyBtMTApICogbnVtNDtcbiAgICAgICAgICAgIHF1YXRlcm5pb24ueiA9IChtMDIgKyBtMjApICogbnVtNDtcbiAgICAgICAgICAgIHF1YXRlcm5pb24udyA9IChtMTIgLSBtMjEpICogbnVtNDtcbiAgICAgICAgICAgIHJldHVybiBxdWF0ZXJuaW9uO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtMTEgPiBtMjIpIHtcbiAgICAgICAgICAgIGNvbnN0IG51bTYgPSBNYXRoLnNxcnQoMSArIG0xMSAtIG0wMCAtIG0yMik7XG4gICAgICAgICAgICBjb25zdCBudW0zID0gMC41IC8gbnVtNjtcbiAgICAgICAgICAgIHF1YXRlcm5pb24ueCA9IChtMTAgKyBtMDEpICogbnVtMztcbiAgICAgICAgICAgIHF1YXRlcm5pb24ueSA9IDAuNSAqIG51bTY7XG4gICAgICAgICAgICBxdWF0ZXJuaW9uLnogPSAobTIxICsgbTEyKSAqIG51bTM7XG4gICAgICAgICAgICBxdWF0ZXJuaW9uLncgPSAobTIwIC0gbTAyKSAqIG51bTM7XG4gICAgICAgICAgICByZXR1cm4gcXVhdGVybmlvbjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBudW01ID0gTWF0aC5zcXJ0KDEgKyBtMjIgLSBtMDAgLSBtMTEpO1xuICAgICAgICBjb25zdCBudW0yID0gMC41IC8gbnVtNTtcbiAgICAgICAgcXVhdGVybmlvbi54ID0gKG0yMCArIG0wMikgKiBudW0yO1xuICAgICAgICBxdWF0ZXJuaW9uLnkgPSAobTIxICsgbTEyKSAqIG51bTI7XG4gICAgICAgIHF1YXRlcm5pb24ueiA9IDAuNSAqIG51bTU7XG4gICAgICAgIHF1YXRlcm5pb24udyA9IChtMDEgLSBtMTApICogbnVtMjtcbiAgICAgICAgcmV0dXJuIHF1YXRlcm5pb247XG4gICAgfVxuICAgIFF1YXRlcm5pb24ubG9va1JvdGF0aW9uID0gbG9va1JvdGF0aW9uO1xuICAgIC8qKlxuICAgICAqIE5vcm1hbGl6ZSBpbiBwbGFjZSB0aGUgY3VycmVudCBxdWF0ZXJuaW9uXG4gICAgICogQHJldHVybnMgdGhlIGN1cnJlbnQgdXBkYXRlZCBxdWF0ZXJuaW9uXG4gICAgICovXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplKHEpIHtcbiAgICAgICAgY29uc3QgcUxlbmd0aCA9IDEuMCAvIGxlbmd0aChxKTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZShxLnggKiBxTGVuZ3RoLCBxLnkgKiBxTGVuZ3RoLCBxLnogKiBxTGVuZ3RoLCBxLncgKiBxTGVuZ3RoKTtcbiAgICB9XG4gICAgUXVhdGVybmlvbi5ub3JtYWxpemUgPSBub3JtYWxpemU7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHJvdGF0aW9uIHdoaWNoIHJvdGF0ZXMgZnJvbSBmcm9tRGlyZWN0aW9uIHRvIHRvRGlyZWN0aW9uLlxuICAgICAqIEBwYXJhbSBmcm9tIC0gZGVmaW5lcyB0aGUgZmlyc3QgZGlyZWN0aW9uIFZlY3RvclxuICAgICAqIEBwYXJhbSB0byAtIGRlZmluZXMgdGhlIHRhcmdldCBkaXJlY3Rpb24gVmVjdG9yXG4gICAgICovXG4gICAgZnVuY3Rpb24gZnJvbVRvUm90YXRpb24oZnJvbSwgdG8sIHVwID0gVmVjdG9yM18xLlZlY3RvcjMuVXAoKSkge1xuICAgICAgICAvLyBVbml0eS1iYXNlZCBjYWxjdWxhdGlvbnMgaW1wbGVtZW50ZWQgZnJvbSBodHRwczovL2ZvcnVtLnVuaXR5LmNvbS90aHJlYWRzL3F1YXRlcm5pb24tbG9va3JvdGF0aW9uLWFyb3VuZC1hbi1heGlzLjYwODQ3MC8jcG9zdC00MDY5ODg4XG4gICAgICAgIGNvbnN0IHYwID0gVmVjdG9yM18xLlZlY3RvcjMubm9ybWFsaXplKGZyb20pO1xuICAgICAgICBjb25zdCB2MSA9IFZlY3RvcjNfMS5WZWN0b3IzLm5vcm1hbGl6ZSh0byk7XG4gICAgICAgIGNvbnN0IGEgPSBWZWN0b3IzXzEuVmVjdG9yMy5jcm9zcyh2MCwgdjEpO1xuICAgICAgICBjb25zdCB3ID0gTWF0aC5zcXJ0KFZlY3RvcjNfMS5WZWN0b3IzLmxlbmd0aFNxdWFyZWQodjApICogVmVjdG9yM18xLlZlY3RvcjMubGVuZ3RoU3F1YXJlZCh2MSkpICtcbiAgICAgICAgICAgIFZlY3RvcjNfMS5WZWN0b3IzLmRvdCh2MCwgdjEpO1xuICAgICAgICBpZiAoVmVjdG9yM18xLlZlY3RvcjMubGVuZ3RoU3F1YXJlZChhKSA8IDAuMDAwMSkge1xuICAgICAgICAgICAgLy8gdGhlIHZlY3RvcnMgYXJlIHBhcmFsbGVsLCBjaGVjayB3IHRvIGZpbmQgZGlyZWN0aW9uXG4gICAgICAgICAgICAvLyBpZiB3IGlzIDAgdGhlbiB2YWx1ZXMgYXJlIG9wcG9zaXRlLCBhbmQgd2Ugc291bGQgcm90YXRlIDE4MCBkZWdyZWVzIGFyb3VuZCB0aGUgc3VwcGxpZWQgYXhpc1xuICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHRoZSB2ZWN0b3JzIGluIHRoZSBzYW1lIGRpcmVjdGlvbiBhbmQgbm8gcm90YXRpb24gc2hvdWxkIG9jY3VyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5hYnModykgPCAwLjAwMDFcbiAgICAgICAgICAgICAgICA/IG5vcm1hbGl6ZShjcmVhdGUodXAueCwgdXAueSwgdXAueiwgMCkpXG4gICAgICAgICAgICAgICAgOiBJZGVudGl0eSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZShjcmVhdGUoYS54LCBhLnksIGEueiwgdykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIFF1YXRlcm5pb24uZnJvbVRvUm90YXRpb24gPSBmcm9tVG9Sb3RhdGlvbjtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGlkZW50aXR5IHF1YXRlcm5pb25cbiAgICAgKiBAcmV0dXJucyAtIHRoZSBpZGVudGl0eSBxdWF0ZXJuaW9uXG4gICAgICovXG4gICAgZnVuY3Rpb24gSWRlbnRpdHkoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGUoMC4wLCAwLjAsIDAuMCwgMS4wKTtcbiAgICB9XG4gICAgUXVhdGVybmlvbi5JZGVudGl0eSA9IElkZW50aXR5O1xuICAgIC8qKlxuICAgICAqIEdldHMgb3Igc2V0cyB0aGUgZXVsZXIgYW5nbGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIHJvdGF0aW9uLlxuICAgICAqIEltcGxlbWVudGVkIHVuaXR5LWJhc2VkIGNhbGN1bGF0aW9ucyBmcm9tOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNTYwNTU4MTNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBldWxlckFuZ2xlcyhxKSB7XG4gICAgICAgIGNvbnN0IG91dCA9IFZlY3RvcjNfMS5WZWN0b3IzLmNyZWF0ZSgpO1xuICAgICAgICAvLyBpZiB0aGUgaW5wdXQgcXVhdGVybmlvbiBpcyBub3JtYWxpemVkLCB0aGlzIGlzIGV4YWN0bHkgb25lLiBPdGhlcndpc2UsIHRoaXMgYWN0cyBhcyBhIGNvcnJlY3Rpb24gZmFjdG9yIGZvciB0aGUgcXVhdGVybmlvbidzIG5vdC1ub3JtYWxpemVkbmVzc1xuICAgICAgICBjb25zdCB1bml0ID0gcS54ICogcS54ICsgcS55ICogcS55ICsgcS56ICogcS56ICsgcS53ICogcS53O1xuICAgICAgICAvLyBxIHdpbGwgaGF2ZSBhIG1hZ25pdHVkZSBvZiAwLjUgb3IgZ3JlYXRlciBpZiBhbmQgb25seSBpZiBxIGlzIGEgc2luZ3VsYXJpdHkgY2FzZVxuICAgICAgICBjb25zdCB0ZXN0ID0gcS54ICogcS53IC0gcS55ICogcS56O1xuICAgICAgICBpZiAodGVzdCA+IDAuNDk5NSAqIHVuaXQpIHtcbiAgICAgICAgICAgIC8vIHNpbmd1bGFyaXR5IGF0IG5vcnRoIHBvbGVcbiAgICAgICAgICAgIG91dC54ID0gTWF0aC5QSSAvIDI7XG4gICAgICAgICAgICBvdXQueSA9IDIgKiBNYXRoLmF0YW4yKHEueSwgcS54KTtcbiAgICAgICAgICAgIG91dC56ID0gMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0ZXN0IDwgLTAuNDk5NSAqIHVuaXQpIHtcbiAgICAgICAgICAgIC8vIHNpbmd1bGFyaXR5IGF0IHNvdXRoIHBvbGVcbiAgICAgICAgICAgIG91dC54ID0gLU1hdGguUEkgLyAyO1xuICAgICAgICAgICAgb3V0LnkgPSAtMiAqIE1hdGguYXRhbjIocS55LCBxLngpO1xuICAgICAgICAgICAgb3V0LnogPSAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gbm8gc2luZ3VsYXJpdHkgLSBxIGlzIHRoZSBtYWpvcml0eSBvZiBjYXNlc1xuICAgICAgICAgICAgb3V0LnggPSBNYXRoLmFzaW4oMiAqIChxLncgKiBxLnggLSBxLnkgKiBxLnopKTtcbiAgICAgICAgICAgIG91dC55ID0gTWF0aC5hdGFuMigyICogcS53ICogcS55ICsgMiAqIHEueiAqIHEueCwgMSAtIDIgKiAocS54ICogcS54ICsgcS55ICogcS55KSk7XG4gICAgICAgICAgICBvdXQueiA9IE1hdGguYXRhbjIoMiAqIHEudyAqIHEueiArIDIgKiBxLnggKiBxLnksIDEgLSAyICogKHEueiAqIHEueiArIHEueCAqIHEueCkpO1xuICAgICAgICB9XG4gICAgICAgIG91dC54ICo9IHR5cGVzXzEuUkFEMkRFRztcbiAgICAgICAgb3V0LnkgKj0gdHlwZXNfMS5SQUQyREVHO1xuICAgICAgICBvdXQueiAqPSB0eXBlc18xLlJBRDJERUc7XG4gICAgICAgIC8vIGVuc3VyZSB0aGUgZGVncmVlIHZhbHVlcyBhcmUgYmV0d2VlbiAwIGFuZCAzNjBcbiAgICAgICAgb3V0LnggPSBTY2FsYXJfMS5TY2FsYXIucmVwZWF0KG91dC54LCAzNjApO1xuICAgICAgICBvdXQueSA9IFNjYWxhcl8xLlNjYWxhci5yZXBlYXQob3V0LnksIDM2MCk7XG4gICAgICAgIG91dC56ID0gU2NhbGFyXzEuU2NhbGFyLnJlcGVhdChvdXQueiwgMzYwKTtcbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG4gICAgUXVhdGVybmlvbi5ldWxlckFuZ2xlcyA9IGV1bGVyQW5nbGVzO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcm90YXRpb24gZnJvbSB0aGUgZ2l2ZW4gRXVsZXIgZmxvYXQgYW5nbGVzICh5LCB4LCB6KSBhbmQgc3RvcmVzIGl0IGluIHRoZSB0YXJnZXQgcXVhdGVybmlvblxuICAgICAqIEBwYXJhbSB5YXcgLSBkZWZpbmVzIHRoZSByb3RhdGlvbiBhcm91bmQgWSBheGlzXG4gICAgICogQHBhcmFtIHBpdGNoIC0gZGVmaW5lcyB0aGUgcm90YXRpb24gYXJvdW5kIFggYXhpc1xuICAgICAqIEBwYXJhbSByb2xsIC0gZGVmaW5lcyB0aGUgcm90YXRpb24gYXJvdW5kIFogYXhpc1xuICAgICAqIEBwYXJhbSByZXN1bHQgLSBkZWZpbmVzIHRoZSB0YXJnZXQgcXVhdGVybmlvblxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJvdGF0aW9uWWF3UGl0Y2hSb2xsVG9SZWYoeWF3LCBwaXRjaCwgcm9sbCwgcmVzdWx0KSB7XG4gICAgICAgIC8vIEltcGxlbWVudGVkIHVuaXR5LWJhc2VkIGNhbGN1bGF0aW9ucyBmcm9tOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNTYwNTU4MTNcbiAgICAgICAgY29uc3QgaGFsZlBpdGNoID0gcGl0Y2ggKiAwLjU7XG4gICAgICAgIGNvbnN0IGhhbGZZYXcgPSB5YXcgKiAwLjU7XG4gICAgICAgIGNvbnN0IGhhbGZSb2xsID0gcm9sbCAqIDAuNTtcbiAgICAgICAgY29uc3QgYzEgPSBNYXRoLmNvcyhoYWxmUGl0Y2gpO1xuICAgICAgICBjb25zdCBjMiA9IE1hdGguY29zKGhhbGZZYXcpO1xuICAgICAgICBjb25zdCBjMyA9IE1hdGguY29zKGhhbGZSb2xsKTtcbiAgICAgICAgY29uc3QgczEgPSBNYXRoLnNpbihoYWxmUGl0Y2gpO1xuICAgICAgICBjb25zdCBzMiA9IE1hdGguc2luKGhhbGZZYXcpO1xuICAgICAgICBjb25zdCBzMyA9IE1hdGguc2luKGhhbGZSb2xsKTtcbiAgICAgICAgcmVzdWx0LnggPSBjMiAqIHMxICogYzMgKyBzMiAqIGMxICogczM7XG4gICAgICAgIHJlc3VsdC55ID0gczIgKiBjMSAqIGMzIC0gYzIgKiBzMSAqIHMzO1xuICAgICAgICByZXN1bHQueiA9IGMyICogYzEgKiBzMyAtIHMyICogczEgKiBjMztcbiAgICAgICAgcmVzdWx0LncgPSBjMiAqIGMxICogYzMgKyBzMiAqIHMxICogczM7XG4gICAgfVxuICAgIFF1YXRlcm5pb24ucm90YXRpb25ZYXdQaXRjaFJvbGxUb1JlZiA9IHJvdGF0aW9uWWF3UGl0Y2hSb2xsVG9SZWY7XG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgZ2l2ZW4gcXVhdGVybmlvbiB3aXRoIHRoZSBnaXZlbiByb3RhdGlvbiBtYXRyaXggdmFsdWVzXG4gICAgICogQHBhcmFtIG1hdHJpeCAtIGRlZmluZXMgdGhlIHNvdXJjZSBtYXRyaXhcbiAgICAgKiBAcGFyYW0gcmVzdWx0IC0gZGVmaW5lcyB0aGUgdGFyZ2V0IHF1YXRlcm5pb25cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmcm9tUm90YXRpb25NYXRyaXhUb1JlZihtYXRyaXgsIHJlc3VsdCkge1xuICAgICAgICBjb25zdCBkYXRhID0gbWF0cml4Ll9tO1xuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZTpvbmUtdmFyaWFibGUtcGVyLWRlY2xhcmF0aW9uXG4gICAgICAgIGNvbnN0IG0xMSA9IGRhdGFbMF0sIG0xMiA9IGRhdGFbNF0sIG0xMyA9IGRhdGFbOF07XG4gICAgICAgIGNvbnN0IG0yMSA9IGRhdGFbMV0sIG0yMiA9IGRhdGFbNV0sIG0yMyA9IGRhdGFbOV07XG4gICAgICAgIGNvbnN0IG0zMSA9IGRhdGFbMl0sIG0zMiA9IGRhdGFbNl0sIG0zMyA9IGRhdGFbMTBdO1xuICAgICAgICAvLyB0c2xpbnQ6ZW5hYmxlOm9uZS12YXJpYWJsZS1wZXItZGVjbGFyYXRpb25cbiAgICAgICAgY29uc3QgdHJhY2UgPSBtMTEgKyBtMjIgKyBtMzM7XG4gICAgICAgIGxldCBzO1xuICAgICAgICBpZiAodHJhY2UgPiAwKSB7XG4gICAgICAgICAgICBzID0gMC41IC8gTWF0aC5zcXJ0KHRyYWNlICsgMS4wKTtcbiAgICAgICAgICAgIHJlc3VsdC53ID0gMC4yNSAvIHM7XG4gICAgICAgICAgICByZXN1bHQueCA9IChtMzIgLSBtMjMpICogcztcbiAgICAgICAgICAgIHJlc3VsdC55ID0gKG0xMyAtIG0zMSkgKiBzO1xuICAgICAgICAgICAgcmVzdWx0LnogPSAobTIxIC0gbTEyKSAqIHM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobTExID4gbTIyICYmIG0xMSA+IG0zMykge1xuICAgICAgICAgICAgcyA9IDIuMCAqIE1hdGguc3FydCgxLjAgKyBtMTEgLSBtMjIgLSBtMzMpO1xuICAgICAgICAgICAgcmVzdWx0LncgPSAobTMyIC0gbTIzKSAvIHM7XG4gICAgICAgICAgICByZXN1bHQueCA9IDAuMjUgKiBzO1xuICAgICAgICAgICAgcmVzdWx0LnkgPSAobTEyICsgbTIxKSAvIHM7XG4gICAgICAgICAgICByZXN1bHQueiA9IChtMTMgKyBtMzEpIC8gcztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtMjIgPiBtMzMpIHtcbiAgICAgICAgICAgIHMgPSAyLjAgKiBNYXRoLnNxcnQoMS4wICsgbTIyIC0gbTExIC0gbTMzKTtcbiAgICAgICAgICAgIHJlc3VsdC53ID0gKG0xMyAtIG0zMSkgLyBzO1xuICAgICAgICAgICAgcmVzdWx0LnggPSAobTEyICsgbTIxKSAvIHM7XG4gICAgICAgICAgICByZXN1bHQueSA9IDAuMjUgKiBzO1xuICAgICAgICAgICAgcmVzdWx0LnogPSAobTIzICsgbTMyKSAvIHM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzID0gMi4wICogTWF0aC5zcXJ0KDEuMCArIG0zMyAtIG0xMSAtIG0yMik7XG4gICAgICAgICAgICByZXN1bHQudyA9IChtMjEgLSBtMTIpIC8gcztcbiAgICAgICAgICAgIHJlc3VsdC54ID0gKG0xMyArIG0zMSkgLyBzO1xuICAgICAgICAgICAgcmVzdWx0LnkgPSAobTIzICsgbTMyKSAvIHM7XG4gICAgICAgICAgICByZXN1bHQueiA9IDAuMjUgKiBzO1xuICAgICAgICB9XG4gICAgfVxuICAgIFF1YXRlcm5pb24uZnJvbVJvdGF0aW9uTWF0cml4VG9SZWYgPSBmcm9tUm90YXRpb25NYXRyaXhUb1JlZjtcbiAgICAvKipcbiAgICAgKiBJbnRlcnBvbGF0ZXMgYmV0d2VlbiB0d28gcXVhdGVybmlvbnNcbiAgICAgKiBAcGFyYW0gbGVmdCAtIGRlZmluZXMgZmlyc3QgcXVhdGVybmlvblxuICAgICAqIEBwYXJhbSByaWdodCAtIGRlZmluZXMgc2Vjb25kIHF1YXRlcm5pb25cbiAgICAgKiBAcGFyYW0gYW1vdW50IC0gZGVmaW5lcyB0aGUgZ3JhZGllbnQgdG8gdXNlXG4gICAgICogQHJldHVybnMgdGhlIG5ldyBpbnRlcnBvbGF0ZWQgcXVhdGVybmlvblxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNsZXJwKGxlZnQsIHJpZ2h0LCBhbW91bnQpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gUXVhdGVybmlvbi5JZGVudGl0eSgpO1xuICAgICAgICBRdWF0ZXJuaW9uLnNsZXJwVG9SZWYobGVmdCwgcmlnaHQsIGFtb3VudCwgcmVzdWx0KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgUXVhdGVybmlvbi5zbGVycCA9IHNsZXJwO1xuICAgIC8qKlxuICAgICAqIEludGVycG9sYXRlcyBiZXR3ZWVuIHR3byBxdWF0ZXJuaW9ucyBhbmQgc3RvcmVzIGl0IGludG8gYSB0YXJnZXQgcXVhdGVybmlvblxuICAgICAqIEBwYXJhbSBsZWZ0IC0gZGVmaW5lcyBmaXJzdCBxdWF0ZXJuaW9uXG4gICAgICogQHBhcmFtIHJpZ2h0IC0gZGVmaW5lcyBzZWNvbmQgcXVhdGVybmlvblxuICAgICAqIEBwYXJhbSBhbW91bnQgLSBkZWZpbmVzIHRoZSBncmFkaWVudCB0byB1c2VcbiAgICAgKiBAcGFyYW0gcmVzdWx0IC0gZGVmaW5lcyB0aGUgdGFyZ2V0IHF1YXRlcm5pb25cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzbGVycFRvUmVmKGxlZnQsIHJpZ2h0LCBhbW91bnQsIHJlc3VsdCkge1xuICAgICAgICBsZXQgbnVtMjtcbiAgICAgICAgbGV0IG51bTM7XG4gICAgICAgIGxldCBudW00ID0gbGVmdC54ICogcmlnaHQueCArIGxlZnQueSAqIHJpZ2h0LnkgKyBsZWZ0LnogKiByaWdodC56ICsgbGVmdC53ICogcmlnaHQudztcbiAgICAgICAgbGV0IGZsYWcgPSBmYWxzZTtcbiAgICAgICAgaWYgKG51bTQgPCAwKSB7XG4gICAgICAgICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgICAgICAgIG51bTQgPSAtbnVtNDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobnVtNCA+IDAuOTk5OTk5KSB7XG4gICAgICAgICAgICBudW0zID0gMSAtIGFtb3VudDtcbiAgICAgICAgICAgIG51bTIgPSBmbGFnID8gLWFtb3VudCA6IGFtb3VudDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG51bTUgPSBNYXRoLmFjb3MobnVtNCk7XG4gICAgICAgICAgICBjb25zdCBudW02ID0gMS4wIC8gTWF0aC5zaW4obnVtNSk7XG4gICAgICAgICAgICBudW0zID0gTWF0aC5zaW4oKDEuMCAtIGFtb3VudCkgKiBudW01KSAqIG51bTY7XG4gICAgICAgICAgICBudW0yID0gZmxhZ1xuICAgICAgICAgICAgICAgID8gLU1hdGguc2luKGFtb3VudCAqIG51bTUpICogbnVtNlxuICAgICAgICAgICAgICAgIDogTWF0aC5zaW4oYW1vdW50ICogbnVtNSkgKiBudW02O1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdC54ID0gbnVtMyAqIGxlZnQueCArIG51bTIgKiByaWdodC54O1xuICAgICAgICByZXN1bHQueSA9IG51bTMgKiBsZWZ0LnkgKyBudW0yICogcmlnaHQueTtcbiAgICAgICAgcmVzdWx0LnogPSBudW0zICogbGVmdC56ICsgbnVtMiAqIHJpZ2h0Lno7XG4gICAgICAgIHJlc3VsdC53ID0gbnVtMyAqIGxlZnQudyArIG51bTIgKiByaWdodC53O1xuICAgIH1cbiAgICBRdWF0ZXJuaW9uLnNsZXJwVG9SZWYgPSBzbGVycFRvUmVmO1xuICAgIC8qKlxuICAgICAqIE11bHRpcGxpZXMgdHdvIHF1YXRlcm5pb25zXG4gICAgICogQHBhcmFtIHNlbGYgLSBkZWZpbmVzIHRoZSBmaXJzdCBvcGVyYW5kXG4gICAgICogQHBhcmFtIHExIC0gZGVmaW5lcyB0aGUgc2Vjb25kIG9wZXJhbmRcbiAgICAgKiBAcmV0dXJucyBhIG5ldyBxdWF0ZXJuaW9uIHNldCBhcyB0aGUgbXVsdGlwbGljYXRpb24gcmVzdWx0IG9mIHRoZSBzZWxmIG9uZSB3aXRoIHRoZSBnaXZlbiBvbmUgXCJxMVwiXG4gICAgICovXG4gICAgZnVuY3Rpb24gbXVsdGlwbHkoc2VsZiwgcTEpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY3JlYXRlKDAsIDAsIDAsIDEuMCk7XG4gICAgICAgIG11bHRpcGx5VG9SZWYoc2VsZiwgcTEsIHJlc3VsdCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIFF1YXRlcm5pb24ubXVsdGlwbHkgPSBtdWx0aXBseTtcbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBnaXZlbiBcInJlc3VsdFwiIGFzIHRoZSB0aGUgbXVsdGlwbGljYXRpb24gcmVzdWx0IG9mIHRoZSBzZWxmIG9uZSB3aXRoIHRoZSBnaXZlbiBvbmUgXCJxMVwiXG4gICAgICogQHBhcmFtIHNlbGYgLSBkZWZpbmVzIHRoZSBmaXJzdCBvcGVyYW5kXG4gICAgICogQHBhcmFtIHExIC0gZGVmaW5lcyB0aGUgc2Vjb25kIG9wZXJhbmRcbiAgICAgKiBAcGFyYW0gcmVzdWx0IC0gZGVmaW5lcyB0aGUgdGFyZ2V0IHF1YXRlcm5pb25cbiAgICAgKiBAcmV0dXJucyB0aGUgY3VycmVudCBxdWF0ZXJuaW9uXG4gICAgICovXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlUb1JlZihzZWxmLCBxMSwgcmVzdWx0KSB7XG4gICAgICAgIHJlc3VsdC54ID0gc2VsZi54ICogcTEudyArIHNlbGYueSAqIHExLnogLSBzZWxmLnogKiBxMS55ICsgc2VsZi53ICogcTEueDtcbiAgICAgICAgcmVzdWx0LnkgPSAtc2VsZi54ICogcTEueiArIHNlbGYueSAqIHExLncgKyBzZWxmLnogKiBxMS54ICsgc2VsZi53ICogcTEueTtcbiAgICAgICAgcmVzdWx0LnogPSBzZWxmLnggKiBxMS55IC0gc2VsZi55ICogcTEueCArIHNlbGYueiAqIHExLncgKyBzZWxmLncgKiBxMS56O1xuICAgICAgICByZXN1bHQudyA9IC1zZWxmLnggKiBxMS54IC0gc2VsZi55ICogcTEueSAtIHNlbGYueiAqIHExLnogKyBzZWxmLncgKiBxMS53O1xuICAgIH1cbiAgICBRdWF0ZXJuaW9uLm11bHRpcGx5VG9SZWYgPSBtdWx0aXBseVRvUmVmO1xuICAgIGZ1bmN0aW9uIGFuZ2xlQXhpcyhkZWdyZXNzLCBheGlzKSB7XG4gICAgICAgIGlmIChWZWN0b3IzXzEuVmVjdG9yMy5sZW5ndGhTcXVhcmVkKGF4aXMpID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gUXVhdGVybmlvbi5JZGVudGl0eSgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IElkZW50aXR5KCk7XG4gICAgICAgIGxldCByYWRpYW5zID0gZGVncmVzcyAqIHR5cGVzXzEuREVHMlJBRDtcbiAgICAgICAgcmFkaWFucyAqPSAwLjU7XG4gICAgICAgIGNvbnN0IGEyID0gVmVjdG9yM18xLlZlY3RvcjMubm9ybWFsaXplKGF4aXMpO1xuICAgICAgICBWZWN0b3IzXzEuVmVjdG9yMy5zY2FsZVRvUmVmKGEyLCBNYXRoLnNpbihyYWRpYW5zKSwgYTIpO1xuICAgICAgICByZXN1bHQueCA9IGEyLng7XG4gICAgICAgIHJlc3VsdC55ID0gYTIueTtcbiAgICAgICAgcmVzdWx0LnogPSBhMi56O1xuICAgICAgICByZXN1bHQudyA9IE1hdGguY29zKHJhZGlhbnMpO1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplKHJlc3VsdCk7XG4gICAgfVxuICAgIFF1YXRlcm5pb24uYW5nbGVBeGlzID0gYW5nbGVBeGlzO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSB6ZXJvIGZpbGxlZCBxdWF0ZXJuaW9uXG4gICAgICovXG4gICAgZnVuY3Rpb24gWmVybygpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZSgwLjAsIDAuMCwgMC4wLCAwLjApO1xuICAgIH1cbiAgICBRdWF0ZXJuaW9uLlplcm8gPSBaZXJvO1xufSkoUXVhdGVybmlvbiA9IGV4cG9ydHMuUXVhdGVybmlvbiB8fCAoZXhwb3J0cy5RdWF0ZXJuaW9uID0ge30pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVF1YXRlcm5pb24uanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19jcmVhdGVCaW5kaW5nID0gKHRoaXMgJiYgdGhpcy5fX2NyZWF0ZUJpbmRpbmcpIHx8IChPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfSk7XG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgb1trMl0gPSBtW2tdO1xufSkpO1xudmFyIF9fZXhwb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19leHBvcnRTdGFyKSB8fCBmdW5jdGlvbihtLCBleHBvcnRzKSB7XG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChleHBvcnRzLCBwKSkgX19jcmVhdGVCaW5kaW5nKGV4cG9ydHMsIG0sIHApO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9RdWF0ZXJuaW9uXCIpLCBleHBvcnRzKTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9WZWN0b3IzXCIpLCBleHBvcnRzKTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi90eXBlc1wiKSwgZXhwb3J0cyk7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vaW5kZXhcIiksIGV4cG9ydHMpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbm1vZHVsZS5leHBvcnRzID0gYXNQcm9taXNlO1xyXG5cclxuLyoqXHJcbiAqIENhbGxiYWNrIGFzIHVzZWQgYnkge0BsaW5rIHV0aWwuYXNQcm9taXNlfS5cclxuICogQHR5cGVkZWYgYXNQcm9taXNlQ2FsbGJhY2tcclxuICogQHR5cGUge2Z1bmN0aW9ufVxyXG4gKiBAcGFyYW0ge0Vycm9yfG51bGx9IGVycm9yIEVycm9yLCBpZiBhbnlcclxuICogQHBhcmFtIHsuLi4qfSBwYXJhbXMgQWRkaXRpb25hbCBhcmd1bWVudHNcclxuICogQHJldHVybnMge3VuZGVmaW5lZH1cclxuICovXHJcblxyXG4vKipcclxuICogUmV0dXJucyBhIHByb21pc2UgZnJvbSBhIG5vZGUtc3R5bGUgY2FsbGJhY2sgZnVuY3Rpb24uXHJcbiAqIEBtZW1iZXJvZiB1dGlsXHJcbiAqIEBwYXJhbSB7YXNQcm9taXNlQ2FsbGJhY2t9IGZuIEZ1bmN0aW9uIHRvIGNhbGxcclxuICogQHBhcmFtIHsqfSBjdHggRnVuY3Rpb24gY29udGV4dFxyXG4gKiBAcGFyYW0gey4uLip9IHBhcmFtcyBGdW5jdGlvbiBhcmd1bWVudHNcclxuICogQHJldHVybnMge1Byb21pc2U8Kj59IFByb21pc2lmaWVkIGZ1bmN0aW9uXHJcbiAqL1xyXG5mdW5jdGlvbiBhc1Byb21pc2UoZm4sIGN0eC8qLCB2YXJhcmdzICovKSB7XHJcbiAgICB2YXIgcGFyYW1zICA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSksXHJcbiAgICAgICAgb2Zmc2V0ICA9IDAsXHJcbiAgICAgICAgaW5kZXggICA9IDIsXHJcbiAgICAgICAgcGVuZGluZyA9IHRydWU7XHJcbiAgICB3aGlsZSAoaW5kZXggPCBhcmd1bWVudHMubGVuZ3RoKVxyXG4gICAgICAgIHBhcmFtc1tvZmZzZXQrK10gPSBhcmd1bWVudHNbaW5kZXgrK107XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gZXhlY3V0b3IocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgcGFyYW1zW29mZnNldF0gPSBmdW5jdGlvbiBjYWxsYmFjayhlcnIvKiwgdmFyYXJncyAqLykge1xyXG4gICAgICAgICAgICBpZiAocGVuZGluZykge1xyXG4gICAgICAgICAgICAgICAgcGVuZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycilcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBwYXJhbXMgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChvZmZzZXQgPCBwYXJhbXMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbb2Zmc2V0KytdID0gYXJndW1lbnRzW29mZnNldF07XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZS5hcHBseShudWxsLCBwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBmbi5hcHBseShjdHggfHwgbnVsbCwgcGFyYW1zKTtcclxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgaWYgKHBlbmRpbmcpIHtcclxuICAgICAgICAgICAgICAgIHBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG4vKipcclxuICogQSBtaW5pbWFsIGJhc2U2NCBpbXBsZW1lbnRhdGlvbiBmb3IgbnVtYmVyIGFycmF5cy5cclxuICogQG1lbWJlcm9mIHV0aWxcclxuICogQG5hbWVzcGFjZVxyXG4gKi9cclxudmFyIGJhc2U2NCA9IGV4cG9ydHM7XHJcblxyXG4vKipcclxuICogQ2FsY3VsYXRlcyB0aGUgYnl0ZSBsZW5ndGggb2YgYSBiYXNlNjQgZW5jb2RlZCBzdHJpbmcuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgQmFzZTY0IGVuY29kZWQgc3RyaW5nXHJcbiAqIEByZXR1cm5zIHtudW1iZXJ9IEJ5dGUgbGVuZ3RoXHJcbiAqL1xyXG5iYXNlNjQubGVuZ3RoID0gZnVuY3Rpb24gbGVuZ3RoKHN0cmluZykge1xyXG4gICAgdmFyIHAgPSBzdHJpbmcubGVuZ3RoO1xyXG4gICAgaWYgKCFwKVxyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgdmFyIG4gPSAwO1xyXG4gICAgd2hpbGUgKC0tcCAlIDQgPiAxICYmIHN0cmluZy5jaGFyQXQocCkgPT09IFwiPVwiKVxyXG4gICAgICAgICsrbjtcclxuICAgIHJldHVybiBNYXRoLmNlaWwoc3RyaW5nLmxlbmd0aCAqIDMpIC8gNCAtIG47XHJcbn07XHJcblxyXG4vLyBCYXNlNjQgZW5jb2RpbmcgdGFibGVcclxudmFyIGI2NCA9IG5ldyBBcnJheSg2NCk7XHJcblxyXG4vLyBCYXNlNjQgZGVjb2RpbmcgdGFibGVcclxudmFyIHM2NCA9IG5ldyBBcnJheSgxMjMpO1xyXG5cclxuLy8gNjUuLjkwLCA5Ny4uMTIyLCA0OC4uNTcsIDQzLCA0N1xyXG5mb3IgKHZhciBpID0gMDsgaSA8IDY0OylcclxuICAgIHM2NFtiNjRbaV0gPSBpIDwgMjYgPyBpICsgNjUgOiBpIDwgNTIgPyBpICsgNzEgOiBpIDwgNjIgPyBpIC0gNCA6IGkgLSA1OSB8IDQzXSA9IGkrKztcclxuXHJcbi8qKlxyXG4gKiBFbmNvZGVzIGEgYnVmZmVyIHRvIGEgYmFzZTY0IGVuY29kZWQgc3RyaW5nLlxyXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ1ZmZlciBTb3VyY2UgYnVmZmVyXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBTb3VyY2Ugc3RhcnRcclxuICogQHBhcmFtIHtudW1iZXJ9IGVuZCBTb3VyY2UgZW5kXHJcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEJhc2U2NCBlbmNvZGVkIHN0cmluZ1xyXG4gKi9cclxuYmFzZTY0LmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShidWZmZXIsIHN0YXJ0LCBlbmQpIHtcclxuICAgIHZhciBwYXJ0cyA9IG51bGwsXHJcbiAgICAgICAgY2h1bmsgPSBbXTtcclxuICAgIHZhciBpID0gMCwgLy8gb3V0cHV0IGluZGV4XHJcbiAgICAgICAgaiA9IDAsIC8vIGdvdG8gaW5kZXhcclxuICAgICAgICB0OyAgICAgLy8gdGVtcG9yYXJ5XHJcbiAgICB3aGlsZSAoc3RhcnQgPCBlbmQpIHtcclxuICAgICAgICB2YXIgYiA9IGJ1ZmZlcltzdGFydCsrXTtcclxuICAgICAgICBzd2l0Y2ggKGopIHtcclxuICAgICAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgICAgICAgY2h1bmtbaSsrXSA9IGI2NFtiID4+IDJdO1xyXG4gICAgICAgICAgICAgICAgdCA9IChiICYgMykgPDwgNDtcclxuICAgICAgICAgICAgICAgIGogPSAxO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICAgIGNodW5rW2krK10gPSBiNjRbdCB8IGIgPj4gNF07XHJcbiAgICAgICAgICAgICAgICB0ID0gKGIgJiAxNSkgPDwgMjtcclxuICAgICAgICAgICAgICAgIGogPSAyO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICAgIGNodW5rW2krK10gPSBiNjRbdCB8IGIgPj4gNl07XHJcbiAgICAgICAgICAgICAgICBjaHVua1tpKytdID0gYjY0W2IgJiA2M107XHJcbiAgICAgICAgICAgICAgICBqID0gMDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaSA+IDgxOTEpIHtcclxuICAgICAgICAgICAgKHBhcnRzIHx8IChwYXJ0cyA9IFtdKSkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZywgY2h1bmspKTtcclxuICAgICAgICAgICAgaSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGopIHtcclxuICAgICAgICBjaHVua1tpKytdID0gYjY0W3RdO1xyXG4gICAgICAgIGNodW5rW2krK10gPSA2MTtcclxuICAgICAgICBpZiAoaiA9PT0gMSlcclxuICAgICAgICAgICAgY2h1bmtbaSsrXSA9IDYxO1xyXG4gICAgfVxyXG4gICAgaWYgKHBhcnRzKSB7XHJcbiAgICAgICAgaWYgKGkpXHJcbiAgICAgICAgICAgIHBhcnRzLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNodW5rLnNsaWNlKDAsIGkpKSk7XHJcbiAgICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oXCJcIik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNodW5rLnNsaWNlKDAsIGkpKTtcclxufTtcclxuXHJcbnZhciBpbnZhbGlkRW5jb2RpbmcgPSBcImludmFsaWQgZW5jb2RpbmdcIjtcclxuXHJcbi8qKlxyXG4gKiBEZWNvZGVzIGEgYmFzZTY0IGVuY29kZWQgc3RyaW5nIHRvIGEgYnVmZmVyLlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFNvdXJjZSBzdHJpbmdcclxuICogQHBhcmFtIHtVaW50OEFycmF5fSBidWZmZXIgRGVzdGluYXRpb24gYnVmZmVyXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQgRGVzdGluYXRpb24gb2Zmc2V0XHJcbiAqIEByZXR1cm5zIHtudW1iZXJ9IE51bWJlciBvZiBieXRlcyB3cml0dGVuXHJcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBlbmNvZGluZyBpcyBpbnZhbGlkXHJcbiAqL1xyXG5iYXNlNjQuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKHN0cmluZywgYnVmZmVyLCBvZmZzZXQpIHtcclxuICAgIHZhciBzdGFydCA9IG9mZnNldDtcclxuICAgIHZhciBqID0gMCwgLy8gZ290byBpbmRleFxyXG4gICAgICAgIHQ7ICAgICAvLyB0ZW1wb3JhcnlcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aDspIHtcclxuICAgICAgICB2YXIgYyA9IHN0cmluZy5jaGFyQ29kZUF0KGkrKyk7XHJcbiAgICAgICAgaWYgKGMgPT09IDYxICYmIGogPiAxKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBpZiAoKGMgPSBzNjRbY10pID09PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKGludmFsaWRFbmNvZGluZyk7XHJcbiAgICAgICAgc3dpdGNoIChqKSB7XHJcbiAgICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAgICAgIHQgPSBjO1xyXG4gICAgICAgICAgICAgICAgaiA9IDE7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICAgICAgYnVmZmVyW29mZnNldCsrXSA9IHQgPDwgMiB8IChjICYgNDgpID4+IDQ7XHJcbiAgICAgICAgICAgICAgICB0ID0gYztcclxuICAgICAgICAgICAgICAgIGogPSAyO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICAgIGJ1ZmZlcltvZmZzZXQrK10gPSAodCAmIDE1KSA8PCA0IHwgKGMgJiA2MCkgPj4gMjtcclxuICAgICAgICAgICAgICAgIHQgPSBjO1xyXG4gICAgICAgICAgICAgICAgaiA9IDM7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICAgICAgYnVmZmVyW29mZnNldCsrXSA9ICh0ICYgMykgPDwgNiB8IGM7XHJcbiAgICAgICAgICAgICAgICBqID0gMDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChqID09PSAxKVxyXG4gICAgICAgIHRocm93IEVycm9yKGludmFsaWRFbmNvZGluZyk7XHJcbiAgICByZXR1cm4gb2Zmc2V0IC0gc3RhcnQ7XHJcbn07XHJcblxyXG4vKipcclxuICogVGVzdHMgaWYgdGhlIHNwZWNpZmllZCBzdHJpbmcgYXBwZWFycyB0byBiZSBiYXNlNjQgZW5jb2RlZC5cclxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBTdHJpbmcgdG8gdGVzdFxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHByb2JhYmx5IGJhc2U2NCBlbmNvZGVkLCBvdGhlcndpc2UgZmFsc2VcclxuICovXHJcbmJhc2U2NC50ZXN0ID0gZnVuY3Rpb24gdGVzdChzdHJpbmcpIHtcclxuICAgIHJldHVybiAvXig/OltBLVphLXowLTkrL117NH0pKig/OltBLVphLXowLTkrL117Mn09PXxbQS1aYS16MC05Ky9dezN9PSk/JC8udGVzdChzdHJpbmcpO1xyXG59O1xyXG4iLCJcInVzZSBzdHJpY3RcIjtcclxubW9kdWxlLmV4cG9ydHMgPSBFdmVudEVtaXR0ZXI7XHJcblxyXG4vKipcclxuICogQ29uc3RydWN0cyBhIG5ldyBldmVudCBlbWl0dGVyIGluc3RhbmNlLlxyXG4gKiBAY2xhc3NkZXNjIEEgbWluaW1hbCBldmVudCBlbWl0dGVyLlxyXG4gKiBAbWVtYmVyb2YgdXRpbFxyXG4gKiBAY29uc3RydWN0b3JcclxuICovXHJcbmZ1bmN0aW9uIEV2ZW50RW1pdHRlcigpIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlZ2lzdGVyZWQgbGlzdGVuZXJzLlxyXG4gICAgICogQHR5cGUge09iamVjdC48c3RyaW5nLCo+fVxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqL1xyXG4gICAgdGhpcy5fbGlzdGVuZXJzID0ge307XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZWdpc3RlcnMgYW4gZXZlbnQgbGlzdGVuZXIuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBldnQgRXZlbnQgbmFtZVxyXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBmbiBMaXN0ZW5lclxyXG4gKiBAcGFyYW0geyp9IFtjdHhdIExpc3RlbmVyIGNvbnRleHRcclxuICogQHJldHVybnMge3V0aWwuRXZlbnRFbWl0dGVyfSBgdGhpc2BcclxuICovXHJcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBmdW5jdGlvbiBvbihldnQsIGZuLCBjdHgpIHtcclxuICAgICh0aGlzLl9saXN0ZW5lcnNbZXZ0XSB8fCAodGhpcy5fbGlzdGVuZXJzW2V2dF0gPSBbXSkpLnB1c2goe1xyXG4gICAgICAgIGZuICA6IGZuLFxyXG4gICAgICAgIGN0eCA6IGN0eCB8fCB0aGlzXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFJlbW92ZXMgYW4gZXZlbnQgbGlzdGVuZXIgb3IgYW55IG1hdGNoaW5nIGxpc3RlbmVycyBpZiBhcmd1bWVudHMgYXJlIG9taXR0ZWQuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbZXZ0XSBFdmVudCBuYW1lLiBSZW1vdmVzIGFsbCBsaXN0ZW5lcnMgaWYgb21pdHRlZC5cclxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2ZuXSBMaXN0ZW5lciB0byByZW1vdmUuIFJlbW92ZXMgYWxsIGxpc3RlbmVycyBvZiBgZXZ0YCBpZiBvbWl0dGVkLlxyXG4gKiBAcmV0dXJucyB7dXRpbC5FdmVudEVtaXR0ZXJ9IGB0aGlzYFxyXG4gKi9cclxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vZmYgPSBmdW5jdGlvbiBvZmYoZXZ0LCBmbikge1xyXG4gICAgaWYgKGV2dCA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICAgIHRoaXMuX2xpc3RlbmVycyA9IHt9O1xyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKGZuID09PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHRoaXMuX2xpc3RlbmVyc1tldnRdID0gW107XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnNbZXZ0XTtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOylcclxuICAgICAgICAgICAgICAgIGlmIChsaXN0ZW5lcnNbaV0uZm4gPT09IGZuKVxyXG4gICAgICAgICAgICAgICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgKytpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEVtaXRzIGFuIGV2ZW50IGJ5IGNhbGxpbmcgaXRzIGxpc3RlbmVycyB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gZXZ0IEV2ZW50IG5hbWVcclxuICogQHBhcmFtIHsuLi4qfSBhcmdzIEFyZ3VtZW50c1xyXG4gKiBAcmV0dXJucyB7dXRpbC5FdmVudEVtaXR0ZXJ9IGB0aGlzYFxyXG4gKi9cclxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24gZW1pdChldnQpIHtcclxuICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnNbZXZ0XTtcclxuICAgIGlmIChsaXN0ZW5lcnMpIHtcclxuICAgICAgICB2YXIgYXJncyA9IFtdLFxyXG4gICAgICAgICAgICBpID0gMTtcclxuICAgICAgICBmb3IgKDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7KVxyXG4gICAgICAgICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2krK10pO1xyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOylcclxuICAgICAgICAgICAgbGlzdGVuZXJzW2ldLmZuLmFwcGx5KGxpc3RlbmVyc1tpKytdLmN0eCwgYXJncyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcztcclxufTtcclxuIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoZmFjdG9yeSk7XHJcblxyXG4vKipcclxuICogUmVhZHMgLyB3cml0ZXMgZmxvYXRzIC8gZG91YmxlcyBmcm9tIC8gdG8gYnVmZmVycy5cclxuICogQG5hbWUgdXRpbC5mbG9hdFxyXG4gKiBAbmFtZXNwYWNlXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIFdyaXRlcyBhIDMyIGJpdCBmbG9hdCB0byBhIGJ1ZmZlciB1c2luZyBsaXR0bGUgZW5kaWFuIGJ5dGUgb3JkZXIuXHJcbiAqIEBuYW1lIHV0aWwuZmxvYXQud3JpdGVGbG9hdExFXHJcbiAqIEBmdW5jdGlvblxyXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsIFZhbHVlIHRvIHdyaXRlXHJcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gYnVmIFRhcmdldCBidWZmZXJcclxuICogQHBhcmFtIHtudW1iZXJ9IHBvcyBUYXJnZXQgYnVmZmVyIG9mZnNldFxyXG4gKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBXcml0ZXMgYSAzMiBiaXQgZmxvYXQgdG8gYSBidWZmZXIgdXNpbmcgYmlnIGVuZGlhbiBieXRlIG9yZGVyLlxyXG4gKiBAbmFtZSB1dGlsLmZsb2F0LndyaXRlRmxvYXRCRVxyXG4gKiBAZnVuY3Rpb25cclxuICogQHBhcmFtIHtudW1iZXJ9IHZhbCBWYWx1ZSB0byB3cml0ZVxyXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ1ZiBUYXJnZXQgYnVmZmVyXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBwb3MgVGFyZ2V0IGJ1ZmZlciBvZmZzZXRcclxuICogQHJldHVybnMge3VuZGVmaW5lZH1cclxuICovXHJcblxyXG4vKipcclxuICogUmVhZHMgYSAzMiBiaXQgZmxvYXQgZnJvbSBhIGJ1ZmZlciB1c2luZyBsaXR0bGUgZW5kaWFuIGJ5dGUgb3JkZXIuXHJcbiAqIEBuYW1lIHV0aWwuZmxvYXQucmVhZEZsb2F0TEVcclxuICogQGZ1bmN0aW9uXHJcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gYnVmIFNvdXJjZSBidWZmZXJcclxuICogQHBhcmFtIHtudW1iZXJ9IHBvcyBTb3VyY2UgYnVmZmVyIG9mZnNldFxyXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBWYWx1ZSByZWFkXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIFJlYWRzIGEgMzIgYml0IGZsb2F0IGZyb20gYSBidWZmZXIgdXNpbmcgYmlnIGVuZGlhbiBieXRlIG9yZGVyLlxyXG4gKiBAbmFtZSB1dGlsLmZsb2F0LnJlYWRGbG9hdEJFXHJcbiAqIEBmdW5jdGlvblxyXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ1ZiBTb3VyY2UgYnVmZmVyXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBwb3MgU291cmNlIGJ1ZmZlciBvZmZzZXRcclxuICogQHJldHVybnMge251bWJlcn0gVmFsdWUgcmVhZFxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBXcml0ZXMgYSA2NCBiaXQgZG91YmxlIHRvIGEgYnVmZmVyIHVzaW5nIGxpdHRsZSBlbmRpYW4gYnl0ZSBvcmRlci5cclxuICogQG5hbWUgdXRpbC5mbG9hdC53cml0ZURvdWJsZUxFXHJcbiAqIEBmdW5jdGlvblxyXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsIFZhbHVlIHRvIHdyaXRlXHJcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gYnVmIFRhcmdldCBidWZmZXJcclxuICogQHBhcmFtIHtudW1iZXJ9IHBvcyBUYXJnZXQgYnVmZmVyIG9mZnNldFxyXG4gKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBXcml0ZXMgYSA2NCBiaXQgZG91YmxlIHRvIGEgYnVmZmVyIHVzaW5nIGJpZyBlbmRpYW4gYnl0ZSBvcmRlci5cclxuICogQG5hbWUgdXRpbC5mbG9hdC53cml0ZURvdWJsZUJFXHJcbiAqIEBmdW5jdGlvblxyXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsIFZhbHVlIHRvIHdyaXRlXHJcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gYnVmIFRhcmdldCBidWZmZXJcclxuICogQHBhcmFtIHtudW1iZXJ9IHBvcyBUYXJnZXQgYnVmZmVyIG9mZnNldFxyXG4gKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBSZWFkcyBhIDY0IGJpdCBkb3VibGUgZnJvbSBhIGJ1ZmZlciB1c2luZyBsaXR0bGUgZW5kaWFuIGJ5dGUgb3JkZXIuXHJcbiAqIEBuYW1lIHV0aWwuZmxvYXQucmVhZERvdWJsZUxFXHJcbiAqIEBmdW5jdGlvblxyXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ1ZiBTb3VyY2UgYnVmZmVyXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBwb3MgU291cmNlIGJ1ZmZlciBvZmZzZXRcclxuICogQHJldHVybnMge251bWJlcn0gVmFsdWUgcmVhZFxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBSZWFkcyBhIDY0IGJpdCBkb3VibGUgZnJvbSBhIGJ1ZmZlciB1c2luZyBiaWcgZW5kaWFuIGJ5dGUgb3JkZXIuXHJcbiAqIEBuYW1lIHV0aWwuZmxvYXQucmVhZERvdWJsZUJFXHJcbiAqIEBmdW5jdGlvblxyXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ1ZiBTb3VyY2UgYnVmZmVyXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBwb3MgU291cmNlIGJ1ZmZlciBvZmZzZXRcclxuICogQHJldHVybnMge251bWJlcn0gVmFsdWUgcmVhZFxyXG4gKi9cclxuXHJcbi8vIEZhY3RvcnkgZnVuY3Rpb24gZm9yIHRoZSBwdXJwb3NlIG9mIG5vZGUtYmFzZWQgdGVzdGluZyBpbiBtb2RpZmllZCBnbG9iYWwgZW52aXJvbm1lbnRzXHJcbmZ1bmN0aW9uIGZhY3RvcnkoZXhwb3J0cykge1xyXG5cclxuICAgIC8vIGZsb2F0OiB0eXBlZCBhcnJheVxyXG4gICAgaWYgKHR5cGVvZiBGbG9hdDMyQXJyYXkgIT09IFwidW5kZWZpbmVkXCIpIChmdW5jdGlvbigpIHtcclxuXHJcbiAgICAgICAgdmFyIGYzMiA9IG5ldyBGbG9hdDMyQXJyYXkoWyAtMCBdKSxcclxuICAgICAgICAgICAgZjhiID0gbmV3IFVpbnQ4QXJyYXkoZjMyLmJ1ZmZlciksXHJcbiAgICAgICAgICAgIGxlICA9IGY4YlszXSA9PT0gMTI4O1xyXG5cclxuICAgICAgICBmdW5jdGlvbiB3cml0ZUZsb2F0X2YzMl9jcHkodmFsLCBidWYsIHBvcykge1xyXG4gICAgICAgICAgICBmMzJbMF0gPSB2YWw7XHJcbiAgICAgICAgICAgIGJ1Zltwb3MgICAgXSA9IGY4YlswXTtcclxuICAgICAgICAgICAgYnVmW3BvcyArIDFdID0gZjhiWzFdO1xyXG4gICAgICAgICAgICBidWZbcG9zICsgMl0gPSBmOGJbMl07XHJcbiAgICAgICAgICAgIGJ1Zltwb3MgKyAzXSA9IGY4YlszXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIHdyaXRlRmxvYXRfZjMyX3Jldih2YWwsIGJ1ZiwgcG9zKSB7XHJcbiAgICAgICAgICAgIGYzMlswXSA9IHZhbDtcclxuICAgICAgICAgICAgYnVmW3BvcyAgICBdID0gZjhiWzNdO1xyXG4gICAgICAgICAgICBidWZbcG9zICsgMV0gPSBmOGJbMl07XHJcbiAgICAgICAgICAgIGJ1Zltwb3MgKyAyXSA9IGY4YlsxXTtcclxuICAgICAgICAgICAgYnVmW3BvcyArIDNdID0gZjhiWzBdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICAgICAgICBleHBvcnRzLndyaXRlRmxvYXRMRSA9IGxlID8gd3JpdGVGbG9hdF9mMzJfY3B5IDogd3JpdGVGbG9hdF9mMzJfcmV2O1xyXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXHJcbiAgICAgICAgZXhwb3J0cy53cml0ZUZsb2F0QkUgPSBsZSA/IHdyaXRlRmxvYXRfZjMyX3JldiA6IHdyaXRlRmxvYXRfZjMyX2NweTtcclxuXHJcbiAgICAgICAgZnVuY3Rpb24gcmVhZEZsb2F0X2YzMl9jcHkoYnVmLCBwb3MpIHtcclxuICAgICAgICAgICAgZjhiWzBdID0gYnVmW3BvcyAgICBdO1xyXG4gICAgICAgICAgICBmOGJbMV0gPSBidWZbcG9zICsgMV07XHJcbiAgICAgICAgICAgIGY4YlsyXSA9IGJ1Zltwb3MgKyAyXTtcclxuICAgICAgICAgICAgZjhiWzNdID0gYnVmW3BvcyArIDNdO1xyXG4gICAgICAgICAgICByZXR1cm4gZjMyWzBdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZnVuY3Rpb24gcmVhZEZsb2F0X2YzMl9yZXYoYnVmLCBwb3MpIHtcclxuICAgICAgICAgICAgZjhiWzNdID0gYnVmW3BvcyAgICBdO1xyXG4gICAgICAgICAgICBmOGJbMl0gPSBidWZbcG9zICsgMV07XHJcbiAgICAgICAgICAgIGY4YlsxXSA9IGJ1Zltwb3MgKyAyXTtcclxuICAgICAgICAgICAgZjhiWzBdID0gYnVmW3BvcyArIDNdO1xyXG4gICAgICAgICAgICByZXR1cm4gZjMyWzBdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICAgICAgICBleHBvcnRzLnJlYWRGbG9hdExFID0gbGUgPyByZWFkRmxvYXRfZjMyX2NweSA6IHJlYWRGbG9hdF9mMzJfcmV2O1xyXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXHJcbiAgICAgICAgZXhwb3J0cy5yZWFkRmxvYXRCRSA9IGxlID8gcmVhZEZsb2F0X2YzMl9yZXYgOiByZWFkRmxvYXRfZjMyX2NweTtcclxuXHJcbiAgICAvLyBmbG9hdDogaWVlZTc1NFxyXG4gICAgfSkoKTsgZWxzZSAoZnVuY3Rpb24oKSB7XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIHdyaXRlRmxvYXRfaWVlZTc1NCh3cml0ZVVpbnQsIHZhbCwgYnVmLCBwb3MpIHtcclxuICAgICAgICAgICAgdmFyIHNpZ24gPSB2YWwgPCAwID8gMSA6IDA7XHJcbiAgICAgICAgICAgIGlmIChzaWduKVxyXG4gICAgICAgICAgICAgICAgdmFsID0gLXZhbDtcclxuICAgICAgICAgICAgaWYgKHZhbCA9PT0gMClcclxuICAgICAgICAgICAgICAgIHdyaXRlVWludCgxIC8gdmFsID4gMCA/IC8qIHBvc2l0aXZlICovIDAgOiAvKiBuZWdhdGl2ZSAwICovIDIxNDc0ODM2NDgsIGJ1ZiwgcG9zKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNOYU4odmFsKSlcclxuICAgICAgICAgICAgICAgIHdyaXRlVWludCgyMTQzMjg5MzQ0LCBidWYsIHBvcyk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbCA+IDMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgpIC8vICstSW5maW5pdHlcclxuICAgICAgICAgICAgICAgIHdyaXRlVWludCgoc2lnbiA8PCAzMSB8IDIxMzkwOTUwNDApID4+PiAwLCBidWYsIHBvcyk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbCA8IDEuMTc1NDk0MzUwODIyMjg3NWUtMzgpIC8vIGRlbm9ybWFsXHJcbiAgICAgICAgICAgICAgICB3cml0ZVVpbnQoKHNpZ24gPDwgMzEgfCBNYXRoLnJvdW5kKHZhbCAvIDEuNDAxMjk4NDY0MzI0ODE3ZS00NSkpID4+PiAwLCBidWYsIHBvcyk7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIGV4cG9uZW50ID0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWwpIC8gTWF0aC5MTjIpLFxyXG4gICAgICAgICAgICAgICAgICAgIG1hbnRpc3NhID0gTWF0aC5yb3VuZCh2YWwgKiBNYXRoLnBvdygyLCAtZXhwb25lbnQpICogODM4ODYwOCkgJiA4Mzg4NjA3O1xyXG4gICAgICAgICAgICAgICAgd3JpdGVVaW50KChzaWduIDw8IDMxIHwgZXhwb25lbnQgKyAxMjcgPDwgMjMgfCBtYW50aXNzYSkgPj4+IDAsIGJ1ZiwgcG9zKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZXhwb3J0cy53cml0ZUZsb2F0TEUgPSB3cml0ZUZsb2F0X2llZWU3NTQuYmluZChudWxsLCB3cml0ZVVpbnRMRSk7XHJcbiAgICAgICAgZXhwb3J0cy53cml0ZUZsb2F0QkUgPSB3cml0ZUZsb2F0X2llZWU3NTQuYmluZChudWxsLCB3cml0ZVVpbnRCRSk7XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIHJlYWRGbG9hdF9pZWVlNzU0KHJlYWRVaW50LCBidWYsIHBvcykge1xyXG4gICAgICAgICAgICB2YXIgdWludCA9IHJlYWRVaW50KGJ1ZiwgcG9zKSxcclxuICAgICAgICAgICAgICAgIHNpZ24gPSAodWludCA+PiAzMSkgKiAyICsgMSxcclxuICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gdWludCA+Pj4gMjMgJiAyNTUsXHJcbiAgICAgICAgICAgICAgICBtYW50aXNzYSA9IHVpbnQgJiA4Mzg4NjA3O1xyXG4gICAgICAgICAgICByZXR1cm4gZXhwb25lbnQgPT09IDI1NVxyXG4gICAgICAgICAgICAgICAgPyBtYW50aXNzYVxyXG4gICAgICAgICAgICAgICAgPyBOYU5cclxuICAgICAgICAgICAgICAgIDogc2lnbiAqIEluZmluaXR5XHJcbiAgICAgICAgICAgICAgICA6IGV4cG9uZW50ID09PSAwIC8vIGRlbm9ybWFsXHJcbiAgICAgICAgICAgICAgICA/IHNpZ24gKiAxLjQwMTI5ODQ2NDMyNDgxN2UtNDUgKiBtYW50aXNzYVxyXG4gICAgICAgICAgICAgICAgOiBzaWduICogTWF0aC5wb3coMiwgZXhwb25lbnQgLSAxNTApICogKG1hbnRpc3NhICsgODM4ODYwOCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBleHBvcnRzLnJlYWRGbG9hdExFID0gcmVhZEZsb2F0X2llZWU3NTQuYmluZChudWxsLCByZWFkVWludExFKTtcclxuICAgICAgICBleHBvcnRzLnJlYWRGbG9hdEJFID0gcmVhZEZsb2F0X2llZWU3NTQuYmluZChudWxsLCByZWFkVWludEJFKTtcclxuXHJcbiAgICB9KSgpO1xyXG5cclxuICAgIC8vIGRvdWJsZTogdHlwZWQgYXJyYXlcclxuICAgIGlmICh0eXBlb2YgRmxvYXQ2NEFycmF5ICE9PSBcInVuZGVmaW5lZFwiKSAoZnVuY3Rpb24oKSB7XHJcblxyXG4gICAgICAgIHZhciBmNjQgPSBuZXcgRmxvYXQ2NEFycmF5KFstMF0pLFxyXG4gICAgICAgICAgICBmOGIgPSBuZXcgVWludDhBcnJheShmNjQuYnVmZmVyKSxcclxuICAgICAgICAgICAgbGUgID0gZjhiWzddID09PSAxMjg7XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIHdyaXRlRG91YmxlX2Y2NF9jcHkodmFsLCBidWYsIHBvcykge1xyXG4gICAgICAgICAgICBmNjRbMF0gPSB2YWw7XHJcbiAgICAgICAgICAgIGJ1Zltwb3MgICAgXSA9IGY4YlswXTtcclxuICAgICAgICAgICAgYnVmW3BvcyArIDFdID0gZjhiWzFdO1xyXG4gICAgICAgICAgICBidWZbcG9zICsgMl0gPSBmOGJbMl07XHJcbiAgICAgICAgICAgIGJ1Zltwb3MgKyAzXSA9IGY4YlszXTtcclxuICAgICAgICAgICAgYnVmW3BvcyArIDRdID0gZjhiWzRdO1xyXG4gICAgICAgICAgICBidWZbcG9zICsgNV0gPSBmOGJbNV07XHJcbiAgICAgICAgICAgIGJ1Zltwb3MgKyA2XSA9IGY4Yls2XTtcclxuICAgICAgICAgICAgYnVmW3BvcyArIDddID0gZjhiWzddO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZnVuY3Rpb24gd3JpdGVEb3VibGVfZjY0X3Jldih2YWwsIGJ1ZiwgcG9zKSB7XHJcbiAgICAgICAgICAgIGY2NFswXSA9IHZhbDtcclxuICAgICAgICAgICAgYnVmW3BvcyAgICBdID0gZjhiWzddO1xyXG4gICAgICAgICAgICBidWZbcG9zICsgMV0gPSBmOGJbNl07XHJcbiAgICAgICAgICAgIGJ1Zltwb3MgKyAyXSA9IGY4Yls1XTtcclxuICAgICAgICAgICAgYnVmW3BvcyArIDNdID0gZjhiWzRdO1xyXG4gICAgICAgICAgICBidWZbcG9zICsgNF0gPSBmOGJbM107XHJcbiAgICAgICAgICAgIGJ1Zltwb3MgKyA1XSA9IGY4YlsyXTtcclxuICAgICAgICAgICAgYnVmW3BvcyArIDZdID0gZjhiWzFdO1xyXG4gICAgICAgICAgICBidWZbcG9zICsgN10gPSBmOGJbMF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG4gICAgICAgIGV4cG9ydHMud3JpdGVEb3VibGVMRSA9IGxlID8gd3JpdGVEb3VibGVfZjY0X2NweSA6IHdyaXRlRG91YmxlX2Y2NF9yZXY7XHJcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICAgICAgICBleHBvcnRzLndyaXRlRG91YmxlQkUgPSBsZSA/IHdyaXRlRG91YmxlX2Y2NF9yZXYgOiB3cml0ZURvdWJsZV9mNjRfY3B5O1xyXG5cclxuICAgICAgICBmdW5jdGlvbiByZWFkRG91YmxlX2Y2NF9jcHkoYnVmLCBwb3MpIHtcclxuICAgICAgICAgICAgZjhiWzBdID0gYnVmW3BvcyAgICBdO1xyXG4gICAgICAgICAgICBmOGJbMV0gPSBidWZbcG9zICsgMV07XHJcbiAgICAgICAgICAgIGY4YlsyXSA9IGJ1Zltwb3MgKyAyXTtcclxuICAgICAgICAgICAgZjhiWzNdID0gYnVmW3BvcyArIDNdO1xyXG4gICAgICAgICAgICBmOGJbNF0gPSBidWZbcG9zICsgNF07XHJcbiAgICAgICAgICAgIGY4Yls1XSA9IGJ1Zltwb3MgKyA1XTtcclxuICAgICAgICAgICAgZjhiWzZdID0gYnVmW3BvcyArIDZdO1xyXG4gICAgICAgICAgICBmOGJbN10gPSBidWZbcG9zICsgN107XHJcbiAgICAgICAgICAgIHJldHVybiBmNjRbMF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmdW5jdGlvbiByZWFkRG91YmxlX2Y2NF9yZXYoYnVmLCBwb3MpIHtcclxuICAgICAgICAgICAgZjhiWzddID0gYnVmW3BvcyAgICBdO1xyXG4gICAgICAgICAgICBmOGJbNl0gPSBidWZbcG9zICsgMV07XHJcbiAgICAgICAgICAgIGY4Yls1XSA9IGJ1Zltwb3MgKyAyXTtcclxuICAgICAgICAgICAgZjhiWzRdID0gYnVmW3BvcyArIDNdO1xyXG4gICAgICAgICAgICBmOGJbM10gPSBidWZbcG9zICsgNF07XHJcbiAgICAgICAgICAgIGY4YlsyXSA9IGJ1Zltwb3MgKyA1XTtcclxuICAgICAgICAgICAgZjhiWzFdID0gYnVmW3BvcyArIDZdO1xyXG4gICAgICAgICAgICBmOGJbMF0gPSBidWZbcG9zICsgN107XHJcbiAgICAgICAgICAgIHJldHVybiBmNjRbMF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG4gICAgICAgIGV4cG9ydHMucmVhZERvdWJsZUxFID0gbGUgPyByZWFkRG91YmxlX2Y2NF9jcHkgOiByZWFkRG91YmxlX2Y2NF9yZXY7XHJcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICAgICAgICBleHBvcnRzLnJlYWREb3VibGVCRSA9IGxlID8gcmVhZERvdWJsZV9mNjRfcmV2IDogcmVhZERvdWJsZV9mNjRfY3B5O1xyXG5cclxuICAgIC8vIGRvdWJsZTogaWVlZTc1NFxyXG4gICAgfSkoKTsgZWxzZSAoZnVuY3Rpb24oKSB7XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIHdyaXRlRG91YmxlX2llZWU3NTQod3JpdGVVaW50LCBvZmYwLCBvZmYxLCB2YWwsIGJ1ZiwgcG9zKSB7XHJcbiAgICAgICAgICAgIHZhciBzaWduID0gdmFsIDwgMCA/IDEgOiAwO1xyXG4gICAgICAgICAgICBpZiAoc2lnbilcclxuICAgICAgICAgICAgICAgIHZhbCA9IC12YWw7XHJcbiAgICAgICAgICAgIGlmICh2YWwgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHdyaXRlVWludCgwLCBidWYsIHBvcyArIG9mZjApO1xyXG4gICAgICAgICAgICAgICAgd3JpdGVVaW50KDEgLyB2YWwgPiAwID8gLyogcG9zaXRpdmUgKi8gMCA6IC8qIG5lZ2F0aXZlIDAgKi8gMjE0NzQ4MzY0OCwgYnVmLCBwb3MgKyBvZmYxKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc05hTih2YWwpKSB7XHJcbiAgICAgICAgICAgICAgICB3cml0ZVVpbnQoMCwgYnVmLCBwb3MgKyBvZmYwKTtcclxuICAgICAgICAgICAgICAgIHdyaXRlVWludCgyMTQ2OTU5MzYwLCBidWYsIHBvcyArIG9mZjEpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbCA+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4KSB7IC8vICstSW5maW5pdHlcclxuICAgICAgICAgICAgICAgIHdyaXRlVWludCgwLCBidWYsIHBvcyArIG9mZjApO1xyXG4gICAgICAgICAgICAgICAgd3JpdGVVaW50KChzaWduIDw8IDMxIHwgMjE0NjQzNTA3MikgPj4+IDAsIGJ1ZiwgcG9zICsgb2ZmMSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbWFudGlzc2E7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsIDwgMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgpIHsgLy8gZGVub3JtYWxcclxuICAgICAgICAgICAgICAgICAgICBtYW50aXNzYSA9IHZhbCAvIDVlLTMyNDtcclxuICAgICAgICAgICAgICAgICAgICB3cml0ZVVpbnQobWFudGlzc2EgPj4+IDAsIGJ1ZiwgcG9zICsgb2ZmMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVVaW50KChzaWduIDw8IDMxIHwgbWFudGlzc2EgLyA0Mjk0OTY3Mjk2KSA+Pj4gMCwgYnVmLCBwb3MgKyBvZmYxKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGV4cG9uZW50ID0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWwpIC8gTWF0aC5MTjIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChleHBvbmVudCA9PT0gMTAyNClcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwb25lbnQgPSAxMDIzO1xyXG4gICAgICAgICAgICAgICAgICAgIG1hbnRpc3NhID0gdmFsICogTWF0aC5wb3coMiwgLWV4cG9uZW50KTtcclxuICAgICAgICAgICAgICAgICAgICB3cml0ZVVpbnQobWFudGlzc2EgKiA0NTAzNTk5NjI3MzcwNDk2ID4+PiAwLCBidWYsIHBvcyArIG9mZjApO1xyXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlVWludCgoc2lnbiA8PCAzMSB8IGV4cG9uZW50ICsgMTAyMyA8PCAyMCB8IG1hbnRpc3NhICogMTA0ODU3NiAmIDEwNDg1NzUpID4+PiAwLCBidWYsIHBvcyArIG9mZjEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBleHBvcnRzLndyaXRlRG91YmxlTEUgPSB3cml0ZURvdWJsZV9pZWVlNzU0LmJpbmQobnVsbCwgd3JpdGVVaW50TEUsIDAsIDQpO1xyXG4gICAgICAgIGV4cG9ydHMud3JpdGVEb3VibGVCRSA9IHdyaXRlRG91YmxlX2llZWU3NTQuYmluZChudWxsLCB3cml0ZVVpbnRCRSwgNCwgMCk7XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIHJlYWREb3VibGVfaWVlZTc1NChyZWFkVWludCwgb2ZmMCwgb2ZmMSwgYnVmLCBwb3MpIHtcclxuICAgICAgICAgICAgdmFyIGxvID0gcmVhZFVpbnQoYnVmLCBwb3MgKyBvZmYwKSxcclxuICAgICAgICAgICAgICAgIGhpID0gcmVhZFVpbnQoYnVmLCBwb3MgKyBvZmYxKTtcclxuICAgICAgICAgICAgdmFyIHNpZ24gPSAoaGkgPj4gMzEpICogMiArIDEsXHJcbiAgICAgICAgICAgICAgICBleHBvbmVudCA9IGhpID4+PiAyMCAmIDIwNDcsXHJcbiAgICAgICAgICAgICAgICBtYW50aXNzYSA9IDQyOTQ5NjcyOTYgKiAoaGkgJiAxMDQ4NTc1KSArIGxvO1xyXG4gICAgICAgICAgICByZXR1cm4gZXhwb25lbnQgPT09IDIwNDdcclxuICAgICAgICAgICAgICAgID8gbWFudGlzc2FcclxuICAgICAgICAgICAgICAgID8gTmFOXHJcbiAgICAgICAgICAgICAgICA6IHNpZ24gKiBJbmZpbml0eVxyXG4gICAgICAgICAgICAgICAgOiBleHBvbmVudCA9PT0gMCAvLyBkZW5vcm1hbFxyXG4gICAgICAgICAgICAgICAgPyBzaWduICogNWUtMzI0ICogbWFudGlzc2FcclxuICAgICAgICAgICAgICAgIDogc2lnbiAqIE1hdGgucG93KDIsIGV4cG9uZW50IC0gMTA3NSkgKiAobWFudGlzc2EgKyA0NTAzNTk5NjI3MzcwNDk2KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGV4cG9ydHMucmVhZERvdWJsZUxFID0gcmVhZERvdWJsZV9pZWVlNzU0LmJpbmQobnVsbCwgcmVhZFVpbnRMRSwgMCwgNCk7XHJcbiAgICAgICAgZXhwb3J0cy5yZWFkRG91YmxlQkUgPSByZWFkRG91YmxlX2llZWU3NTQuYmluZChudWxsLCByZWFkVWludEJFLCA0LCAwKTtcclxuXHJcbiAgICB9KSgpO1xyXG5cclxuICAgIHJldHVybiBleHBvcnRzO1xyXG59XHJcblxyXG4vLyB1aW50IGhlbHBlcnNcclxuXHJcbmZ1bmN0aW9uIHdyaXRlVWludExFKHZhbCwgYnVmLCBwb3MpIHtcclxuICAgIGJ1Zltwb3MgICAgXSA9ICB2YWwgICAgICAgICYgMjU1O1xyXG4gICAgYnVmW3BvcyArIDFdID0gIHZhbCA+Pj4gOCAgJiAyNTU7XHJcbiAgICBidWZbcG9zICsgMl0gPSAgdmFsID4+PiAxNiAmIDI1NTtcclxuICAgIGJ1Zltwb3MgKyAzXSA9ICB2YWwgPj4+IDI0O1xyXG59XHJcblxyXG5mdW5jdGlvbiB3cml0ZVVpbnRCRSh2YWwsIGJ1ZiwgcG9zKSB7XHJcbiAgICBidWZbcG9zICAgIF0gPSAgdmFsID4+PiAyNDtcclxuICAgIGJ1Zltwb3MgKyAxXSA9ICB2YWwgPj4+IDE2ICYgMjU1O1xyXG4gICAgYnVmW3BvcyArIDJdID0gIHZhbCA+Pj4gOCAgJiAyNTU7XHJcbiAgICBidWZbcG9zICsgM10gPSAgdmFsICAgICAgICAmIDI1NTtcclxufVxyXG5cclxuZnVuY3Rpb24gcmVhZFVpbnRMRShidWYsIHBvcykge1xyXG4gICAgcmV0dXJuIChidWZbcG9zICAgIF1cclxuICAgICAgICAgIHwgYnVmW3BvcyArIDFdIDw8IDhcclxuICAgICAgICAgIHwgYnVmW3BvcyArIDJdIDw8IDE2XHJcbiAgICAgICAgICB8IGJ1Zltwb3MgKyAzXSA8PCAyNCkgPj4+IDA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlYWRVaW50QkUoYnVmLCBwb3MpIHtcclxuICAgIHJldHVybiAoYnVmW3BvcyAgICBdIDw8IDI0XHJcbiAgICAgICAgICB8IGJ1Zltwb3MgKyAxXSA8PCAxNlxyXG4gICAgICAgICAgfCBidWZbcG9zICsgMl0gPDwgOFxyXG4gICAgICAgICAgfCBidWZbcG9zICsgM10pID4+PiAwO1xyXG59XHJcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5tb2R1bGUuZXhwb3J0cyA9IGlucXVpcmU7XHJcblxyXG4vKipcclxuICogUmVxdWlyZXMgYSBtb2R1bGUgb25seSBpZiBhdmFpbGFibGUuXHJcbiAqIEBtZW1iZXJvZiB1dGlsXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBtb2R1bGVOYW1lIE1vZHVsZSB0byByZXF1aXJlXHJcbiAqIEByZXR1cm5zIHs/T2JqZWN0fSBSZXF1aXJlZCBtb2R1bGUgaWYgYXZhaWxhYmxlIGFuZCBub3QgZW1wdHksIG90aGVyd2lzZSBgbnVsbGBcclxuICovXHJcbmZ1bmN0aW9uIGlucXVpcmUobW9kdWxlTmFtZSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB2YXIgbW9kID0gZXZhbChcInF1aXJlXCIucmVwbGFjZSgvXi8sXCJyZVwiKSkobW9kdWxlTmFtZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZXZhbFxyXG4gICAgICAgIGlmIChtb2QgJiYgKG1vZC5sZW5ndGggfHwgT2JqZWN0LmtleXMobW9kKS5sZW5ndGgpKVxyXG4gICAgICAgICAgICByZXR1cm4gbW9kO1xyXG4gICAgfSBjYXRjaCAoZSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG4vKipcclxuICogQSBtaW5pbWFsIFVURjggaW1wbGVtZW50YXRpb24gZm9yIG51bWJlciBhcnJheXMuXHJcbiAqIEBtZW1iZXJvZiB1dGlsXHJcbiAqIEBuYW1lc3BhY2VcclxuICovXHJcbnZhciB1dGY4ID0gZXhwb3J0cztcclxuXHJcbi8qKlxyXG4gKiBDYWxjdWxhdGVzIHRoZSBVVEY4IGJ5dGUgbGVuZ3RoIG9mIGEgc3RyaW5nLlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFN0cmluZ1xyXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBCeXRlIGxlbmd0aFxyXG4gKi9cclxudXRmOC5sZW5ndGggPSBmdW5jdGlvbiB1dGY4X2xlbmd0aChzdHJpbmcpIHtcclxuICAgIHZhciBsZW4gPSAwLFxyXG4gICAgICAgIGMgPSAwO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICBjID0gc3RyaW5nLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgaWYgKGMgPCAxMjgpXHJcbiAgICAgICAgICAgIGxlbiArPSAxO1xyXG4gICAgICAgIGVsc2UgaWYgKGMgPCAyMDQ4KVxyXG4gICAgICAgICAgICBsZW4gKz0gMjtcclxuICAgICAgICBlbHNlIGlmICgoYyAmIDB4RkMwMCkgPT09IDB4RDgwMCAmJiAoc3RyaW5nLmNoYXJDb2RlQXQoaSArIDEpICYgMHhGQzAwKSA9PT0gMHhEQzAwKSB7XHJcbiAgICAgICAgICAgICsraTtcclxuICAgICAgICAgICAgbGVuICs9IDQ7XHJcbiAgICAgICAgfSBlbHNlXHJcbiAgICAgICAgICAgIGxlbiArPSAzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxlbjtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZWFkcyBVVEY4IGJ5dGVzIGFzIGEgc3RyaW5nLlxyXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ1ZmZlciBTb3VyY2UgYnVmZmVyXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBTb3VyY2Ugc3RhcnRcclxuICogQHBhcmFtIHtudW1iZXJ9IGVuZCBTb3VyY2UgZW5kXHJcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyByZWFkXHJcbiAqL1xyXG51dGY4LnJlYWQgPSBmdW5jdGlvbiB1dGY4X3JlYWQoYnVmZmVyLCBzdGFydCwgZW5kKSB7XHJcbiAgICB2YXIgbGVuID0gZW5kIC0gc3RhcnQ7XHJcbiAgICBpZiAobGVuIDwgMSlcclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgIHZhciBwYXJ0cyA9IG51bGwsXHJcbiAgICAgICAgY2h1bmsgPSBbXSxcclxuICAgICAgICBpID0gMCwgLy8gY2hhciBvZmZzZXRcclxuICAgICAgICB0OyAgICAgLy8gdGVtcG9yYXJ5XHJcbiAgICB3aGlsZSAoc3RhcnQgPCBlbmQpIHtcclxuICAgICAgICB0ID0gYnVmZmVyW3N0YXJ0KytdO1xyXG4gICAgICAgIGlmICh0IDwgMTI4KVxyXG4gICAgICAgICAgICBjaHVua1tpKytdID0gdDtcclxuICAgICAgICBlbHNlIGlmICh0ID4gMTkxICYmIHQgPCAyMjQpXHJcbiAgICAgICAgICAgIGNodW5rW2krK10gPSAodCAmIDMxKSA8PCA2IHwgYnVmZmVyW3N0YXJ0KytdICYgNjM7XHJcbiAgICAgICAgZWxzZSBpZiAodCA+IDIzOSAmJiB0IDwgMzY1KSB7XHJcbiAgICAgICAgICAgIHQgPSAoKHQgJiA3KSA8PCAxOCB8IChidWZmZXJbc3RhcnQrK10gJiA2MykgPDwgMTIgfCAoYnVmZmVyW3N0YXJ0KytdICYgNjMpIDw8IDYgfCBidWZmZXJbc3RhcnQrK10gJiA2MykgLSAweDEwMDAwO1xyXG4gICAgICAgICAgICBjaHVua1tpKytdID0gMHhEODAwICsgKHQgPj4gMTApO1xyXG4gICAgICAgICAgICBjaHVua1tpKytdID0gMHhEQzAwICsgKHQgJiAxMDIzKTtcclxuICAgICAgICB9IGVsc2VcclxuICAgICAgICAgICAgY2h1bmtbaSsrXSA9ICh0ICYgMTUpIDw8IDEyIHwgKGJ1ZmZlcltzdGFydCsrXSAmIDYzKSA8PCA2IHwgYnVmZmVyW3N0YXJ0KytdICYgNjM7XHJcbiAgICAgICAgaWYgKGkgPiA4MTkxKSB7XHJcbiAgICAgICAgICAgIChwYXJ0cyB8fCAocGFydHMgPSBbXSkpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNodW5rKSk7XHJcbiAgICAgICAgICAgIGkgPSAwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChwYXJ0cykge1xyXG4gICAgICAgIGlmIChpKVxyXG4gICAgICAgICAgICBwYXJ0cy5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBjaHVuay5zbGljZSgwLCBpKSkpO1xyXG4gICAgICAgIHJldHVybiBwYXJ0cy5qb2luKFwiXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBjaHVuay5zbGljZSgwLCBpKSk7XHJcbn07XHJcblxyXG4vKipcclxuICogV3JpdGVzIGEgc3RyaW5nIGFzIFVURjggYnl0ZXMuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgU291cmNlIHN0cmluZ1xyXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ1ZmZlciBEZXN0aW5hdGlvbiBidWZmZXJcclxuICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldCBEZXN0aW5hdGlvbiBvZmZzZXRcclxuICogQHJldHVybnMge251bWJlcn0gQnl0ZXMgd3JpdHRlblxyXG4gKi9cclxudXRmOC53cml0ZSA9IGZ1bmN0aW9uIHV0Zjhfd3JpdGUoc3RyaW5nLCBidWZmZXIsIG9mZnNldCkge1xyXG4gICAgdmFyIHN0YXJ0ID0gb2Zmc2V0LFxyXG4gICAgICAgIGMxLCAvLyBjaGFyYWN0ZXIgMVxyXG4gICAgICAgIGMyOyAvLyBjaGFyYWN0ZXIgMlxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICBjMSA9IHN0cmluZy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgIGlmIChjMSA8IDEyOCkge1xyXG4gICAgICAgICAgICBidWZmZXJbb2Zmc2V0KytdID0gYzE7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjMSA8IDIwNDgpIHtcclxuICAgICAgICAgICAgYnVmZmVyW29mZnNldCsrXSA9IGMxID4+IDYgICAgICAgfCAxOTI7XHJcbiAgICAgICAgICAgIGJ1ZmZlcltvZmZzZXQrK10gPSBjMSAgICAgICAmIDYzIHwgMTI4O1xyXG4gICAgICAgIH0gZWxzZSBpZiAoKGMxICYgMHhGQzAwKSA9PT0gMHhEODAwICYmICgoYzIgPSBzdHJpbmcuY2hhckNvZGVBdChpICsgMSkpICYgMHhGQzAwKSA9PT0gMHhEQzAwKSB7XHJcbiAgICAgICAgICAgIGMxID0gMHgxMDAwMCArICgoYzEgJiAweDAzRkYpIDw8IDEwKSArIChjMiAmIDB4MDNGRik7XHJcbiAgICAgICAgICAgICsraTtcclxuICAgICAgICAgICAgYnVmZmVyW29mZnNldCsrXSA9IGMxID4+IDE4ICAgICAgfCAyNDA7XHJcbiAgICAgICAgICAgIGJ1ZmZlcltvZmZzZXQrK10gPSBjMSA+PiAxMiAmIDYzIHwgMTI4O1xyXG4gICAgICAgICAgICBidWZmZXJbb2Zmc2V0KytdID0gYzEgPj4gNiAgJiA2MyB8IDEyODtcclxuICAgICAgICAgICAgYnVmZmVyW29mZnNldCsrXSA9IGMxICAgICAgICYgNjMgfCAxMjg7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgYnVmZmVyW29mZnNldCsrXSA9IGMxID4+IDEyICAgICAgfCAyMjQ7XHJcbiAgICAgICAgICAgIGJ1ZmZlcltvZmZzZXQrK10gPSBjMSA+PiA2ICAmIDYzIHwgMTI4O1xyXG4gICAgICAgICAgICBidWZmZXJbb2Zmc2V0KytdID0gYzEgICAgICAgJiA2MyB8IDEyODtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2Zmc2V0IC0gc3RhcnQ7XHJcbn07XHJcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5tb2R1bGUuZXhwb3J0cyA9IHBvb2w7XHJcblxyXG4vKipcclxuICogQW4gYWxsb2NhdG9yIGFzIHVzZWQgYnkge0BsaW5rIHV0aWwucG9vbH0uXHJcbiAqIEB0eXBlZGVmIFBvb2xBbGxvY2F0b3JcclxuICogQHR5cGUge2Z1bmN0aW9ufVxyXG4gKiBAcGFyYW0ge251bWJlcn0gc2l6ZSBCdWZmZXIgc2l6ZVxyXG4gKiBAcmV0dXJucyB7VWludDhBcnJheX0gQnVmZmVyXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEEgc2xpY2VyIGFzIHVzZWQgYnkge0BsaW5rIHV0aWwucG9vbH0uXHJcbiAqIEB0eXBlZGVmIFBvb2xTbGljZXJcclxuICogQHR5cGUge2Z1bmN0aW9ufVxyXG4gKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgU3RhcnQgb2Zmc2V0XHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgRW5kIG9mZnNldFxyXG4gKiBAcmV0dXJucyB7VWludDhBcnJheX0gQnVmZmVyIHNsaWNlXHJcbiAqIEB0aGlzIHtVaW50OEFycmF5fVxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBBIGdlbmVyYWwgcHVycG9zZSBidWZmZXIgcG9vbC5cclxuICogQG1lbWJlcm9mIHV0aWxcclxuICogQGZ1bmN0aW9uXHJcbiAqIEBwYXJhbSB7UG9vbEFsbG9jYXRvcn0gYWxsb2MgQWxsb2NhdG9yXHJcbiAqIEBwYXJhbSB7UG9vbFNsaWNlcn0gc2xpY2UgU2xpY2VyXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBbc2l6ZT04MTkyXSBTbGFiIHNpemVcclxuICogQHJldHVybnMge1Bvb2xBbGxvY2F0b3J9IFBvb2xlZCBhbGxvY2F0b3JcclxuICovXHJcbmZ1bmN0aW9uIHBvb2woYWxsb2MsIHNsaWNlLCBzaXplKSB7XHJcbiAgICB2YXIgU0laRSAgID0gc2l6ZSB8fCA4MTkyO1xyXG4gICAgdmFyIE1BWCAgICA9IFNJWkUgPj4+IDE7XHJcbiAgICB2YXIgc2xhYiAgID0gbnVsbDtcclxuICAgIHZhciBvZmZzZXQgPSBTSVpFO1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIHBvb2xfYWxsb2Moc2l6ZSkge1xyXG4gICAgICAgIGlmIChzaXplIDwgMSB8fCBzaXplID4gTUFYKVxyXG4gICAgICAgICAgICByZXR1cm4gYWxsb2Moc2l6ZSk7XHJcbiAgICAgICAgaWYgKG9mZnNldCArIHNpemUgPiBTSVpFKSB7XHJcbiAgICAgICAgICAgIHNsYWIgPSBhbGxvYyhTSVpFKTtcclxuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGJ1ZiA9IHNsaWNlLmNhbGwoc2xhYiwgb2Zmc2V0LCBvZmZzZXQgKz0gc2l6ZSk7XHJcbiAgICAgICAgaWYgKG9mZnNldCAmIDcpIC8vIGFsaWduIHRvIDMyIGJpdFxyXG4gICAgICAgICAgICBvZmZzZXQgPSAob2Zmc2V0IHwgNykgKyAxO1xyXG4gICAgICAgIHJldHVybiBidWY7XHJcbiAgICB9O1xyXG59XHJcbiIsIlwidXNlIHN0cmljdFwiO1xubW9kdWxlLmV4cG9ydHMgPSBMb25nQml0cztcblxudmFyIHV0aWwgPSByZXF1aXJlKFwiLi4vdXRpbC9taW5pbWFsXCIpO1xuXG4vKipcbiAqIENvbnN0cnVjdHMgbmV3IGxvbmcgYml0cy5cbiAqIEBjbGFzc2Rlc2MgSGVscGVyIGNsYXNzIGZvciB3b3JraW5nIHdpdGggdGhlIGxvdyBhbmQgaGlnaCBiaXRzIG9mIGEgNjQgYml0IHZhbHVlLlxuICogQG1lbWJlcm9mIHV0aWxcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtudW1iZXJ9IGxvIExvdyAzMiBiaXRzLCB1bnNpZ25lZFxuICogQHBhcmFtIHtudW1iZXJ9IGhpIEhpZ2ggMzIgYml0cywgdW5zaWduZWRcbiAqL1xuZnVuY3Rpb24gTG9uZ0JpdHMobG8sIGhpKSB7XG5cbiAgICAvLyBub3RlIHRoYXQgdGhlIGNhc3RzIGJlbG93IGFyZSB0aGVvcmV0aWNhbGx5IHVubmVjZXNzYXJ5IGFzIG9mIHRvZGF5LCBidXQgb2xkZXIgc3RhdGljYWxseVxuICAgIC8vIGdlbmVyYXRlZCBjb252ZXJ0ZXIgY29kZSBtaWdodCBzdGlsbCBjYWxsIHRoZSBjdG9yIHdpdGggc2lnbmVkIDMyYml0cy4ga2VwdCBmb3IgY29tcGF0LlxuXG4gICAgLyoqXG4gICAgICogTG93IGJpdHMuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmxvID0gbG8gPj4+IDA7XG5cbiAgICAvKipcbiAgICAgKiBIaWdoIGJpdHMuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmhpID0gaGkgPj4+IDA7XG59XG5cbi8qKlxuICogWmVybyBiaXRzLlxuICogQG1lbWJlcm9mIHV0aWwuTG9uZ0JpdHNcbiAqIEB0eXBlIHt1dGlsLkxvbmdCaXRzfVxuICovXG52YXIgemVybyA9IExvbmdCaXRzLnplcm8gPSBuZXcgTG9uZ0JpdHMoMCwgMCk7XG5cbnplcm8udG9OdW1iZXIgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG56ZXJvLnp6RW5jb2RlID0gemVyby56ekRlY29kZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfTtcbnplcm8ubGVuZ3RoID0gZnVuY3Rpb24oKSB7IHJldHVybiAxOyB9O1xuXG4vKipcbiAqIFplcm8gaGFzaC5cbiAqIEBtZW1iZXJvZiB1dGlsLkxvbmdCaXRzXG4gKiBAdHlwZSB7c3RyaW5nfVxuICovXG52YXIgemVyb0hhc2ggPSBMb25nQml0cy56ZXJvSGFzaCA9IFwiXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXCI7XG5cbi8qKlxuICogQ29uc3RydWN0cyBuZXcgbG9uZyBiaXRzIGZyb20gdGhlIHNwZWNpZmllZCBudW1iZXIuXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgVmFsdWVcbiAqIEByZXR1cm5zIHt1dGlsLkxvbmdCaXRzfSBJbnN0YW5jZVxuICovXG5Mb25nQml0cy5mcm9tTnVtYmVyID0gZnVuY3Rpb24gZnJvbU51bWJlcih2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gMClcbiAgICAgICAgcmV0dXJuIHplcm87XG4gICAgdmFyIHNpZ24gPSB2YWx1ZSA8IDA7XG4gICAgaWYgKHNpZ24pXG4gICAgICAgIHZhbHVlID0gLXZhbHVlO1xuICAgIHZhciBsbyA9IHZhbHVlID4+PiAwLFxuICAgICAgICBoaSA9ICh2YWx1ZSAtIGxvKSAvIDQyOTQ5NjcyOTYgPj4+IDA7XG4gICAgaWYgKHNpZ24pIHtcbiAgICAgICAgaGkgPSB+aGkgPj4+IDA7XG4gICAgICAgIGxvID0gfmxvID4+PiAwO1xuICAgICAgICBpZiAoKytsbyA+IDQyOTQ5NjcyOTUpIHtcbiAgICAgICAgICAgIGxvID0gMDtcbiAgICAgICAgICAgIGlmICgrK2hpID4gNDI5NDk2NzI5NSlcbiAgICAgICAgICAgICAgICBoaSA9IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBMb25nQml0cyhsbywgaGkpO1xufTtcblxuLyoqXG4gKiBDb25zdHJ1Y3RzIG5ldyBsb25nIGJpdHMgZnJvbSBhIG51bWJlciwgbG9uZyBvciBzdHJpbmcuXG4gKiBAcGFyYW0ge0xvbmd8bnVtYmVyfHN0cmluZ30gdmFsdWUgVmFsdWVcbiAqIEByZXR1cm5zIHt1dGlsLkxvbmdCaXRzfSBJbnN0YW5jZVxuICovXG5Mb25nQml0cy5mcm9tID0gZnVuY3Rpb24gZnJvbSh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpXG4gICAgICAgIHJldHVybiBMb25nQml0cy5mcm9tTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAodXRpbC5pc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKHV0aWwuTG9uZylcbiAgICAgICAgICAgIHZhbHVlID0gdXRpbC5Mb25nLmZyb21TdHJpbmcodmFsdWUpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gTG9uZ0JpdHMuZnJvbU51bWJlcihwYXJzZUludCh2YWx1ZSwgMTApKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlLmxvdyB8fCB2YWx1ZS5oaWdoID8gbmV3IExvbmdCaXRzKHZhbHVlLmxvdyA+Pj4gMCwgdmFsdWUuaGlnaCA+Pj4gMCkgOiB6ZXJvO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyB0aGlzIGxvbmcgYml0cyB0byBhIHBvc3NpYmx5IHVuc2FmZSBKYXZhU2NyaXB0IG51bWJlci5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3Vuc2lnbmVkPWZhbHNlXSBXaGV0aGVyIHVuc2lnbmVkIG9yIG5vdFxuICogQHJldHVybnMge251bWJlcn0gUG9zc2libHkgdW5zYWZlIG51bWJlclxuICovXG5Mb25nQml0cy5wcm90b3R5cGUudG9OdW1iZXIgPSBmdW5jdGlvbiB0b051bWJlcih1bnNpZ25lZCkge1xuICAgIGlmICghdW5zaWduZWQgJiYgdGhpcy5oaSA+Pj4gMzEpIHtcbiAgICAgICAgdmFyIGxvID0gfnRoaXMubG8gKyAxID4+PiAwLFxuICAgICAgICAgICAgaGkgPSB+dGhpcy5oaSAgICAgPj4+IDA7XG4gICAgICAgIGlmICghbG8pXG4gICAgICAgICAgICBoaSA9IGhpICsgMSA+Pj4gMDtcbiAgICAgICAgcmV0dXJuIC0obG8gKyBoaSAqIDQyOTQ5NjcyOTYpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sbyArIHRoaXMuaGkgKiA0Mjk0OTY3Mjk2O1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyB0aGlzIGxvbmcgYml0cyB0byBhIGxvbmcuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFt1bnNpZ25lZD1mYWxzZV0gV2hldGhlciB1bnNpZ25lZCBvciBub3RcbiAqIEByZXR1cm5zIHtMb25nfSBMb25nXG4gKi9cbkxvbmdCaXRzLnByb3RvdHlwZS50b0xvbmcgPSBmdW5jdGlvbiB0b0xvbmcodW5zaWduZWQpIHtcbiAgICByZXR1cm4gdXRpbC5Mb25nXG4gICAgICAgID8gbmV3IHV0aWwuTG9uZyh0aGlzLmxvIHwgMCwgdGhpcy5oaSB8IDAsIEJvb2xlYW4odW5zaWduZWQpKVxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICA6IHsgbG93OiB0aGlzLmxvIHwgMCwgaGlnaDogdGhpcy5oaSB8IDAsIHVuc2lnbmVkOiBCb29sZWFuKHVuc2lnbmVkKSB9O1xufTtcblxudmFyIGNoYXJDb2RlQXQgPSBTdHJpbmcucHJvdG90eXBlLmNoYXJDb2RlQXQ7XG5cbi8qKlxuICogQ29uc3RydWN0cyBuZXcgbG9uZyBiaXRzIGZyb20gdGhlIHNwZWNpZmllZCA4IGNoYXJhY3RlcnMgbG9uZyBoYXNoLlxuICogQHBhcmFtIHtzdHJpbmd9IGhhc2ggSGFzaFxuICogQHJldHVybnMge3V0aWwuTG9uZ0JpdHN9IEJpdHNcbiAqL1xuTG9uZ0JpdHMuZnJvbUhhc2ggPSBmdW5jdGlvbiBmcm9tSGFzaChoYXNoKSB7XG4gICAgaWYgKGhhc2ggPT09IHplcm9IYXNoKVxuICAgICAgICByZXR1cm4gemVybztcbiAgICByZXR1cm4gbmV3IExvbmdCaXRzKFxuICAgICAgICAoIGNoYXJDb2RlQXQuY2FsbChoYXNoLCAwKVxuICAgICAgICB8IGNoYXJDb2RlQXQuY2FsbChoYXNoLCAxKSA8PCA4XG4gICAgICAgIHwgY2hhckNvZGVBdC5jYWxsKGhhc2gsIDIpIDw8IDE2XG4gICAgICAgIHwgY2hhckNvZGVBdC5jYWxsKGhhc2gsIDMpIDw8IDI0KSA+Pj4gMFxuICAgICxcbiAgICAgICAgKCBjaGFyQ29kZUF0LmNhbGwoaGFzaCwgNClcbiAgICAgICAgfCBjaGFyQ29kZUF0LmNhbGwoaGFzaCwgNSkgPDwgOFxuICAgICAgICB8IGNoYXJDb2RlQXQuY2FsbChoYXNoLCA2KSA8PCAxNlxuICAgICAgICB8IGNoYXJDb2RlQXQuY2FsbChoYXNoLCA3KSA8PCAyNCkgPj4+IDBcbiAgICApO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyB0aGlzIGxvbmcgYml0cyB0byBhIDggY2hhcmFjdGVycyBsb25nIGhhc2guXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBIYXNoXG4gKi9cbkxvbmdCaXRzLnByb3RvdHlwZS50b0hhc2ggPSBmdW5jdGlvbiB0b0hhc2goKSB7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoXG4gICAgICAgIHRoaXMubG8gICAgICAgICYgMjU1LFxuICAgICAgICB0aGlzLmxvID4+PiA4ICAmIDI1NSxcbiAgICAgICAgdGhpcy5sbyA+Pj4gMTYgJiAyNTUsXG4gICAgICAgIHRoaXMubG8gPj4+IDI0ICAgICAgLFxuICAgICAgICB0aGlzLmhpICAgICAgICAmIDI1NSxcbiAgICAgICAgdGhpcy5oaSA+Pj4gOCAgJiAyNTUsXG4gICAgICAgIHRoaXMuaGkgPj4+IDE2ICYgMjU1LFxuICAgICAgICB0aGlzLmhpID4+PiAyNFxuICAgICk7XG59O1xuXG4vKipcbiAqIFppZy16YWcgZW5jb2RlcyB0aGlzIGxvbmcgYml0cy5cbiAqIEByZXR1cm5zIHt1dGlsLkxvbmdCaXRzfSBgdGhpc2BcbiAqL1xuTG9uZ0JpdHMucHJvdG90eXBlLnp6RW5jb2RlID0gZnVuY3Rpb24genpFbmNvZGUoKSB7XG4gICAgdmFyIG1hc2sgPSAgIHRoaXMuaGkgPj4gMzE7XG4gICAgdGhpcy5oaSAgPSAoKHRoaXMuaGkgPDwgMSB8IHRoaXMubG8gPj4+IDMxKSBeIG1hc2spID4+PiAwO1xuICAgIHRoaXMubG8gID0gKCB0aGlzLmxvIDw8IDEgICAgICAgICAgICAgICAgICAgXiBtYXNrKSA+Pj4gMDtcbiAgICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogWmlnLXphZyBkZWNvZGVzIHRoaXMgbG9uZyBiaXRzLlxuICogQHJldHVybnMge3V0aWwuTG9uZ0JpdHN9IGB0aGlzYFxuICovXG5Mb25nQml0cy5wcm90b3R5cGUuenpEZWNvZGUgPSBmdW5jdGlvbiB6ekRlY29kZSgpIHtcbiAgICB2YXIgbWFzayA9IC0odGhpcy5sbyAmIDEpO1xuICAgIHRoaXMubG8gID0gKCh0aGlzLmxvID4+PiAxIHwgdGhpcy5oaSA8PCAzMSkgXiBtYXNrKSA+Pj4gMDtcbiAgICB0aGlzLmhpICA9ICggdGhpcy5oaSA+Pj4gMSAgICAgICAgICAgICAgICAgIF4gbWFzaykgPj4+IDA7XG4gICAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGxlbmd0aCBvZiB0aGlzIGxvbmdiaXRzIHdoZW4gZW5jb2RlZCBhcyBhIHZhcmludC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IExlbmd0aFxuICovXG5Mb25nQml0cy5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gbGVuZ3RoKCkge1xuICAgIHZhciBwYXJ0MCA9ICB0aGlzLmxvLFxuICAgICAgICBwYXJ0MSA9ICh0aGlzLmxvID4+PiAyOCB8IHRoaXMuaGkgPDwgNCkgPj4+IDAsXG4gICAgICAgIHBhcnQyID0gIHRoaXMuaGkgPj4+IDI0O1xuICAgIHJldHVybiBwYXJ0MiA9PT0gMFxuICAgICAgICAgPyBwYXJ0MSA9PT0gMFxuICAgICAgICAgICA/IHBhcnQwIDwgMTYzODRcbiAgICAgICAgICAgICA/IHBhcnQwIDwgMTI4ID8gMSA6IDJcbiAgICAgICAgICAgICA6IHBhcnQwIDwgMjA5NzE1MiA/IDMgOiA0XG4gICAgICAgICAgIDogcGFydDEgPCAxNjM4NFxuICAgICAgICAgICAgID8gcGFydDEgPCAxMjggPyA1IDogNlxuICAgICAgICAgICAgIDogcGFydDEgPCAyMDk3MTUyID8gNyA6IDhcbiAgICAgICAgIDogcGFydDIgPCAxMjggPyA5IDogMTA7XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgdXRpbCA9IGV4cG9ydHM7XG5cbi8vIHVzZWQgdG8gcmV0dXJuIGEgUHJvbWlzZSB3aGVyZSBjYWxsYmFjayBpcyBvbWl0dGVkXG51dGlsLmFzUHJvbWlzZSA9IHJlcXVpcmUoXCJAcHJvdG9idWZqcy9hc3Byb21pc2VcIik7XG5cbi8vIGNvbnZlcnRzIHRvIC8gZnJvbSBiYXNlNjQgZW5jb2RlZCBzdHJpbmdzXG51dGlsLmJhc2U2NCA9IHJlcXVpcmUoXCJAcHJvdG9idWZqcy9iYXNlNjRcIik7XG5cbi8vIGJhc2UgY2xhc3Mgb2YgcnBjLlNlcnZpY2VcbnV0aWwuRXZlbnRFbWl0dGVyID0gcmVxdWlyZShcIkBwcm90b2J1ZmpzL2V2ZW50ZW1pdHRlclwiKTtcblxuLy8gZmxvYXQgaGFuZGxpbmcgYWNjcm9zcyBicm93c2Vyc1xudXRpbC5mbG9hdCA9IHJlcXVpcmUoXCJAcHJvdG9idWZqcy9mbG9hdFwiKTtcblxuLy8gcmVxdWlyZXMgbW9kdWxlcyBvcHRpb25hbGx5IGFuZCBoaWRlcyB0aGUgY2FsbCBmcm9tIGJ1bmRsZXJzXG51dGlsLmlucXVpcmUgPSByZXF1aXJlKFwiQHByb3RvYnVmanMvaW5xdWlyZVwiKTtcblxuLy8gY29udmVydHMgdG8gLyBmcm9tIHV0ZjggZW5jb2RlZCBzdHJpbmdzXG51dGlsLnV0ZjggPSByZXF1aXJlKFwiQHByb3RvYnVmanMvdXRmOFwiKTtcblxuLy8gcHJvdmlkZXMgYSBub2RlLWxpa2UgYnVmZmVyIHBvb2wgaW4gdGhlIGJyb3dzZXJcbnV0aWwucG9vbCA9IHJlcXVpcmUoXCJAcHJvdG9idWZqcy9wb29sXCIpO1xuXG4vLyB1dGlsaXR5IHRvIHdvcmsgd2l0aCB0aGUgbG93IGFuZCBoaWdoIGJpdHMgb2YgYSA2NCBiaXQgdmFsdWVcbnV0aWwuTG9uZ0JpdHMgPSByZXF1aXJlKFwiLi9sb25nYml0c1wiKTtcblxuLyoqXG4gKiBXaGV0aGVyIHJ1bm5pbmcgd2l0aGluIG5vZGUgb3Igbm90LlxuICogQG1lbWJlcm9mIHV0aWxcbiAqIEB0eXBlIHtib29sZWFufVxuICovXG51dGlsLmlzTm9kZSA9IEJvb2xlYW4odHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgICYmIGdsb2JhbFxuICAgICAgICAgICAgICAgICAgICYmIGdsb2JhbC5wcm9jZXNzXG4gICAgICAgICAgICAgICAgICAgJiYgZ2xvYmFsLnByb2Nlc3MudmVyc2lvbnNcbiAgICAgICAgICAgICAgICAgICAmJiBnbG9iYWwucHJvY2Vzcy52ZXJzaW9ucy5ub2RlKTtcblxuLyoqXG4gKiBHbG9iYWwgb2JqZWN0IHJlZmVyZW5jZS5cbiAqIEBtZW1iZXJvZiB1dGlsXG4gKiBAdHlwZSB7T2JqZWN0fVxuICovXG51dGlsLmdsb2JhbCA9IHV0aWwuaXNOb2RlICYmIGdsb2JhbFxuICAgICAgICAgICB8fCB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHdpbmRvd1xuICAgICAgICAgICB8fCB0eXBlb2Ygc2VsZiAgICE9PSBcInVuZGVmaW5lZFwiICYmIHNlbGZcbiAgICAgICAgICAgfHwgdGhpczsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1pbnZhbGlkLXRoaXNcblxuLyoqXG4gKiBBbiBpbW11YWJsZSBlbXB0eSBhcnJheS5cbiAqIEBtZW1iZXJvZiB1dGlsXG4gKiBAdHlwZSB7QXJyYXkuPCo+fVxuICogQGNvbnN0XG4gKi9cbnV0aWwuZW1wdHlBcnJheSA9IE9iamVjdC5mcmVlemUgPyBPYmplY3QuZnJlZXplKFtdKSA6IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIFtdOyAvLyB1c2VkIG9uIHByb3RvdHlwZXNcblxuLyoqXG4gKiBBbiBpbW11dGFibGUgZW1wdHkgb2JqZWN0LlxuICogQHR5cGUge09iamVjdH1cbiAqIEBjb25zdFxuICovXG51dGlsLmVtcHR5T2JqZWN0ID0gT2JqZWN0LmZyZWV6ZSA/IE9iamVjdC5mcmVlemUoe30pIDogLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8ge307IC8vIHVzZWQgb24gcHJvdG90eXBlc1xuXG4vKipcbiAqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgYW4gaW50ZWdlci5cbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHsqfSB2YWx1ZSBWYWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSB2YWx1ZSBpcyBhbiBpbnRlZ2VyXG4gKi9cbnV0aWwuaXNJbnRlZ2VyID0gTnVtYmVyLmlzSW50ZWdlciB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBmdW5jdGlvbiBpc0ludGVnZXIodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiICYmIGlzRmluaXRlKHZhbHVlKSAmJiBNYXRoLmZsb29yKHZhbHVlKSA9PT0gdmFsdWU7XG59O1xuXG4vKipcbiAqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgYSBzdHJpbmcuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIHZhbHVlIGlzIGEgc3RyaW5nXG4gKi9cbnV0aWwuaXNTdHJpbmcgPSBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgdmFsdWUgaW5zdGFuY2VvZiBTdHJpbmc7XG59O1xuXG4vKipcbiAqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgYSBub24tbnVsbCBvYmplY3QuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIHZhbHVlIGlzIGEgbm9uLW51bGwgb2JqZWN0XG4gKi9cbnV0aWwuaXNPYmplY3QgPSBmdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCI7XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIHByb3BlcnR5IG9uIGEgbWVzc2FnZSBpcyBjb25zaWRlcmVkIHRvIGJlIHByZXNlbnQuXG4gKiBUaGlzIGlzIGFuIGFsaWFzIG9mIHtAbGluayB1dGlsLmlzU2V0fS5cbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtPYmplY3R9IG9iaiBQbGFpbiBvYmplY3Qgb3IgbWVzc2FnZSBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmd9IHByb3AgUHJvcGVydHkgbmFtZVxuICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiBjb25zaWRlcmVkIHRvIGJlIHByZXNlbnQsIG90aGVyd2lzZSBgZmFsc2VgXG4gKi9cbnV0aWwuaXNzZXQgPVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHByb3BlcnR5IG9uIGEgbWVzc2FnZSBpcyBjb25zaWRlcmVkIHRvIGJlIHByZXNlbnQuXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqIFBsYWluIG9iamVjdCBvciBtZXNzYWdlIGluc3RhbmNlXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcCBQcm9wZXJ0eSBuYW1lXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIGNvbnNpZGVyZWQgdG8gYmUgcHJlc2VudCwgb3RoZXJ3aXNlIGBmYWxzZWBcbiAqL1xudXRpbC5pc1NldCA9IGZ1bmN0aW9uIGlzU2V0KG9iaiwgcHJvcCkge1xuICAgIHZhciB2YWx1ZSA9IG9ialtwcm9wXTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiBvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZXFlcWVxLCBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5sZW5ndGggOiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoKSA+IDA7XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuLyoqXG4gKiBBbnkgY29tcGF0aWJsZSBCdWZmZXIgaW5zdGFuY2UuXG4gKiBUaGlzIGlzIGEgbWluaW1hbCBzdGFuZC1hbG9uZSBkZWZpbml0aW9uIG9mIGEgQnVmZmVyIGluc3RhbmNlLiBUaGUgYWN0dWFsIHR5cGUgaXMgdGhhdCBleHBvcnRlZCBieSBub2RlJ3MgdHlwaW5ncy5cbiAqIEBpbnRlcmZhY2UgQnVmZmVyXG4gKiBAZXh0ZW5kcyBVaW50OEFycmF5XG4gKi9cblxuLyoqXG4gKiBOb2RlJ3MgQnVmZmVyIGNsYXNzIGlmIGF2YWlsYWJsZS5cbiAqIEB0eXBlIHtDb25zdHJ1Y3RvcjxCdWZmZXI+fVxuICovXG51dGlsLkJ1ZmZlciA9IChmdW5jdGlvbigpIHtcbiAgICB0cnkge1xuICAgICAgICB2YXIgQnVmZmVyID0gdXRpbC5pbnF1aXJlKFwiYnVmZmVyXCIpLkJ1ZmZlcjtcbiAgICAgICAgLy8gcmVmdXNlIHRvIHVzZSBub24tbm9kZSBidWZmZXJzIGlmIG5vdCBleHBsaWNpdGx5IGFzc2lnbmVkIChwZXJmIHJlYXNvbnMpOlxuICAgICAgICByZXR1cm4gQnVmZmVyLnByb3RvdHlwZS51dGY4V3JpdGUgPyBCdWZmZXIgOiAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBudWxsO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufSkoKTtcblxuLy8gSW50ZXJuYWwgYWxpYXMgb2Ygb3IgcG9seWZ1bGwgZm9yIEJ1ZmZlci5mcm9tLlxudXRpbC5fQnVmZmVyX2Zyb20gPSBudWxsO1xuXG4vLyBJbnRlcm5hbCBhbGlhcyBvZiBvciBwb2x5ZmlsbCBmb3IgQnVmZmVyLmFsbG9jVW5zYWZlLlxudXRpbC5fQnVmZmVyX2FsbG9jVW5zYWZlID0gbnVsbDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGJ1ZmZlciBvZiB3aGF0ZXZlciB0eXBlIHN1cHBvcnRlZCBieSB0aGUgZW52aXJvbm1lbnQuXG4gKiBAcGFyYW0ge251bWJlcnxudW1iZXJbXX0gW3NpemVPckFycmF5PTBdIEJ1ZmZlciBzaXplIG9yIG51bWJlciBhcnJheVxuICogQHJldHVybnMge1VpbnQ4QXJyYXl8QnVmZmVyfSBCdWZmZXJcbiAqL1xudXRpbC5uZXdCdWZmZXIgPSBmdW5jdGlvbiBuZXdCdWZmZXIoc2l6ZU9yQXJyYXkpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiB0eXBlb2Ygc2l6ZU9yQXJyYXkgPT09IFwibnVtYmVyXCJcbiAgICAgICAgPyB1dGlsLkJ1ZmZlclxuICAgICAgICAgICAgPyB1dGlsLl9CdWZmZXJfYWxsb2NVbnNhZmUoc2l6ZU9yQXJyYXkpXG4gICAgICAgICAgICA6IG5ldyB1dGlsLkFycmF5KHNpemVPckFycmF5KVxuICAgICAgICA6IHV0aWwuQnVmZmVyXG4gICAgICAgICAgICA/IHV0aWwuX0J1ZmZlcl9mcm9tKHNpemVPckFycmF5KVxuICAgICAgICAgICAgOiB0eXBlb2YgVWludDhBcnJheSA9PT0gXCJ1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgID8gc2l6ZU9yQXJyYXlcbiAgICAgICAgICAgICAgICA6IG5ldyBVaW50OEFycmF5KHNpemVPckFycmF5KTtcbn07XG5cbi8qKlxuICogQXJyYXkgaW1wbGVtZW50YXRpb24gdXNlZCBpbiB0aGUgYnJvd3Nlci4gYFVpbnQ4QXJyYXlgIGlmIHN1cHBvcnRlZCwgb3RoZXJ3aXNlIGBBcnJheWAuXG4gKiBAdHlwZSB7Q29uc3RydWN0b3I8VWludDhBcnJheT59XG4gKi9cbnV0aWwuQXJyYXkgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gXCJ1bmRlZmluZWRcIiA/IFVpbnQ4QXJyYXkgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gOiBBcnJheTtcblxuLyoqXG4gKiBBbnkgY29tcGF0aWJsZSBMb25nIGluc3RhbmNlLlxuICogVGhpcyBpcyBhIG1pbmltYWwgc3RhbmQtYWxvbmUgZGVmaW5pdGlvbiBvZiBhIExvbmcgaW5zdGFuY2UuIFRoZSBhY3R1YWwgdHlwZSBpcyB0aGF0IGV4cG9ydGVkIGJ5IGxvbmcuanMuXG4gKiBAaW50ZXJmYWNlIExvbmdcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsb3cgTG93IGJpdHNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBoaWdoIEhpZ2ggYml0c1xuICogQHByb3BlcnR5IHtib29sZWFufSB1bnNpZ25lZCBXaGV0aGVyIHVuc2lnbmVkIG9yIG5vdFxuICovXG5cbi8qKlxuICogTG9uZy5qcydzIExvbmcgY2xhc3MgaWYgYXZhaWxhYmxlLlxuICogQHR5cGUge0NvbnN0cnVjdG9yPExvbmc+fVxuICovXG51dGlsLkxvbmcgPSAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyB1dGlsLmdsb2JhbC5kY29kZUlPICYmIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIHV0aWwuZ2xvYmFsLmRjb2RlSU8uTG9uZ1xuICAgICAgICAgfHwgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gdXRpbC5nbG9iYWwuTG9uZ1xuICAgICAgICAgfHwgdXRpbC5pbnF1aXJlKFwibG9uZ1wiKTtcblxuLyoqXG4gKiBSZWd1bGFyIGV4cHJlc3Npb24gdXNlZCB0byB2ZXJpZnkgMiBiaXQgKGBib29sYCkgbWFwIGtleXMuXG4gKiBAdHlwZSB7UmVnRXhwfVxuICogQGNvbnN0XG4gKi9cbnV0aWwua2V5MlJlID0gL150cnVlfGZhbHNlfDB8MSQvO1xuXG4vKipcbiAqIFJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIHRvIHZlcmlmeSAzMiBiaXQgKGBpbnQzMmAgZXRjLikgbWFwIGtleXMuXG4gKiBAdHlwZSB7UmVnRXhwfVxuICogQGNvbnN0XG4gKi9cbnV0aWwua2V5MzJSZSA9IC9eLT8oPzowfFsxLTldWzAtOV0qKSQvO1xuXG4vKipcbiAqIFJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIHRvIHZlcmlmeSA2NCBiaXQgKGBpbnQ2NGAgZXRjLikgbWFwIGtleXMuXG4gKiBAdHlwZSB7UmVnRXhwfVxuICogQGNvbnN0XG4gKi9cbnV0aWwua2V5NjRSZSA9IC9eKD86W1xcXFx4MDAtXFxcXHhmZl17OH18LT8oPzowfFsxLTldWzAtOV0qKSkkLztcblxuLyoqXG4gKiBDb252ZXJ0cyBhIG51bWJlciBvciBsb25nIHRvIGFuIDggY2hhcmFjdGVycyBsb25nIGhhc2ggc3RyaW5nLlxuICogQHBhcmFtIHtMb25nfG51bWJlcn0gdmFsdWUgVmFsdWUgdG8gY29udmVydFxuICogQHJldHVybnMge3N0cmluZ30gSGFzaFxuICovXG51dGlsLmxvbmdUb0hhc2ggPSBmdW5jdGlvbiBsb25nVG9IYXNoKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gICAgICAgID8gdXRpbC5Mb25nQml0cy5mcm9tKHZhbHVlKS50b0hhc2goKVxuICAgICAgICA6IHV0aWwuTG9uZ0JpdHMuemVyb0hhc2g7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGFuIDggY2hhcmFjdGVycyBsb25nIGhhc2ggc3RyaW5nIHRvIGEgbG9uZyBvciBudW1iZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gaGFzaCBIYXNoXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFt1bnNpZ25lZD1mYWxzZV0gV2hldGhlciB1bnNpZ25lZCBvciBub3RcbiAqIEByZXR1cm5zIHtMb25nfG51bWJlcn0gT3JpZ2luYWwgdmFsdWVcbiAqL1xudXRpbC5sb25nRnJvbUhhc2ggPSBmdW5jdGlvbiBsb25nRnJvbUhhc2goaGFzaCwgdW5zaWduZWQpIHtcbiAgICB2YXIgYml0cyA9IHV0aWwuTG9uZ0JpdHMuZnJvbUhhc2goaGFzaCk7XG4gICAgaWYgKHV0aWwuTG9uZylcbiAgICAgICAgcmV0dXJuIHV0aWwuTG9uZy5mcm9tQml0cyhiaXRzLmxvLCBiaXRzLmhpLCB1bnNpZ25lZCk7XG4gICAgcmV0dXJuIGJpdHMudG9OdW1iZXIoQm9vbGVhbih1bnNpZ25lZCkpO1xufTtcblxuLyoqXG4gKiBNZXJnZXMgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHNvdXJjZSBvYmplY3QgaW50byB0aGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQG1lbWJlcm9mIHV0aWxcbiAqIEBwYXJhbSB7T2JqZWN0LjxzdHJpbmcsKj59IGRzdCBEZXN0aW5hdGlvbiBvYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0LjxzdHJpbmcsKj59IHNyYyBTb3VyY2Ugb2JqZWN0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpZk5vdFNldD1mYWxzZV0gTWVyZ2VzIG9ubHkgaWYgdGhlIGtleSBpcyBub3QgYWxyZWFkeSBzZXRcbiAqIEByZXR1cm5zIHtPYmplY3QuPHN0cmluZywqPn0gRGVzdGluYXRpb24gb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIG1lcmdlKGRzdCwgc3JjLCBpZk5vdFNldCkgeyAvLyB1c2VkIGJ5IGNvbnZlcnRlcnNcbiAgICBmb3IgKHZhciBrZXlzID0gT2JqZWN0LmtleXMoc3JjKSwgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKVxuICAgICAgICBpZiAoZHN0W2tleXNbaV1dID09PSB1bmRlZmluZWQgfHwgIWlmTm90U2V0KVxuICAgICAgICAgICAgZHN0W2tleXNbaV1dID0gc3JjW2tleXNbaV1dO1xuICAgIHJldHVybiBkc3Q7XG59XG5cbnV0aWwubWVyZ2UgPSBtZXJnZTtcblxuLyoqXG4gKiBDb252ZXJ0cyB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGEgc3RyaW5nIHRvIGxvd2VyIGNhc2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyIFN0cmluZyB0byBjb252ZXJ0XG4gKiBAcmV0dXJucyB7c3RyaW5nfSBDb252ZXJ0ZWQgc3RyaW5nXG4gKi9cbnV0aWwubGNGaXJzdCA9IGZ1bmN0aW9uIGxjRmlyc3Qoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIHN0ci5zdWJzdHJpbmcoMSk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjdXN0b20gZXJyb3IgY29uc3RydWN0b3IuXG4gKiBAbWVtYmVyb2YgdXRpbFxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgRXJyb3IgbmFtZVxuICogQHJldHVybnMge0NvbnN0cnVjdG9yPEVycm9yPn0gQ3VzdG9tIGVycm9yIGNvbnN0cnVjdG9yXG4gKi9cbmZ1bmN0aW9uIG5ld0Vycm9yKG5hbWUpIHtcblxuICAgIGZ1bmN0aW9uIEN1c3RvbUVycm9yKG1lc3NhZ2UsIHByb3BlcnRpZXMpIHtcblxuICAgICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQ3VzdG9tRXJyb3IpKVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDdXN0b21FcnJvcihtZXNzYWdlLCBwcm9wZXJ0aWVzKTtcblxuICAgICAgICAvLyBFcnJvci5jYWxsKHRoaXMsIG1lc3NhZ2UpO1xuICAgICAgICAvLyBeIGp1c3QgcmV0dXJucyBhIG5ldyBlcnJvciBpbnN0YW5jZSBiZWNhdXNlIHRoZSBjdG9yIGNhbiBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvblxuXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcIm1lc3NhZ2VcIiwgeyBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbWVzc2FnZTsgfSB9KTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIC8vIG5vZGVcbiAgICAgICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIEN1c3RvbUVycm9yKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIFwic3RhY2tcIiwgeyB2YWx1ZTogbmV3IEVycm9yKCkuc3RhY2sgfHwgXCJcIiB9KTtcblxuICAgICAgICBpZiAocHJvcGVydGllcylcbiAgICAgICAgICAgIG1lcmdlKHRoaXMsIHByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIChDdXN0b21FcnJvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yID0gQ3VzdG9tRXJyb3I7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ3VzdG9tRXJyb3IucHJvdG90eXBlLCBcIm5hbWVcIiwgeyBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbmFtZTsgfSB9KTtcblxuICAgIEN1c3RvbUVycm9yLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5uYW1lICsgXCI6IFwiICsgdGhpcy5tZXNzYWdlO1xuICAgIH07XG5cbiAgICByZXR1cm4gQ3VzdG9tRXJyb3I7XG59XG5cbnV0aWwubmV3RXJyb3IgPSBuZXdFcnJvcjtcblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGEgbmV3IHByb3RvY29sIGVycm9yLlxuICogQGNsYXNzZGVzYyBFcnJvciBzdWJjbGFzcyBpbmRpY2F0aW5nIGEgcHJvdG9jb2wgc3BlY2lmYyBlcnJvci5cbiAqIEBtZW1iZXJvZiB1dGlsXG4gKiBAZXh0ZW5kcyBFcnJvclxuICogQHRlbXBsYXRlIFQgZXh0ZW5kcyBNZXNzYWdlPFQ+XG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIEVycm9yIG1lc3NhZ2VcbiAqIEBwYXJhbSB7T2JqZWN0LjxzdHJpbmcsKj59IFtwcm9wZXJ0aWVzXSBBZGRpdGlvbmFsIHByb3BlcnRpZXNcbiAqIEBleGFtcGxlXG4gKiB0cnkge1xuICogICAgIE15TWVzc2FnZS5kZWNvZGUoc29tZUJ1ZmZlcik7IC8vIHRocm93cyBpZiByZXF1aXJlZCBmaWVsZHMgYXJlIG1pc3NpbmdcbiAqIH0gY2F0Y2ggKGUpIHtcbiAqICAgICBpZiAoZSBpbnN0YW5jZW9mIFByb3RvY29sRXJyb3IgJiYgZS5pbnN0YW5jZSlcbiAqICAgICAgICAgY29uc29sZS5sb2coXCJkZWNvZGVkIHNvIGZhcjogXCIgKyBKU09OLnN0cmluZ2lmeShlLmluc3RhbmNlKSk7XG4gKiB9XG4gKi9cbnV0aWwuUHJvdG9jb2xFcnJvciA9IG5ld0Vycm9yKFwiUHJvdG9jb2xFcnJvclwiKTtcblxuLyoqXG4gKiBTbyBmYXIgZGVjb2RlZCBtZXNzYWdlIGluc3RhbmNlLlxuICogQG5hbWUgdXRpbC5Qcm90b2NvbEVycm9yI2luc3RhbmNlXG4gKiBAdHlwZSB7TWVzc2FnZTxUPn1cbiAqL1xuXG4vKipcbiAqIEEgT25lT2YgZ2V0dGVyIGFzIHJldHVybmVkIGJ5IHtAbGluayB1dGlsLm9uZU9mR2V0dGVyfS5cbiAqIEB0eXBlZGVmIE9uZU9mR2V0dGVyXG4gKiBAdHlwZSB7ZnVuY3Rpb259XG4gKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH0gU2V0IGZpZWxkIG5hbWUsIGlmIGFueVxuICovXG5cbi8qKlxuICogQnVpbGRzIGEgZ2V0dGVyIGZvciBhIG9uZW9mJ3MgcHJlc2VudCBmaWVsZCBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmdbXX0gZmllbGROYW1lcyBGaWVsZCBuYW1lc1xuICogQHJldHVybnMge09uZU9mR2V0dGVyfSBVbmJvdW5kIGdldHRlclxuICovXG51dGlsLm9uZU9mR2V0dGVyID0gZnVuY3Rpb24gZ2V0T25lT2YoZmllbGROYW1lcykge1xuICAgIHZhciBmaWVsZE1hcCA9IHt9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmllbGROYW1lcy5sZW5ndGg7ICsraSlcbiAgICAgICAgZmllbGRNYXBbZmllbGROYW1lc1tpXV0gPSAxO1xuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMge3N0cmluZ3x1bmRlZmluZWR9IFNldCBmaWVsZCBuYW1lLCBpZiBhbnlcbiAgICAgKiBAdGhpcyBPYmplY3RcbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gICAgICAgIGZvciAodmFyIGtleXMgPSBPYmplY3Qua2V5cyh0aGlzKSwgaSA9IGtleXMubGVuZ3RoIC0gMTsgaSA+IC0xOyAtLWkpXG4gICAgICAgICAgICBpZiAoZmllbGRNYXBba2V5c1tpXV0gPT09IDEgJiYgdGhpc1trZXlzW2ldXSAhPT0gdW5kZWZpbmVkICYmIHRoaXNba2V5c1tpXV0gIT09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleXNbaV07XG4gICAgfTtcbn07XG5cbi8qKlxuICogQSBPbmVPZiBzZXR0ZXIgYXMgcmV0dXJuZWQgYnkge0BsaW5rIHV0aWwub25lT2ZTZXR0ZXJ9LlxuICogQHR5cGVkZWYgT25lT2ZTZXR0ZXJcbiAqIEB0eXBlIHtmdW5jdGlvbn1cbiAqIEBwYXJhbSB7c3RyaW5nfHVuZGVmaW5lZH0gdmFsdWUgRmllbGQgbmFtZVxuICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAqL1xuXG4vKipcbiAqIEJ1aWxkcyBhIHNldHRlciBmb3IgYSBvbmVvZidzIHByZXNlbnQgZmllbGQgbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nW119IGZpZWxkTmFtZXMgRmllbGQgbmFtZXNcbiAqIEByZXR1cm5zIHtPbmVPZlNldHRlcn0gVW5ib3VuZCBzZXR0ZXJcbiAqL1xudXRpbC5vbmVPZlNldHRlciA9IGZ1bmN0aW9uIHNldE9uZU9mKGZpZWxkTmFtZXMpIHtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIEZpZWxkIG5hbWVcbiAgICAgKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICAgICAqIEB0aGlzIE9iamVjdFxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICByZXR1cm4gZnVuY3Rpb24obmFtZSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpZWxkTmFtZXMubGVuZ3RoOyArK2kpXG4gICAgICAgICAgICBpZiAoZmllbGROYW1lc1tpXSAhPT0gbmFtZSlcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpc1tmaWVsZE5hbWVzW2ldXTtcbiAgICB9O1xufTtcblxuLyoqXG4gKiBEZWZhdWx0IGNvbnZlcnNpb24gb3B0aW9ucyB1c2VkIGZvciB7QGxpbmsgTWVzc2FnZSN0b0pTT059IGltcGxlbWVudGF0aW9ucy5cbiAqXG4gKiBUaGVzZSBvcHRpb25zIGFyZSBjbG9zZSB0byBwcm90bzMncyBKU09OIG1hcHBpbmcgd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgaW50ZXJuYWwgdHlwZXMgbGlrZSBBbnkgYXJlIGhhbmRsZWQganVzdCBsaWtlIG1lc3NhZ2VzLiBNb3JlIHByZWNpc2VseTpcbiAqXG4gKiAtIExvbmdzIGJlY29tZSBzdHJpbmdzXG4gKiAtIEVudW1zIGJlY29tZSBzdHJpbmcga2V5c1xuICogLSBCeXRlcyBiZWNvbWUgYmFzZTY0IGVuY29kZWQgc3RyaW5nc1xuICogLSAoU3ViLSlNZXNzYWdlcyBiZWNvbWUgcGxhaW4gb2JqZWN0c1xuICogLSBNYXBzIGJlY29tZSBwbGFpbiBvYmplY3RzIHdpdGggYWxsIHN0cmluZyBrZXlzXG4gKiAtIFJlcGVhdGVkIGZpZWxkcyBiZWNvbWUgYXJyYXlzXG4gKiAtIE5hTiBhbmQgSW5maW5pdHkgZm9yIGZsb2F0IGFuZCBkb3VibGUgZmllbGRzIGJlY29tZSBzdHJpbmdzXG4gKlxuICogQHR5cGUge0lDb252ZXJzaW9uT3B0aW9uc31cbiAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vcHJvdG9jb2wtYnVmZmVycy9kb2NzL3Byb3RvMz9obD1lbiNqc29uXG4gKi9cbnV0aWwudG9KU09OT3B0aW9ucyA9IHtcbiAgICBsb25nczogU3RyaW5nLFxuICAgIGVudW1zOiBTdHJpbmcsXG4gICAgYnl0ZXM6IFN0cmluZyxcbiAgICBqc29uOiB0cnVlXG59O1xuXG4vLyBTZXRzIHVwIGJ1ZmZlciB1dGlsaXR5IGFjY29yZGluZyB0byB0aGUgZW52aXJvbm1lbnQgKGNhbGxlZCBpbiBpbmRleC1taW5pbWFsKVxudXRpbC5fY29uZmlndXJlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIEJ1ZmZlciA9IHV0aWwuQnVmZmVyO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghQnVmZmVyKSB7XG4gICAgICAgIHV0aWwuX0J1ZmZlcl9mcm9tID0gdXRpbC5fQnVmZmVyX2FsbG9jVW5zYWZlID0gbnVsbDtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBiZWNhdXNlIG5vZGUgNC54IGJ1ZmZlcnMgYXJlIGluY29tcGF0aWJsZSAmIGltbXV0YWJsZVxuICAgIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2Rjb2RlSU8vcHJvdG9idWYuanMvcHVsbC82NjVcbiAgICB1dGlsLl9CdWZmZXJfZnJvbSA9IEJ1ZmZlci5mcm9tICE9PSBVaW50OEFycmF5LmZyb20gJiYgQnVmZmVyLmZyb20gfHxcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gQnVmZmVyX2Zyb20odmFsdWUsIGVuY29kaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEJ1ZmZlcih2YWx1ZSwgZW5jb2RpbmcpO1xuICAgICAgICB9O1xuICAgIHV0aWwuX0J1ZmZlcl9hbGxvY1Vuc2FmZSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSB8fFxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBmdW5jdGlvbiBCdWZmZXJfYWxsb2NVbnNhZmUoc2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBCdWZmZXIoc2l6ZSk7XG4gICAgICAgIH07XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5tb2R1bGUuZXhwb3J0cyA9IFdyaXRlcjtcblxudmFyIHV0aWwgICAgICA9IHJlcXVpcmUoXCIuL3V0aWwvbWluaW1hbFwiKTtcblxudmFyIEJ1ZmZlcldyaXRlcjsgLy8gY3ljbGljXG5cbnZhciBMb25nQml0cyAgPSB1dGlsLkxvbmdCaXRzLFxuICAgIGJhc2U2NCAgICA9IHV0aWwuYmFzZTY0LFxuICAgIHV0ZjggICAgICA9IHV0aWwudXRmODtcblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGEgbmV3IHdyaXRlciBvcGVyYXRpb24gaW5zdGFuY2UuXG4gKiBAY2xhc3NkZXNjIFNjaGVkdWxlZCB3cml0ZXIgb3BlcmF0aW9uLlxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge2Z1bmN0aW9uKCosIFVpbnQ4QXJyYXksIG51bWJlcil9IGZuIEZ1bmN0aW9uIHRvIGNhbGxcbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW4gVmFsdWUgYnl0ZSBsZW5ndGhcbiAqIEBwYXJhbSB7Kn0gdmFsIFZhbHVlIHRvIHdyaXRlXG4gKiBAaWdub3JlXG4gKi9cbmZ1bmN0aW9uIE9wKGZuLCBsZW4sIHZhbCkge1xuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgKiBAdHlwZSB7ZnVuY3Rpb24oVWludDhBcnJheSwgbnVtYmVyLCAqKX1cbiAgICAgKi9cbiAgICB0aGlzLmZuID0gZm47XG5cbiAgICAvKipcbiAgICAgKiBWYWx1ZSBieXRlIGxlbmd0aC5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMubGVuID0gbGVuO1xuXG4gICAgLyoqXG4gICAgICogTmV4dCBvcGVyYXRpb24uXG4gICAgICogQHR5cGUge1dyaXRlci5PcHx1bmRlZmluZWR9XG4gICAgICovXG4gICAgdGhpcy5uZXh0ID0gdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogVmFsdWUgdG8gd3JpdGUuXG4gICAgICogQHR5cGUgeyp9XG4gICAgICovXG4gICAgdGhpcy52YWwgPSB2YWw7IC8vIHR5cGUgdmFyaWVzXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBub29wKCkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eS1mdW5jdGlvblxuXG4vKipcbiAqIENvbnN0cnVjdHMgYSBuZXcgd3JpdGVyIHN0YXRlIGluc3RhbmNlLlxuICogQGNsYXNzZGVzYyBDb3BpZWQgd3JpdGVyIHN0YXRlLlxuICogQG1lbWJlcm9mIFdyaXRlclxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge1dyaXRlcn0gd3JpdGVyIFdyaXRlciB0byBjb3B5IHN0YXRlIGZyb21cbiAqIEBpZ25vcmVcbiAqL1xuZnVuY3Rpb24gU3RhdGUod3JpdGVyKSB7XG5cbiAgICAvKipcbiAgICAgKiBDdXJyZW50IGhlYWQuXG4gICAgICogQHR5cGUge1dyaXRlci5PcH1cbiAgICAgKi9cbiAgICB0aGlzLmhlYWQgPSB3cml0ZXIuaGVhZDtcblxuICAgIC8qKlxuICAgICAqIEN1cnJlbnQgdGFpbC5cbiAgICAgKiBAdHlwZSB7V3JpdGVyLk9wfVxuICAgICAqL1xuICAgIHRoaXMudGFpbCA9IHdyaXRlci50YWlsO1xuXG4gICAgLyoqXG4gICAgICogQ3VycmVudCBidWZmZXIgbGVuZ3RoLlxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5sZW4gPSB3cml0ZXIubGVuO1xuXG4gICAgLyoqXG4gICAgICogTmV4dCBzdGF0ZS5cbiAgICAgKiBAdHlwZSB7U3RhdGV8bnVsbH1cbiAgICAgKi9cbiAgICB0aGlzLm5leHQgPSB3cml0ZXIuc3RhdGVzO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdHMgYSBuZXcgd3JpdGVyIGluc3RhbmNlLlxuICogQGNsYXNzZGVzYyBXaXJlIGZvcm1hdCB3cml0ZXIgdXNpbmcgYFVpbnQ4QXJyYXlgIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGBBcnJheWAuXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gV3JpdGVyKCkge1xuXG4gICAgLyoqXG4gICAgICogQ3VycmVudCBsZW5ndGguXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmxlbiA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBPcGVyYXRpb25zIGhlYWQuXG4gICAgICogQHR5cGUge09iamVjdH1cbiAgICAgKi9cbiAgICB0aGlzLmhlYWQgPSBuZXcgT3Aobm9vcCwgMCwgMCk7XG5cbiAgICAvKipcbiAgICAgKiBPcGVyYXRpb25zIHRhaWxcbiAgICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgICAqL1xuICAgIHRoaXMudGFpbCA9IHRoaXMuaGVhZDtcblxuICAgIC8qKlxuICAgICAqIExpbmtlZCBmb3JrZWQgc3RhdGVzLlxuICAgICAqIEB0eXBlIHtPYmplY3R8bnVsbH1cbiAgICAgKi9cbiAgICB0aGlzLnN0YXRlcyA9IG51bGw7XG5cbiAgICAvLyBXaGVuIGEgdmFsdWUgaXMgd3JpdHRlbiwgdGhlIHdyaXRlciBjYWxjdWxhdGVzIGl0cyBieXRlIGxlbmd0aCBhbmQgcHV0cyBpdCBpbnRvIGEgbGlua2VkXG4gICAgLy8gbGlzdCBvZiBvcGVyYXRpb25zIHRvIHBlcmZvcm0gd2hlbiBmaW5pc2goKSBpcyBjYWxsZWQuIFRoaXMgYm90aCBhbGxvd3MgdXMgdG8gYWxsb2NhdGVcbiAgICAvLyBidWZmZXJzIG9mIHRoZSBleGFjdCByZXF1aXJlZCBzaXplIGFuZCByZWR1Y2VzIHRoZSBhbW91bnQgb2Ygd29yayB3ZSBoYXZlIHRvIGRvIGNvbXBhcmVkXG4gICAgLy8gdG8gZmlyc3QgY2FsY3VsYXRpbmcgb3ZlciBvYmplY3RzIGFuZCB0aGVuIGVuY29kaW5nIG92ZXIgb2JqZWN0cy4gSW4gb3VyIGNhc2UsIHRoZSBlbmNvZGluZ1xuICAgIC8vIHBhcnQgaXMganVzdCBhIGxpbmtlZCBsaXN0IHdhbGsgY2FsbGluZyBvcGVyYXRpb25zIHdpdGggYWxyZWFkeSBwcmVwYXJlZCB2YWx1ZXMuXG59XG5cbnZhciBjcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoKSB7XG4gICAgcmV0dXJuIHV0aWwuQnVmZmVyXG4gICAgICAgID8gZnVuY3Rpb24gY3JlYXRlX2J1ZmZlcl9zZXR1cCgpIHtcbiAgICAgICAgICAgIHJldHVybiAoV3JpdGVyLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZV9idWZmZXIoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBCdWZmZXJXcml0ZXIoKTtcbiAgICAgICAgICAgIH0pKCk7XG4gICAgICAgIH1cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgOiBmdW5jdGlvbiBjcmVhdGVfYXJyYXkoKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFdyaXRlcigpO1xuICAgICAgICB9O1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHdyaXRlci5cbiAqIEBmdW5jdGlvblxuICogQHJldHVybnMge0J1ZmZlcldyaXRlcnxXcml0ZXJ9IEEge0BsaW5rIEJ1ZmZlcldyaXRlcn0gd2hlbiBCdWZmZXJzIGFyZSBzdXBwb3J0ZWQsIG90aGVyd2lzZSBhIHtAbGluayBXcml0ZXJ9XG4gKi9cbldyaXRlci5jcmVhdGUgPSBjcmVhdGUoKTtcblxuLyoqXG4gKiBBbGxvY2F0ZXMgYSBidWZmZXIgb2YgdGhlIHNwZWNpZmllZCBzaXplLlxuICogQHBhcmFtIHtudW1iZXJ9IHNpemUgQnVmZmVyIHNpemVcbiAqIEByZXR1cm5zIHtVaW50OEFycmF5fSBCdWZmZXJcbiAqL1xuV3JpdGVyLmFsbG9jID0gZnVuY3Rpb24gYWxsb2Moc2l6ZSkge1xuICAgIHJldHVybiBuZXcgdXRpbC5BcnJheShzaXplKTtcbn07XG5cbi8vIFVzZSBVaW50OEFycmF5IGJ1ZmZlciBwb29sIGluIHRoZSBicm93c2VyLCBqdXN0IGxpa2Ugbm9kZSBkb2VzIHdpdGggYnVmZmVyc1xuLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbmlmICh1dGlsLkFycmF5ICE9PSBBcnJheSlcbiAgICBXcml0ZXIuYWxsb2MgPSB1dGlsLnBvb2woV3JpdGVyLmFsbG9jLCB1dGlsLkFycmF5LnByb3RvdHlwZS5zdWJhcnJheSk7XG5cbi8qKlxuICogUHVzaGVzIGEgbmV3IG9wZXJhdGlvbiB0byB0aGUgcXVldWUuXG4gKiBAcGFyYW0ge2Z1bmN0aW9uKFVpbnQ4QXJyYXksIG51bWJlciwgKil9IGZuIEZ1bmN0aW9uIHRvIGNhbGxcbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW4gVmFsdWUgYnl0ZSBsZW5ndGhcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWwgVmFsdWUgdG8gd3JpdGVcbiAqIEByZXR1cm5zIHtXcml0ZXJ9IGB0aGlzYFxuICogQHByaXZhdGVcbiAqL1xuV3JpdGVyLnByb3RvdHlwZS5fcHVzaCA9IGZ1bmN0aW9uIHB1c2goZm4sIGxlbiwgdmFsKSB7XG4gICAgdGhpcy50YWlsID0gdGhpcy50YWlsLm5leHQgPSBuZXcgT3AoZm4sIGxlbiwgdmFsKTtcbiAgICB0aGlzLmxlbiArPSBsZW47XG4gICAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiB3cml0ZUJ5dGUodmFsLCBidWYsIHBvcykge1xuICAgIGJ1Zltwb3NdID0gdmFsICYgMjU1O1xufVxuXG5mdW5jdGlvbiB3cml0ZVZhcmludDMyKHZhbCwgYnVmLCBwb3MpIHtcbiAgICB3aGlsZSAodmFsID4gMTI3KSB7XG4gICAgICAgIGJ1Zltwb3MrK10gPSB2YWwgJiAxMjcgfCAxMjg7XG4gICAgICAgIHZhbCA+Pj49IDc7XG4gICAgfVxuICAgIGJ1Zltwb3NdID0gdmFsO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdHMgYSBuZXcgdmFyaW50IHdyaXRlciBvcGVyYXRpb24gaW5zdGFuY2UuXG4gKiBAY2xhc3NkZXNjIFNjaGVkdWxlZCB2YXJpbnQgd3JpdGVyIG9wZXJhdGlvbi5cbiAqIEBleHRlbmRzIE9wXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW4gVmFsdWUgYnl0ZSBsZW5ndGhcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWwgVmFsdWUgdG8gd3JpdGVcbiAqIEBpZ25vcmVcbiAqL1xuZnVuY3Rpb24gVmFyaW50T3AobGVuLCB2YWwpIHtcbiAgICB0aGlzLmxlbiA9IGxlbjtcbiAgICB0aGlzLm5leHQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy52YWwgPSB2YWw7XG59XG5cblZhcmludE9wLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoT3AucHJvdG90eXBlKTtcblZhcmludE9wLnByb3RvdHlwZS5mbiA9IHdyaXRlVmFyaW50MzI7XG5cbi8qKlxuICogV3JpdGVzIGFuIHVuc2lnbmVkIDMyIGJpdCB2YWx1ZSBhcyBhIHZhcmludC5cbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBWYWx1ZSB0byB3cml0ZVxuICogQHJldHVybnMge1dyaXRlcn0gYHRoaXNgXG4gKi9cbldyaXRlci5wcm90b3R5cGUudWludDMyID0gZnVuY3Rpb24gd3JpdGVfdWludDMyKHZhbHVlKSB7XG4gICAgLy8gaGVyZSwgdGhlIGNhbGwgdG8gdGhpcy5wdXNoIGhhcyBiZWVuIGlubGluZWQgYW5kIGEgdmFyaW50IHNwZWNpZmljIE9wIHN1YmNsYXNzIGlzIHVzZWQuXG4gICAgLy8gdWludDMyIGlzIGJ5IGZhciB0aGUgbW9zdCBmcmVxdWVudGx5IHVzZWQgb3BlcmF0aW9uIGFuZCBiZW5lZml0cyBzaWduaWZpY2FudGx5IGZyb20gdGhpcy5cbiAgICB0aGlzLmxlbiArPSAodGhpcy50YWlsID0gdGhpcy50YWlsLm5leHQgPSBuZXcgVmFyaW50T3AoXG4gICAgICAgICh2YWx1ZSA9IHZhbHVlID4+PiAwKVxuICAgICAgICAgICAgICAgIDwgMTI4ICAgICAgID8gMVxuICAgICAgICA6IHZhbHVlIDwgMTYzODQgICAgID8gMlxuICAgICAgICA6IHZhbHVlIDwgMjA5NzE1MiAgID8gM1xuICAgICAgICA6IHZhbHVlIDwgMjY4NDM1NDU2ID8gNFxuICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgNSxcbiAgICB2YWx1ZSkpLmxlbjtcbiAgICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogV3JpdGVzIGEgc2lnbmVkIDMyIGJpdCB2YWx1ZSBhcyBhIHZhcmludC5cbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIFZhbHVlIHRvIHdyaXRlXG4gKiBAcmV0dXJucyB7V3JpdGVyfSBgdGhpc2BcbiAqL1xuV3JpdGVyLnByb3RvdHlwZS5pbnQzMiA9IGZ1bmN0aW9uIHdyaXRlX2ludDMyKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIDwgMFxuICAgICAgICA/IHRoaXMuX3B1c2god3JpdGVWYXJpbnQ2NCwgMTAsIExvbmdCaXRzLmZyb21OdW1iZXIodmFsdWUpKSAvLyAxMCBieXRlcyBwZXIgc3BlY1xuICAgICAgICA6IHRoaXMudWludDMyKHZhbHVlKTtcbn07XG5cbi8qKlxuICogV3JpdGVzIGEgMzIgYml0IHZhbHVlIGFzIGEgdmFyaW50LCB6aWctemFnIGVuY29kZWQuXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgVmFsdWUgdG8gd3JpdGVcbiAqIEByZXR1cm5zIHtXcml0ZXJ9IGB0aGlzYFxuICovXG5Xcml0ZXIucHJvdG90eXBlLnNpbnQzMiA9IGZ1bmN0aW9uIHdyaXRlX3NpbnQzMih2YWx1ZSkge1xuICAgIHJldHVybiB0aGlzLnVpbnQzMigodmFsdWUgPDwgMSBeIHZhbHVlID4+IDMxKSA+Pj4gMCk7XG59O1xuXG5mdW5jdGlvbiB3cml0ZVZhcmludDY0KHZhbCwgYnVmLCBwb3MpIHtcbiAgICB3aGlsZSAodmFsLmhpKSB7XG4gICAgICAgIGJ1Zltwb3MrK10gPSB2YWwubG8gJiAxMjcgfCAxMjg7XG4gICAgICAgIHZhbC5sbyA9ICh2YWwubG8gPj4+IDcgfCB2YWwuaGkgPDwgMjUpID4+PiAwO1xuICAgICAgICB2YWwuaGkgPj4+PSA3O1xuICAgIH1cbiAgICB3aGlsZSAodmFsLmxvID4gMTI3KSB7XG4gICAgICAgIGJ1Zltwb3MrK10gPSB2YWwubG8gJiAxMjcgfCAxMjg7XG4gICAgICAgIHZhbC5sbyA9IHZhbC5sbyA+Pj4gNztcbiAgICB9XG4gICAgYnVmW3BvcysrXSA9IHZhbC5sbztcbn1cblxuLyoqXG4gKiBXcml0ZXMgYW4gdW5zaWduZWQgNjQgYml0IHZhbHVlIGFzIGEgdmFyaW50LlxuICogQHBhcmFtIHtMb25nfG51bWJlcnxzdHJpbmd9IHZhbHVlIFZhbHVlIHRvIHdyaXRlXG4gKiBAcmV0dXJucyB7V3JpdGVyfSBgdGhpc2BcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgYHZhbHVlYCBpcyBhIHN0cmluZyBhbmQgbm8gbG9uZyBsaWJyYXJ5IGlzIHByZXNlbnQuXG4gKi9cbldyaXRlci5wcm90b3R5cGUudWludDY0ID0gZnVuY3Rpb24gd3JpdGVfdWludDY0KHZhbHVlKSB7XG4gICAgdmFyIGJpdHMgPSBMb25nQml0cy5mcm9tKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5fcHVzaCh3cml0ZVZhcmludDY0LCBiaXRzLmxlbmd0aCgpLCBiaXRzKTtcbn07XG5cbi8qKlxuICogV3JpdGVzIGEgc2lnbmVkIDY0IGJpdCB2YWx1ZSBhcyBhIHZhcmludC5cbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtMb25nfG51bWJlcnxzdHJpbmd9IHZhbHVlIFZhbHVlIHRvIHdyaXRlXG4gKiBAcmV0dXJucyB7V3JpdGVyfSBgdGhpc2BcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgYHZhbHVlYCBpcyBhIHN0cmluZyBhbmQgbm8gbG9uZyBsaWJyYXJ5IGlzIHByZXNlbnQuXG4gKi9cbldyaXRlci5wcm90b3R5cGUuaW50NjQgPSBXcml0ZXIucHJvdG90eXBlLnVpbnQ2NDtcblxuLyoqXG4gKiBXcml0ZXMgYSBzaWduZWQgNjQgYml0IHZhbHVlIGFzIGEgdmFyaW50LCB6aWctemFnIGVuY29kZWQuXG4gKiBAcGFyYW0ge0xvbmd8bnVtYmVyfHN0cmluZ30gdmFsdWUgVmFsdWUgdG8gd3JpdGVcbiAqIEByZXR1cm5zIHtXcml0ZXJ9IGB0aGlzYFxuICogQHRocm93cyB7VHlwZUVycm9yfSBJZiBgdmFsdWVgIGlzIGEgc3RyaW5nIGFuZCBubyBsb25nIGxpYnJhcnkgaXMgcHJlc2VudC5cbiAqL1xuV3JpdGVyLnByb3RvdHlwZS5zaW50NjQgPSBmdW5jdGlvbiB3cml0ZV9zaW50NjQodmFsdWUpIHtcbiAgICB2YXIgYml0cyA9IExvbmdCaXRzLmZyb20odmFsdWUpLnp6RW5jb2RlKCk7XG4gICAgcmV0dXJuIHRoaXMuX3B1c2god3JpdGVWYXJpbnQ2NCwgYml0cy5sZW5ndGgoKSwgYml0cyk7XG59O1xuXG4vKipcbiAqIFdyaXRlcyBhIGJvb2xpc2ggdmFsdWUgYXMgYSB2YXJpbnQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHZhbHVlIFZhbHVlIHRvIHdyaXRlXG4gKiBAcmV0dXJucyB7V3JpdGVyfSBgdGhpc2BcbiAqL1xuV3JpdGVyLnByb3RvdHlwZS5ib29sID0gZnVuY3Rpb24gd3JpdGVfYm9vbCh2YWx1ZSkge1xuICAgIHJldHVybiB0aGlzLl9wdXNoKHdyaXRlQnl0ZSwgMSwgdmFsdWUgPyAxIDogMCk7XG59O1xuXG5mdW5jdGlvbiB3cml0ZUZpeGVkMzIodmFsLCBidWYsIHBvcykge1xuICAgIGJ1Zltwb3MgICAgXSA9ICB2YWwgICAgICAgICAmIDI1NTtcbiAgICBidWZbcG9zICsgMV0gPSAgdmFsID4+PiA4ICAgJiAyNTU7XG4gICAgYnVmW3BvcyArIDJdID0gIHZhbCA+Pj4gMTYgICYgMjU1O1xuICAgIGJ1Zltwb3MgKyAzXSA9ICB2YWwgPj4+IDI0O1xufVxuXG4vKipcbiAqIFdyaXRlcyBhbiB1bnNpZ25lZCAzMiBiaXQgdmFsdWUgYXMgZml4ZWQgMzIgYml0cy5cbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBWYWx1ZSB0byB3cml0ZVxuICogQHJldHVybnMge1dyaXRlcn0gYHRoaXNgXG4gKi9cbldyaXRlci5wcm90b3R5cGUuZml4ZWQzMiA9IGZ1bmN0aW9uIHdyaXRlX2ZpeGVkMzIodmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5fcHVzaCh3cml0ZUZpeGVkMzIsIDQsIHZhbHVlID4+PiAwKTtcbn07XG5cbi8qKlxuICogV3JpdGVzIGEgc2lnbmVkIDMyIGJpdCB2YWx1ZSBhcyBmaXhlZCAzMiBiaXRzLlxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgVmFsdWUgdG8gd3JpdGVcbiAqIEByZXR1cm5zIHtXcml0ZXJ9IGB0aGlzYFxuICovXG5Xcml0ZXIucHJvdG90eXBlLnNmaXhlZDMyID0gV3JpdGVyLnByb3RvdHlwZS5maXhlZDMyO1xuXG4vKipcbiAqIFdyaXRlcyBhbiB1bnNpZ25lZCA2NCBiaXQgdmFsdWUgYXMgZml4ZWQgNjQgYml0cy5cbiAqIEBwYXJhbSB7TG9uZ3xudW1iZXJ8c3RyaW5nfSB2YWx1ZSBWYWx1ZSB0byB3cml0ZVxuICogQHJldHVybnMge1dyaXRlcn0gYHRoaXNgXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IElmIGB2YWx1ZWAgaXMgYSBzdHJpbmcgYW5kIG5vIGxvbmcgbGlicmFyeSBpcyBwcmVzZW50LlxuICovXG5Xcml0ZXIucHJvdG90eXBlLmZpeGVkNjQgPSBmdW5jdGlvbiB3cml0ZV9maXhlZDY0KHZhbHVlKSB7XG4gICAgdmFyIGJpdHMgPSBMb25nQml0cy5mcm9tKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5fcHVzaCh3cml0ZUZpeGVkMzIsIDQsIGJpdHMubG8pLl9wdXNoKHdyaXRlRml4ZWQzMiwgNCwgYml0cy5oaSk7XG59O1xuXG4vKipcbiAqIFdyaXRlcyBhIHNpZ25lZCA2NCBiaXQgdmFsdWUgYXMgZml4ZWQgNjQgYml0cy5cbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtMb25nfG51bWJlcnxzdHJpbmd9IHZhbHVlIFZhbHVlIHRvIHdyaXRlXG4gKiBAcmV0dXJucyB7V3JpdGVyfSBgdGhpc2BcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgYHZhbHVlYCBpcyBhIHN0cmluZyBhbmQgbm8gbG9uZyBsaWJyYXJ5IGlzIHByZXNlbnQuXG4gKi9cbldyaXRlci5wcm90b3R5cGUuc2ZpeGVkNjQgPSBXcml0ZXIucHJvdG90eXBlLmZpeGVkNjQ7XG5cbi8qKlxuICogV3JpdGVzIGEgZmxvYXQgKDMyIGJpdCkuXG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBWYWx1ZSB0byB3cml0ZVxuICogQHJldHVybnMge1dyaXRlcn0gYHRoaXNgXG4gKi9cbldyaXRlci5wcm90b3R5cGUuZmxvYXQgPSBmdW5jdGlvbiB3cml0ZV9mbG9hdCh2YWx1ZSkge1xuICAgIHJldHVybiB0aGlzLl9wdXNoKHV0aWwuZmxvYXQud3JpdGVGbG9hdExFLCA0LCB2YWx1ZSk7XG59O1xuXG4vKipcbiAqIFdyaXRlcyBhIGRvdWJsZSAoNjQgYml0IGZsb2F0KS5cbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIFZhbHVlIHRvIHdyaXRlXG4gKiBAcmV0dXJucyB7V3JpdGVyfSBgdGhpc2BcbiAqL1xuV3JpdGVyLnByb3RvdHlwZS5kb3VibGUgPSBmdW5jdGlvbiB3cml0ZV9kb3VibGUodmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5fcHVzaCh1dGlsLmZsb2F0LndyaXRlRG91YmxlTEUsIDgsIHZhbHVlKTtcbn07XG5cbnZhciB3cml0ZUJ5dGVzID0gdXRpbC5BcnJheS5wcm90b3R5cGUuc2V0XG4gICAgPyBmdW5jdGlvbiB3cml0ZUJ5dGVzX3NldCh2YWwsIGJ1ZiwgcG9zKSB7XG4gICAgICAgIGJ1Zi5zZXQodmFsLCBwb3MpOyAvLyBhbHNvIHdvcmtzIGZvciBwbGFpbiBhcnJheSB2YWx1ZXNcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICA6IGZ1bmN0aW9uIHdyaXRlQnl0ZXNfZm9yKHZhbCwgYnVmLCBwb3MpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWwubGVuZ3RoOyArK2kpXG4gICAgICAgICAgICBidWZbcG9zICsgaV0gPSB2YWxbaV07XG4gICAgfTtcblxuLyoqXG4gKiBXcml0ZXMgYSBzZXF1ZW5jZSBvZiBieXRlcy5cbiAqIEBwYXJhbSB7VWludDhBcnJheXxzdHJpbmd9IHZhbHVlIEJ1ZmZlciBvciBiYXNlNjQgZW5jb2RlZCBzdHJpbmcgdG8gd3JpdGVcbiAqIEByZXR1cm5zIHtXcml0ZXJ9IGB0aGlzYFxuICovXG5Xcml0ZXIucHJvdG90eXBlLmJ5dGVzID0gZnVuY3Rpb24gd3JpdGVfYnl0ZXModmFsdWUpIHtcbiAgICB2YXIgbGVuID0gdmFsdWUubGVuZ3RoID4+PiAwO1xuICAgIGlmICghbGVuKVxuICAgICAgICByZXR1cm4gdGhpcy5fcHVzaCh3cml0ZUJ5dGUsIDEsIDApO1xuICAgIGlmICh1dGlsLmlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICB2YXIgYnVmID0gV3JpdGVyLmFsbG9jKGxlbiA9IGJhc2U2NC5sZW5ndGgodmFsdWUpKTtcbiAgICAgICAgYmFzZTY0LmRlY29kZSh2YWx1ZSwgYnVmLCAwKTtcbiAgICAgICAgdmFsdWUgPSBidWY7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVpbnQzMihsZW4pLl9wdXNoKHdyaXRlQnl0ZXMsIGxlbiwgdmFsdWUpO1xufTtcblxuLyoqXG4gKiBXcml0ZXMgYSBzdHJpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgVmFsdWUgdG8gd3JpdGVcbiAqIEByZXR1cm5zIHtXcml0ZXJ9IGB0aGlzYFxuICovXG5Xcml0ZXIucHJvdG90eXBlLnN0cmluZyA9IGZ1bmN0aW9uIHdyaXRlX3N0cmluZyh2YWx1ZSkge1xuICAgIHZhciBsZW4gPSB1dGY4Lmxlbmd0aCh2YWx1ZSk7XG4gICAgcmV0dXJuIGxlblxuICAgICAgICA/IHRoaXMudWludDMyKGxlbikuX3B1c2godXRmOC53cml0ZSwgbGVuLCB2YWx1ZSlcbiAgICAgICAgOiB0aGlzLl9wdXNoKHdyaXRlQnl0ZSwgMSwgMCk7XG59O1xuXG4vKipcbiAqIEZvcmtzIHRoaXMgd3JpdGVyJ3Mgc3RhdGUgYnkgcHVzaGluZyBpdCB0byBhIHN0YWNrLlxuICogQ2FsbGluZyB7QGxpbmsgV3JpdGVyI3Jlc2V0fHJlc2V0fSBvciB7QGxpbmsgV3JpdGVyI2xkZWxpbXxsZGVsaW19IHJlc2V0cyB0aGUgd3JpdGVyIHRvIHRoZSBwcmV2aW91cyBzdGF0ZS5cbiAqIEByZXR1cm5zIHtXcml0ZXJ9IGB0aGlzYFxuICovXG5Xcml0ZXIucHJvdG90eXBlLmZvcmsgPSBmdW5jdGlvbiBmb3JrKCkge1xuICAgIHRoaXMuc3RhdGVzID0gbmV3IFN0YXRlKHRoaXMpO1xuICAgIHRoaXMuaGVhZCA9IHRoaXMudGFpbCA9IG5ldyBPcChub29wLCAwLCAwKTtcbiAgICB0aGlzLmxlbiA9IDA7XG4gICAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFJlc2V0cyB0aGlzIGluc3RhbmNlIHRvIHRoZSBsYXN0IHN0YXRlLlxuICogQHJldHVybnMge1dyaXRlcn0gYHRoaXNgXG4gKi9cbldyaXRlci5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiByZXNldCgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZXMpIHtcbiAgICAgICAgdGhpcy5oZWFkICAgPSB0aGlzLnN0YXRlcy5oZWFkO1xuICAgICAgICB0aGlzLnRhaWwgICA9IHRoaXMuc3RhdGVzLnRhaWw7XG4gICAgICAgIHRoaXMubGVuICAgID0gdGhpcy5zdGF0ZXMubGVuO1xuICAgICAgICB0aGlzLnN0YXRlcyA9IHRoaXMuc3RhdGVzLm5leHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbmV3IE9wKG5vb3AsIDAsIDApO1xuICAgICAgICB0aGlzLmxlbiAgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogUmVzZXRzIHRvIHRoZSBsYXN0IHN0YXRlIGFuZCBhcHBlbmRzIHRoZSBmb3JrIHN0YXRlJ3MgY3VycmVudCB3cml0ZSBsZW5ndGggYXMgYSB2YXJpbnQgZm9sbG93ZWQgYnkgaXRzIG9wZXJhdGlvbnMuXG4gKiBAcmV0dXJucyB7V3JpdGVyfSBgdGhpc2BcbiAqL1xuV3JpdGVyLnByb3RvdHlwZS5sZGVsaW0gPSBmdW5jdGlvbiBsZGVsaW0oKSB7XG4gICAgdmFyIGhlYWQgPSB0aGlzLmhlYWQsXG4gICAgICAgIHRhaWwgPSB0aGlzLnRhaWwsXG4gICAgICAgIGxlbiAgPSB0aGlzLmxlbjtcbiAgICB0aGlzLnJlc2V0KCkudWludDMyKGxlbik7XG4gICAgaWYgKGxlbikge1xuICAgICAgICB0aGlzLnRhaWwubmV4dCA9IGhlYWQubmV4dDsgLy8gc2tpcCBub29wXG4gICAgICAgIHRoaXMudGFpbCA9IHRhaWw7XG4gICAgICAgIHRoaXMubGVuICs9IGxlbjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIEZpbmlzaGVzIHRoZSB3cml0ZSBvcGVyYXRpb24uXG4gKiBAcmV0dXJucyB7VWludDhBcnJheX0gRmluaXNoZWQgYnVmZmVyXG4gKi9cbldyaXRlci5wcm90b3R5cGUuZmluaXNoID0gZnVuY3Rpb24gZmluaXNoKCkge1xuICAgIHZhciBoZWFkID0gdGhpcy5oZWFkLm5leHQsIC8vIHNraXAgbm9vcFxuICAgICAgICBidWYgID0gdGhpcy5jb25zdHJ1Y3Rvci5hbGxvYyh0aGlzLmxlbiksXG4gICAgICAgIHBvcyAgPSAwO1xuICAgIHdoaWxlIChoZWFkKSB7XG4gICAgICAgIGhlYWQuZm4oaGVhZC52YWwsIGJ1ZiwgcG9zKTtcbiAgICAgICAgcG9zICs9IGhlYWQubGVuO1xuICAgICAgICBoZWFkID0gaGVhZC5uZXh0O1xuICAgIH1cbiAgICAvLyB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO1xuICAgIHJldHVybiBidWY7XG59O1xuXG5Xcml0ZXIuX2NvbmZpZ3VyZSA9IGZ1bmN0aW9uKEJ1ZmZlcldyaXRlcl8pIHtcbiAgICBCdWZmZXJXcml0ZXIgPSBCdWZmZXJXcml0ZXJfO1xuICAgIFdyaXRlci5jcmVhdGUgPSBjcmVhdGUoKTtcbiAgICBCdWZmZXJXcml0ZXIuX2NvbmZpZ3VyZSgpO1xufTtcbiIsIlwidXNlIHN0cmljdFwiO1xubW9kdWxlLmV4cG9ydHMgPSBCdWZmZXJXcml0ZXI7XG5cbi8vIGV4dGVuZHMgV3JpdGVyXG52YXIgV3JpdGVyID0gcmVxdWlyZShcIi4vd3JpdGVyXCIpO1xuKEJ1ZmZlcldyaXRlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFdyaXRlci5wcm90b3R5cGUpKS5jb25zdHJ1Y3RvciA9IEJ1ZmZlcldyaXRlcjtcblxudmFyIHV0aWwgPSByZXF1aXJlKFwiLi91dGlsL21pbmltYWxcIik7XG5cbi8qKlxuICogQ29uc3RydWN0cyBhIG5ldyBidWZmZXIgd3JpdGVyIGluc3RhbmNlLlxuICogQGNsYXNzZGVzYyBXaXJlIGZvcm1hdCB3cml0ZXIgdXNpbmcgbm9kZSBidWZmZXJzLlxuICogQGV4dGVuZHMgV3JpdGVyXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gQnVmZmVyV3JpdGVyKCkge1xuICAgIFdyaXRlci5jYWxsKHRoaXMpO1xufVxuXG5CdWZmZXJXcml0ZXIuX2NvbmZpZ3VyZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAvKipcbiAgICAgKiBBbGxvY2F0ZXMgYSBidWZmZXIgb2YgdGhlIHNwZWNpZmllZCBzaXplLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzaXplIEJ1ZmZlciBzaXplXG4gICAgICogQHJldHVybnMge0J1ZmZlcn0gQnVmZmVyXG4gICAgICovXG4gICAgQnVmZmVyV3JpdGVyLmFsbG9jID0gdXRpbC5fQnVmZmVyX2FsbG9jVW5zYWZlO1xuXG4gICAgQnVmZmVyV3JpdGVyLndyaXRlQnl0ZXNCdWZmZXIgPSB1dGlsLkJ1ZmZlciAmJiB1dGlsLkJ1ZmZlci5wcm90b3R5cGUgaW5zdGFuY2VvZiBVaW50OEFycmF5ICYmIHV0aWwuQnVmZmVyLnByb3RvdHlwZS5zZXQubmFtZSA9PT0gXCJzZXRcIlxuICAgICAgICA/IGZ1bmN0aW9uIHdyaXRlQnl0ZXNCdWZmZXJfc2V0KHZhbCwgYnVmLCBwb3MpIHtcbiAgICAgICAgICBidWYuc2V0KHZhbCwgcG9zKTsgLy8gZmFzdGVyIHRoYW4gY29weSAocmVxdWlyZXMgbm9kZSA+PSA0IHdoZXJlIEJ1ZmZlcnMgZXh0ZW5kIFVpbnQ4QXJyYXkgYW5kIHNldCBpcyBwcm9wZXJseSBpbmhlcml0ZWQpXG4gICAgICAgICAgLy8gYWxzbyB3b3JrcyBmb3IgcGxhaW4gYXJyYXkgdmFsdWVzXG4gICAgICAgIH1cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgOiBmdW5jdGlvbiB3cml0ZUJ5dGVzQnVmZmVyX2NvcHkodmFsLCBidWYsIHBvcykge1xuICAgICAgICAgIGlmICh2YWwuY29weSkgLy8gQnVmZmVyIHZhbHVlc1xuICAgICAgICAgICAgdmFsLmNvcHkoYnVmLCBwb3MsIDAsIHZhbC5sZW5ndGgpO1xuICAgICAgICAgIGVsc2UgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWwubGVuZ3RoOykgLy8gcGxhaW4gYXJyYXkgdmFsdWVzXG4gICAgICAgICAgICBidWZbcG9zKytdID0gdmFsW2krK107XG4gICAgICAgIH07XG59O1xuXG5cbi8qKlxuICogQG92ZXJyaWRlXG4gKi9cbkJ1ZmZlcldyaXRlci5wcm90b3R5cGUuYnl0ZXMgPSBmdW5jdGlvbiB3cml0ZV9ieXRlc19idWZmZXIodmFsdWUpIHtcbiAgICBpZiAodXRpbC5pc1N0cmluZyh2YWx1ZSkpXG4gICAgICAgIHZhbHVlID0gdXRpbC5fQnVmZmVyX2Zyb20odmFsdWUsIFwiYmFzZTY0XCIpO1xuICAgIHZhciBsZW4gPSB2YWx1ZS5sZW5ndGggPj4+IDA7XG4gICAgdGhpcy51aW50MzIobGVuKTtcbiAgICBpZiAobGVuKVxuICAgICAgICB0aGlzLl9wdXNoKEJ1ZmZlcldyaXRlci53cml0ZUJ5dGVzQnVmZmVyLCBsZW4sIHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIHdyaXRlU3RyaW5nQnVmZmVyKHZhbCwgYnVmLCBwb3MpIHtcbiAgICBpZiAodmFsLmxlbmd0aCA8IDQwKSAvLyBwbGFpbiBqcyBpcyBmYXN0ZXIgZm9yIHNob3J0IHN0cmluZ3MgKHByb2JhYmx5IGR1ZSB0byByZWR1bmRhbnQgYXNzZXJ0aW9ucylcbiAgICAgICAgdXRpbC51dGY4LndyaXRlKHZhbCwgYnVmLCBwb3MpO1xuICAgIGVsc2UgaWYgKGJ1Zi51dGY4V3JpdGUpXG4gICAgICAgIGJ1Zi51dGY4V3JpdGUodmFsLCBwb3MpO1xuICAgIGVsc2VcbiAgICAgICAgYnVmLndyaXRlKHZhbCwgcG9zKTtcbn1cblxuLyoqXG4gKiBAb3ZlcnJpZGVcbiAqL1xuQnVmZmVyV3JpdGVyLnByb3RvdHlwZS5zdHJpbmcgPSBmdW5jdGlvbiB3cml0ZV9zdHJpbmdfYnVmZmVyKHZhbHVlKSB7XG4gICAgdmFyIGxlbiA9IHV0aWwuQnVmZmVyLmJ5dGVMZW5ndGgodmFsdWUpO1xuICAgIHRoaXMudWludDMyKGxlbik7XG4gICAgaWYgKGxlbilcbiAgICAgICAgdGhpcy5fcHVzaCh3cml0ZVN0cmluZ0J1ZmZlciwgbGVuLCB2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG59O1xuXG5cbi8qKlxuICogRmluaXNoZXMgdGhlIHdyaXRlIG9wZXJhdGlvbi5cbiAqIEBuYW1lIEJ1ZmZlcldyaXRlciNmaW5pc2hcbiAqIEBmdW5jdGlvblxuICogQHJldHVybnMge0J1ZmZlcn0gRmluaXNoZWQgYnVmZmVyXG4gKi9cblxuQnVmZmVyV3JpdGVyLl9jb25maWd1cmUoKTtcbiIsIlwidXNlIHN0cmljdFwiO1xubW9kdWxlLmV4cG9ydHMgPSBSZWFkZXI7XG5cbnZhciB1dGlsICAgICAgPSByZXF1aXJlKFwiLi91dGlsL21pbmltYWxcIik7XG5cbnZhciBCdWZmZXJSZWFkZXI7IC8vIGN5Y2xpY1xuXG52YXIgTG9uZ0JpdHMgID0gdXRpbC5Mb25nQml0cyxcbiAgICB1dGY4ICAgICAgPSB1dGlsLnV0Zjg7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBpbmRleE91dE9mUmFuZ2UocmVhZGVyLCB3cml0ZUxlbmd0aCkge1xuICAgIHJldHVybiBSYW5nZUVycm9yKFwiaW5kZXggb3V0IG9mIHJhbmdlOiBcIiArIHJlYWRlci5wb3MgKyBcIiArIFwiICsgKHdyaXRlTGVuZ3RoIHx8IDEpICsgXCIgPiBcIiArIHJlYWRlci5sZW4pO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdHMgYSBuZXcgcmVhZGVyIGluc3RhbmNlIHVzaW5nIHRoZSBzcGVjaWZpZWQgYnVmZmVyLlxuICogQGNsYXNzZGVzYyBXaXJlIGZvcm1hdCByZWFkZXIgdXNpbmcgYFVpbnQ4QXJyYXlgIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGBBcnJheWAuXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gYnVmZmVyIEJ1ZmZlciB0byByZWFkIGZyb21cbiAqL1xuZnVuY3Rpb24gUmVhZGVyKGJ1ZmZlcikge1xuXG4gICAgLyoqXG4gICAgICogUmVhZCBidWZmZXIuXG4gICAgICogQHR5cGUge1VpbnQ4QXJyYXl9XG4gICAgICovXG4gICAgdGhpcy5idWYgPSBidWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGJ1ZmZlciBwb3NpdGlvbi5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMucG9zID0gMDtcblxuICAgIC8qKlxuICAgICAqIFJlYWQgYnVmZmVyIGxlbmd0aC5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMubGVuID0gYnVmZmVyLmxlbmd0aDtcbn1cblxudmFyIGNyZWF0ZV9hcnJheSA9IHR5cGVvZiBVaW50OEFycmF5ICE9PSBcInVuZGVmaW5lZFwiXG4gICAgPyBmdW5jdGlvbiBjcmVhdGVfdHlwZWRfYXJyYXkoYnVmZmVyKSB7XG4gICAgICAgIGlmIChidWZmZXIgaW5zdGFuY2VvZiBVaW50OEFycmF5IHx8IEFycmF5LmlzQXJyYXkoYnVmZmVyKSlcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVhZGVyKGJ1ZmZlcik7XG4gICAgICAgIHRocm93IEVycm9yKFwiaWxsZWdhbCBidWZmZXJcIik7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgOiBmdW5jdGlvbiBjcmVhdGVfYXJyYXkoYnVmZmVyKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGJ1ZmZlcikpXG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlYWRlcihidWZmZXIpO1xuICAgICAgICB0aHJvdyBFcnJvcihcImlsbGVnYWwgYnVmZmVyXCIpO1xuICAgIH07XG5cbnZhciBjcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoKSB7XG4gICAgcmV0dXJuIHV0aWwuQnVmZmVyXG4gICAgICAgID8gZnVuY3Rpb24gY3JlYXRlX2J1ZmZlcl9zZXR1cChidWZmZXIpIHtcbiAgICAgICAgICAgIHJldHVybiAoUmVhZGVyLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZV9idWZmZXIoYnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHV0aWwuQnVmZmVyLmlzQnVmZmVyKGJ1ZmZlcilcbiAgICAgICAgICAgICAgICAgICAgPyBuZXcgQnVmZmVyUmVhZGVyKGJ1ZmZlcilcbiAgICAgICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgICAgICAgICAgOiBjcmVhdGVfYXJyYXkoYnVmZmVyKTtcbiAgICAgICAgICAgIH0pKGJ1ZmZlcik7XG4gICAgICAgIH1cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgOiBjcmVhdGVfYXJyYXk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgcmVhZGVyIHVzaW5nIHRoZSBzcGVjaWZpZWQgYnVmZmVyLlxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl8QnVmZmVyfSBidWZmZXIgQnVmZmVyIHRvIHJlYWQgZnJvbVxuICogQHJldHVybnMge1JlYWRlcnxCdWZmZXJSZWFkZXJ9IEEge0BsaW5rIEJ1ZmZlclJlYWRlcn0gaWYgYGJ1ZmZlcmAgaXMgYSBCdWZmZXIsIG90aGVyd2lzZSBhIHtAbGluayBSZWFkZXJ9XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgYGJ1ZmZlcmAgaXMgbm90IGEgdmFsaWQgYnVmZmVyXG4gKi9cblJlYWRlci5jcmVhdGUgPSBjcmVhdGUoKTtcblxuUmVhZGVyLnByb3RvdHlwZS5fc2xpY2UgPSB1dGlsLkFycmF5LnByb3RvdHlwZS5zdWJhcnJheSB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyB1dGlsLkFycmF5LnByb3RvdHlwZS5zbGljZTtcblxuLyoqXG4gKiBSZWFkcyBhIHZhcmludCBhcyBhbiB1bnNpZ25lZCAzMiBiaXQgdmFsdWUuXG4gKiBAZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFZhbHVlIHJlYWRcbiAqL1xuUmVhZGVyLnByb3RvdHlwZS51aW50MzIgPSAoZnVuY3Rpb24gcmVhZF91aW50MzJfc2V0dXAoKSB7XG4gICAgdmFyIHZhbHVlID0gNDI5NDk2NzI5NTsgLy8gb3B0aW1pemVyIHR5cGUtaGludCwgdGVuZHMgdG8gZGVvcHQgb3RoZXJ3aXNlICg/ISlcbiAgICByZXR1cm4gZnVuY3Rpb24gcmVhZF91aW50MzIoKSB7XG4gICAgICAgIHZhbHVlID0gKCAgICAgICAgIHRoaXMuYnVmW3RoaXMucG9zXSAmIDEyNyAgICAgICApID4+PiAwOyBpZiAodGhpcy5idWZbdGhpcy5wb3MrK10gPCAxMjgpIHJldHVybiB2YWx1ZTtcbiAgICAgICAgdmFsdWUgPSAodmFsdWUgfCAodGhpcy5idWZbdGhpcy5wb3NdICYgMTI3KSA8PCAgNykgPj4+IDA7IGlmICh0aGlzLmJ1Zlt0aGlzLnBvcysrXSA8IDEyOCkgcmV0dXJuIHZhbHVlO1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSB8ICh0aGlzLmJ1Zlt0aGlzLnBvc10gJiAxMjcpIDw8IDE0KSA+Pj4gMDsgaWYgKHRoaXMuYnVmW3RoaXMucG9zKytdIDwgMTI4KSByZXR1cm4gdmFsdWU7XG4gICAgICAgIHZhbHVlID0gKHZhbHVlIHwgKHRoaXMuYnVmW3RoaXMucG9zXSAmIDEyNykgPDwgMjEpID4+PiAwOyBpZiAodGhpcy5idWZbdGhpcy5wb3MrK10gPCAxMjgpIHJldHVybiB2YWx1ZTtcbiAgICAgICAgdmFsdWUgPSAodmFsdWUgfCAodGhpcy5idWZbdGhpcy5wb3NdICYgIDE1KSA8PCAyOCkgPj4+IDA7IGlmICh0aGlzLmJ1Zlt0aGlzLnBvcysrXSA8IDEyOCkgcmV0dXJuIHZhbHVlO1xuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAoKHRoaXMucG9zICs9IDUpID4gdGhpcy5sZW4pIHtcbiAgICAgICAgICAgIHRoaXMucG9zID0gdGhpcy5sZW47XG4gICAgICAgICAgICB0aHJvdyBpbmRleE91dE9mUmFuZ2UodGhpcywgMTApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9O1xufSkoKTtcblxuLyoqXG4gKiBSZWFkcyBhIHZhcmludCBhcyBhIHNpZ25lZCAzMiBiaXQgdmFsdWUuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBWYWx1ZSByZWFkXG4gKi9cblJlYWRlci5wcm90b3R5cGUuaW50MzIgPSBmdW5jdGlvbiByZWFkX2ludDMyKCkge1xuICAgIHJldHVybiB0aGlzLnVpbnQzMigpIHwgMDtcbn07XG5cbi8qKlxuICogUmVhZHMgYSB6aWctemFnIGVuY29kZWQgdmFyaW50IGFzIGEgc2lnbmVkIDMyIGJpdCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFZhbHVlIHJlYWRcbiAqL1xuUmVhZGVyLnByb3RvdHlwZS5zaW50MzIgPSBmdW5jdGlvbiByZWFkX3NpbnQzMigpIHtcbiAgICB2YXIgdmFsdWUgPSB0aGlzLnVpbnQzMigpO1xuICAgIHJldHVybiB2YWx1ZSA+Pj4gMSBeIC0odmFsdWUgJiAxKSB8IDA7XG59O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1pbnZhbGlkLXRoaXMgKi9cblxuZnVuY3Rpb24gcmVhZExvbmdWYXJpbnQoKSB7XG4gICAgLy8gdGVuZHMgdG8gZGVvcHQgd2l0aCBsb2NhbCB2YXJzIGZvciBvY3RldCBldGMuXG4gICAgdmFyIGJpdHMgPSBuZXcgTG9uZ0JpdHMoMCwgMCk7XG4gICAgdmFyIGkgPSAwO1xuICAgIGlmICh0aGlzLmxlbiAtIHRoaXMucG9zID4gNCkgeyAvLyBmYXN0IHJvdXRlIChsbylcbiAgICAgICAgZm9yICg7IGkgPCA0OyArK2kpIHtcbiAgICAgICAgICAgIC8vIDFzdC4uNHRoXG4gICAgICAgICAgICBiaXRzLmxvID0gKGJpdHMubG8gfCAodGhpcy5idWZbdGhpcy5wb3NdICYgMTI3KSA8PCBpICogNykgPj4+IDA7XG4gICAgICAgICAgICBpZiAodGhpcy5idWZbdGhpcy5wb3MrK10gPCAxMjgpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGJpdHM7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNXRoXG4gICAgICAgIGJpdHMubG8gPSAoYml0cy5sbyB8ICh0aGlzLmJ1Zlt0aGlzLnBvc10gJiAxMjcpIDw8IDI4KSA+Pj4gMDtcbiAgICAgICAgYml0cy5oaSA9IChiaXRzLmhpIHwgKHRoaXMuYnVmW3RoaXMucG9zXSAmIDEyNykgPj4gIDQpID4+PiAwO1xuICAgICAgICBpZiAodGhpcy5idWZbdGhpcy5wb3MrK10gPCAxMjgpXG4gICAgICAgICAgICByZXR1cm4gYml0cztcbiAgICAgICAgaSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZm9yICg7IGkgPCAzOyArK2kpIHtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgICAgaWYgKHRoaXMucG9zID49IHRoaXMubGVuKVxuICAgICAgICAgICAgICAgIHRocm93IGluZGV4T3V0T2ZSYW5nZSh0aGlzKTtcbiAgICAgICAgICAgIC8vIDFzdC4uM3RoXG4gICAgICAgICAgICBiaXRzLmxvID0gKGJpdHMubG8gfCAodGhpcy5idWZbdGhpcy5wb3NdICYgMTI3KSA8PCBpICogNykgPj4+IDA7XG4gICAgICAgICAgICBpZiAodGhpcy5idWZbdGhpcy5wb3MrK10gPCAxMjgpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGJpdHM7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNHRoXG4gICAgICAgIGJpdHMubG8gPSAoYml0cy5sbyB8ICh0aGlzLmJ1Zlt0aGlzLnBvcysrXSAmIDEyNykgPDwgaSAqIDcpID4+PiAwO1xuICAgICAgICByZXR1cm4gYml0cztcbiAgICB9XG4gICAgaWYgKHRoaXMubGVuIC0gdGhpcy5wb3MgPiA0KSB7IC8vIGZhc3Qgcm91dGUgKGhpKVxuICAgICAgICBmb3IgKDsgaSA8IDU7ICsraSkge1xuICAgICAgICAgICAgLy8gNnRoLi4xMHRoXG4gICAgICAgICAgICBiaXRzLmhpID0gKGJpdHMuaGkgfCAodGhpcy5idWZbdGhpcy5wb3NdICYgMTI3KSA8PCBpICogNyArIDMpID4+PiAwO1xuICAgICAgICAgICAgaWYgKHRoaXMuYnVmW3RoaXMucG9zKytdIDwgMTI4KVxuICAgICAgICAgICAgICAgIHJldHVybiBiaXRzO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZm9yICg7IGkgPCA1OyArK2kpIHtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgICAgaWYgKHRoaXMucG9zID49IHRoaXMubGVuKVxuICAgICAgICAgICAgICAgIHRocm93IGluZGV4T3V0T2ZSYW5nZSh0aGlzKTtcbiAgICAgICAgICAgIC8vIDZ0aC4uMTB0aFxuICAgICAgICAgICAgYml0cy5oaSA9IChiaXRzLmhpIHwgKHRoaXMuYnVmW3RoaXMucG9zXSAmIDEyNykgPDwgaSAqIDcgKyAzKSA+Pj4gMDtcbiAgICAgICAgICAgIGlmICh0aGlzLmJ1Zlt0aGlzLnBvcysrXSA8IDEyOClcbiAgICAgICAgICAgICAgICByZXR1cm4gYml0cztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRocm93IEVycm9yKFwiaW52YWxpZCB2YXJpbnQgZW5jb2RpbmdcIik7XG59XG5cbi8qIGVzbGludC1lbmFibGUgbm8taW52YWxpZC10aGlzICovXG5cbi8qKlxuICogUmVhZHMgYSB2YXJpbnQgYXMgYSBzaWduZWQgNjQgYml0IHZhbHVlLlxuICogQG5hbWUgUmVhZGVyI2ludDY0XG4gKiBAZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtMb25nfSBWYWx1ZSByZWFkXG4gKi9cblxuLyoqXG4gKiBSZWFkcyBhIHZhcmludCBhcyBhbiB1bnNpZ25lZCA2NCBiaXQgdmFsdWUuXG4gKiBAbmFtZSBSZWFkZXIjdWludDY0XG4gKiBAZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtMb25nfSBWYWx1ZSByZWFkXG4gKi9cblxuLyoqXG4gKiBSZWFkcyBhIHppZy16YWcgZW5jb2RlZCB2YXJpbnQgYXMgYSBzaWduZWQgNjQgYml0IHZhbHVlLlxuICogQG5hbWUgUmVhZGVyI3NpbnQ2NFxuICogQGZ1bmN0aW9uXG4gKiBAcmV0dXJucyB7TG9uZ30gVmFsdWUgcmVhZFxuICovXG5cbi8qKlxuICogUmVhZHMgYSB2YXJpbnQgYXMgYSBib29sZWFuLlxuICogQHJldHVybnMge2Jvb2xlYW59IFZhbHVlIHJlYWRcbiAqL1xuUmVhZGVyLnByb3RvdHlwZS5ib29sID0gZnVuY3Rpb24gcmVhZF9ib29sKCkge1xuICAgIHJldHVybiB0aGlzLnVpbnQzMigpICE9PSAwO1xufTtcblxuZnVuY3Rpb24gcmVhZEZpeGVkMzJfZW5kKGJ1ZiwgZW5kKSB7IC8vIG5vdGUgdGhhdCB0aGlzIHVzZXMgYGVuZGAsIG5vdCBgcG9zYFxuICAgIHJldHVybiAoYnVmW2VuZCAtIDRdXG4gICAgICAgICAgfCBidWZbZW5kIC0gM10gPDwgOFxuICAgICAgICAgIHwgYnVmW2VuZCAtIDJdIDw8IDE2XG4gICAgICAgICAgfCBidWZbZW5kIC0gMV0gPDwgMjQpID4+PiAwO1xufVxuXG4vKipcbiAqIFJlYWRzIGZpeGVkIDMyIGJpdHMgYXMgYW4gdW5zaWduZWQgMzIgYml0IGludGVnZXIuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBWYWx1ZSByZWFkXG4gKi9cblJlYWRlci5wcm90b3R5cGUuZml4ZWQzMiA9IGZ1bmN0aW9uIHJlYWRfZml4ZWQzMigpIHtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICh0aGlzLnBvcyArIDQgPiB0aGlzLmxlbilcbiAgICAgICAgdGhyb3cgaW5kZXhPdXRPZlJhbmdlKHRoaXMsIDQpO1xuXG4gICAgcmV0dXJuIHJlYWRGaXhlZDMyX2VuZCh0aGlzLmJ1ZiwgdGhpcy5wb3MgKz0gNCk7XG59O1xuXG4vKipcbiAqIFJlYWRzIGZpeGVkIDMyIGJpdHMgYXMgYSBzaWduZWQgMzIgYml0IGludGVnZXIuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBWYWx1ZSByZWFkXG4gKi9cblJlYWRlci5wcm90b3R5cGUuc2ZpeGVkMzIgPSBmdW5jdGlvbiByZWFkX3NmaXhlZDMyKCkge1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHRoaXMucG9zICsgNCA+IHRoaXMubGVuKVxuICAgICAgICB0aHJvdyBpbmRleE91dE9mUmFuZ2UodGhpcywgNCk7XG5cbiAgICByZXR1cm4gcmVhZEZpeGVkMzJfZW5kKHRoaXMuYnVmLCB0aGlzLnBvcyArPSA0KSB8IDA7XG59O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1pbnZhbGlkLXRoaXMgKi9cblxuZnVuY3Rpb24gcmVhZEZpeGVkNjQoLyogdGhpczogUmVhZGVyICovKSB7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAodGhpcy5wb3MgKyA4ID4gdGhpcy5sZW4pXG4gICAgICAgIHRocm93IGluZGV4T3V0T2ZSYW5nZSh0aGlzLCA4KTtcblxuICAgIHJldHVybiBuZXcgTG9uZ0JpdHMocmVhZEZpeGVkMzJfZW5kKHRoaXMuYnVmLCB0aGlzLnBvcyArPSA0KSwgcmVhZEZpeGVkMzJfZW5kKHRoaXMuYnVmLCB0aGlzLnBvcyArPSA0KSk7XG59XG5cbi8qIGVzbGludC1lbmFibGUgbm8taW52YWxpZC10aGlzICovXG5cbi8qKlxuICogUmVhZHMgZml4ZWQgNjQgYml0cy5cbiAqIEBuYW1lIFJlYWRlciNmaXhlZDY0XG4gKiBAZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtMb25nfSBWYWx1ZSByZWFkXG4gKi9cblxuLyoqXG4gKiBSZWFkcyB6aWctemFnIGVuY29kZWQgZml4ZWQgNjQgYml0cy5cbiAqIEBuYW1lIFJlYWRlciNzZml4ZWQ2NFxuICogQGZ1bmN0aW9uXG4gKiBAcmV0dXJucyB7TG9uZ30gVmFsdWUgcmVhZFxuICovXG5cbi8qKlxuICogUmVhZHMgYSBmbG9hdCAoMzIgYml0KSBhcyBhIG51bWJlci5cbiAqIEBmdW5jdGlvblxuICogQHJldHVybnMge251bWJlcn0gVmFsdWUgcmVhZFxuICovXG5SZWFkZXIucHJvdG90eXBlLmZsb2F0ID0gZnVuY3Rpb24gcmVhZF9mbG9hdCgpIHtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICh0aGlzLnBvcyArIDQgPiB0aGlzLmxlbilcbiAgICAgICAgdGhyb3cgaW5kZXhPdXRPZlJhbmdlKHRoaXMsIDQpO1xuXG4gICAgdmFyIHZhbHVlID0gdXRpbC5mbG9hdC5yZWFkRmxvYXRMRSh0aGlzLmJ1ZiwgdGhpcy5wb3MpO1xuICAgIHRoaXMucG9zICs9IDQ7XG4gICAgcmV0dXJuIHZhbHVlO1xufTtcblxuLyoqXG4gKiBSZWFkcyBhIGRvdWJsZSAoNjQgYml0IGZsb2F0KSBhcyBhIG51bWJlci5cbiAqIEBmdW5jdGlvblxuICogQHJldHVybnMge251bWJlcn0gVmFsdWUgcmVhZFxuICovXG5SZWFkZXIucHJvdG90eXBlLmRvdWJsZSA9IGZ1bmN0aW9uIHJlYWRfZG91YmxlKCkge1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHRoaXMucG9zICsgOCA+IHRoaXMubGVuKVxuICAgICAgICB0aHJvdyBpbmRleE91dE9mUmFuZ2UodGhpcywgNCk7XG5cbiAgICB2YXIgdmFsdWUgPSB1dGlsLmZsb2F0LnJlYWREb3VibGVMRSh0aGlzLmJ1ZiwgdGhpcy5wb3MpO1xuICAgIHRoaXMucG9zICs9IDg7XG4gICAgcmV0dXJuIHZhbHVlO1xufTtcblxuLyoqXG4gKiBSZWFkcyBhIHNlcXVlbmNlIG9mIGJ5dGVzIHByZWNlZWRlZCBieSBpdHMgbGVuZ3RoIGFzIGEgdmFyaW50LlxuICogQHJldHVybnMge1VpbnQ4QXJyYXl9IFZhbHVlIHJlYWRcbiAqL1xuUmVhZGVyLnByb3RvdHlwZS5ieXRlcyA9IGZ1bmN0aW9uIHJlYWRfYnl0ZXMoKSB7XG4gICAgdmFyIGxlbmd0aCA9IHRoaXMudWludDMyKCksXG4gICAgICAgIHN0YXJ0ICA9IHRoaXMucG9zLFxuICAgICAgICBlbmQgICAgPSB0aGlzLnBvcyArIGxlbmd0aDtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChlbmQgPiB0aGlzLmxlbilcbiAgICAgICAgdGhyb3cgaW5kZXhPdXRPZlJhbmdlKHRoaXMsIGxlbmd0aCk7XG5cbiAgICB0aGlzLnBvcyArPSBsZW5ndGg7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5idWYpKSAvLyBwbGFpbiBhcnJheVxuICAgICAgICByZXR1cm4gdGhpcy5idWYuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgcmV0dXJuIHN0YXJ0ID09PSBlbmQgLy8gZml4IGZvciBJRSAxMC9XaW44IGFuZCBvdGhlcnMnIHN1YmFycmF5IHJldHVybmluZyBhcnJheSBvZiBzaXplIDFcbiAgICAgICAgPyBuZXcgdGhpcy5idWYuY29uc3RydWN0b3IoMClcbiAgICAgICAgOiB0aGlzLl9zbGljZS5jYWxsKHRoaXMuYnVmLCBzdGFydCwgZW5kKTtcbn07XG5cbi8qKlxuICogUmVhZHMgYSBzdHJpbmcgcHJlY2VlZGVkIGJ5IGl0cyBieXRlIGxlbmd0aCBhcyBhIHZhcmludC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFZhbHVlIHJlYWRcbiAqL1xuUmVhZGVyLnByb3RvdHlwZS5zdHJpbmcgPSBmdW5jdGlvbiByZWFkX3N0cmluZygpIHtcbiAgICB2YXIgYnl0ZXMgPSB0aGlzLmJ5dGVzKCk7XG4gICAgcmV0dXJuIHV0ZjgucmVhZChieXRlcywgMCwgYnl0ZXMubGVuZ3RoKTtcbn07XG5cbi8qKlxuICogU2tpcHMgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYnl0ZXMgaWYgc3BlY2lmaWVkLCBvdGhlcndpc2Ugc2tpcHMgYSB2YXJpbnQuXG4gKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aF0gTGVuZ3RoIGlmIGtub3duLCBvdGhlcndpc2UgYSB2YXJpbnQgaXMgYXNzdW1lZFxuICogQHJldHVybnMge1JlYWRlcn0gYHRoaXNgXG4gKi9cblJlYWRlci5wcm90b3R5cGUuc2tpcCA9IGZ1bmN0aW9uIHNraXAobGVuZ3RoKSB7XG4gICAgaWYgKHR5cGVvZiBsZW5ndGggPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgIGlmICh0aGlzLnBvcyArIGxlbmd0aCA+IHRoaXMubGVuKVxuICAgICAgICAgICAgdGhyb3cgaW5kZXhPdXRPZlJhbmdlKHRoaXMsIGxlbmd0aCk7XG4gICAgICAgIHRoaXMucG9zICs9IGxlbmd0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICAgIGlmICh0aGlzLnBvcyA+PSB0aGlzLmxlbilcbiAgICAgICAgICAgICAgICB0aHJvdyBpbmRleE91dE9mUmFuZ2UodGhpcyk7XG4gICAgICAgIH0gd2hpbGUgKHRoaXMuYnVmW3RoaXMucG9zKytdICYgMTI4KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNraXBzIHRoZSBuZXh0IGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB3aXJlIHR5cGUuXG4gKiBAcGFyYW0ge251bWJlcn0gd2lyZVR5cGUgV2lyZSB0eXBlIHJlY2VpdmVkXG4gKiBAcmV0dXJucyB7UmVhZGVyfSBgdGhpc2BcbiAqL1xuUmVhZGVyLnByb3RvdHlwZS5za2lwVHlwZSA9IGZ1bmN0aW9uKHdpcmVUeXBlKSB7XG4gICAgc3dpdGNoICh3aXJlVHlwZSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICB0aGlzLnNraXAoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICB0aGlzLnNraXAoOCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgdGhpcy5za2lwKHRoaXMudWludDMyKCkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHdoaWxlICgod2lyZVR5cGUgPSB0aGlzLnVpbnQzMigpICYgNykgIT09IDQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNraXBUeXBlKHdpcmVUeXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICB0aGlzLnNraXAoNCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJpbnZhbGlkIHdpcmUgdHlwZSBcIiArIHdpcmVUeXBlICsgXCIgYXQgb2Zmc2V0IFwiICsgdGhpcy5wb3MpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbn07XG5cblJlYWRlci5fY29uZmlndXJlID0gZnVuY3Rpb24oQnVmZmVyUmVhZGVyXykge1xuICAgIEJ1ZmZlclJlYWRlciA9IEJ1ZmZlclJlYWRlcl87XG4gICAgUmVhZGVyLmNyZWF0ZSA9IGNyZWF0ZSgpO1xuICAgIEJ1ZmZlclJlYWRlci5fY29uZmlndXJlKCk7XG5cbiAgICB2YXIgZm4gPSB1dGlsLkxvbmcgPyBcInRvTG9uZ1wiIDogLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gXCJ0b051bWJlclwiO1xuICAgIHV0aWwubWVyZ2UoUmVhZGVyLnByb3RvdHlwZSwge1xuXG4gICAgICAgIGludDY0OiBmdW5jdGlvbiByZWFkX2ludDY0KCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlYWRMb25nVmFyaW50LmNhbGwodGhpcylbZm5dKGZhbHNlKTtcbiAgICAgICAgfSxcblxuICAgICAgICB1aW50NjQ6IGZ1bmN0aW9uIHJlYWRfdWludDY0KCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlYWRMb25nVmFyaW50LmNhbGwodGhpcylbZm5dKHRydWUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHNpbnQ2NDogZnVuY3Rpb24gcmVhZF9zaW50NjQoKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVhZExvbmdWYXJpbnQuY2FsbCh0aGlzKS56ekRlY29kZSgpW2ZuXShmYWxzZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZml4ZWQ2NDogZnVuY3Rpb24gcmVhZF9maXhlZDY0KCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlYWRGaXhlZDY0LmNhbGwodGhpcylbZm5dKHRydWUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHNmaXhlZDY0OiBmdW5jdGlvbiByZWFkX3NmaXhlZDY0KCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlYWRGaXhlZDY0LmNhbGwodGhpcylbZm5dKGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgfSk7XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5tb2R1bGUuZXhwb3J0cyA9IEJ1ZmZlclJlYWRlcjtcblxuLy8gZXh0ZW5kcyBSZWFkZXJcbnZhciBSZWFkZXIgPSByZXF1aXJlKFwiLi9yZWFkZXJcIik7XG4oQnVmZmVyUmVhZGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUmVhZGVyLnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yID0gQnVmZmVyUmVhZGVyO1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWwvbWluaW1hbFwiKTtcblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGEgbmV3IGJ1ZmZlciByZWFkZXIgaW5zdGFuY2UuXG4gKiBAY2xhc3NkZXNjIFdpcmUgZm9ybWF0IHJlYWRlciB1c2luZyBub2RlIGJ1ZmZlcnMuXG4gKiBAZXh0ZW5kcyBSZWFkZXJcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZmZlciBCdWZmZXIgdG8gcmVhZCBmcm9tXG4gKi9cbmZ1bmN0aW9uIEJ1ZmZlclJlYWRlcihidWZmZXIpIHtcbiAgICBSZWFkZXIuY2FsbCh0aGlzLCBidWZmZXIpO1xuXG4gICAgLyoqXG4gICAgICogUmVhZCBidWZmZXIuXG4gICAgICogQG5hbWUgQnVmZmVyUmVhZGVyI2J1ZlxuICAgICAqIEB0eXBlIHtCdWZmZXJ9XG4gICAgICovXG59XG5cbkJ1ZmZlclJlYWRlci5fY29uZmlndXJlID0gZnVuY3Rpb24gKCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHV0aWwuQnVmZmVyKVxuICAgICAgICBCdWZmZXJSZWFkZXIucHJvdG90eXBlLl9zbGljZSA9IHV0aWwuQnVmZmVyLnByb3RvdHlwZS5zbGljZTtcbn07XG5cblxuLyoqXG4gKiBAb3ZlcnJpZGVcbiAqL1xuQnVmZmVyUmVhZGVyLnByb3RvdHlwZS5zdHJpbmcgPSBmdW5jdGlvbiByZWFkX3N0cmluZ19idWZmZXIoKSB7XG4gICAgdmFyIGxlbiA9IHRoaXMudWludDMyKCk7IC8vIG1vZGlmaWVzIHBvc1xuICAgIHJldHVybiB0aGlzLmJ1Zi51dGY4U2xpY2VcbiAgICAgICAgPyB0aGlzLmJ1Zi51dGY4U2xpY2UodGhpcy5wb3MsIHRoaXMucG9zID0gTWF0aC5taW4odGhpcy5wb3MgKyBsZW4sIHRoaXMubGVuKSlcbiAgICAgICAgOiB0aGlzLmJ1Zi50b1N0cmluZyhcInV0Zi04XCIsIHRoaXMucG9zLCB0aGlzLnBvcyA9IE1hdGgubWluKHRoaXMucG9zICsgbGVuLCB0aGlzLmxlbikpO1xufTtcblxuLyoqXG4gKiBSZWFkcyBhIHNlcXVlbmNlIG9mIGJ5dGVzIHByZWNlZWRlZCBieSBpdHMgbGVuZ3RoIGFzIGEgdmFyaW50LlxuICogQG5hbWUgQnVmZmVyUmVhZGVyI2J5dGVzXG4gKiBAZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtCdWZmZXJ9IFZhbHVlIHJlYWRcbiAqL1xuXG5CdWZmZXJSZWFkZXIuX2NvbmZpZ3VyZSgpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5tb2R1bGUuZXhwb3J0cyA9IFNlcnZpY2U7XG5cbnZhciB1dGlsID0gcmVxdWlyZShcIi4uL3V0aWwvbWluaW1hbFwiKTtcblxuLy8gRXh0ZW5kcyBFdmVudEVtaXR0ZXJcbihTZXJ2aWNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodXRpbC5FdmVudEVtaXR0ZXIucHJvdG90eXBlKSkuY29uc3RydWN0b3IgPSBTZXJ2aWNlO1xuXG4vKipcbiAqIEEgc2VydmljZSBtZXRob2QgY2FsbGJhY2sgYXMgdXNlZCBieSB7QGxpbmsgcnBjLlNlcnZpY2VNZXRob2R8U2VydmljZU1ldGhvZH0uXG4gKlxuICogRGlmZmVycyBmcm9tIHtAbGluayBSUENJbXBsQ2FsbGJhY2t9IGluIHRoYXQgaXQgaXMgYW4gYWN0dWFsIGNhbGxiYWNrIG9mIGEgc2VydmljZSBtZXRob2Qgd2hpY2ggbWF5IG5vdCByZXR1cm4gYHJlc3BvbnNlID0gbnVsbGAuXG4gKiBAdHlwZWRlZiBycGMuU2VydmljZU1ldGhvZENhbGxiYWNrXG4gKiBAdGVtcGxhdGUgVFJlcyBleHRlbmRzIE1lc3NhZ2U8VFJlcz5cbiAqIEB0eXBlIHtmdW5jdGlvbn1cbiAqIEBwYXJhbSB7RXJyb3J8bnVsbH0gZXJyb3IgRXJyb3IsIGlmIGFueVxuICogQHBhcmFtIHtUUmVzfSBbcmVzcG9uc2VdIFJlc3BvbnNlIG1lc3NhZ2VcbiAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gKi9cblxuLyoqXG4gKiBBIHNlcnZpY2UgbWV0aG9kIHBhcnQgb2YgYSB7QGxpbmsgcnBjLlNlcnZpY2V9IGFzIGNyZWF0ZWQgYnkge0BsaW5rIFNlcnZpY2UuY3JlYXRlfS5cbiAqIEB0eXBlZGVmIHJwYy5TZXJ2aWNlTWV0aG9kXG4gKiBAdGVtcGxhdGUgVFJlcSBleHRlbmRzIE1lc3NhZ2U8VFJlcT5cbiAqIEB0ZW1wbGF0ZSBUUmVzIGV4dGVuZHMgTWVzc2FnZTxUUmVzPlxuICogQHR5cGUge2Z1bmN0aW9ufVxuICogQHBhcmFtIHtUUmVxfFByb3BlcnRpZXM8VFJlcT59IHJlcXVlc3QgUmVxdWVzdCBtZXNzYWdlIG9yIHBsYWluIG9iamVjdFxuICogQHBhcmFtIHtycGMuU2VydmljZU1ldGhvZENhbGxiYWNrPFRSZXM+fSBbY2FsbGJhY2tdIE5vZGUtc3R5bGUgY2FsbGJhY2sgY2FsbGVkIHdpdGggdGhlIGVycm9yLCBpZiBhbnksIGFuZCB0aGUgcmVzcG9uc2UgbWVzc2FnZVxuICogQHJldHVybnMge1Byb21pc2U8TWVzc2FnZTxUUmVzPj59IFByb21pc2UgaWYgYGNhbGxiYWNrYCBoYXMgYmVlbiBvbWl0dGVkLCBvdGhlcndpc2UgYHVuZGVmaW5lZGBcbiAqL1xuXG4vKipcbiAqIENvbnN0cnVjdHMgYSBuZXcgUlBDIHNlcnZpY2UgaW5zdGFuY2UuXG4gKiBAY2xhc3NkZXNjIEFuIFJQQyBzZXJ2aWNlIGFzIHJldHVybmVkIGJ5IHtAbGluayBTZXJ2aWNlI2NyZWF0ZX0uXG4gKiBAZXhwb3J0cyBycGMuU2VydmljZVxuICogQGV4dGVuZHMgdXRpbC5FdmVudEVtaXR0ZXJcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtSUENJbXBsfSBycGNJbXBsIFJQQyBpbXBsZW1lbnRhdGlvblxuICogQHBhcmFtIHtib29sZWFufSBbcmVxdWVzdERlbGltaXRlZD1mYWxzZV0gV2hldGhlciByZXF1ZXN0cyBhcmUgbGVuZ3RoLWRlbGltaXRlZFxuICogQHBhcmFtIHtib29sZWFufSBbcmVzcG9uc2VEZWxpbWl0ZWQ9ZmFsc2VdIFdoZXRoZXIgcmVzcG9uc2VzIGFyZSBsZW5ndGgtZGVsaW1pdGVkXG4gKi9cbmZ1bmN0aW9uIFNlcnZpY2UocnBjSW1wbCwgcmVxdWVzdERlbGltaXRlZCwgcmVzcG9uc2VEZWxpbWl0ZWQpIHtcblxuICAgIGlmICh0eXBlb2YgcnBjSW1wbCAhPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJycGNJbXBsIG11c3QgYmUgYSBmdW5jdGlvblwiKTtcblxuICAgIHV0aWwuRXZlbnRFbWl0dGVyLmNhbGwodGhpcyk7XG5cbiAgICAvKipcbiAgICAgKiBSUEMgaW1wbGVtZW50YXRpb24uIEJlY29tZXMgYG51bGxgIG9uY2UgdGhlIHNlcnZpY2UgaXMgZW5kZWQuXG4gICAgICogQHR5cGUge1JQQ0ltcGx8bnVsbH1cbiAgICAgKi9cbiAgICB0aGlzLnJwY0ltcGwgPSBycGNJbXBsO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciByZXF1ZXN0cyBhcmUgbGVuZ3RoLWRlbGltaXRlZC5cbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLnJlcXVlc3REZWxpbWl0ZWQgPSBCb29sZWFuKHJlcXVlc3REZWxpbWl0ZWQpO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciByZXNwb25zZXMgYXJlIGxlbmd0aC1kZWxpbWl0ZWQuXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgdGhpcy5yZXNwb25zZURlbGltaXRlZCA9IEJvb2xlYW4ocmVzcG9uc2VEZWxpbWl0ZWQpO1xufVxuXG4vKipcbiAqIENhbGxzIGEgc2VydmljZSBtZXRob2QgdGhyb3VnaCB7QGxpbmsgcnBjLlNlcnZpY2UjcnBjSW1wbHxycGNJbXBsfS5cbiAqIEBwYXJhbSB7TWV0aG9kfHJwYy5TZXJ2aWNlTWV0aG9kPFRSZXEsVFJlcz59IG1ldGhvZCBSZWZsZWN0ZWQgb3Igc3RhdGljIG1ldGhvZFxuICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxUUmVxPn0gcmVxdWVzdEN0b3IgUmVxdWVzdCBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxUUmVzPn0gcmVzcG9uc2VDdG9yIFJlc3BvbnNlIGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge1RSZXF8UHJvcGVydGllczxUUmVxPn0gcmVxdWVzdCBSZXF1ZXN0IG1lc3NhZ2Ugb3IgcGxhaW4gb2JqZWN0XG4gKiBAcGFyYW0ge3JwYy5TZXJ2aWNlTWV0aG9kQ2FsbGJhY2s8VFJlcz59IGNhbGxiYWNrIFNlcnZpY2UgY2FsbGJhY2tcbiAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gKiBAdGVtcGxhdGUgVFJlcSBleHRlbmRzIE1lc3NhZ2U8VFJlcT5cbiAqIEB0ZW1wbGF0ZSBUUmVzIGV4dGVuZHMgTWVzc2FnZTxUUmVzPlxuICovXG5TZXJ2aWNlLnByb3RvdHlwZS5ycGNDYWxsID0gZnVuY3Rpb24gcnBjQ2FsbChtZXRob2QsIHJlcXVlc3RDdG9yLCByZXNwb25zZUN0b3IsIHJlcXVlc3QsIGNhbGxiYWNrKSB7XG5cbiAgICBpZiAoIXJlcXVlc3QpXG4gICAgICAgIHRocm93IFR5cGVFcnJvcihcInJlcXVlc3QgbXVzdCBiZSBzcGVjaWZpZWRcIik7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgaWYgKCFjYWxsYmFjaylcbiAgICAgICAgcmV0dXJuIHV0aWwuYXNQcm9taXNlKHJwY0NhbGwsIHNlbGYsIG1ldGhvZCwgcmVxdWVzdEN0b3IsIHJlc3BvbnNlQ3RvciwgcmVxdWVzdCk7XG5cbiAgICBpZiAoIXNlbGYucnBjSW1wbCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjYWxsYmFjayhFcnJvcihcImFscmVhZHkgZW5kZWRcIikpOyB9LCAwKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gc2VsZi5ycGNJbXBsKFxuICAgICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgICAgcmVxdWVzdEN0b3Jbc2VsZi5yZXF1ZXN0RGVsaW1pdGVkID8gXCJlbmNvZGVEZWxpbWl0ZWRcIiA6IFwiZW5jb2RlXCJdKHJlcXVlc3QpLmZpbmlzaCgpLFxuICAgICAgICAgICAgZnVuY3Rpb24gcnBjQ2FsbGJhY2soZXJyLCByZXNwb25zZSkge1xuXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmVtaXQoXCJlcnJvclwiLCBlcnIsIG1ldGhvZCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmVuZCgvKiBlbmRlZEJ5UlBDICovIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghKHJlc3BvbnNlIGluc3RhbmNlb2YgcmVzcG9uc2VDdG9yKSkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNwb25zZUN0b3Jbc2VsZi5yZXNwb25zZURlbGltaXRlZCA/IFwiZGVjb2RlRGVsaW1pdGVkXCIgOiBcImRlY29kZVwiXShyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KFwiZXJyb3JcIiwgZXJyLCBtZXRob2QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzZWxmLmVtaXQoXCJkYXRhXCIsIHJlc3BvbnNlLCBtZXRob2QpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCByZXNwb25zZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHNlbGYuZW1pdChcImVycm9yXCIsIGVyciwgbWV0aG9kKTtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgY2FsbGJhY2soZXJyKTsgfSwgMCk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufTtcblxuLyoqXG4gKiBFbmRzIHRoaXMgc2VydmljZSBhbmQgZW1pdHMgdGhlIGBlbmRgIGV2ZW50LlxuICogQHBhcmFtIHtib29sZWFufSBbZW5kZWRCeVJQQz1mYWxzZV0gV2hldGhlciB0aGUgc2VydmljZSBoYXMgYmVlbiBlbmRlZCBieSB0aGUgUlBDIGltcGxlbWVudGF0aW9uLlxuICogQHJldHVybnMge3JwYy5TZXJ2aWNlfSBgdGhpc2BcbiAqL1xuU2VydmljZS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24gZW5kKGVuZGVkQnlSUEMpIHtcbiAgICBpZiAodGhpcy5ycGNJbXBsKSB7XG4gICAgICAgIGlmICghZW5kZWRCeVJQQykgLy8gc2lnbmFsIGVuZCB0byBycGNJbXBsXG4gICAgICAgICAgICB0aGlzLnJwY0ltcGwobnVsbCwgbnVsbCwgbnVsbCk7XG4gICAgICAgIHRoaXMucnBjSW1wbCA9IG51bGw7XG4gICAgICAgIHRoaXMuZW1pdChcImVuZFwiKS5vZmYoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qKlxuICogU3RyZWFtaW5nIFJQQyBoZWxwZXJzLlxuICogQG5hbWVzcGFjZVxuICovXG52YXIgcnBjID0gZXhwb3J0cztcblxuLyoqXG4gKiBSUEMgaW1wbGVtZW50YXRpb24gcGFzc2VkIHRvIHtAbGluayBTZXJ2aWNlI2NyZWF0ZX0gcGVyZm9ybWluZyBhIHNlcnZpY2UgcmVxdWVzdCBvbiBuZXR3b3JrIGxldmVsLCBpLmUuIGJ5IHV0aWxpemluZyBodHRwIHJlcXVlc3RzIG9yIHdlYnNvY2tldHMuXG4gKiBAdHlwZWRlZiBSUENJbXBsXG4gKiBAdHlwZSB7ZnVuY3Rpb259XG4gKiBAcGFyYW0ge01ldGhvZHxycGMuU2VydmljZU1ldGhvZDxNZXNzYWdlPHt9PixNZXNzYWdlPHt9Pj59IG1ldGhvZCBSZWZsZWN0ZWQgb3Igc3RhdGljIG1ldGhvZCBiZWluZyBjYWxsZWRcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gcmVxdWVzdERhdGEgUmVxdWVzdCBkYXRhXG4gKiBAcGFyYW0ge1JQQ0ltcGxDYWxsYmFja30gY2FsbGJhY2sgQ2FsbGJhY2sgZnVuY3Rpb25cbiAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gKiBAZXhhbXBsZVxuICogZnVuY3Rpb24gcnBjSW1wbChtZXRob2QsIHJlcXVlc3REYXRhLCBjYWxsYmFjaykge1xuICogICAgIGlmIChwcm90b2J1Zi51dGlsLmxjRmlyc3QobWV0aG9kLm5hbWUpICE9PSBcIm15TWV0aG9kXCIpIC8vIGNvbXBhdGlibGUgd2l0aCBzdGF0aWMgY29kZVxuICogICAgICAgICB0aHJvdyBFcnJvcihcIm5vIHN1Y2ggbWV0aG9kXCIpO1xuICogICAgIGFzeW5jaHJvbm91c2x5T2J0YWluQVJlc3BvbnNlKHJlcXVlc3REYXRhLCBmdW5jdGlvbihlcnIsIHJlc3BvbnNlRGF0YSkge1xuICogICAgICAgICBjYWxsYmFjayhlcnIsIHJlc3BvbnNlRGF0YSk7XG4gKiAgICAgfSk7XG4gKiB9XG4gKi9cblxuLyoqXG4gKiBOb2RlLXN0eWxlIGNhbGxiYWNrIGFzIHVzZWQgYnkge0BsaW5rIFJQQ0ltcGx9LlxuICogQHR5cGVkZWYgUlBDSW1wbENhbGxiYWNrXG4gKiBAdHlwZSB7ZnVuY3Rpb259XG4gKiBAcGFyYW0ge0Vycm9yfG51bGx9IGVycm9yIEVycm9yLCBpZiBhbnksIG90aGVyd2lzZSBgbnVsbGBcbiAqIEBwYXJhbSB7VWludDhBcnJheXxudWxsfSBbcmVzcG9uc2VdIFJlc3BvbnNlIGRhdGEgb3IgYG51bGxgIHRvIHNpZ25hbCBlbmQgb2Ygc3RyZWFtLCBpZiB0aGVyZSBoYXNuJ3QgYmVlbiBhbiBlcnJvclxuICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAqL1xuXG5ycGMuU2VydmljZSA9IHJlcXVpcmUoXCIuL3JwYy9zZXJ2aWNlXCIpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5tb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vKipcbiAqIE5hbWVkIHJvb3RzLlxuICogVGhpcyBpcyB3aGVyZSBwYmpzIHN0b3JlcyBnZW5lcmF0ZWQgc3RydWN0dXJlcyAodGhlIG9wdGlvbiBgLXIsIC0tcm9vdGAgc3BlY2lmaWVzIGEgbmFtZSkuXG4gKiBDYW4gYWxzbyBiZSB1c2VkIG1hbnVhbGx5IHRvIG1ha2Ugcm9vdHMgYXZhaWxhYmxlIGFjY3Jvc3MgbW9kdWxlcy5cbiAqIEBuYW1lIHJvb3RzXG4gKiBAdHlwZSB7T2JqZWN0LjxzdHJpbmcsUm9vdD59XG4gKiBAZXhhbXBsZVxuICogLy8gcGJqcyAtciBteXJvb3QgLW8gY29tcGlsZWQuanMgLi4uXG4gKlxuICogLy8gaW4gYW5vdGhlciBtb2R1bGU6XG4gKiByZXF1aXJlKFwiLi9jb21waWxlZC5qc1wiKTtcbiAqXG4gKiAvLyBpbiBhbnkgc3Vic2VxdWVudCBtb2R1bGU6XG4gKiB2YXIgcm9vdCA9IHByb3RvYnVmLnJvb3RzW1wibXlyb290XCJdO1xuICovXG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBwcm90b2J1ZiA9IGV4cG9ydHM7XG5cbi8qKlxuICogQnVpbGQgdHlwZSwgb25lIG9mIGBcImZ1bGxcImAsIGBcImxpZ2h0XCJgIG9yIGBcIm1pbmltYWxcImAuXG4gKiBAbmFtZSBidWlsZFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBjb25zdFxuICovXG5wcm90b2J1Zi5idWlsZCA9IFwibWluaW1hbFwiO1xuXG4vLyBTZXJpYWxpemF0aW9uXG5wcm90b2J1Zi5Xcml0ZXIgICAgICAgPSByZXF1aXJlKFwiLi93cml0ZXJcIik7XG5wcm90b2J1Zi5CdWZmZXJXcml0ZXIgPSByZXF1aXJlKFwiLi93cml0ZXJfYnVmZmVyXCIpO1xucHJvdG9idWYuUmVhZGVyICAgICAgID0gcmVxdWlyZShcIi4vcmVhZGVyXCIpO1xucHJvdG9idWYuQnVmZmVyUmVhZGVyID0gcmVxdWlyZShcIi4vcmVhZGVyX2J1ZmZlclwiKTtcblxuLy8gVXRpbGl0eVxucHJvdG9idWYudXRpbCAgICAgICAgID0gcmVxdWlyZShcIi4vdXRpbC9taW5pbWFsXCIpO1xucHJvdG9idWYucnBjICAgICAgICAgID0gcmVxdWlyZShcIi4vcnBjXCIpO1xucHJvdG9idWYucm9vdHMgICAgICAgID0gcmVxdWlyZShcIi4vcm9vdHNcIik7XG5wcm90b2J1Zi5jb25maWd1cmUgICAgPSBjb25maWd1cmU7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4vKipcbiAqIFJlY29uZmlndXJlcyB0aGUgbGlicmFyeSBhY2NvcmRpbmcgdG8gdGhlIGVudmlyb25tZW50LlxuICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAqL1xuZnVuY3Rpb24gY29uZmlndXJlKCkge1xuICAgIHByb3RvYnVmLnV0aWwuX2NvbmZpZ3VyZSgpO1xuICAgIHByb3RvYnVmLldyaXRlci5fY29uZmlndXJlKHByb3RvYnVmLkJ1ZmZlcldyaXRlcik7XG4gICAgcHJvdG9idWYuUmVhZGVyLl9jb25maWd1cmUocHJvdG9idWYuQnVmZmVyUmVhZGVyKTtcbn1cblxuLy8gU2V0IHVwIGJ1ZmZlciB1dGlsaXR5IGFjY29yZGluZyB0byB0aGUgZW52aXJvbm1lbnRcbmNvbmZpZ3VyZSgpO1xuIiwiLy8gbWluaW1hbCBsaWJyYXJ5IGVudHJ5IHBvaW50LlxuXG5cInVzZSBzdHJpY3RcIjtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4vc3JjL2luZGV4LW1pbmltYWxcIik7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0ICogYXMgX20wIGZyb20gJ3Byb3RvYnVmanMvbWluaW1hbCdcblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgcHJvdG9idWZQYWNrYWdlID0gJydcblxuZXhwb3J0IGludGVyZmFjZSBQQkFuaW1hdG9yIHtcbiAgc3RhdGVzOiBQQkFuaW1hdGlvblN0YXRlW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQQkFuaW1hdGlvblN0YXRlIHtcbiAgbmFtZTogc3RyaW5nXG4gIGNsaXA6IHN0cmluZ1xuICBwbGF5aW5nOiBib29sZWFuXG4gIHdlaWdodDogbnVtYmVyXG4gIHNwZWVkOiBudW1iZXJcbiAgbG9vcDogYm9vbGVhblxuICBzaG91bGRSZXNldDogYm9vbGVhblxufVxuXG5mdW5jdGlvbiBjcmVhdGVCYXNlUEJBbmltYXRvcigpOiBQQkFuaW1hdG9yIHtcbiAgcmV0dXJuIHsgc3RhdGVzOiBbXSB9XG59XG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFBCQW5pbWF0b3IgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBQQkFuaW1hdG9yLCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgZm9yIChjb25zdCB2IG9mIG1lc3NhZ2Uuc3RhdGVzKSB7XG4gICAgICBQQkFuaW1hdGlvblN0YXRlLmVuY29kZSh2ISwgd3JpdGVyLnVpbnQzMigxMCkuZm9yaygpKS5sZGVsaW0oKVxuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyXG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogUEJBbmltYXRvciB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBuZXcgX20wLlJlYWRlcihpbnB1dClcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlUEJBbmltYXRvcigpXG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKVxuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIG1lc3NhZ2Uuc3RhdGVzLnB1c2goUEJBbmltYXRpb25TdGF0ZS5kZWNvZGUocmVhZGVyLCByZWFkZXIudWludDMyKCkpKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpXG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2VcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVCYXNlUEJBbmltYXRpb25TdGF0ZSgpOiBQQkFuaW1hdGlvblN0YXRlIHtcbiAgcmV0dXJuIHsgbmFtZTogJycsIGNsaXA6ICcnLCBwbGF5aW5nOiBmYWxzZSwgd2VpZ2h0OiAwLCBzcGVlZDogMCwgbG9vcDogZmFsc2UsIHNob3VsZFJlc2V0OiBmYWxzZSB9XG59XG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFBCQW5pbWF0aW9uU3RhdGUgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBQQkFuaW1hdGlvblN0YXRlLCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgaWYgKG1lc3NhZ2UubmFtZSAhPT0gJycpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTApLnN0cmluZyhtZXNzYWdlLm5hbWUpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmNsaXAgIT09ICcnKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE4KS5zdHJpbmcobWVzc2FnZS5jbGlwKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5wbGF5aW5nID09PSB0cnVlKSB7XG4gICAgICB3cml0ZXIudWludDMyKDI0KS5ib29sKG1lc3NhZ2UucGxheWluZylcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uud2VpZ2h0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDM3KS5mbG9hdChtZXNzYWdlLndlaWdodClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uuc3BlZWQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDUpLmZsb2F0KG1lc3NhZ2Uuc3BlZWQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmxvb3AgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDgpLmJvb2wobWVzc2FnZS5sb29wKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5zaG91bGRSZXNldCA9PT0gdHJ1ZSkge1xuICAgICAgd3JpdGVyLnVpbnQzMig1NikuYm9vbChtZXNzYWdlLnNob3VsZFJlc2V0KVxuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyXG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogUEJBbmltYXRpb25TdGF0ZSB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBuZXcgX20wLlJlYWRlcihpbnB1dClcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlUEJBbmltYXRpb25TdGF0ZSgpXG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKVxuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIG1lc3NhZ2UubmFtZSA9IHJlYWRlci5zdHJpbmcoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBtZXNzYWdlLmNsaXAgPSByZWFkZXIuc3RyaW5nKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgbWVzc2FnZS5wbGF5aW5nID0gcmVhZGVyLmJvb2woKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBtZXNzYWdlLndlaWdodCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIG1lc3NhZ2Uuc3BlZWQgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICBtZXNzYWdlLmxvb3AgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIG1lc3NhZ2Uuc2hvdWxkUmVzZXQgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNylcbiAgICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZVxuICB9XG59XG4iLCJpbXBvcnQgeyBFY3NUeXBlIH0gZnJvbSAnLi4vLi4vYnVpbHQtaW4tdHlwZXMvRWNzVHlwZSdcbmltcG9ydCB7IEJ5dGVCdWZmZXIgfSBmcm9tICcuLi8uLi9zZXJpYWxpemF0aW9uL0J5dGVCdWZmZXInXG5pbXBvcnQgeyBQQkFuaW1hdG9yIH0gZnJvbSAnLi9wYi9BbmltYXRvci5nZW4nXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QT05FTlRfSUQgPSAxMDQyXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBBbmltYXRvcjogRWNzVHlwZTxQQkFuaW1hdG9yPiA9IHtcbiAgc2VyaWFsaXplKHZhbHVlOiBQQkFuaW1hdG9yLCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgY29uc3Qgd3JpdGVyID0gUEJBbmltYXRvci5lbmNvZGUodmFsdWUpXG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkod3JpdGVyLmZpbmlzaCgpLCAwLCB3cml0ZXIubGVuKVxuICAgIGJ1aWxkZXIud3JpdGVCdWZmZXIoYnVmZmVyLCBmYWxzZSlcbiAgfSxcbiAgZGVzZXJpYWxpemUocmVhZGVyOiBCeXRlQnVmZmVyKTogUEJBbmltYXRvciB7XG4gICAgcmV0dXJuIFBCQW5pbWF0b3IuZGVjb2RlKHJlYWRlci5idWZmZXIoKSwgcmVhZGVyLnJlbWFpbmluZ0J5dGVzKCkpXG4gIH0sXG4gIGNyZWF0ZSgpOiBQQkFuaW1hdG9yIHtcbiAgICAvLyBUT0RPOiB0aGlzIGlzIGEgaGFjay5cbiAgICByZXR1cm4gUEJBbmltYXRvci5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoKSlcbiAgfVxufVxuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCAqIGFzIF9tMCBmcm9tICdwcm90b2J1ZmpzL21pbmltYWwnXG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9ICcnXG5cbmV4cG9ydCBpbnRlcmZhY2UgUEJBdWRpb1NvdXJjZSB7XG4gIHBsYXlpbmc6IGJvb2xlYW5cbiAgdm9sdW1lOiBudW1iZXJcbiAgbG9vcDogYm9vbGVhblxuICBwaXRjaDogbnVtYmVyXG4gIHBsYXllZEF0VGltZXN0YW1wOiBudW1iZXJcbiAgYXVkaW9DbGlwVXJsOiBzdHJpbmdcbn1cblxuZnVuY3Rpb24gY3JlYXRlQmFzZVBCQXVkaW9Tb3VyY2UoKTogUEJBdWRpb1NvdXJjZSB7XG4gIHJldHVybiB7IHBsYXlpbmc6IGZhbHNlLCB2b2x1bWU6IDAsIGxvb3A6IGZhbHNlLCBwaXRjaDogMCwgcGxheWVkQXRUaW1lc3RhbXA6IDAsIGF1ZGlvQ2xpcFVybDogJycgfVxufVxuXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBQQkF1ZGlvU291cmNlID0ge1xuICBlbmNvZGUobWVzc2FnZTogUEJBdWRpb1NvdXJjZSwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLnBsYXlpbmcgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoOCkuYm9vbChtZXNzYWdlLnBsYXlpbmcpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnZvbHVtZSAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigyMSkuZmxvYXQobWVzc2FnZS52b2x1bWUpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmxvb3AgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjQpLmJvb2wobWVzc2FnZS5sb29wKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5waXRjaCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigzNykuZmxvYXQobWVzc2FnZS5waXRjaClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucGxheWVkQXRUaW1lc3RhbXAgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDApLmludDMyKG1lc3NhZ2UucGxheWVkQXRUaW1lc3RhbXApXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmF1ZGlvQ2xpcFVybCAhPT0gJycpIHtcbiAgICAgIHdyaXRlci51aW50MzIoNTApLnN0cmluZyhtZXNzYWdlLmF1ZGlvQ2xpcFVybClcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlclxuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IFBCQXVkaW9Tb3VyY2Uge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogbmV3IF9tMC5SZWFkZXIoaW5wdXQpXG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGhcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVBCQXVkaW9Tb3VyY2UoKVxuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKClcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBtZXNzYWdlLnBsYXlpbmcgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIG1lc3NhZ2Uudm9sdW1lID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgbWVzc2FnZS5sb29wID0gcmVhZGVyLmJvb2woKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBtZXNzYWdlLnBpdGNoID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgbWVzc2FnZS5wbGF5ZWRBdFRpbWVzdGFtcCA9IHJlYWRlci5pbnQzMigpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIG1lc3NhZ2UuYXVkaW9DbGlwVXJsID0gcmVhZGVyLnN0cmluZygpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNylcbiAgICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZVxuICB9XG59XG4iLCJpbXBvcnQgeyBFY3NUeXBlIH0gZnJvbSAnLi4vLi4vYnVpbHQtaW4tdHlwZXMvRWNzVHlwZSdcbmltcG9ydCB7IEJ5dGVCdWZmZXIgfSBmcm9tICcuLi8uLi9zZXJpYWxpemF0aW9uL0J5dGVCdWZmZXInXG5pbXBvcnQgeyBQQkF1ZGlvU291cmNlIH0gZnJvbSAnLi9wYi9BdWRpb1NvdXJjZS5nZW4nXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QT05FTlRfSUQgPSAxMDIwXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBBdWRpb1NvdXJjZTogRWNzVHlwZTxQQkF1ZGlvU291cmNlPiA9IHtcbiAgc2VyaWFsaXplKHZhbHVlOiBQQkF1ZGlvU291cmNlLCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgY29uc3Qgd3JpdGVyID0gUEJBdWRpb1NvdXJjZS5lbmNvZGUodmFsdWUpXG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkod3JpdGVyLmZpbmlzaCgpLCAwLCB3cml0ZXIubGVuKVxuICAgIGJ1aWxkZXIud3JpdGVCdWZmZXIoYnVmZmVyLCBmYWxzZSlcbiAgfSxcbiAgZGVzZXJpYWxpemUocmVhZGVyOiBCeXRlQnVmZmVyKTogUEJBdWRpb1NvdXJjZSB7XG4gICAgcmV0dXJuIFBCQXVkaW9Tb3VyY2UuZGVjb2RlKHJlYWRlci5idWZmZXIoKSwgcmVhZGVyLnJlbWFpbmluZ0J5dGVzKCkpXG4gIH0sXG4gIGNyZWF0ZSgpOiBQQkF1ZGlvU291cmNlIHtcbiAgICAvLyBUT0RPOiB0aGlzIGlzIGEgaGFjay5cbiAgICByZXR1cm4gUEJBdWRpb1NvdXJjZS5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoKSlcbiAgfVxufVxuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCAqIGFzIF9tMCBmcm9tICdwcm90b2J1ZmpzL21pbmltYWwnXG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9ICcnXG5cbmV4cG9ydCBpbnRlcmZhY2UgUEJBdWRpb1N0cmVhbSB7XG4gIHBsYXlpbmc6IGJvb2xlYW5cbiAgdm9sdW1lOiBudW1iZXJcbiAgdXJsOiBzdHJpbmdcbn1cblxuZnVuY3Rpb24gY3JlYXRlQmFzZVBCQXVkaW9TdHJlYW0oKTogUEJBdWRpb1N0cmVhbSB7XG4gIHJldHVybiB7IHBsYXlpbmc6IGZhbHNlLCB2b2x1bWU6IDAsIHVybDogJycgfVxufVxuXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBQQkF1ZGlvU3RyZWFtID0ge1xuICBlbmNvZGUobWVzc2FnZTogUEJBdWRpb1N0cmVhbSwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLnBsYXlpbmcgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoOCkuYm9vbChtZXNzYWdlLnBsYXlpbmcpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnZvbHVtZSAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigyMSkuZmxvYXQobWVzc2FnZS52b2x1bWUpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnVybCAhPT0gJycpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjYpLnN0cmluZyhtZXNzYWdlLnVybClcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlclxuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IFBCQXVkaW9TdHJlYW0ge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogbmV3IF9tMC5SZWFkZXIoaW5wdXQpXG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGhcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVBCQXVkaW9TdHJlYW0oKVxuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKClcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBtZXNzYWdlLnBsYXlpbmcgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIG1lc3NhZ2Uudm9sdW1lID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgbWVzc2FnZS51cmwgPSByZWFkZXIuc3RyaW5nKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlXG4gIH1cbn1cbiIsImltcG9ydCB7IEVjc1R5cGUgfSBmcm9tICcuLi8uLi9idWlsdC1pbi10eXBlcy9FY3NUeXBlJ1xuaW1wb3J0IHsgQnl0ZUJ1ZmZlciB9IGZyb20gJy4uLy4uL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IFBCQXVkaW9TdHJlYW0gfSBmcm9tICcuL3BiL0F1ZGlvU3RyZWFtLmdlbidcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IENPTVBPTkVOVF9JRCA9IDEwMjFcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IEF1ZGlvU3RyZWFtOiBFY3NUeXBlPFBCQXVkaW9TdHJlYW0+ID0ge1xuICBzZXJpYWxpemUodmFsdWU6IFBCQXVkaW9TdHJlYW0sIGJ1aWxkZXI6IEJ5dGVCdWZmZXIpOiB2b2lkIHtcbiAgICBjb25zdCB3cml0ZXIgPSBQQkF1ZGlvU3RyZWFtLmVuY29kZSh2YWx1ZSlcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhBcnJheSh3cml0ZXIuZmluaXNoKCksIDAsIHdyaXRlci5sZW4pXG4gICAgYnVpbGRlci53cml0ZUJ1ZmZlcihidWZmZXIsIGZhbHNlKVxuICB9LFxuICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBQQkF1ZGlvU3RyZWFtIHtcbiAgICByZXR1cm4gUEJBdWRpb1N0cmVhbS5kZWNvZGUocmVhZGVyLmJ1ZmZlcigpLCByZWFkZXIucmVtYWluaW5nQnl0ZXMoKSlcbiAgfSxcbiAgY3JlYXRlKCk6IFBCQXVkaW9TdHJlYW0ge1xuICAgIC8vIFRPRE86IHRoaXMgaXMgYSBoYWNrLlxuICAgIHJldHVybiBQQkF1ZGlvU3RyZWFtLmRlY29kZShuZXcgVWludDhBcnJheSgpKVxuICB9XG59XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0ICogYXMgX20wIGZyb20gJ3Byb3RvYnVmanMvbWluaW1hbCdcblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgcHJvdG9idWZQYWNrYWdlID0gJydcblxuZXhwb3J0IGludGVyZmFjZSBQQkJveFNoYXBlIHtcbiAgd2l0aENvbGxpc2lvbnM6IGJvb2xlYW5cbiAgaXNQb2ludGVyQmxvY2tlcjogYm9vbGVhblxuICAvKiogVE9ETzogc2hvdWxkIHZpc2libGUgYmUgYW5vdGhlciBjb21wb25lbnQ/IHRoYXQgbWF5YmUgYWZmZWN0cyBhbGwgdGhlIGVudGl0aWVzICovXG4gIHZpc2libGU6IGJvb2xlYW5cbiAgdXZzOiBudW1iZXJbXVxufVxuXG5mdW5jdGlvbiBjcmVhdGVCYXNlUEJCb3hTaGFwZSgpOiBQQkJveFNoYXBlIHtcbiAgcmV0dXJuIHsgd2l0aENvbGxpc2lvbnM6IGZhbHNlLCBpc1BvaW50ZXJCbG9ja2VyOiBmYWxzZSwgdmlzaWJsZTogZmFsc2UsIHV2czogW10gfVxufVxuXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBQQkJveFNoYXBlID0ge1xuICBlbmNvZGUobWVzc2FnZTogUEJCb3hTaGFwZSwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLndpdGhDb2xsaXNpb25zID09PSB0cnVlKSB7XG4gICAgICB3cml0ZXIudWludDMyKDgpLmJvb2wobWVzc2FnZS53aXRoQ29sbGlzaW9ucylcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuaXNQb2ludGVyQmxvY2tlciA9PT0gdHJ1ZSkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxNikuYm9vbChtZXNzYWdlLmlzUG9pbnRlckJsb2NrZXIpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnZpc2libGUgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjQpLmJvb2wobWVzc2FnZS52aXNpYmxlKVxuICAgIH1cbiAgICB3cml0ZXIudWludDMyKDM0KS5mb3JrKClcbiAgICBmb3IgKGNvbnN0IHYgb2YgbWVzc2FnZS51dnMpIHtcbiAgICAgIHdyaXRlci5mbG9hdCh2KVxuICAgIH1cbiAgICB3cml0ZXIubGRlbGltKClcbiAgICByZXR1cm4gd3JpdGVyXG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogUEJCb3hTaGFwZSB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBuZXcgX20wLlJlYWRlcihpbnB1dClcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlUEJCb3hTaGFwZSgpXG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKVxuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIG1lc3NhZ2Uud2l0aENvbGxpc2lvbnMgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIG1lc3NhZ2UuaXNQb2ludGVyQmxvY2tlciA9IHJlYWRlci5ib29sKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgbWVzc2FnZS52aXNpYmxlID0gcmVhZGVyLmJvb2woKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBpZiAoKHRhZyAmIDcpID09PSAyKSB7XG4gICAgICAgICAgICBjb25zdCBlbmQyID0gcmVhZGVyLnVpbnQzMigpICsgcmVhZGVyLnBvc1xuICAgICAgICAgICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQyKSB7XG4gICAgICAgICAgICAgIG1lc3NhZ2UudXZzLnB1c2gocmVhZGVyLmZsb2F0KCkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1lc3NhZ2UudXZzLnB1c2gocmVhZGVyLmZsb2F0KCkpXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpXG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2VcbiAgfVxufVxuIiwiaW1wb3J0IHsgRWNzVHlwZSB9IGZyb20gJy4uLy4uL2J1aWx0LWluLXR5cGVzL0Vjc1R5cGUnXG5pbXBvcnQgeyBCeXRlQnVmZmVyIH0gZnJvbSAnLi4vLi4vc2VyaWFsaXphdGlvbi9CeXRlQnVmZmVyJ1xuaW1wb3J0IHsgUEJCb3hTaGFwZSB9IGZyb20gJy4vcGIvQm94U2hhcGUuZ2VuJ1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgQ09NUE9ORU5UX0lEID0gMTAxM1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgQm94U2hhcGU6IEVjc1R5cGU8UEJCb3hTaGFwZT4gPSB7XG4gIHNlcmlhbGl6ZSh2YWx1ZTogUEJCb3hTaGFwZSwgYnVpbGRlcjogQnl0ZUJ1ZmZlcik6IHZvaWQge1xuICAgIGNvbnN0IHdyaXRlciA9IFBCQm94U2hhcGUuZW5jb2RlKHZhbHVlKVxuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KHdyaXRlci5maW5pc2goKSwgMCwgd3JpdGVyLmxlbilcbiAgICBidWlsZGVyLndyaXRlQnVmZmVyKGJ1ZmZlciwgZmFsc2UpXG4gIH0sXG4gIGRlc2VyaWFsaXplKHJlYWRlcjogQnl0ZUJ1ZmZlcik6IFBCQm94U2hhcGUge1xuICAgIHJldHVybiBQQkJveFNoYXBlLmRlY29kZShyZWFkZXIuYnVmZmVyKCksIHJlYWRlci5yZW1haW5pbmdCeXRlcygpKVxuICB9LFxuICBjcmVhdGUoKTogUEJCb3hTaGFwZSB7XG4gICAgLy8gVE9ETzogdGhpcyBpcyBhIGhhY2suXG4gICAgcmV0dXJuIFBCQm94U2hhcGUuZGVjb2RlKG5ldyBVaW50OEFycmF5KCkpXG4gIH1cbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgKiBhcyBfbTAgZnJvbSAncHJvdG9idWZqcy9taW5pbWFsJ1xuXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBwcm90b2J1ZlBhY2thZ2UgPSAnJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFBCQ3lsaW5kZXJTaGFwZSB7XG4gIHdpdGhDb2xsaXNpb25zOiBib29sZWFuXG4gIGlzUG9pbnRlckJsb2NrZXI6IGJvb2xlYW5cbiAgLyoqIFRPRE86IHNob3VsZCB2aXNpYmxlIGJlIGFub3RoZXIgY29tcG9uZW50PyB0aGF0IG1heWJlIGFmZmVjdHMgYWxsIHRoZSBlbnRpdGllcyAqL1xuICB2aXNpYmxlOiBib29sZWFuXG4gIHJhZGl1c1RvcDogbnVtYmVyXG4gIHJhZGl1c0JvdHRvbTogbnVtYmVyXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VQQkN5bGluZGVyU2hhcGUoKTogUEJDeWxpbmRlclNoYXBlIHtcbiAgcmV0dXJuIHsgd2l0aENvbGxpc2lvbnM6IGZhbHNlLCBpc1BvaW50ZXJCbG9ja2VyOiBmYWxzZSwgdmlzaWJsZTogZmFsc2UsIHJhZGl1c1RvcDogMCwgcmFkaXVzQm90dG9tOiAwIH1cbn1cblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgUEJDeWxpbmRlclNoYXBlID0ge1xuICBlbmNvZGUobWVzc2FnZTogUEJDeWxpbmRlclNoYXBlLCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgaWYgKG1lc3NhZ2Uud2l0aENvbGxpc2lvbnMgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoOCkuYm9vbChtZXNzYWdlLndpdGhDb2xsaXNpb25zKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5pc1BvaW50ZXJCbG9ja2VyID09PSB0cnVlKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE2KS5ib29sKG1lc3NhZ2UuaXNQb2ludGVyQmxvY2tlcilcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UudmlzaWJsZSA9PT0gdHJ1ZSkge1xuICAgICAgd3JpdGVyLnVpbnQzMigyNCkuYm9vbChtZXNzYWdlLnZpc2libGUpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnJhZGl1c1RvcCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigzNykuZmxvYXQobWVzc2FnZS5yYWRpdXNUb3ApXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnJhZGl1c0JvdHRvbSAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig0NSkuZmxvYXQobWVzc2FnZS5yYWRpdXNCb3R0b20pXG4gICAgfVxuICAgIHJldHVybiB3cml0ZXJcbiAgfSxcblxuICBkZWNvZGUoaW5wdXQ6IF9tMC5SZWFkZXIgfCBVaW50OEFycmF5LCBsZW5ndGg/OiBudW1iZXIpOiBQQkN5bGluZGVyU2hhcGUge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogbmV3IF9tMC5SZWFkZXIoaW5wdXQpXG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGhcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVBCQ3lsaW5kZXJTaGFwZSgpXG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKVxuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIG1lc3NhZ2Uud2l0aENvbGxpc2lvbnMgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIG1lc3NhZ2UuaXNQb2ludGVyQmxvY2tlciA9IHJlYWRlci5ib29sKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgbWVzc2FnZS52aXNpYmxlID0gcmVhZGVyLmJvb2woKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBtZXNzYWdlLnJhZGl1c1RvcCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIG1lc3NhZ2UucmFkaXVzQm90dG9tID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlXG4gIH1cbn1cbiIsImltcG9ydCB7IEVjc1R5cGUgfSBmcm9tICcuLi8uLi9idWlsdC1pbi10eXBlcy9FY3NUeXBlJ1xuaW1wb3J0IHsgQnl0ZUJ1ZmZlciB9IGZyb20gJy4uLy4uL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IFBCQ3lsaW5kZXJTaGFwZSB9IGZyb20gJy4vcGIvQ3lsaW5kZXJTaGFwZS5nZW4nXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QT05FTlRfSUQgPSAxMDE2XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBDeWxpbmRlclNoYXBlOiBFY3NUeXBlPFBCQ3lsaW5kZXJTaGFwZT4gPSB7XG4gIHNlcmlhbGl6ZSh2YWx1ZTogUEJDeWxpbmRlclNoYXBlLCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgY29uc3Qgd3JpdGVyID0gUEJDeWxpbmRlclNoYXBlLmVuY29kZSh2YWx1ZSlcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhBcnJheSh3cml0ZXIuZmluaXNoKCksIDAsIHdyaXRlci5sZW4pXG4gICAgYnVpbGRlci53cml0ZUJ1ZmZlcihidWZmZXIsIGZhbHNlKVxuICB9LFxuICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBQQkN5bGluZGVyU2hhcGUge1xuICAgIHJldHVybiBQQkN5bGluZGVyU2hhcGUuZGVjb2RlKHJlYWRlci5idWZmZXIoKSwgcmVhZGVyLnJlbWFpbmluZ0J5dGVzKCkpXG4gIH0sXG4gIGNyZWF0ZSgpOiBQQkN5bGluZGVyU2hhcGUge1xuICAgIC8vIFRPRE86IHRoaXMgaXMgYSBoYWNrLlxuICAgIHJldHVybiBQQkN5bGluZGVyU2hhcGUuZGVjb2RlKG5ldyBVaW50OEFycmF5KCkpXG4gIH1cbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgKiBhcyBfbTAgZnJvbSAncHJvdG9idWZqcy9taW5pbWFsJ1xuXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBwcm90b2J1ZlBhY2thZ2UgPSAnJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFBCR0xURlNoYXBlIHtcbiAgd2l0aENvbGxpc2lvbnM6IGJvb2xlYW5cbiAgaXNQb2ludGVyQmxvY2tlcjogYm9vbGVhblxuICB2aXNpYmxlOiBib29sZWFuXG4gIHNyYzogc3RyaW5nXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VQQkdMVEZTaGFwZSgpOiBQQkdMVEZTaGFwZSB7XG4gIHJldHVybiB7IHdpdGhDb2xsaXNpb25zOiBmYWxzZSwgaXNQb2ludGVyQmxvY2tlcjogZmFsc2UsIHZpc2libGU6IGZhbHNlLCBzcmM6ICcnIH1cbn1cblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgUEJHTFRGU2hhcGUgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBQQkdMVEZTaGFwZSwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLndpdGhDb2xsaXNpb25zID09PSB0cnVlKSB7XG4gICAgICB3cml0ZXIudWludDMyKDgpLmJvb2wobWVzc2FnZS53aXRoQ29sbGlzaW9ucylcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuaXNQb2ludGVyQmxvY2tlciA9PT0gdHJ1ZSkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxNikuYm9vbChtZXNzYWdlLmlzUG9pbnRlckJsb2NrZXIpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnZpc2libGUgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjQpLmJvb2wobWVzc2FnZS52aXNpYmxlKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5zcmMgIT09ICcnKSB7XG4gICAgICB3cml0ZXIudWludDMyKDM0KS5zdHJpbmcobWVzc2FnZS5zcmMpXG4gICAgfVxuICAgIHJldHVybiB3cml0ZXJcbiAgfSxcblxuICBkZWNvZGUoaW5wdXQ6IF9tMC5SZWFkZXIgfCBVaW50OEFycmF5LCBsZW5ndGg/OiBudW1iZXIpOiBQQkdMVEZTaGFwZSB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBuZXcgX20wLlJlYWRlcihpbnB1dClcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlUEJHTFRGU2hhcGUoKVxuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKClcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBtZXNzYWdlLndpdGhDb2xsaXNpb25zID0gcmVhZGVyLmJvb2woKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBtZXNzYWdlLmlzUG9pbnRlckJsb2NrZXIgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIG1lc3NhZ2UudmlzaWJsZSA9IHJlYWRlci5ib29sKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgbWVzc2FnZS5zcmMgPSByZWFkZXIuc3RyaW5nKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlXG4gIH1cbn1cbiIsImltcG9ydCB7IEVjc1R5cGUgfSBmcm9tICcuLi8uLi9idWlsdC1pbi10eXBlcy9FY3NUeXBlJ1xuaW1wb3J0IHsgQnl0ZUJ1ZmZlciB9IGZyb20gJy4uLy4uL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IFBCR0xURlNoYXBlIH0gZnJvbSAnLi9wYi9HTFRGU2hhcGUuZ2VuJ1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgQ09NUE9ORU5UX0lEID0gMTA0MVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgR0xURlNoYXBlOiBFY3NUeXBlPFBCR0xURlNoYXBlPiA9IHtcbiAgc2VyaWFsaXplKHZhbHVlOiBQQkdMVEZTaGFwZSwgYnVpbGRlcjogQnl0ZUJ1ZmZlcik6IHZvaWQge1xuICAgIGNvbnN0IHdyaXRlciA9IFBCR0xURlNoYXBlLmVuY29kZSh2YWx1ZSlcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhBcnJheSh3cml0ZXIuZmluaXNoKCksIDAsIHdyaXRlci5sZW4pXG4gICAgYnVpbGRlci53cml0ZUJ1ZmZlcihidWZmZXIsIGZhbHNlKVxuICB9LFxuICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBQQkdMVEZTaGFwZSB7XG4gICAgcmV0dXJuIFBCR0xURlNoYXBlLmRlY29kZShyZWFkZXIuYnVmZmVyKCksIHJlYWRlci5yZW1haW5pbmdCeXRlcygpKVxuICB9LFxuICBjcmVhdGUoKTogUEJHTFRGU2hhcGUge1xuICAgIC8vIFRPRE86IHRoaXMgaXMgYSBoYWNrLlxuICAgIHJldHVybiBQQkdMVEZTaGFwZS5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoKSlcbiAgfVxufVxuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCAqIGFzIF9tMCBmcm9tICdwcm90b2J1ZmpzL21pbmltYWwnXG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9ICcnXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sb3IzIHtcbiAgcjogbnVtYmVyXG4gIGc6IG51bWJlclxuICBiOiBudW1iZXJcbn1cblxuZnVuY3Rpb24gY3JlYXRlQmFzZUNvbG9yMygpOiBDb2xvcjMge1xuICByZXR1cm4geyByOiAwLCBnOiAwLCBiOiAwIH1cbn1cblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgQ29sb3IzID0ge1xuICBlbmNvZGUobWVzc2FnZTogQ29sb3IzLCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgaWYgKG1lc3NhZ2UuciAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMykuZmxvYXQobWVzc2FnZS5yKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5nICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDIxKS5mbG9hdChtZXNzYWdlLmcpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmIgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjkpLmZsb2F0KG1lc3NhZ2UuYilcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlclxuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IENvbG9yMyB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBuZXcgX20wLlJlYWRlcihpbnB1dClcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlQ29sb3IzKClcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpXG4gICAgICBzd2l0Y2ggKHRhZyA+Pj4gMykge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgbWVzc2FnZS5yID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgbWVzc2FnZS5nID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgbWVzc2FnZS5iID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlXG4gIH1cbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgeyBDb2xvcjMgfSBmcm9tICcuL2NvbW1vbi9Db2xvcjMuZ2VuJ1xuaW1wb3J0ICogYXMgX20wIGZyb20gJ3Byb3RvYnVmanMvbWluaW1hbCdcblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgcHJvdG9idWZQYWNrYWdlID0gJydcblxuZXhwb3J0IGludGVyZmFjZSBQQk5GVFNoYXBlIHtcbiAgd2l0aENvbGxpc2lvbnM6IGJvb2xlYW5cbiAgaXNQb2ludGVyQmxvY2tlcjogYm9vbGVhblxuICAvKiogVE9ETzogc2hvdWxkIHZpc2libGUgYmUgYW5vdGhlciBjb21wb25lbnQ/IHRoYXQgbWF5YmUgYWZmZWN0cyBhbGwgdGhlIGVudGl0aWVzICovXG4gIHZpc2libGU6IGJvb2xlYW5cbiAgc3JjOiBzdHJpbmdcbiAgYXNzZXRJZDogc3RyaW5nXG4gIHN0eWxlOiBudW1iZXJcbiAgY29sb3I6IENvbG9yMyB8IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBjcmVhdGVCYXNlUEJORlRTaGFwZSgpOiBQQk5GVFNoYXBlIHtcbiAgcmV0dXJuIHtcbiAgICB3aXRoQ29sbGlzaW9uczogZmFsc2UsXG4gICAgaXNQb2ludGVyQmxvY2tlcjogZmFsc2UsXG4gICAgdmlzaWJsZTogZmFsc2UsXG4gICAgc3JjOiAnJyxcbiAgICBhc3NldElkOiAnJyxcbiAgICBzdHlsZTogMCxcbiAgICBjb2xvcjogdW5kZWZpbmVkXG4gIH1cbn1cblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgUEJORlRTaGFwZSA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IFBCTkZUU2hhcGUsIHdyaXRlcjogX20wLldyaXRlciA9IF9tMC5Xcml0ZXIuY3JlYXRlKCkpOiBfbTAuV3JpdGVyIHtcbiAgICBpZiAobWVzc2FnZS53aXRoQ29sbGlzaW9ucyA9PT0gdHJ1ZSkge1xuICAgICAgd3JpdGVyLnVpbnQzMig4KS5ib29sKG1lc3NhZ2Uud2l0aENvbGxpc2lvbnMpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmlzUG9pbnRlckJsb2NrZXIgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTYpLmJvb2wobWVzc2FnZS5pc1BvaW50ZXJCbG9ja2VyKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS52aXNpYmxlID09PSB0cnVlKSB7XG4gICAgICB3cml0ZXIudWludDMyKDI0KS5ib29sKG1lc3NhZ2UudmlzaWJsZSlcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uuc3JjICE9PSAnJykge1xuICAgICAgd3JpdGVyLnVpbnQzMigzNCkuc3RyaW5nKG1lc3NhZ2Uuc3JjKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5hc3NldElkICE9PSAnJykge1xuICAgICAgd3JpdGVyLnVpbnQzMig0Mikuc3RyaW5nKG1lc3NhZ2UuYXNzZXRJZClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uuc3R5bGUgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDgpLmludDMyKG1lc3NhZ2Uuc3R5bGUpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmNvbG9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIENvbG9yMy5lbmNvZGUobWVzc2FnZS5jb2xvciwgd3JpdGVyLnVpbnQzMig1OCkuZm9yaygpKS5sZGVsaW0oKVxuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyXG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogUEJORlRTaGFwZSB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBuZXcgX20wLlJlYWRlcihpbnB1dClcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlUEJORlRTaGFwZSgpXG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKVxuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIG1lc3NhZ2Uud2l0aENvbGxpc2lvbnMgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIG1lc3NhZ2UuaXNQb2ludGVyQmxvY2tlciA9IHJlYWRlci5ib29sKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgbWVzc2FnZS52aXNpYmxlID0gcmVhZGVyLmJvb2woKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBtZXNzYWdlLnNyYyA9IHJlYWRlci5zdHJpbmcoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICBtZXNzYWdlLmFzc2V0SWQgPSByZWFkZXIuc3RyaW5nKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgbWVzc2FnZS5zdHlsZSA9IHJlYWRlci5pbnQzMigpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIG1lc3NhZ2UuY29sb3IgPSBDb2xvcjMuZGVjb2RlKHJlYWRlciwgcmVhZGVyLnVpbnQzMigpKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpXG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2VcbiAgfVxufVxuIiwiaW1wb3J0IHsgRWNzVHlwZSB9IGZyb20gJy4uLy4uL2J1aWx0LWluLXR5cGVzL0Vjc1R5cGUnXG5pbXBvcnQgeyBCeXRlQnVmZmVyIH0gZnJvbSAnLi4vLi4vc2VyaWFsaXphdGlvbi9CeXRlQnVmZmVyJ1xuaW1wb3J0IHsgUEJORlRTaGFwZSB9IGZyb20gJy4vcGIvTkZUU2hhcGUuZ2VuJ1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgQ09NUE9ORU5UX0lEID0gMTA0MFxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgTkZUU2hhcGU6IEVjc1R5cGU8UEJORlRTaGFwZT4gPSB7XG4gIHNlcmlhbGl6ZSh2YWx1ZTogUEJORlRTaGFwZSwgYnVpbGRlcjogQnl0ZUJ1ZmZlcik6IHZvaWQge1xuICAgIGNvbnN0IHdyaXRlciA9IFBCTkZUU2hhcGUuZW5jb2RlKHZhbHVlKVxuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KHdyaXRlci5maW5pc2goKSwgMCwgd3JpdGVyLmxlbilcbiAgICBidWlsZGVyLndyaXRlQnVmZmVyKGJ1ZmZlciwgZmFsc2UpXG4gIH0sXG4gIGRlc2VyaWFsaXplKHJlYWRlcjogQnl0ZUJ1ZmZlcik6IFBCTkZUU2hhcGUge1xuICAgIHJldHVybiBQQk5GVFNoYXBlLmRlY29kZShyZWFkZXIuYnVmZmVyKCksIHJlYWRlci5yZW1haW5pbmdCeXRlcygpKVxuICB9LFxuICBjcmVhdGUoKTogUEJORlRTaGFwZSB7XG4gICAgLy8gVE9ETzogdGhpcyBpcyBhIGhhY2suXG4gICAgcmV0dXJuIFBCTkZUU2hhcGUuZGVjb2RlKG5ldyBVaW50OEFycmF5KCkpXG4gIH1cbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgKiBhcyBfbTAgZnJvbSAncHJvdG9idWZqcy9taW5pbWFsJ1xuXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBwcm90b2J1ZlBhY2thZ2UgPSAnJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFBCT25Qb2ludGVyRG93biB7XG4gIGJ1dHRvbjogbnVtYmVyXG4gIGhvdmVyVGV4dDogc3RyaW5nXG4gIGRpc3RhbmNlOiBudW1iZXJcbiAgc2hvd0ZlZWRiYWNrOiBib29sZWFuXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VQQk9uUG9pbnRlckRvd24oKTogUEJPblBvaW50ZXJEb3duIHtcbiAgcmV0dXJuIHsgYnV0dG9uOiAwLCBob3ZlclRleHQ6ICcnLCBkaXN0YW5jZTogMCwgc2hvd0ZlZWRiYWNrOiBmYWxzZSB9XG59XG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFBCT25Qb2ludGVyRG93biA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IFBCT25Qb2ludGVyRG93biwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLmJ1dHRvbiAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig4KS5pbnQzMihtZXNzYWdlLmJ1dHRvbilcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuaG92ZXJUZXh0ICE9PSAnJykge1xuICAgICAgd3JpdGVyLnVpbnQzMigxOCkuc3RyaW5nKG1lc3NhZ2UuaG92ZXJUZXh0KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5kaXN0YW5jZSAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigyOSkuZmxvYXQobWVzc2FnZS5kaXN0YW5jZSlcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uuc2hvd0ZlZWRiYWNrID09PSB0cnVlKSB7XG4gICAgICB3cml0ZXIudWludDMyKDMyKS5ib29sKG1lc3NhZ2Uuc2hvd0ZlZWRiYWNrKVxuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyXG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogUEJPblBvaW50ZXJEb3duIHtcbiAgICBjb25zdCByZWFkZXIgPSBpbnB1dCBpbnN0YW5jZW9mIF9tMC5SZWFkZXIgPyBpbnB1dCA6IG5ldyBfbTAuUmVhZGVyKGlucHV0KVxuICAgIGxldCBlbmQgPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/IHJlYWRlci5sZW4gOiByZWFkZXIucG9zICsgbGVuZ3RoXG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VQQk9uUG9pbnRlckRvd24oKVxuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKClcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBtZXNzYWdlLmJ1dHRvbiA9IHJlYWRlci5pbnQzMigpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIG1lc3NhZ2UuaG92ZXJUZXh0ID0gcmVhZGVyLnN0cmluZygpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIG1lc3NhZ2UuZGlzdGFuY2UgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBtZXNzYWdlLnNob3dGZWVkYmFjayA9IHJlYWRlci5ib29sKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlXG4gIH1cbn1cbiIsImltcG9ydCB7IEVjc1R5cGUgfSBmcm9tICcuLi8uLi9idWlsdC1pbi10eXBlcy9FY3NUeXBlJ1xuaW1wb3J0IHsgQnl0ZUJ1ZmZlciB9IGZyb20gJy4uLy4uL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IFBCT25Qb2ludGVyRG93biB9IGZyb20gJy4vcGIvT25Qb2ludGVyRG93bi5nZW4nXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QT05FTlRfSUQgPSAxMDYwXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBPblBvaW50ZXJEb3duOiBFY3NUeXBlPFBCT25Qb2ludGVyRG93bj4gPSB7XG4gIHNlcmlhbGl6ZSh2YWx1ZTogUEJPblBvaW50ZXJEb3duLCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgY29uc3Qgd3JpdGVyID0gUEJPblBvaW50ZXJEb3duLmVuY29kZSh2YWx1ZSlcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhBcnJheSh3cml0ZXIuZmluaXNoKCksIDAsIHdyaXRlci5sZW4pXG4gICAgYnVpbGRlci53cml0ZUJ1ZmZlcihidWZmZXIsIGZhbHNlKVxuICB9LFxuICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBQQk9uUG9pbnRlckRvd24ge1xuICAgIHJldHVybiBQQk9uUG9pbnRlckRvd24uZGVjb2RlKHJlYWRlci5idWZmZXIoKSwgcmVhZGVyLnJlbWFpbmluZ0J5dGVzKCkpXG4gIH0sXG4gIGNyZWF0ZSgpOiBQQk9uUG9pbnRlckRvd24ge1xuICAgIC8vIFRPRE86IHRoaXMgaXMgYSBoYWNrLlxuICAgIHJldHVybiBQQk9uUG9pbnRlckRvd24uZGVjb2RlKG5ldyBVaW50OEFycmF5KCkpXG4gIH1cbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgKiBhcyBfbTAgZnJvbSAncHJvdG9idWZqcy9taW5pbWFsJ1xuXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBwcm90b2J1ZlBhY2thZ2UgPSAnJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFZlY3RvcjMge1xuICB4OiBudW1iZXJcbiAgeTogbnVtYmVyXG4gIHo6IG51bWJlclxufVxuXG5mdW5jdGlvbiBjcmVhdGVCYXNlVmVjdG9yMygpOiBWZWN0b3IzIHtcbiAgcmV0dXJuIHsgeDogMCwgeTogMCwgejogMCB9XG59XG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFZlY3RvcjMgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBWZWN0b3IzLCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgaWYgKG1lc3NhZ2UueCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMykuZmxvYXQobWVzc2FnZS54KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS55ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDIxKS5mbG9hdChtZXNzYWdlLnkpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnogIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjkpLmZsb2F0KG1lc3NhZ2UueilcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlclxuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IFZlY3RvcjMge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogbmV3IF9tMC5SZWFkZXIoaW5wdXQpXG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGhcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVZlY3RvcjMoKVxuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKClcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBtZXNzYWdlLnggPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBtZXNzYWdlLnkgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBtZXNzYWdlLnogPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpXG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2VcbiAgfVxufVxuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7IFZlY3RvcjMgfSBmcm9tICcuL2NvbW1vbi9WZWN0b3IzLmdlbidcbmltcG9ydCAqIGFzIF9tMCBmcm9tICdwcm90b2J1ZmpzL21pbmltYWwnXG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9ICcnXG5cbmV4cG9ydCBpbnRlcmZhY2UgUEJPblBvaW50ZXJEb3duUmVzdWx0IHtcbiAgYnV0dG9uOiBudW1iZXJcbiAgbWVzaE5hbWU6IHN0cmluZ1xuICBvcmlnaW46IFZlY3RvcjMgfCB1bmRlZmluZWRcbiAgZGlyZWN0aW9uOiBWZWN0b3IzIHwgdW5kZWZpbmVkXG4gIHBvaW50OiBWZWN0b3IzIHwgdW5kZWZpbmVkXG4gIG5vcm1hbDogVmVjdG9yMyB8IHVuZGVmaW5lZFxuICBkaXN0YW5jZTogbnVtYmVyXG4gIHRpbWVzdGFtcDogbnVtYmVyXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VQQk9uUG9pbnRlckRvd25SZXN1bHQoKTogUEJPblBvaW50ZXJEb3duUmVzdWx0IHtcbiAgcmV0dXJuIHtcbiAgICBidXR0b246IDAsXG4gICAgbWVzaE5hbWU6ICcnLFxuICAgIG9yaWdpbjogdW5kZWZpbmVkLFxuICAgIGRpcmVjdGlvbjogdW5kZWZpbmVkLFxuICAgIHBvaW50OiB1bmRlZmluZWQsXG4gICAgbm9ybWFsOiB1bmRlZmluZWQsXG4gICAgZGlzdGFuY2U6IDAsXG4gICAgdGltZXN0YW1wOiAwXG4gIH1cbn1cblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgUEJPblBvaW50ZXJEb3duUmVzdWx0ID0ge1xuICBlbmNvZGUobWVzc2FnZTogUEJPblBvaW50ZXJEb3duUmVzdWx0LCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgaWYgKG1lc3NhZ2UuYnV0dG9uICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE2KS5pbnQzMihtZXNzYWdlLmJ1dHRvbilcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubWVzaE5hbWUgIT09ICcnKSB7XG4gICAgICB3cml0ZXIudWludDMyKDI2KS5zdHJpbmcobWVzc2FnZS5tZXNoTmFtZSlcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uub3JpZ2luICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIFZlY3RvcjMuZW5jb2RlKG1lc3NhZ2Uub3JpZ2luLCB3cml0ZXIudWludDMyKDM0KS5mb3JrKCkpLmxkZWxpbSgpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmRpcmVjdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBWZWN0b3IzLmVuY29kZShtZXNzYWdlLmRpcmVjdGlvbiwgd3JpdGVyLnVpbnQzMig0MikuZm9yaygpKS5sZGVsaW0oKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5wb2ludCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBWZWN0b3IzLmVuY29kZShtZXNzYWdlLnBvaW50LCB3cml0ZXIudWludDMyKDUwKS5mb3JrKCkpLmxkZWxpbSgpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm5vcm1hbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBWZWN0b3IzLmVuY29kZShtZXNzYWdlLm5vcm1hbCwgd3JpdGVyLnVpbnQzMig1OCkuZm9yaygpKS5sZGVsaW0oKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5kaXN0YW5jZSAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig2OSkuZmxvYXQobWVzc2FnZS5kaXN0YW5jZSlcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UudGltZXN0YW1wICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDcyKS5pbnQzMihtZXNzYWdlLnRpbWVzdGFtcClcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlclxuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IFBCT25Qb2ludGVyRG93blJlc3VsdCB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBuZXcgX20wLlJlYWRlcihpbnB1dClcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlUEJPblBvaW50ZXJEb3duUmVzdWx0KClcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpXG4gICAgICBzd2l0Y2ggKHRhZyA+Pj4gMykge1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgbWVzc2FnZS5idXR0b24gPSByZWFkZXIuaW50MzIoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBtZXNzYWdlLm1lc2hOYW1lID0gcmVhZGVyLnN0cmluZygpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIG1lc3NhZ2Uub3JpZ2luID0gVmVjdG9yMy5kZWNvZGUocmVhZGVyLCByZWFkZXIudWludDMyKCkpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIG1lc3NhZ2UuZGlyZWN0aW9uID0gVmVjdG9yMy5kZWNvZGUocmVhZGVyLCByZWFkZXIudWludDMyKCkpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIG1lc3NhZ2UucG9pbnQgPSBWZWN0b3IzLmRlY29kZShyZWFkZXIsIHJlYWRlci51aW50MzIoKSlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgbWVzc2FnZS5ub3JtYWwgPSBWZWN0b3IzLmRlY29kZShyZWFkZXIsIHJlYWRlci51aW50MzIoKSlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgbWVzc2FnZS5kaXN0YW5jZSA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA5OlxuICAgICAgICAgIG1lc3NhZ2UudGltZXN0YW1wID0gcmVhZGVyLmludDMyKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlXG4gIH1cbn1cbiIsImltcG9ydCB7IEVjc1R5cGUgfSBmcm9tICcuLi8uLi9idWlsdC1pbi10eXBlcy9FY3NUeXBlJ1xuaW1wb3J0IHsgQnl0ZUJ1ZmZlciB9IGZyb20gJy4uLy4uL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IFBCT25Qb2ludGVyRG93blJlc3VsdCB9IGZyb20gJy4vcGIvT25Qb2ludGVyRG93blJlc3VsdC5nZW4nXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QT05FTlRfSUQgPSAxMDY2XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBPblBvaW50ZXJEb3duUmVzdWx0OiBFY3NUeXBlPFBCT25Qb2ludGVyRG93blJlc3VsdD4gPSB7XG4gIHNlcmlhbGl6ZSh2YWx1ZTogUEJPblBvaW50ZXJEb3duUmVzdWx0LCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgY29uc3Qgd3JpdGVyID0gUEJPblBvaW50ZXJEb3duUmVzdWx0LmVuY29kZSh2YWx1ZSlcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhBcnJheSh3cml0ZXIuZmluaXNoKCksIDAsIHdyaXRlci5sZW4pXG4gICAgYnVpbGRlci53cml0ZUJ1ZmZlcihidWZmZXIsIGZhbHNlKVxuICB9LFxuICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBQQk9uUG9pbnRlckRvd25SZXN1bHQge1xuICAgIHJldHVybiBQQk9uUG9pbnRlckRvd25SZXN1bHQuZGVjb2RlKHJlYWRlci5idWZmZXIoKSwgcmVhZGVyLnJlbWFpbmluZ0J5dGVzKCkpXG4gIH0sXG4gIGNyZWF0ZSgpOiBQQk9uUG9pbnRlckRvd25SZXN1bHQge1xuICAgIC8vIFRPRE86IHRoaXMgaXMgYSBoYWNrLlxuICAgIHJldHVybiBQQk9uUG9pbnRlckRvd25SZXN1bHQuZGVjb2RlKG5ldyBVaW50OEFycmF5KCkpXG4gIH1cbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgKiBhcyBfbTAgZnJvbSAncHJvdG9idWZqcy9taW5pbWFsJ1xuXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBwcm90b2J1ZlBhY2thZ2UgPSAnJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFBCT25Qb2ludGVyVXAge1xuICBidXR0b246IG51bWJlclxuICBob3ZlclRleHQ6IHN0cmluZ1xuICBkaXN0YW5jZTogbnVtYmVyXG4gIHNob3dGZWVkYmFjazogYm9vbGVhblxufVxuXG5mdW5jdGlvbiBjcmVhdGVCYXNlUEJPblBvaW50ZXJVcCgpOiBQQk9uUG9pbnRlclVwIHtcbiAgcmV0dXJuIHsgYnV0dG9uOiAwLCBob3ZlclRleHQ6ICcnLCBkaXN0YW5jZTogMCwgc2hvd0ZlZWRiYWNrOiBmYWxzZSB9XG59XG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFBCT25Qb2ludGVyVXAgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBQQk9uUG9pbnRlclVwLCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgaWYgKG1lc3NhZ2UuYnV0dG9uICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDgpLmludDMyKG1lc3NhZ2UuYnV0dG9uKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5ob3ZlclRleHQgIT09ICcnKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE4KS5zdHJpbmcobWVzc2FnZS5ob3ZlclRleHQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmRpc3RhbmNlICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDI5KS5mbG9hdChtZXNzYWdlLmRpc3RhbmNlKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5zaG93RmVlZGJhY2sgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMzIpLmJvb2wobWVzc2FnZS5zaG93RmVlZGJhY2spXG4gICAgfVxuICAgIHJldHVybiB3cml0ZXJcbiAgfSxcblxuICBkZWNvZGUoaW5wdXQ6IF9tMC5SZWFkZXIgfCBVaW50OEFycmF5LCBsZW5ndGg/OiBudW1iZXIpOiBQQk9uUG9pbnRlclVwIHtcbiAgICBjb25zdCByZWFkZXIgPSBpbnB1dCBpbnN0YW5jZW9mIF9tMC5SZWFkZXIgPyBpbnB1dCA6IG5ldyBfbTAuUmVhZGVyKGlucHV0KVxuICAgIGxldCBlbmQgPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/IHJlYWRlci5sZW4gOiByZWFkZXIucG9zICsgbGVuZ3RoXG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VQQk9uUG9pbnRlclVwKClcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpXG4gICAgICBzd2l0Y2ggKHRhZyA+Pj4gMykge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgbWVzc2FnZS5idXR0b24gPSByZWFkZXIuaW50MzIoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBtZXNzYWdlLmhvdmVyVGV4dCA9IHJlYWRlci5zdHJpbmcoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBtZXNzYWdlLmRpc3RhbmNlID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgbWVzc2FnZS5zaG93RmVlZGJhY2sgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNylcbiAgICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZVxuICB9XG59XG4iLCJpbXBvcnQgeyBFY3NUeXBlIH0gZnJvbSAnLi4vLi4vYnVpbHQtaW4tdHlwZXMvRWNzVHlwZSdcbmltcG9ydCB7IEJ5dGVCdWZmZXIgfSBmcm9tICcuLi8uLi9zZXJpYWxpemF0aW9uL0J5dGVCdWZmZXInXG5pbXBvcnQgeyBQQk9uUG9pbnRlclVwIH0gZnJvbSAnLi9wYi9PblBvaW50ZXJVcC5nZW4nXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QT05FTlRfSUQgPSAxMDYxXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBPblBvaW50ZXJVcDogRWNzVHlwZTxQQk9uUG9pbnRlclVwPiA9IHtcbiAgc2VyaWFsaXplKHZhbHVlOiBQQk9uUG9pbnRlclVwLCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgY29uc3Qgd3JpdGVyID0gUEJPblBvaW50ZXJVcC5lbmNvZGUodmFsdWUpXG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkod3JpdGVyLmZpbmlzaCgpLCAwLCB3cml0ZXIubGVuKVxuICAgIGJ1aWxkZXIud3JpdGVCdWZmZXIoYnVmZmVyLCBmYWxzZSlcbiAgfSxcbiAgZGVzZXJpYWxpemUocmVhZGVyOiBCeXRlQnVmZmVyKTogUEJPblBvaW50ZXJVcCB7XG4gICAgcmV0dXJuIFBCT25Qb2ludGVyVXAuZGVjb2RlKHJlYWRlci5idWZmZXIoKSwgcmVhZGVyLnJlbWFpbmluZ0J5dGVzKCkpXG4gIH0sXG4gIGNyZWF0ZSgpOiBQQk9uUG9pbnRlclVwIHtcbiAgICAvLyBUT0RPOiB0aGlzIGlzIGEgaGFjay5cbiAgICByZXR1cm4gUEJPblBvaW50ZXJVcC5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoKSlcbiAgfVxufVxuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7IFZlY3RvcjMgfSBmcm9tICcuL2NvbW1vbi9WZWN0b3IzLmdlbidcbmltcG9ydCAqIGFzIF9tMCBmcm9tICdwcm90b2J1ZmpzL21pbmltYWwnXG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9ICcnXG5cbmV4cG9ydCBpbnRlcmZhY2UgUEJPblBvaW50ZXJVcFJlc3VsdCB7XG4gIGJ1dHRvbjogbnVtYmVyXG4gIG1lc2hOYW1lOiBzdHJpbmdcbiAgb3JpZ2luOiBWZWN0b3IzIHwgdW5kZWZpbmVkXG4gIGRpcmVjdGlvbjogVmVjdG9yMyB8IHVuZGVmaW5lZFxuICBwb2ludDogVmVjdG9yMyB8IHVuZGVmaW5lZFxuICBub3JtYWw6IFZlY3RvcjMgfCB1bmRlZmluZWRcbiAgZGlzdGFuY2U6IG51bWJlclxuICB0aW1lc3RhbXA6IG51bWJlclxufVxuXG5mdW5jdGlvbiBjcmVhdGVCYXNlUEJPblBvaW50ZXJVcFJlc3VsdCgpOiBQQk9uUG9pbnRlclVwUmVzdWx0IHtcbiAgcmV0dXJuIHtcbiAgICBidXR0b246IDAsXG4gICAgbWVzaE5hbWU6ICcnLFxuICAgIG9yaWdpbjogdW5kZWZpbmVkLFxuICAgIGRpcmVjdGlvbjogdW5kZWZpbmVkLFxuICAgIHBvaW50OiB1bmRlZmluZWQsXG4gICAgbm9ybWFsOiB1bmRlZmluZWQsXG4gICAgZGlzdGFuY2U6IDAsXG4gICAgdGltZXN0YW1wOiAwXG4gIH1cbn1cblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgUEJPblBvaW50ZXJVcFJlc3VsdCA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IFBCT25Qb2ludGVyVXBSZXN1bHQsIHdyaXRlcjogX20wLldyaXRlciA9IF9tMC5Xcml0ZXIuY3JlYXRlKCkpOiBfbTAuV3JpdGVyIHtcbiAgICBpZiAobWVzc2FnZS5idXR0b24gIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTYpLmludDMyKG1lc3NhZ2UuYnV0dG9uKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5tZXNoTmFtZSAhPT0gJycpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjYpLnN0cmluZyhtZXNzYWdlLm1lc2hOYW1lKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5vcmlnaW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgVmVjdG9yMy5lbmNvZGUobWVzc2FnZS5vcmlnaW4sIHdyaXRlci51aW50MzIoMzQpLmZvcmsoKSkubGRlbGltKClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuZGlyZWN0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIFZlY3RvcjMuZW5jb2RlKG1lc3NhZ2UuZGlyZWN0aW9uLCB3cml0ZXIudWludDMyKDQyKS5mb3JrKCkpLmxkZWxpbSgpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBvaW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIFZlY3RvcjMuZW5jb2RlKG1lc3NhZ2UucG9pbnQsIHdyaXRlci51aW50MzIoNTApLmZvcmsoKSkubGRlbGltKClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uubm9ybWFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIFZlY3RvcjMuZW5jb2RlKG1lc3NhZ2Uubm9ybWFsLCB3cml0ZXIudWludDMyKDU4KS5mb3JrKCkpLmxkZWxpbSgpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmRpc3RhbmNlICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDY5KS5mbG9hdChtZXNzYWdlLmRpc3RhbmNlKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS50aW1lc3RhbXAgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNzIpLmludDMyKG1lc3NhZ2UudGltZXN0YW1wKVxuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyXG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogUEJPblBvaW50ZXJVcFJlc3VsdCB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBuZXcgX20wLlJlYWRlcihpbnB1dClcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlUEJPblBvaW50ZXJVcFJlc3VsdCgpXG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKVxuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIG1lc3NhZ2UuYnV0dG9uID0gcmVhZGVyLmludDMyKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgbWVzc2FnZS5tZXNoTmFtZSA9IHJlYWRlci5zdHJpbmcoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBtZXNzYWdlLm9yaWdpbiA9IFZlY3RvcjMuZGVjb2RlKHJlYWRlciwgcmVhZGVyLnVpbnQzMigpKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICBtZXNzYWdlLmRpcmVjdGlvbiA9IFZlY3RvcjMuZGVjb2RlKHJlYWRlciwgcmVhZGVyLnVpbnQzMigpKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICBtZXNzYWdlLnBvaW50ID0gVmVjdG9yMy5kZWNvZGUocmVhZGVyLCByZWFkZXIudWludDMyKCkpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIG1lc3NhZ2Uubm9ybWFsID0gVmVjdG9yMy5kZWNvZGUocmVhZGVyLCByZWFkZXIudWludDMyKCkpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgIG1lc3NhZ2UuZGlzdGFuY2UgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICBtZXNzYWdlLnRpbWVzdGFtcCA9IHJlYWRlci5pbnQzMigpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNylcbiAgICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZVxuICB9XG59XG4iLCJpbXBvcnQgeyBFY3NUeXBlIH0gZnJvbSAnLi4vLi4vYnVpbHQtaW4tdHlwZXMvRWNzVHlwZSdcbmltcG9ydCB7IEJ5dGVCdWZmZXIgfSBmcm9tICcuLi8uLi9zZXJpYWxpemF0aW9uL0J5dGVCdWZmZXInXG5pbXBvcnQgeyBQQk9uUG9pbnRlclVwUmVzdWx0IH0gZnJvbSAnLi9wYi9PblBvaW50ZXJVcFJlc3VsdC5nZW4nXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QT05FTlRfSUQgPSAxMDY1XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBPblBvaW50ZXJVcFJlc3VsdDogRWNzVHlwZTxQQk9uUG9pbnRlclVwUmVzdWx0PiA9IHtcbiAgc2VyaWFsaXplKHZhbHVlOiBQQk9uUG9pbnRlclVwUmVzdWx0LCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgY29uc3Qgd3JpdGVyID0gUEJPblBvaW50ZXJVcFJlc3VsdC5lbmNvZGUodmFsdWUpXG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkod3JpdGVyLmZpbmlzaCgpLCAwLCB3cml0ZXIubGVuKVxuICAgIGJ1aWxkZXIud3JpdGVCdWZmZXIoYnVmZmVyLCBmYWxzZSlcbiAgfSxcbiAgZGVzZXJpYWxpemUocmVhZGVyOiBCeXRlQnVmZmVyKTogUEJPblBvaW50ZXJVcFJlc3VsdCB7XG4gICAgcmV0dXJuIFBCT25Qb2ludGVyVXBSZXN1bHQuZGVjb2RlKHJlYWRlci5idWZmZXIoKSwgcmVhZGVyLnJlbWFpbmluZ0J5dGVzKCkpXG4gIH0sXG4gIGNyZWF0ZSgpOiBQQk9uUG9pbnRlclVwUmVzdWx0IHtcbiAgICAvLyBUT0RPOiB0aGlzIGlzIGEgaGFjay5cbiAgICByZXR1cm4gUEJPblBvaW50ZXJVcFJlc3VsdC5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoKSlcbiAgfVxufVxuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCAqIGFzIF9tMCBmcm9tICdwcm90b2J1ZmpzL21pbmltYWwnXG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9ICcnXG5cbmV4cG9ydCBpbnRlcmZhY2UgUEJQbGFuZVNoYXBlIHtcbiAgd2l0aENvbGxpc2lvbnM6IGJvb2xlYW5cbiAgaXNQb2ludGVyQmxvY2tlcjogYm9vbGVhblxuICAvKiogVE9ETzogc2hvdWxkIHZpc2libGUgYmUgYW5vdGhlciBjb21wb25lbnQ/IHRoYXQgbWF5YmUgYWZmZWN0cyBhbGwgdGhlIGVudGl0aWVzICovXG4gIHZpc2libGU6IGJvb2xlYW5cbiAgLyoqIFRPRE86IHRoaXMgY291bGQgYmUgYmV0dGVyIHNlcmlhbGl6ZWQgYXMgdTAwIHYwMCB1MDEgdjAxIHUxMCB2MTAgdTExIHYxMSBmb3Igc3BlZWQgKi9cbiAgdXZzOiBudW1iZXJbXVxufVxuXG5mdW5jdGlvbiBjcmVhdGVCYXNlUEJQbGFuZVNoYXBlKCk6IFBCUGxhbmVTaGFwZSB7XG4gIHJldHVybiB7IHdpdGhDb2xsaXNpb25zOiBmYWxzZSwgaXNQb2ludGVyQmxvY2tlcjogZmFsc2UsIHZpc2libGU6IGZhbHNlLCB1dnM6IFtdIH1cbn1cblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgUEJQbGFuZVNoYXBlID0ge1xuICBlbmNvZGUobWVzc2FnZTogUEJQbGFuZVNoYXBlLCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgaWYgKG1lc3NhZ2Uud2l0aENvbGxpc2lvbnMgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoOCkuYm9vbChtZXNzYWdlLndpdGhDb2xsaXNpb25zKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5pc1BvaW50ZXJCbG9ja2VyID09PSB0cnVlKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE2KS5ib29sKG1lc3NhZ2UuaXNQb2ludGVyQmxvY2tlcilcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UudmlzaWJsZSA9PT0gdHJ1ZSkge1xuICAgICAgd3JpdGVyLnVpbnQzMigyNCkuYm9vbChtZXNzYWdlLnZpc2libGUpXG4gICAgfVxuICAgIHdyaXRlci51aW50MzIoMzQpLmZvcmsoKVxuICAgIGZvciAoY29uc3QgdiBvZiBtZXNzYWdlLnV2cykge1xuICAgICAgd3JpdGVyLmZsb2F0KHYpXG4gICAgfVxuICAgIHdyaXRlci5sZGVsaW0oKVxuICAgIHJldHVybiB3cml0ZXJcbiAgfSxcblxuICBkZWNvZGUoaW5wdXQ6IF9tMC5SZWFkZXIgfCBVaW50OEFycmF5LCBsZW5ndGg/OiBudW1iZXIpOiBQQlBsYW5lU2hhcGUge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogbmV3IF9tMC5SZWFkZXIoaW5wdXQpXG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGhcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVBCUGxhbmVTaGFwZSgpXG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKVxuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIG1lc3NhZ2Uud2l0aENvbGxpc2lvbnMgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIG1lc3NhZ2UuaXNQb2ludGVyQmxvY2tlciA9IHJlYWRlci5ib29sKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgbWVzc2FnZS52aXNpYmxlID0gcmVhZGVyLmJvb2woKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBpZiAoKHRhZyAmIDcpID09PSAyKSB7XG4gICAgICAgICAgICBjb25zdCBlbmQyID0gcmVhZGVyLnVpbnQzMigpICsgcmVhZGVyLnBvc1xuICAgICAgICAgICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQyKSB7XG4gICAgICAgICAgICAgIG1lc3NhZ2UudXZzLnB1c2gocmVhZGVyLmZsb2F0KCkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1lc3NhZ2UudXZzLnB1c2gocmVhZGVyLmZsb2F0KCkpXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpXG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2VcbiAgfVxufVxuIiwiaW1wb3J0IHsgRWNzVHlwZSB9IGZyb20gJy4uLy4uL2J1aWx0LWluLXR5cGVzL0Vjc1R5cGUnXG5pbXBvcnQgeyBCeXRlQnVmZmVyIH0gZnJvbSAnLi4vLi4vc2VyaWFsaXphdGlvbi9CeXRlQnVmZmVyJ1xuaW1wb3J0IHsgUEJQbGFuZVNoYXBlIH0gZnJvbSAnLi9wYi9QbGFuZVNoYXBlLmdlbidcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IENPTVBPTkVOVF9JRCA9IDEwMTRcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFBsYW5lU2hhcGU6IEVjc1R5cGU8UEJQbGFuZVNoYXBlPiA9IHtcbiAgc2VyaWFsaXplKHZhbHVlOiBQQlBsYW5lU2hhcGUsIGJ1aWxkZXI6IEJ5dGVCdWZmZXIpOiB2b2lkIHtcbiAgICBjb25zdCB3cml0ZXIgPSBQQlBsYW5lU2hhcGUuZW5jb2RlKHZhbHVlKVxuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KHdyaXRlci5maW5pc2goKSwgMCwgd3JpdGVyLmxlbilcbiAgICBidWlsZGVyLndyaXRlQnVmZmVyKGJ1ZmZlciwgZmFsc2UpXG4gIH0sXG4gIGRlc2VyaWFsaXplKHJlYWRlcjogQnl0ZUJ1ZmZlcik6IFBCUGxhbmVTaGFwZSB7XG4gICAgcmV0dXJuIFBCUGxhbmVTaGFwZS5kZWNvZGUocmVhZGVyLmJ1ZmZlcigpLCByZWFkZXIucmVtYWluaW5nQnl0ZXMoKSlcbiAgfSxcbiAgY3JlYXRlKCk6IFBCUGxhbmVTaGFwZSB7XG4gICAgLy8gVE9ETzogdGhpcyBpcyBhIGhhY2suXG4gICAgcmV0dXJuIFBCUGxhbmVTaGFwZS5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoKSlcbiAgfVxufVxuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCAqIGFzIF9tMCBmcm9tICdwcm90b2J1ZmpzL21pbmltYWwnXG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9ICcnXG5cbmV4cG9ydCBpbnRlcmZhY2UgUEJTcGhlcmVTaGFwZSB7XG4gIHdpdGhDb2xsaXNpb25zOiBib29sZWFuXG4gIGlzUG9pbnRlckJsb2NrZXI6IGJvb2xlYW5cbiAgdmlzaWJsZTogYm9vbGVhblxufVxuXG5mdW5jdGlvbiBjcmVhdGVCYXNlUEJTcGhlcmVTaGFwZSgpOiBQQlNwaGVyZVNoYXBlIHtcbiAgcmV0dXJuIHsgd2l0aENvbGxpc2lvbnM6IGZhbHNlLCBpc1BvaW50ZXJCbG9ja2VyOiBmYWxzZSwgdmlzaWJsZTogZmFsc2UgfVxufVxuXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBQQlNwaGVyZVNoYXBlID0ge1xuICBlbmNvZGUobWVzc2FnZTogUEJTcGhlcmVTaGFwZSwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLndpdGhDb2xsaXNpb25zID09PSB0cnVlKSB7XG4gICAgICB3cml0ZXIudWludDMyKDgpLmJvb2wobWVzc2FnZS53aXRoQ29sbGlzaW9ucylcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuaXNQb2ludGVyQmxvY2tlciA9PT0gdHJ1ZSkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxNikuYm9vbChtZXNzYWdlLmlzUG9pbnRlckJsb2NrZXIpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnZpc2libGUgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjQpLmJvb2wobWVzc2FnZS52aXNpYmxlKVxuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyXG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogUEJTcGhlcmVTaGFwZSB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBuZXcgX20wLlJlYWRlcihpbnB1dClcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlUEJTcGhlcmVTaGFwZSgpXG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKVxuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIG1lc3NhZ2Uud2l0aENvbGxpc2lvbnMgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIG1lc3NhZ2UuaXNQb2ludGVyQmxvY2tlciA9IHJlYWRlci5ib29sKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgbWVzc2FnZS52aXNpYmxlID0gcmVhZGVyLmJvb2woKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpXG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2VcbiAgfVxufVxuIiwiaW1wb3J0IHsgRWNzVHlwZSB9IGZyb20gJy4uLy4uL2J1aWx0LWluLXR5cGVzL0Vjc1R5cGUnXG5pbXBvcnQgeyBCeXRlQnVmZmVyIH0gZnJvbSAnLi4vLi4vc2VyaWFsaXphdGlvbi9CeXRlQnVmZmVyJ1xuaW1wb3J0IHsgUEJTcGhlcmVTaGFwZSB9IGZyb20gJy4vcGIvU3BoZXJlU2hhcGUuZ2VuJ1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgQ09NUE9ORU5UX0lEID0gMTAxNVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgU3BoZXJlU2hhcGU6IEVjc1R5cGU8UEJTcGhlcmVTaGFwZT4gPSB7XG4gIHNlcmlhbGl6ZSh2YWx1ZTogUEJTcGhlcmVTaGFwZSwgYnVpbGRlcjogQnl0ZUJ1ZmZlcik6IHZvaWQge1xuICAgIGNvbnN0IHdyaXRlciA9IFBCU3BoZXJlU2hhcGUuZW5jb2RlKHZhbHVlKVxuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KHdyaXRlci5maW5pc2goKSwgMCwgd3JpdGVyLmxlbilcbiAgICBidWlsZGVyLndyaXRlQnVmZmVyKGJ1ZmZlciwgZmFsc2UpXG4gIH0sXG4gIGRlc2VyaWFsaXplKHJlYWRlcjogQnl0ZUJ1ZmZlcik6IFBCU3BoZXJlU2hhcGUge1xuICAgIHJldHVybiBQQlNwaGVyZVNoYXBlLmRlY29kZShyZWFkZXIuYnVmZmVyKCksIHJlYWRlci5yZW1haW5pbmdCeXRlcygpKVxuICB9LFxuICBjcmVhdGUoKTogUEJTcGhlcmVTaGFwZSB7XG4gICAgLy8gVE9ETzogdGhpcyBpcyBhIGhhY2suXG4gICAgcmV0dXJuIFBCU3BoZXJlU2hhcGUuZGVjb2RlKG5ldyBVaW50OEFycmF5KCkpXG4gIH1cbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgeyBDb2xvcjMgfSBmcm9tICcuL2NvbW1vbi9Db2xvcjMuZ2VuJ1xuaW1wb3J0ICogYXMgX20wIGZyb20gJ3Byb3RvYnVmanMvbWluaW1hbCdcblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgcHJvdG9idWZQYWNrYWdlID0gJydcblxuZXhwb3J0IGludGVyZmFjZSBQQlRleHRTaGFwZSB7XG4gIHRleHQ6IHN0cmluZ1xuICAvKiogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCAqL1xuICB2aXNpYmxlOiBib29sZWFuXG4gIGZvbnQ6IHN0cmluZ1xuICBvcGFjaXR5OiBudW1iZXJcbiAgZm9udFNpemU6IG51bWJlclxuICBmb250QXV0b1NpemU6IGJvb2xlYW5cbiAgaFRleHRBbGlnbjogc3RyaW5nXG4gIHZUZXh0QWxpZ246IHN0cmluZ1xuICB3aWR0aDogbnVtYmVyXG4gIGhlaWdodDogbnVtYmVyXG4gIHBhZGRpbmdUb3A6IG51bWJlclxuICBwYWRkaW5nUmlnaHQ6IG51bWJlclxuICBwYWRkaW5nQm90dG9tOiBudW1iZXJcbiAgcGFkZGluZ0xlZnQ6IG51bWJlclxuICBsaW5lU3BhY2luZzogbnVtYmVyXG4gIGxpbmVDb3VudDogbnVtYmVyXG4gIHRleHRXcmFwcGluZzogYm9vbGVhblxuICBzaGFkb3dCbHVyOiBudW1iZXJcbiAgc2hhZG93T2Zmc2V0WDogbnVtYmVyXG4gIHNoYWRvd09mZnNldFk6IG51bWJlclxuICBvdXRsaW5lV2lkdGg6IG51bWJlclxuICBzaGFkb3dDb2xvcjogQ29sb3IzIHwgdW5kZWZpbmVkXG4gIG91dGxpbmVDb2xvcjogQ29sb3IzIHwgdW5kZWZpbmVkXG4gIHRleHRDb2xvcjogQ29sb3IzIHwgdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VQQlRleHRTaGFwZSgpOiBQQlRleHRTaGFwZSB7XG4gIHJldHVybiB7XG4gICAgdGV4dDogJycsXG4gICAgdmlzaWJsZTogZmFsc2UsXG4gICAgZm9udDogJycsXG4gICAgb3BhY2l0eTogMCxcbiAgICBmb250U2l6ZTogMCxcbiAgICBmb250QXV0b1NpemU6IGZhbHNlLFxuICAgIGhUZXh0QWxpZ246ICcnLFxuICAgIHZUZXh0QWxpZ246ICcnLFxuICAgIHdpZHRoOiAwLFxuICAgIGhlaWdodDogMCxcbiAgICBwYWRkaW5nVG9wOiAwLFxuICAgIHBhZGRpbmdSaWdodDogMCxcbiAgICBwYWRkaW5nQm90dG9tOiAwLFxuICAgIHBhZGRpbmdMZWZ0OiAwLFxuICAgIGxpbmVTcGFjaW5nOiAwLFxuICAgIGxpbmVDb3VudDogMCxcbiAgICB0ZXh0V3JhcHBpbmc6IGZhbHNlLFxuICAgIHNoYWRvd0JsdXI6IDAsXG4gICAgc2hhZG93T2Zmc2V0WDogMCxcbiAgICBzaGFkb3dPZmZzZXRZOiAwLFxuICAgIG91dGxpbmVXaWR0aDogMCxcbiAgICBzaGFkb3dDb2xvcjogdW5kZWZpbmVkLFxuICAgIG91dGxpbmVDb2xvcjogdW5kZWZpbmVkLFxuICAgIHRleHRDb2xvcjogdW5kZWZpbmVkXG4gIH1cbn1cblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgUEJUZXh0U2hhcGUgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBQQlRleHRTaGFwZSwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLnRleHQgIT09ICcnKSB7XG4gICAgICB3cml0ZXIudWludDMyKDEwKS5zdHJpbmcobWVzc2FnZS50ZXh0KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS52aXNpYmxlID09PSB0cnVlKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE2KS5ib29sKG1lc3NhZ2UudmlzaWJsZSlcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuZm9udCAhPT0gJycpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjYpLnN0cmluZyhtZXNzYWdlLmZvbnQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm9wYWNpdHkgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMzcpLmZsb2F0KG1lc3NhZ2Uub3BhY2l0eSlcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuZm9udFNpemUgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDUpLmZsb2F0KG1lc3NhZ2UuZm9udFNpemUpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmZvbnRBdXRvU2l6ZSA9PT0gdHJ1ZSkge1xuICAgICAgd3JpdGVyLnVpbnQzMig0OCkuYm9vbChtZXNzYWdlLmZvbnRBdXRvU2l6ZSlcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuaFRleHRBbGlnbiAhPT0gJycpIHtcbiAgICAgIHdyaXRlci51aW50MzIoNTgpLnN0cmluZyhtZXNzYWdlLmhUZXh0QWxpZ24pXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnZUZXh0QWxpZ24gIT09ICcnKSB7XG4gICAgICB3cml0ZXIudWludDMyKDY2KS5zdHJpbmcobWVzc2FnZS52VGV4dEFsaWduKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS53aWR0aCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig3NykuZmxvYXQobWVzc2FnZS53aWR0aClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuaGVpZ2h0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDg1KS5mbG9hdChtZXNzYWdlLmhlaWdodClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucGFkZGluZ1RvcCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig5MykuZmxvYXQobWVzc2FnZS5wYWRkaW5nVG9wKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5wYWRkaW5nUmlnaHQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTAxKS5mbG9hdChtZXNzYWdlLnBhZGRpbmdSaWdodClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucGFkZGluZ0JvdHRvbSAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMDkpLmZsb2F0KG1lc3NhZ2UucGFkZGluZ0JvdHRvbSlcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucGFkZGluZ0xlZnQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTE3KS5mbG9hdChtZXNzYWdlLnBhZGRpbmdMZWZ0KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5saW5lU3BhY2luZyAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMjUpLmZsb2F0KG1lc3NhZ2UubGluZVNwYWNpbmcpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmxpbmVDb3VudCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMjgpLmludDMyKG1lc3NhZ2UubGluZUNvdW50KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS50ZXh0V3JhcHBpbmcgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTM2KS5ib29sKG1lc3NhZ2UudGV4dFdyYXBwaW5nKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5zaGFkb3dCbHVyICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE0OSkuZmxvYXQobWVzc2FnZS5zaGFkb3dCbHVyKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5zaGFkb3dPZmZzZXRYICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE1NykuZmxvYXQobWVzc2FnZS5zaGFkb3dPZmZzZXRYKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5zaGFkb3dPZmZzZXRZICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE2NSkuZmxvYXQobWVzc2FnZS5zaGFkb3dPZmZzZXRZKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5vdXRsaW5lV2lkdGggIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTczKS5mbG9hdChtZXNzYWdlLm91dGxpbmVXaWR0aClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uuc2hhZG93Q29sb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgQ29sb3IzLmVuY29kZShtZXNzYWdlLnNoYWRvd0NvbG9yLCB3cml0ZXIudWludDMyKDE3OCkuZm9yaygpKS5sZGVsaW0oKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5vdXRsaW5lQ29sb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgQ29sb3IzLmVuY29kZShtZXNzYWdlLm91dGxpbmVDb2xvciwgd3JpdGVyLnVpbnQzMigxODYpLmZvcmsoKSkubGRlbGltKClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UudGV4dENvbG9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIENvbG9yMy5lbmNvZGUobWVzc2FnZS50ZXh0Q29sb3IsIHdyaXRlci51aW50MzIoMTk0KS5mb3JrKCkpLmxkZWxpbSgpXG4gICAgfVxuICAgIHJldHVybiB3cml0ZXJcbiAgfSxcblxuICBkZWNvZGUoaW5wdXQ6IF9tMC5SZWFkZXIgfCBVaW50OEFycmF5LCBsZW5ndGg/OiBudW1iZXIpOiBQQlRleHRTaGFwZSB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBuZXcgX20wLlJlYWRlcihpbnB1dClcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlUEJUZXh0U2hhcGUoKVxuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKClcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBtZXNzYWdlLnRleHQgPSByZWFkZXIuc3RyaW5nKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgbWVzc2FnZS52aXNpYmxlID0gcmVhZGVyLmJvb2woKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBtZXNzYWdlLmZvbnQgPSByZWFkZXIuc3RyaW5nKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgbWVzc2FnZS5vcGFjaXR5ID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgbWVzc2FnZS5mb250U2l6ZSA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIG1lc3NhZ2UuZm9udEF1dG9TaXplID0gcmVhZGVyLmJvb2woKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICBtZXNzYWdlLmhUZXh0QWxpZ24gPSByZWFkZXIuc3RyaW5nKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgbWVzc2FnZS52VGV4dEFsaWduID0gcmVhZGVyLnN0cmluZygpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA5OlxuICAgICAgICAgIG1lc3NhZ2Uud2lkdGggPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgbWVzc2FnZS5oZWlnaHQgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgbWVzc2FnZS5wYWRkaW5nVG9wID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgIG1lc3NhZ2UucGFkZGluZ1JpZ2h0ID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgIG1lc3NhZ2UucGFkZGluZ0JvdHRvbSA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICBtZXNzYWdlLnBhZGRpbmdMZWZ0ID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDE1OlxuICAgICAgICAgIG1lc3NhZ2UubGluZVNwYWNpbmcgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMTY6XG4gICAgICAgICAgbWVzc2FnZS5saW5lQ291bnQgPSByZWFkZXIuaW50MzIoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMTc6XG4gICAgICAgICAgbWVzc2FnZS50ZXh0V3JhcHBpbmcgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAxODpcbiAgICAgICAgICBtZXNzYWdlLnNoYWRvd0JsdXIgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMTk6XG4gICAgICAgICAgbWVzc2FnZS5zaGFkb3dPZmZzZXRYID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDIwOlxuICAgICAgICAgIG1lc3NhZ2Uuc2hhZG93T2Zmc2V0WSA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyMTpcbiAgICAgICAgICBtZXNzYWdlLm91dGxpbmVXaWR0aCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyMjpcbiAgICAgICAgICBtZXNzYWdlLnNoYWRvd0NvbG9yID0gQ29sb3IzLmRlY29kZShyZWFkZXIsIHJlYWRlci51aW50MzIoKSlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDIzOlxuICAgICAgICAgIG1lc3NhZ2Uub3V0bGluZUNvbG9yID0gQ29sb3IzLmRlY29kZShyZWFkZXIsIHJlYWRlci51aW50MzIoKSlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDI0OlxuICAgICAgICAgIG1lc3NhZ2UudGV4dENvbG9yID0gQ29sb3IzLmRlY29kZShyZWFkZXIsIHJlYWRlci51aW50MzIoKSlcbiAgICAgICAgICBicmVha1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlXG4gIH1cbn1cbiIsImltcG9ydCB7IEVjc1R5cGUgfSBmcm9tICcuLi8uLi9idWlsdC1pbi10eXBlcy9FY3NUeXBlJ1xuaW1wb3J0IHsgQnl0ZUJ1ZmZlciB9IGZyb20gJy4uLy4uL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IFBCVGV4dFNoYXBlIH0gZnJvbSAnLi9wYi9UZXh0U2hhcGUuZ2VuJ1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgQ09NUE9ORU5UX0lEID0gMTAzMFxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgVGV4dFNoYXBlOiBFY3NUeXBlPFBCVGV4dFNoYXBlPiA9IHtcbiAgc2VyaWFsaXplKHZhbHVlOiBQQlRleHRTaGFwZSwgYnVpbGRlcjogQnl0ZUJ1ZmZlcik6IHZvaWQge1xuICAgIGNvbnN0IHdyaXRlciA9IFBCVGV4dFNoYXBlLmVuY29kZSh2YWx1ZSlcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhBcnJheSh3cml0ZXIuZmluaXNoKCksIDAsIHdyaXRlci5sZW4pXG4gICAgYnVpbGRlci53cml0ZUJ1ZmZlcihidWZmZXIsIGZhbHNlKVxuICB9LFxuICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBQQlRleHRTaGFwZSB7XG4gICAgcmV0dXJuIFBCVGV4dFNoYXBlLmRlY29kZShyZWFkZXIuYnVmZmVyKCksIHJlYWRlci5yZW1haW5pbmdCeXRlcygpKVxuICB9LFxuICBjcmVhdGUoKTogUEJUZXh0U2hhcGUge1xuICAgIC8vIFRPRE86IHRoaXMgaXMgYSBoYWNrLlxuICAgIHJldHVybiBQQlRleHRTaGFwZS5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoKSlcbiAgfVxufVxuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCAqIGFzIF9tMCBmcm9tICdwcm90b2J1ZmpzL21pbmltYWwnXG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9ICcnXG5cbmV4cG9ydCBlbnVtIFlHUG9zaXRpb25UeXBlIHtcbiAgWUdQb3NpdGlvblR5cGVTdGF0aWMgPSAwLFxuICBZR1Bvc2l0aW9uVHlwZVJlbGF0aXZlID0gMSxcbiAgWUdQb3NpdGlvblR5cGVBYnNvbHV0ZSA9IDIsXG4gIFVOUkVDT0dOSVpFRCA9IC0xXG59XG5cbmV4cG9ydCBlbnVtIFlHQWxpZ24ge1xuICBZR0FsaWduQXV0byA9IDAsXG4gIFlHQWxpZ25GbGV4U3RhcnQgPSAxLFxuICBZR0FsaWduQ2VudGVyID0gMixcbiAgWUdBbGlnbkZsZXhFbmQgPSAzLFxuICBZR0FsaWduU3RyZXRjaCA9IDQsXG4gIFlHQWxpZ25CYXNlbGluZSA9IDUsXG4gIFlHQWxpZ25TcGFjZUJldHdlZW4gPSA2LFxuICBZR0FsaWduU3BhY2VBcm91bmQgPSA3LFxuICBVTlJFQ09HTklaRUQgPSAtMVxufVxuXG5leHBvcnQgZW51bSBZR1VuaXQge1xuICBZR1VuaXRVbmRlZmluZWQgPSAwLFxuICBZR1VuaXRQb2ludCA9IDEsXG4gIFlHVW5pdFBlcmNlbnQgPSAyLFxuICBZR1VuaXRBdXRvID0gMyxcbiAgVU5SRUNPR05JWkVEID0gLTFcbn1cblxuZXhwb3J0IGVudW0gWUdEaXJlY3Rpb24ge1xuICBZR0RpcmVjdGlvbkluaGVyaXQgPSAwLFxuICBZR0RpcmVjdGlvbkxUUiA9IDEsXG4gIFlHRGlyZWN0aW9uUlRMID0gMixcbiAgVU5SRUNPR05JWkVEID0gLTFcbn1cblxuZXhwb3J0IGVudW0gWUdGbGV4RGlyZWN0aW9uIHtcbiAgWUdGbGV4RGlyZWN0aW9uQ29sdW1uID0gMCxcbiAgWUdGbGV4RGlyZWN0aW9uQ29sdW1uUmV2ZXJzZSA9IDEsXG4gIFlHRmxleERpcmVjdGlvblJvdyA9IDIsXG4gIFlHRmxleERpcmVjdGlvblJvd1JldmVyc2UgPSAzLFxuICBVTlJFQ09HTklaRUQgPSAtMVxufVxuXG5leHBvcnQgZW51bSBZR1dyYXAge1xuICBZR1dyYXBOb1dyYXAgPSAwLFxuICBZR1dyYXBXcmFwID0gMSxcbiAgWUdXcmFwV3JhcFJldmVyc2UgPSAyLFxuICBVTlJFQ09HTklaRUQgPSAtMVxufVxuXG5leHBvcnQgZW51bSBZR0p1c3RpZnkge1xuICBZR0p1c3RpZnlGbGV4U3RhcnQgPSAwLFxuICBZR0p1c3RpZnlDZW50ZXIgPSAxLFxuICBZR0p1c3RpZnlGbGV4RW5kID0gMixcbiAgWUdKdXN0aWZ5U3BhY2VCZXR3ZWVuID0gMyxcbiAgWUdKdXN0aWZ5U3BhY2VBcm91bmQgPSA0LFxuICBZR0p1c3RpZnlTcGFjZUV2ZW5seSA9IDUsXG4gIFVOUkVDT0dOSVpFRCA9IC0xXG59XG5cbmV4cG9ydCBlbnVtIFlHT3ZlcmZsb3cge1xuICBZR092ZXJmbG93VmlzaWJsZSA9IDAsXG4gIFlHT3ZlcmZsb3dIaWRkZW4gPSAxLFxuICBZR092ZXJmbG93U2Nyb2xsID0gMixcbiAgVU5SRUNPR05JWkVEID0gLTFcbn1cblxuZXhwb3J0IGVudW0gWUdEaXNwbGF5IHtcbiAgWUdEaXNwbGF5RmxleCA9IDAsXG4gIFlHRGlzcGxheU5vbmUgPSAxLFxuICBVTlJFQ09HTklaRUQgPSAtMVxufVxuXG5leHBvcnQgZW51bSBZR0VkZ2Uge1xuICBZR0VkZ2VMZWZ0ID0gMCxcbiAgWUdFZGdlVG9wID0gMSxcbiAgWUdFZGdlUmlnaHQgPSAyLFxuICBZR0VkZ2VCb3R0b20gPSAzLFxuICBZR0VkZ2VTdGFydCA9IDQsXG4gIFlHRWRnZUVuZCA9IDUsXG4gIFlHRWRnZUhvcml6b250YWwgPSA2LFxuICBZR0VkZ2VWZXJ0aWNhbCA9IDcsXG4gIFlHRWRnZUFsbCA9IDgsXG4gIFVOUkVDT0dOSVpFRCA9IC0xXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUEJVaVRyYW5zZm9ybSB7XG4gIHBvc2l0aW9uVHlwZTogWUdQb3NpdGlvblR5cGVcbiAgYWxpZ25Db250ZW50OiBZR0FsaWduXG4gIGFsaWduSXRlbXM6IFlHQWxpZ25cbiAgYWxpZ25TZWxmOiBZR0FsaWduXG4gIGZsZXhEaXJlY3Rpb246IFlHRmxleERpcmVjdGlvblxuICBmbGV4V3JhcDogWUdXcmFwXG4gIGp1c3RpZnlDb250ZW50OiBZR0p1c3RpZnlcbiAgb3ZlcmZsb3c6IFlHT3ZlcmZsb3dcbiAgZGlzcGxheTogWUdEaXNwbGF5XG4gIGRpcmVjdGlvbjogWUdEaXJlY3Rpb25cbiAgZmxleDogbnVtYmVyXG4gIGZsZXhCYXNpc1VuaXQ6IFlHVW5pdFxuICBmbGV4QmFzaXM6IG51bWJlclxuICBmbGV4R3JvdzogbnVtYmVyXG4gIGZsZXhTaHJpbms6IG51bWJlclxuICB3aWR0aFVuaXQ6IFlHVW5pdFxuICB3aWR0aDogbnVtYmVyXG4gIGhlaWdodFVuaXQ6IFlHVW5pdFxuICBoZWlnaHQ6IG51bWJlclxuICBtaW5XaWR0aFVuaXQ6IFlHVW5pdFxuICBtaW5XaWR0aDogbnVtYmVyXG4gIG1pbkhlaWdodFVuaXQ6IFlHVW5pdFxuICBtaW5IZWlnaHQ6IG51bWJlclxuICBtYXhXaWR0aFVuaXQ6IFlHVW5pdFxuICBtYXhXaWR0aDogbnVtYmVyXG4gIG1heEhlaWdodFVuaXQ6IFlHVW5pdFxuICBtYXhIZWlnaHQ6IG51bWJlclxuICBwb3NpdGlvbkxlZnRVbml0OiBZR1VuaXRcbiAgcG9zaXRpb25MZWZ0OiBudW1iZXJcbiAgcG9zaXRpb25Ub3BVbml0OiBZR1VuaXRcbiAgcG9zaXRpb25Ub3A6IG51bWJlclxuICBwb3NpdGlvblJpZ2h0VW5pdDogWUdVbml0XG4gIHBvc2l0aW9uUmlnaHQ6IG51bWJlclxuICBwb3NpdGlvbkJvdHRvbVVuaXQ6IFlHVW5pdFxuICBwb3NpdGlvbkJvdHRvbTogbnVtYmVyXG4gIC8qKiBtYXJnaW4gKi9cbiAgbWFyZ2luTGVmdFVuaXQ6IFlHVW5pdFxuICBtYXJnaW5MZWZ0OiBudW1iZXJcbiAgbWFyZ2luVG9wVW5pdDogWUdVbml0XG4gIG1hcmdpblRvcDogbnVtYmVyXG4gIG1hcmdpblJpZ2h0VW5pdDogWUdVbml0XG4gIG1hcmdpblJpZ2h0OiBudW1iZXJcbiAgbWFyZ2luQm90dG9tVW5pdDogWUdVbml0XG4gIG1hcmdpbkJvdHRvbTogbnVtYmVyXG4gIHBhZGRpbmdMZWZ0VW5pdDogWUdVbml0XG4gIHBhZGRpbmdMZWZ0OiBudW1iZXJcbiAgcGFkZGluZ1RvcFVuaXQ6IFlHVW5pdFxuICBwYWRkaW5nVG9wOiBudW1iZXJcbiAgcGFkZGluZ1JpZ2h0VW5pdDogWUdVbml0XG4gIHBhZGRpbmdSaWdodDogbnVtYmVyXG4gIHBhZGRpbmdCb3R0b21Vbml0OiBZR1VuaXRcbiAgcGFkZGluZ0JvdHRvbTogbnVtYmVyXG4gIGJvcmRlckxlZnQ6IG51bWJlclxuICBib3JkZXJUb3A6IG51bWJlclxuICBib3JkZXJSaWdodDogbnVtYmVyXG4gIGJvcmRlckJvdHRvbTogbnVtYmVyXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VQQlVpVHJhbnNmb3JtKCk6IFBCVWlUcmFuc2Zvcm0ge1xuICByZXR1cm4ge1xuICAgIHBvc2l0aW9uVHlwZTogMCxcbiAgICBhbGlnbkNvbnRlbnQ6IDAsXG4gICAgYWxpZ25JdGVtczogMCxcbiAgICBhbGlnblNlbGY6IDAsXG4gICAgZmxleERpcmVjdGlvbjogMCxcbiAgICBmbGV4V3JhcDogMCxcbiAgICBqdXN0aWZ5Q29udGVudDogMCxcbiAgICBvdmVyZmxvdzogMCxcbiAgICBkaXNwbGF5OiAwLFxuICAgIGRpcmVjdGlvbjogMCxcbiAgICBmbGV4OiAwLFxuICAgIGZsZXhCYXNpc1VuaXQ6IDAsXG4gICAgZmxleEJhc2lzOiAwLFxuICAgIGZsZXhHcm93OiAwLFxuICAgIGZsZXhTaHJpbms6IDAsXG4gICAgd2lkdGhVbml0OiAwLFxuICAgIHdpZHRoOiAwLFxuICAgIGhlaWdodFVuaXQ6IDAsXG4gICAgaGVpZ2h0OiAwLFxuICAgIG1pbldpZHRoVW5pdDogMCxcbiAgICBtaW5XaWR0aDogMCxcbiAgICBtaW5IZWlnaHRVbml0OiAwLFxuICAgIG1pbkhlaWdodDogMCxcbiAgICBtYXhXaWR0aFVuaXQ6IDAsXG4gICAgbWF4V2lkdGg6IDAsXG4gICAgbWF4SGVpZ2h0VW5pdDogMCxcbiAgICBtYXhIZWlnaHQ6IDAsXG4gICAgcG9zaXRpb25MZWZ0VW5pdDogMCxcbiAgICBwb3NpdGlvbkxlZnQ6IDAsXG4gICAgcG9zaXRpb25Ub3BVbml0OiAwLFxuICAgIHBvc2l0aW9uVG9wOiAwLFxuICAgIHBvc2l0aW9uUmlnaHRVbml0OiAwLFxuICAgIHBvc2l0aW9uUmlnaHQ6IDAsXG4gICAgcG9zaXRpb25Cb3R0b21Vbml0OiAwLFxuICAgIHBvc2l0aW9uQm90dG9tOiAwLFxuICAgIG1hcmdpbkxlZnRVbml0OiAwLFxuICAgIG1hcmdpbkxlZnQ6IDAsXG4gICAgbWFyZ2luVG9wVW5pdDogMCxcbiAgICBtYXJnaW5Ub3A6IDAsXG4gICAgbWFyZ2luUmlnaHRVbml0OiAwLFxuICAgIG1hcmdpblJpZ2h0OiAwLFxuICAgIG1hcmdpbkJvdHRvbVVuaXQ6IDAsXG4gICAgbWFyZ2luQm90dG9tOiAwLFxuICAgIHBhZGRpbmdMZWZ0VW5pdDogMCxcbiAgICBwYWRkaW5nTGVmdDogMCxcbiAgICBwYWRkaW5nVG9wVW5pdDogMCxcbiAgICBwYWRkaW5nVG9wOiAwLFxuICAgIHBhZGRpbmdSaWdodFVuaXQ6IDAsXG4gICAgcGFkZGluZ1JpZ2h0OiAwLFxuICAgIHBhZGRpbmdCb3R0b21Vbml0OiAwLFxuICAgIHBhZGRpbmdCb3R0b206IDAsXG4gICAgYm9yZGVyTGVmdDogMCxcbiAgICBib3JkZXJUb3A6IDAsXG4gICAgYm9yZGVyUmlnaHQ6IDAsXG4gICAgYm9yZGVyQm90dG9tOiAwXG4gIH1cbn1cblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgUEJVaVRyYW5zZm9ybSA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IFBCVWlUcmFuc2Zvcm0sIHdyaXRlcjogX20wLldyaXRlciA9IF9tMC5Xcml0ZXIuY3JlYXRlKCkpOiBfbTAuV3JpdGVyIHtcbiAgICBpZiAobWVzc2FnZS5wb3NpdGlvblR5cGUgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoOCkuaW50MzIobWVzc2FnZS5wb3NpdGlvblR5cGUpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmFsaWduQ29udGVudCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxNikuaW50MzIobWVzc2FnZS5hbGlnbkNvbnRlbnQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmFsaWduSXRlbXMgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjQpLmludDMyKG1lc3NhZ2UuYWxpZ25JdGVtcylcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuYWxpZ25TZWxmICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDMyKS5pbnQzMihtZXNzYWdlLmFsaWduU2VsZilcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuZmxleERpcmVjdGlvbiAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig0MCkuaW50MzIobWVzc2FnZS5mbGV4RGlyZWN0aW9uKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5mbGV4V3JhcCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig0OCkuaW50MzIobWVzc2FnZS5mbGV4V3JhcClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuanVzdGlmeUNvbnRlbnQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNTYpLmludDMyKG1lc3NhZ2UuanVzdGlmeUNvbnRlbnQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm92ZXJmbG93ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDY0KS5pbnQzMihtZXNzYWdlLm92ZXJmbG93KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5kaXNwbGF5ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDcyKS5pbnQzMihtZXNzYWdlLmRpc3BsYXkpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmRpcmVjdGlvbiAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig4MCkuaW50MzIobWVzc2FnZS5kaXJlY3Rpb24pXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmZsZXggIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoOTMpLmZsb2F0KG1lc3NhZ2UuZmxleClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuZmxleEJhc2lzVW5pdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMDQpLmludDMyKG1lc3NhZ2UuZmxleEJhc2lzVW5pdClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuZmxleEJhc2lzICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDExNykuZmxvYXQobWVzc2FnZS5mbGV4QmFzaXMpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmZsZXhHcm93ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDEyNSkuZmxvYXQobWVzc2FnZS5mbGV4R3JvdylcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuZmxleFNocmluayAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMzMpLmZsb2F0KG1lc3NhZ2UuZmxleFNocmluaylcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uud2lkdGhVbml0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDEzNikuaW50MzIobWVzc2FnZS53aWR0aFVuaXQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLndpZHRoICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE0OSkuZmxvYXQobWVzc2FnZS53aWR0aClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuaGVpZ2h0VW5pdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxNTIpLmludDMyKG1lc3NhZ2UuaGVpZ2h0VW5pdClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuaGVpZ2h0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE2NSkuZmxvYXQobWVzc2FnZS5oZWlnaHQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm1pbldpZHRoVW5pdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxNjgpLmludDMyKG1lc3NhZ2UubWluV2lkdGhVbml0KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5taW5XaWR0aCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxODEpLmZsb2F0KG1lc3NhZ2UubWluV2lkdGgpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm1pbkhlaWdodFVuaXQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTg0KS5pbnQzMihtZXNzYWdlLm1pbkhlaWdodFVuaXQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm1pbkhlaWdodCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxOTcpLmZsb2F0KG1lc3NhZ2UubWluSGVpZ2h0KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5tYXhXaWR0aFVuaXQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjQ4KS5pbnQzMihtZXNzYWdlLm1heFdpZHRoVW5pdClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubWF4V2lkdGggIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjYxKS5mbG9hdChtZXNzYWdlLm1heFdpZHRoKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5tYXhIZWlnaHRVbml0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDI2NCkuaW50MzIobWVzc2FnZS5tYXhIZWlnaHRVbml0KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5tYXhIZWlnaHQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjc3KS5mbG9hdChtZXNzYWdlLm1heEhlaWdodClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucG9zaXRpb25MZWZ0VW5pdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigzMjgpLmludDMyKG1lc3NhZ2UucG9zaXRpb25MZWZ0VW5pdClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucG9zaXRpb25MZWZ0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDM0MSkuZmxvYXQobWVzc2FnZS5wb3NpdGlvbkxlZnQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBvc2l0aW9uVG9wVW5pdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigzNDQpLmludDMyKG1lc3NhZ2UucG9zaXRpb25Ub3BVbml0KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5wb3NpdGlvblRvcCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigzNTcpLmZsb2F0KG1lc3NhZ2UucG9zaXRpb25Ub3ApXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBvc2l0aW9uUmlnaHRVbml0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDM2MCkuaW50MzIobWVzc2FnZS5wb3NpdGlvblJpZ2h0VW5pdClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucG9zaXRpb25SaWdodCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigzNzMpLmZsb2F0KG1lc3NhZ2UucG9zaXRpb25SaWdodClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucG9zaXRpb25Cb3R0b21Vbml0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDM3NikuaW50MzIobWVzc2FnZS5wb3NpdGlvbkJvdHRvbVVuaXQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBvc2l0aW9uQm90dG9tICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDM4OSkuZmxvYXQobWVzc2FnZS5wb3NpdGlvbkJvdHRvbSlcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubWFyZ2luTGVmdFVuaXQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDA4KS5pbnQzMihtZXNzYWdlLm1hcmdpbkxlZnRVbml0KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5tYXJnaW5MZWZ0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDQyMSkuZmxvYXQobWVzc2FnZS5tYXJnaW5MZWZ0KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5tYXJnaW5Ub3BVbml0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDQyNCkuaW50MzIobWVzc2FnZS5tYXJnaW5Ub3BVbml0KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5tYXJnaW5Ub3AgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDM3KS5mbG9hdChtZXNzYWdlLm1hcmdpblRvcClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubWFyZ2luUmlnaHRVbml0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDQ0MCkuaW50MzIobWVzc2FnZS5tYXJnaW5SaWdodFVuaXQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm1hcmdpblJpZ2h0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDQ1MykuZmxvYXQobWVzc2FnZS5tYXJnaW5SaWdodClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubWFyZ2luQm90dG9tVW5pdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig0NTYpLmludDMyKG1lc3NhZ2UubWFyZ2luQm90dG9tVW5pdClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubWFyZ2luQm90dG9tICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDQ2OSkuZmxvYXQobWVzc2FnZS5tYXJnaW5Cb3R0b20pXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBhZGRpbmdMZWZ0VW5pdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig0ODgpLmludDMyKG1lc3NhZ2UucGFkZGluZ0xlZnRVbml0KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5wYWRkaW5nTGVmdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig1MDEpLmZsb2F0KG1lc3NhZ2UucGFkZGluZ0xlZnQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBhZGRpbmdUb3BVbml0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDUwNCkuaW50MzIobWVzc2FnZS5wYWRkaW5nVG9wVW5pdClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucGFkZGluZ1RvcCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig1MTcpLmZsb2F0KG1lc3NhZ2UucGFkZGluZ1RvcClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucGFkZGluZ1JpZ2h0VW5pdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig1MjApLmludDMyKG1lc3NhZ2UucGFkZGluZ1JpZ2h0VW5pdClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucGFkZGluZ1JpZ2h0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDUzMykuZmxvYXQobWVzc2FnZS5wYWRkaW5nUmlnaHQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBhZGRpbmdCb3R0b21Vbml0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDUzNikuaW50MzIobWVzc2FnZS5wYWRkaW5nQm90dG9tVW5pdClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucGFkZGluZ0JvdHRvbSAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig1NDkpLmZsb2F0KG1lc3NhZ2UucGFkZGluZ0JvdHRvbSlcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuYm9yZGVyTGVmdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig1ODEpLmZsb2F0KG1lc3NhZ2UuYm9yZGVyTGVmdClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuYm9yZGVyVG9wICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDU5NykuZmxvYXQobWVzc2FnZS5ib3JkZXJUb3ApXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmJvcmRlclJpZ2h0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDYxMykuZmxvYXQobWVzc2FnZS5ib3JkZXJSaWdodClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuYm9yZGVyQm90dG9tICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDYyOSkuZmxvYXQobWVzc2FnZS5ib3JkZXJCb3R0b20pXG4gICAgfVxuICAgIHJldHVybiB3cml0ZXJcbiAgfSxcblxuICBkZWNvZGUoaW5wdXQ6IF9tMC5SZWFkZXIgfCBVaW50OEFycmF5LCBsZW5ndGg/OiBudW1iZXIpOiBQQlVpVHJhbnNmb3JtIHtcbiAgICBjb25zdCByZWFkZXIgPSBpbnB1dCBpbnN0YW5jZW9mIF9tMC5SZWFkZXIgPyBpbnB1dCA6IG5ldyBfbTAuUmVhZGVyKGlucHV0KVxuICAgIGxldCBlbmQgPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/IHJlYWRlci5sZW4gOiByZWFkZXIucG9zICsgbGVuZ3RoXG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VQQlVpVHJhbnNmb3JtKClcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpXG4gICAgICBzd2l0Y2ggKHRhZyA+Pj4gMykge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgbWVzc2FnZS5wb3NpdGlvblR5cGUgPSByZWFkZXIuaW50MzIoKSBhcyBhbnlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgbWVzc2FnZS5hbGlnbkNvbnRlbnQgPSByZWFkZXIuaW50MzIoKSBhcyBhbnlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgbWVzc2FnZS5hbGlnbkl0ZW1zID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIG1lc3NhZ2UuYWxpZ25TZWxmID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIG1lc3NhZ2UuZmxleERpcmVjdGlvbiA9IHJlYWRlci5pbnQzMigpIGFzIGFueVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICBtZXNzYWdlLmZsZXhXcmFwID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIG1lc3NhZ2UuanVzdGlmeUNvbnRlbnQgPSByZWFkZXIuaW50MzIoKSBhcyBhbnlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgbWVzc2FnZS5vdmVyZmxvdyA9IHJlYWRlci5pbnQzMigpIGFzIGFueVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICBtZXNzYWdlLmRpc3BsYXkgPSByZWFkZXIuaW50MzIoKSBhcyBhbnlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgIG1lc3NhZ2UuZGlyZWN0aW9uID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICBtZXNzYWdlLmZsZXggPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgbWVzc2FnZS5mbGV4QmFzaXNVbml0ID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICBtZXNzYWdlLmZsZXhCYXNpcyA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAxNTpcbiAgICAgICAgICBtZXNzYWdlLmZsZXhHcm93ID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgIG1lc3NhZ2UuZmxleFNocmluayA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAxNzpcbiAgICAgICAgICBtZXNzYWdlLndpZHRoVW5pdCA9IHJlYWRlci5pbnQzMigpIGFzIGFueVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMTg6XG4gICAgICAgICAgbWVzc2FnZS53aWR0aCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAxOTpcbiAgICAgICAgICBtZXNzYWdlLmhlaWdodFVuaXQgPSByZWFkZXIuaW50MzIoKSBhcyBhbnlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDIwOlxuICAgICAgICAgIG1lc3NhZ2UuaGVpZ2h0ID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDIxOlxuICAgICAgICAgIG1lc3NhZ2UubWluV2lkdGhVbml0ID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyMjpcbiAgICAgICAgICBtZXNzYWdlLm1pbldpZHRoID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDIzOlxuICAgICAgICAgIG1lc3NhZ2UubWluSGVpZ2h0VW5pdCA9IHJlYWRlci5pbnQzMigpIGFzIGFueVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjQ6XG4gICAgICAgICAgbWVzc2FnZS5taW5IZWlnaHQgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzE6XG4gICAgICAgICAgbWVzc2FnZS5tYXhXaWR0aFVuaXQgPSByZWFkZXIuaW50MzIoKSBhcyBhbnlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDMyOlxuICAgICAgICAgIG1lc3NhZ2UubWF4V2lkdGggPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzM6XG4gICAgICAgICAgbWVzc2FnZS5tYXhIZWlnaHRVbml0ID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAzNDpcbiAgICAgICAgICBtZXNzYWdlLm1heEhlaWdodCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0MTpcbiAgICAgICAgICBtZXNzYWdlLnBvc2l0aW9uTGVmdFVuaXQgPSByZWFkZXIuaW50MzIoKSBhcyBhbnlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDQyOlxuICAgICAgICAgIG1lc3NhZ2UucG9zaXRpb25MZWZ0ID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDQzOlxuICAgICAgICAgIG1lc3NhZ2UucG9zaXRpb25Ub3BVbml0ID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0NDpcbiAgICAgICAgICBtZXNzYWdlLnBvc2l0aW9uVG9wID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDQ1OlxuICAgICAgICAgIG1lc3NhZ2UucG9zaXRpb25SaWdodFVuaXQgPSByZWFkZXIuaW50MzIoKSBhcyBhbnlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDQ2OlxuICAgICAgICAgIG1lc3NhZ2UucG9zaXRpb25SaWdodCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0NzpcbiAgICAgICAgICBtZXNzYWdlLnBvc2l0aW9uQm90dG9tVW5pdCA9IHJlYWRlci5pbnQzMigpIGFzIGFueVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDg6XG4gICAgICAgICAgbWVzc2FnZS5wb3NpdGlvbkJvdHRvbSA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA1MTpcbiAgICAgICAgICBtZXNzYWdlLm1hcmdpbkxlZnRVbml0ID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA1MjpcbiAgICAgICAgICBtZXNzYWdlLm1hcmdpbkxlZnQgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNTM6XG4gICAgICAgICAgbWVzc2FnZS5tYXJnaW5Ub3BVbml0ID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA1NDpcbiAgICAgICAgICBtZXNzYWdlLm1hcmdpblRvcCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA1NTpcbiAgICAgICAgICBtZXNzYWdlLm1hcmdpblJpZ2h0VW5pdCA9IHJlYWRlci5pbnQzMigpIGFzIGFueVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNTY6XG4gICAgICAgICAgbWVzc2FnZS5tYXJnaW5SaWdodCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA1NzpcbiAgICAgICAgICBtZXNzYWdlLm1hcmdpbkJvdHRvbVVuaXQgPSByZWFkZXIuaW50MzIoKSBhcyBhbnlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDU4OlxuICAgICAgICAgIG1lc3NhZ2UubWFyZ2luQm90dG9tID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDYxOlxuICAgICAgICAgIG1lc3NhZ2UucGFkZGluZ0xlZnRVbml0ID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA2MjpcbiAgICAgICAgICBtZXNzYWdlLnBhZGRpbmdMZWZ0ID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDYzOlxuICAgICAgICAgIG1lc3NhZ2UucGFkZGluZ1RvcFVuaXQgPSByZWFkZXIuaW50MzIoKSBhcyBhbnlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDY0OlxuICAgICAgICAgIG1lc3NhZ2UucGFkZGluZ1RvcCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA2NTpcbiAgICAgICAgICBtZXNzYWdlLnBhZGRpbmdSaWdodFVuaXQgPSByZWFkZXIuaW50MzIoKSBhcyBhbnlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDY2OlxuICAgICAgICAgIG1lc3NhZ2UucGFkZGluZ1JpZ2h0ID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDY3OlxuICAgICAgICAgIG1lc3NhZ2UucGFkZGluZ0JvdHRvbVVuaXQgPSByZWFkZXIuaW50MzIoKSBhcyBhbnlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDY4OlxuICAgICAgICAgIG1lc3NhZ2UucGFkZGluZ0JvdHRvbSA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA3MjpcbiAgICAgICAgICBtZXNzYWdlLmJvcmRlckxlZnQgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNzQ6XG4gICAgICAgICAgbWVzc2FnZS5ib3JkZXJUb3AgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNzY6XG4gICAgICAgICAgbWVzc2FnZS5ib3JkZXJSaWdodCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA3ODpcbiAgICAgICAgICBtZXNzYWdlLmJvcmRlckJvdHRvbSA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNylcbiAgICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZVxuICB9XG59XG4iLCJpbXBvcnQgeyBFY3NUeXBlIH0gZnJvbSAnLi4vLi4vYnVpbHQtaW4tdHlwZXMvRWNzVHlwZSdcbmltcG9ydCB7IEJ5dGVCdWZmZXIgfSBmcm9tICcuLi8uLi9zZXJpYWxpemF0aW9uL0J5dGVCdWZmZXInXG5pbXBvcnQgeyBQQlVpVHJhbnNmb3JtIH0gZnJvbSAnLi9wYi9VaVRyYW5zZm9ybS5nZW4nXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QT05FTlRfSUQgPSAxMDUwXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBVaVRyYW5zZm9ybTogRWNzVHlwZTxQQlVpVHJhbnNmb3JtPiA9IHtcbiAgc2VyaWFsaXplKHZhbHVlOiBQQlVpVHJhbnNmb3JtLCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgY29uc3Qgd3JpdGVyID0gUEJVaVRyYW5zZm9ybS5lbmNvZGUodmFsdWUpXG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkod3JpdGVyLmZpbmlzaCgpLCAwLCB3cml0ZXIubGVuKVxuICAgIGJ1aWxkZXIud3JpdGVCdWZmZXIoYnVmZmVyLCBmYWxzZSlcbiAgfSxcbiAgZGVzZXJpYWxpemUocmVhZGVyOiBCeXRlQnVmZmVyKTogUEJVaVRyYW5zZm9ybSB7XG4gICAgcmV0dXJuIFBCVWlUcmFuc2Zvcm0uZGVjb2RlKHJlYWRlci5idWZmZXIoKSwgcmVhZGVyLnJlbWFpbmluZ0J5dGVzKCkpXG4gIH0sXG4gIGNyZWF0ZSgpOiBQQlVpVHJhbnNmb3JtIHtcbiAgICAvLyBUT0RPOiB0aGlzIGlzIGEgaGFjay5cbiAgICByZXR1cm4gUEJVaVRyYW5zZm9ybS5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoKSlcbiAgfVxufVxuIiwiaW1wb3J0ICogYXMgQW5pbWF0b3IgZnJvbSAnLi9BbmltYXRvci5nZW4nXG5pbXBvcnQgKiBhcyBBdWRpb1NvdXJjZSBmcm9tICcuL0F1ZGlvU291cmNlLmdlbidcbmltcG9ydCAqIGFzIEF1ZGlvU3RyZWFtIGZyb20gJy4vQXVkaW9TdHJlYW0uZ2VuJ1xuaW1wb3J0ICogYXMgQm94U2hhcGUgZnJvbSAnLi9Cb3hTaGFwZS5nZW4nXG5pbXBvcnQgKiBhcyBDeWxpbmRlclNoYXBlIGZyb20gJy4vQ3lsaW5kZXJTaGFwZS5nZW4nXG5pbXBvcnQgKiBhcyBHTFRGU2hhcGUgZnJvbSAnLi9HTFRGU2hhcGUuZ2VuJ1xuaW1wb3J0ICogYXMgTkZUU2hhcGUgZnJvbSAnLi9ORlRTaGFwZS5nZW4nXG5pbXBvcnQgKiBhcyBPblBvaW50ZXJEb3duIGZyb20gJy4vT25Qb2ludGVyRG93bi5nZW4nXG5pbXBvcnQgKiBhcyBPblBvaW50ZXJEb3duUmVzdWx0IGZyb20gJy4vT25Qb2ludGVyRG93blJlc3VsdC5nZW4nXG5pbXBvcnQgKiBhcyBPblBvaW50ZXJVcCBmcm9tICcuL09uUG9pbnRlclVwLmdlbidcbmltcG9ydCAqIGFzIE9uUG9pbnRlclVwUmVzdWx0IGZyb20gJy4vT25Qb2ludGVyVXBSZXN1bHQuZ2VuJ1xuaW1wb3J0ICogYXMgUGxhbmVTaGFwZSBmcm9tICcuL1BsYW5lU2hhcGUuZ2VuJ1xuaW1wb3J0ICogYXMgU3BoZXJlU2hhcGUgZnJvbSAnLi9TcGhlcmVTaGFwZS5nZW4nXG5pbXBvcnQgKiBhcyBUZXh0U2hhcGUgZnJvbSAnLi9UZXh0U2hhcGUuZ2VuJ1xuaW1wb3J0ICogYXMgVWlUcmFuc2Zvcm0gZnJvbSAnLi9VaVRyYW5zZm9ybS5nZW4nXG5pbXBvcnQgdHlwZSB7IElFbmdpbmUgfSBmcm9tICcuLi8uLi9lbmdpbmUvdHlwZXMnXG5cbmV4cG9ydCBlbnVtIENvbXBvbmVudElkcyB7XG4gIEFuaW1hdG9yID0gMTA0MixcbkF1ZGlvU291cmNlID0gMTAyMCxcbkF1ZGlvU3RyZWFtID0gMTAyMSxcbkJveFNoYXBlID0gMTAxMyxcbkN5bGluZGVyU2hhcGUgPSAxMDE2LFxuR0xURlNoYXBlID0gMTA0MSxcbk5GVFNoYXBlID0gMTA0MCxcbk9uUG9pbnRlckRvd24gPSAxMDYwLFxuT25Qb2ludGVyRG93blJlc3VsdCA9IDEwNjYsXG5PblBvaW50ZXJVcCA9IDEwNjEsXG5PblBvaW50ZXJVcFJlc3VsdCA9IDEwNjUsXG5QbGFuZVNoYXBlID0gMTAxNCxcblNwaGVyZVNoYXBlID0gMTAxNSxcblRleHRTaGFwZSA9IDEwMzAsXG5VaVRyYW5zZm9ybSA9IDEwNTAsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVQcm90b2NvbEJ1ZmZlckNvbXBvbmVudHMoe1xuICBkZWZpbmVDb21wb25lbnRcbn06IFBpY2s8SUVuZ2luZSwgJ2RlZmluZUNvbXBvbmVudCc+KSB7XG5cbiAgcmV0dXJuIHtcbkFuaW1hdG9yOiBkZWZpbmVDb21wb25lbnQoQW5pbWF0b3IuQ09NUE9ORU5UX0lELCBBbmltYXRvci5BbmltYXRvciksXG5BdWRpb1NvdXJjZTogZGVmaW5lQ29tcG9uZW50KEF1ZGlvU291cmNlLkNPTVBPTkVOVF9JRCwgQXVkaW9Tb3VyY2UuQXVkaW9Tb3VyY2UpLFxuQXVkaW9TdHJlYW06IGRlZmluZUNvbXBvbmVudChBdWRpb1N0cmVhbS5DT01QT05FTlRfSUQsIEF1ZGlvU3RyZWFtLkF1ZGlvU3RyZWFtKSxcbkJveFNoYXBlOiBkZWZpbmVDb21wb25lbnQoQm94U2hhcGUuQ09NUE9ORU5UX0lELCBCb3hTaGFwZS5Cb3hTaGFwZSksXG5DeWxpbmRlclNoYXBlOiBkZWZpbmVDb21wb25lbnQoQ3lsaW5kZXJTaGFwZS5DT01QT05FTlRfSUQsIEN5bGluZGVyU2hhcGUuQ3lsaW5kZXJTaGFwZSksXG5HTFRGU2hhcGU6IGRlZmluZUNvbXBvbmVudChHTFRGU2hhcGUuQ09NUE9ORU5UX0lELCBHTFRGU2hhcGUuR0xURlNoYXBlKSxcbk5GVFNoYXBlOiBkZWZpbmVDb21wb25lbnQoTkZUU2hhcGUuQ09NUE9ORU5UX0lELCBORlRTaGFwZS5ORlRTaGFwZSksXG5PblBvaW50ZXJEb3duOiBkZWZpbmVDb21wb25lbnQoT25Qb2ludGVyRG93bi5DT01QT05FTlRfSUQsIE9uUG9pbnRlckRvd24uT25Qb2ludGVyRG93biksXG5PblBvaW50ZXJEb3duUmVzdWx0OiBkZWZpbmVDb21wb25lbnQoT25Qb2ludGVyRG93blJlc3VsdC5DT01QT05FTlRfSUQsIE9uUG9pbnRlckRvd25SZXN1bHQuT25Qb2ludGVyRG93blJlc3VsdCksXG5PblBvaW50ZXJVcDogZGVmaW5lQ29tcG9uZW50KE9uUG9pbnRlclVwLkNPTVBPTkVOVF9JRCwgT25Qb2ludGVyVXAuT25Qb2ludGVyVXApLFxuT25Qb2ludGVyVXBSZXN1bHQ6IGRlZmluZUNvbXBvbmVudChPblBvaW50ZXJVcFJlc3VsdC5DT01QT05FTlRfSUQsIE9uUG9pbnRlclVwUmVzdWx0Lk9uUG9pbnRlclVwUmVzdWx0KSxcblBsYW5lU2hhcGU6IGRlZmluZUNvbXBvbmVudChQbGFuZVNoYXBlLkNPTVBPTkVOVF9JRCwgUGxhbmVTaGFwZS5QbGFuZVNoYXBlKSxcblNwaGVyZVNoYXBlOiBkZWZpbmVDb21wb25lbnQoU3BoZXJlU2hhcGUuQ09NUE9ORU5UX0lELCBTcGhlcmVTaGFwZS5TcGhlcmVTaGFwZSksXG5UZXh0U2hhcGU6IGRlZmluZUNvbXBvbmVudChUZXh0U2hhcGUuQ09NUE9ORU5UX0lELCBUZXh0U2hhcGUuVGV4dFNoYXBlKSxcblVpVHJhbnNmb3JtOiBkZWZpbmVDb21wb25lbnQoVWlUcmFuc2Zvcm0uQ09NUE9ORU5UX0lELCBVaVRyYW5zZm9ybS5VaVRyYW5zZm9ybSlcbiAgfVxufVxuIiwiaW1wb3J0IHsgUXVhdGVybmlvbiwgVmVjdG9yMyB9IGZyb20gJy4uLy4uL01hdGgnXG5pbXBvcnQgdHlwZSB7IEVjc1R5cGUgfSBmcm9tICcuLi8uLi9idWlsdC1pbi10eXBlcy9FY3NUeXBlJ1xuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSAnLi4vLi4vZW5naW5lL2VudGl0eSdcbmltcG9ydCB7IEJ5dGVCdWZmZXIgfSBmcm9tICcuLi8uLi9zZXJpYWxpemF0aW9uL0J5dGVCdWZmZXInXG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBUcmFuc2Zvcm0gPSB7XG4gIHBvc2l0aW9uOiBWZWN0b3IzLk11dGFibGVWZWN0b3IzXG4gIHJvdGF0aW9uOiBRdWF0ZXJuaW9uLk11dGFibGVRdWF0ZXJuaW9uXG4gIHNjYWxlOiBWZWN0b3IzLk11dGFibGVWZWN0b3IzXG4gIHBhcmVudD86IEVudGl0eVxufVxuXG5leHBvcnQgY29uc3QgVFJBTlNGT1JNX0xFTkdUSCA9IDQ0XG5cbi8vIFRoaXMgdHJhbnNmb3JtIGNhbiBiZSBvcHRpbWl6ZWQgd2l0aCBGbG9hdDMyQXJyYXkgZm9yIGV4YW1wbGVcbmV4cG9ydCBjb25zdCBUcmFuc2Zvcm06IEVjc1R5cGU8VHJhbnNmb3JtPiA9IHtcbiAgc2VyaWFsaXplKHZhbHVlOiBUcmFuc2Zvcm0sIGJ1aWxkZXI6IEJ5dGVCdWZmZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwdHIgPSBidWlsZGVyLmluY3JlbWVudFdyaXRlT2Zmc2V0KFRSQU5TRk9STV9MRU5HVEgpXG4gICAgYnVpbGRlci5zZXRGbG9hdDMyKHB0ciwgdmFsdWUucG9zaXRpb24ueClcbiAgICBidWlsZGVyLnNldEZsb2F0MzIocHRyICsgNCwgdmFsdWUucG9zaXRpb24ueSlcbiAgICBidWlsZGVyLnNldEZsb2F0MzIocHRyICsgOCwgdmFsdWUucG9zaXRpb24ueilcbiAgICBidWlsZGVyLnNldEZsb2F0MzIocHRyICsgMTIsIHZhbHVlLnJvdGF0aW9uLngpXG4gICAgYnVpbGRlci5zZXRGbG9hdDMyKHB0ciArIDE2LCB2YWx1ZS5yb3RhdGlvbi55KVxuICAgIGJ1aWxkZXIuc2V0RmxvYXQzMihwdHIgKyAyMCwgdmFsdWUucm90YXRpb24ueilcbiAgICBidWlsZGVyLnNldEZsb2F0MzIocHRyICsgMjQsIHZhbHVlLnJvdGF0aW9uLncpXG4gICAgYnVpbGRlci5zZXRGbG9hdDMyKHB0ciArIDI4LCB2YWx1ZS5zY2FsZS54KVxuICAgIGJ1aWxkZXIuc2V0RmxvYXQzMihwdHIgKyAzMiwgdmFsdWUuc2NhbGUueSlcbiAgICBidWlsZGVyLnNldEZsb2F0MzIocHRyICsgMzYsIHZhbHVlLnNjYWxlLnopXG4gICAgYnVpbGRlci5zZXRVaW50MzIocHRyICsgNDAsIHZhbHVlLnBhcmVudCB8fCAwKVxuICB9LFxuICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBUcmFuc2Zvcm0ge1xuICAgIGNvbnN0IHB0ciA9IHJlYWRlci5pbmNyZW1lbnRSZWFkT2Zmc2V0KFRSQU5TRk9STV9MRU5HVEgpXG4gICAgcmV0dXJuIHtcbiAgICAgIHBvc2l0aW9uOiBWZWN0b3IzLmNyZWF0ZShcbiAgICAgICAgcmVhZGVyLmdldEZsb2F0MzIocHRyKSxcbiAgICAgICAgcmVhZGVyLmdldEZsb2F0MzIocHRyICsgNCksXG4gICAgICAgIHJlYWRlci5nZXRGbG9hdDMyKHB0ciArIDgpXG4gICAgICApLFxuICAgICAgcm90YXRpb246IFF1YXRlcm5pb24uY3JlYXRlKFxuICAgICAgICByZWFkZXIuZ2V0RmxvYXQzMihwdHIgKyAxMiksXG4gICAgICAgIHJlYWRlci5nZXRGbG9hdDMyKHB0ciArIDE2KSxcbiAgICAgICAgcmVhZGVyLmdldEZsb2F0MzIocHRyICsgMjApLFxuICAgICAgICByZWFkZXIuZ2V0RmxvYXQzMihwdHIgKyAyNClcbiAgICAgICksXG4gICAgICBzY2FsZTogVmVjdG9yMy5jcmVhdGUoXG4gICAgICAgIHJlYWRlci5nZXRGbG9hdDMyKHB0ciArIDI4KSxcbiAgICAgICAgcmVhZGVyLmdldEZsb2F0MzIocHRyICsgMzIpLFxuICAgICAgICByZWFkZXIuZ2V0RmxvYXQzMihwdHIgKyAzNilcbiAgICAgICksXG4gICAgICBwYXJlbnQ6IHJlYWRlci5nZXRVaW50MzIocHRyICsgNDApIGFzIEVudGl0eVxuICAgIH1cbiAgfSxcbiAgY3JlYXRlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogeyB4OiAwLCB5OiAwLCB6OiAwIH0sXG4gICAgICBzY2FsZTogeyB4OiAxLCB5OiAxLCB6OiAxIH0sXG4gICAgICByb3RhdGlvbjogeyB4OiAwLCB5OiAwLCB6OiAwLCB3OiAxIH0sXG4gICAgICBwYXJlbnQ6IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxufVxuIiwiLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBlbnVtIExFR0FDWV9DT01QT05FTlRfSUQge1xuICBUUkFOU0ZPUk0gPSAxLFxuICBVVUlEX0NBTExCQUNLID0gOCxcbiAgQk9YX1NIQVBFID0gMTYsXG4gIFNQSEVSRV9TSEFQRSA9IDE3LFxuICBQTEFORV9TSEFQRSA9IDE4LFxuICBDT05FX1NIQVBFID0gMTksXG4gIENZTElOREVSX1NIQVBFID0gMjAsXG4gIFRFWFRfU0hBUEUgPSAyMSxcblxuICBORlRfU0hBUEUgPSAyMixcbiAgVUlfV09STERfU1BBQ0VfU0hBUEUgPSAyMyxcbiAgVUlfU0NSRUVOX1NQQUNFX1NIQVBFID0gMjQsXG4gIFVJX0NPTlRBSU5FUl9SRUNUID0gMjUsXG4gIFVJX0NPTlRBSU5FUl9TVEFDSyA9IDI2LFxuICBVSV9URVhUX1NIQVBFID0gMjcsXG4gIFVJX0lOUFVUX1RFWFRfU0hBUEUgPSAyOCxcbiAgVUlfSU1BR0VfU0hBUEUgPSAyOSxcbiAgVUlfU0xJREVSX1NIQVBFID0gMzAsXG4gIENJUkNMRV9TSEFQRSA9IDMxLFxuICBCSUxMQk9BUkQgPSAzMixcblxuICBBTklNQVRJT04gPSAzMyxcbiAgRk9OVCA9IDM0LFxuXG4gIFVJX0ZVTExTQ1JFRU5fU0hBUEUgPSA0MCwgLy8gaW50ZXJuYWwgZnVsbHNjcmVlbiBzY2VuZXNcbiAgVUlfQlVUVE9OX1NIQVBFID0gNDEsXG5cbiAgR0xURl9TSEFQRSA9IDU0LFxuICBPQkpfU0hBUEUgPSA1NSxcbiAgQVZBVEFSX1NIQVBFID0gNTYsXG5cbiAgQkFTSUNfTUFURVJJQUwgPSA2NCxcbiAgUEJSX01BVEVSSUFMID0gNjUsXG5cbiAgSElHSExJR0hUX0VOVElUWSA9IDY2LFxuXG4gIC8qKiBAZGVwcmVjYXRlZCBTb3VuZCBoYXMgYmVlbiBkZXByZWNhdGFlZCAqL1xuICBTT1VORCA9IDY3LFxuICBURVhUVVJFID0gNjgsXG5cbiAgVklERU9fQ0xJUCA9IDcwLFxuICBWSURFT19URVhUVVJFID0gNzEsXG5cbiAgQVZBVEFSX1RFWFRVUkUgPSA3MixcblxuICBBVURJT19DTElQID0gMjAwLFxuICBBVURJT19TT1VSQ0UgPSAyMDEsXG4gIEFVRElPX1NUUkVBTSA9IDIwMixcbiAgR0laTU9TID0gMjAzLFxuICBTTUFSVF9JVEVNID0gMjA0LFxuICBBVkFUQVJfTU9ESUZJRVJfQVJFQSA9IDIwNSxcbiAgQVZBVEFSX0FUVEFDSCA9IDIwNixcbiAgQ0FNRVJBX01PREVfQVJFQSA9IDIwNyxcblxuICAvLyBGb3Igc3RhdGUgc3luYyBvbmx5XG4gIE5BTUUgPSAzMDAsXG4gIExPQ0tFRF9PTl9FRElUID0gMzAxLFxuICBWSVNJQkxFX09OX0VESVQgPSAzMDJcbn1cbiIsImltcG9ydCB0eXBlIHsgSUVuZ2luZSB9IGZyb20gJy4uLy4uL2VuZ2luZS90eXBlcydcbmltcG9ydCB7IGRlZmluZVByb3RvY29sQnVmZmVyQ29tcG9uZW50cyB9IGZyb20gJy4uL2dlbmVyYXRlZC9pbmRleC5nZW4nXG5pbXBvcnQgeyBUcmFuc2Zvcm0gYXMgTGVnYWN5VHJhbnNmb3JtIH0gZnJvbSAnLi9UcmFuc2Zvcm0nXG5pbXBvcnQgeyBMRUdBQ1lfQ09NUE9ORU5UX0lEIGFzIElEIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUxlZ2FjeUNvbXBvbmVudHMoe1xuICBkZWZpbmVDb21wb25lbnRcbn06IFBpY2s8SUVuZ2luZSwgJ2RlZmluZUNvbXBvbmVudCc+KSB7XG4gIHJldHVybiB7XG4gICAgVHJhbnNmb3JtOiBkZWZpbmVDb21wb25lbnQoSUQuVFJBTlNGT1JNLCBMZWdhY3lUcmFuc2Zvcm0pLFxuICAgIC4uLmRlZmluZVByb3RvY29sQnVmZmVyQ29tcG9uZW50cyh7IGRlZmluZUNvbXBvbmVudCB9KVxuICB9XG59XG4iLCJleHBvcnQgZW51bSBDT01QT05FTlRfSUQge1xuICBTWU5DID0gMTAwMFxufVxuIiwiaW1wb3J0IHsgZGVmaW5lTGVnYWN5Q29tcG9uZW50cyB9IGZyb20gJy4vbGVnYWN5J1xuaW1wb3J0IHR5cGUgeyBJRW5naW5lIH0gZnJvbSAnLi4vZW5naW5lL3R5cGVzJ1xuXG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lU2RrQ29tcG9uZW50cyhlbmdpbmU6IFBpY2s8SUVuZ2luZSwgJ2RlZmluZUNvbXBvbmVudCc+KSB7XG4gIHJldHVybiB7XG4gICAgLi4uZGVmaW5lTGVnYWN5Q29tcG9uZW50cyhlbmdpbmUpXG4gIH1cbn1cblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIFNka0NvbXBvbmVudHMgPSBSZXR1cm5UeXBlPHR5cGVvZiBkZWZpbmVTZGtDb21wb25lbnRzPlxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD10eXBlcy5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2NyZWF0ZUJpbmRpbmcgPSAodGhpcyAmJiB0aGlzLl9fY3JlYXRlQmluZGluZykgfHwgKE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9KTtcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICBvW2syXSA9IG1ba107XG59KSk7XG52YXIgX19leHBvcnRTdGFyID0gKHRoaXMgJiYgdGhpcy5fX2V4cG9ydFN0YXIpIHx8IGZ1bmN0aW9uKG0sIGV4cG9ydHMpIHtcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGV4cG9ydHMsIHApKSBfX2NyZWF0ZUJpbmRpbmcoZXhwb3J0cywgbSwgcCk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5jcmR0UHJvdG9jb2wgPSBleHBvcnRzLnNhbWVEYXRhID0gdm9pZCAwO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL3R5cGVzXCIpLCBleHBvcnRzKTtcbi8qKlxuICogQ29tcGFyZSByYXcgZGF0YS5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBzYW1lRGF0YShhLCBiKSB7XG4gICAgaWYgKGEgPT09IGIpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIGlmIChhIGluc3RhbmNlb2YgQnVmZmVyICYmIGIgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIGEuZXF1YWxzKGIpO1xuICAgIH1cbiAgICBpZiAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkgJiYgYiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCAhPT0gYi5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmJ5dGVMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBhID09PSBiO1xufVxuZXhwb3J0cy5zYW1lRGF0YSA9IHNhbWVEYXRhO1xuLyoqXG4gKiBAcHVibGljXG4gKiBDUkRUIHByb3RvY29sLlxuICogU3RvcmVzIHRoZSBsYXRlc3Qgc3RhdGUsIGFuZCBkZWNpZGVzIHdoZW5ldmVyIHdlIGhhdmVcbiAqIHRvIHByb2Nlc3MgYW5kIHN0b3JlIHRoZSBuZXcgZGF0YSBpbiBjYXNlIGl0cyBhbiB1cGRhdGUsIG9yXG4gKiB0byBkaXNjYXJkIGFuZCBzZW5kIG91ciBsb2NhbCB2YWx1ZSBjYXVzZSByZW1vdGUgaXQncyBvdXRkYXRlZC5cbiAqL1xuZnVuY3Rpb24gY3JkdFByb3RvY29sKCkge1xuICAgIC8qKlxuICAgICAqIExvY2FsIHN0YXRlIHdoZXJlIHdlIHN0b3JlIHRoZSBsYXRlc3QgbGFtcG9ydCB0aW1lc3RhbXBcbiAgICAgKiBhbmQgdGhlIHJhdyBkYXRhIHZhbHVlXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgY29uc3Qgc3RhdGUgPSB7fTtcbiAgICAvKipcbiAgICAgKiBXZSBzaG91bGQgY2FsbCB0aGlzIGZuIGluIG9yZGVyIHRvIHVwZGF0ZSB0aGUgc3RhdGVcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1cGRhdGVTdGF0ZShrZXksIGRhdGEsIHJlbW90ZVRpbWVzdGFtcCkge1xuICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBNYXRoLm1heChyZW1vdGVUaW1lc3RhbXAsIHN0YXRlW2tleV0/LnRpbWVzdGFtcCB8fCAwKTtcbiAgICAgICAgcmV0dXJuIChzdGF0ZVtrZXldID0geyB0aW1lc3RhbXAsIGRhdGEgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhbiBldmVudCBmb3IgdGhlIHNwZWNpZmllZCBrZXkgYW5kIHN0b3JlIHRoZSBuZXcgZGF0YSBhbmRcbiAgICAgKiBsYW1wb3J0IHRpbWVzdG1hcCBpbmNyZW1lbnRlZCBieSBvbmUgaW4gdGhlIHN0YXRlLlxuICAgICAqIEBwdWJsaWNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVFdmVudChrZXksIGRhdGEpIHtcbiAgICAgICAgLy8gSW5jcmVtZW50IHRoZSB0aW1lc3RhbXBcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gKHN0YXRlW2tleV0/LnRpbWVzdGFtcCB8fCAwKSArIDE7XG4gICAgICAgIHVwZGF0ZVN0YXRlKGtleSwgZGF0YSwgdGltZXN0YW1wKTtcbiAgICAgICAgcmV0dXJuIHsga2V5LCBkYXRhLCB0aW1lc3RhbXAgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUHJvY2VzcyB0aGUgcmVjZWl2ZWQgbWVzc2FnZSBvbmx5IGlmIHRoZSBsYW1wb3J0IG51bWJlciByZWNpZXZlZCBpcyBoaWdoZXJcbiAgICAgKiB0aGFuIHRoZSBzdG9yZWQgb25lLiBJZiBpdHMgbG93ZXIsIHdlIHNwcmVhZCBpdCB0byB0aGUgbmV0d29yayB0byBjb3JyZWN0IHRoZSBwZWVyLlxuICAgICAqIElmIHRoZXkgYXJlIGVxdWFsLCB0aGUgYmlnZ2VyIHJhdyBkYXRhIHdpbnMuXG4gIFxuICAgICAqIFJldHVybnMgdGhlIHJlY2lldmVkIGRhdGEgaWYgdGhlIGxhbXBvcnQgbnVtYmVyIHdhcyBiaWdnZXIgdGhhbiBvdXJzLlxuICAgICAqIElmIGl0IHdhcyBhbiBvdXRkYXRlZCBtZXNzYWdlLCB0aGVuIHdlIHJldHVybiB2b2lkXG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHByb2Nlc3NNZXNzYWdlKG1lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgeyBrZXksIGRhdGEsIHRpbWVzdGFtcCB9ID0gbWVzc2FnZTtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHN0YXRlW2tleV07XG4gICAgICAgIC8vIFRoZSByZWNlaXZlZCBtZXNzYWdlIGlzID4gdGhhbiBvdXIgY3VycmVudCB2YWx1ZSwgdXBkYXRlIG91ciBzdGF0ZS5cbiAgICAgICAgaWYgKCFjdXJyZW50IHx8IGN1cnJlbnQudGltZXN0YW1wIDwgdGltZXN0YW1wKSB7XG4gICAgICAgICAgICB1cGRhdGVTdGF0ZShrZXksIGRhdGEsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBPdXRkYXRlZCBNZXNzYWdlLiBSZXNlbmQgb3VyIHN0YXRlIG1lc3NhZ2UgdGhyb3VnaCB0aGUgd2lyZS5cbiAgICAgICAgaWYgKGN1cnJlbnQudGltZXN0YW1wID4gdGltZXN0YW1wKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICBkYXRhOiBjdXJyZW50LmRhdGEsXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBjdXJyZW50LnRpbWVzdGFtcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTYW1lIGRhdGEsIHNhbWUgdGltZXN0YW1wLiBXZWlyZG8gZWNobyBtZXNzYWdlLlxuICAgICAgICBpZiAoc2FtZURhdGEoY3VycmVudC5kYXRhLCBkYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmFjZSBjb25kaXRpb24sIHNhbWUgdGltZXN0YW1wIGRpZmYgZGF0YS5cbiAgICAgICAgZnVuY3Rpb24gY29tcGFyZURhdGEoY3VycmVudCwgZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQgPiBkYXRhO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wYXJlRGF0YShjdXJyZW50LmRhdGEsIGRhdGEpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICBkYXRhOiBjdXJyZW50LmRhdGEsXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBjdXJyZW50LnRpbWVzdGFtcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVTdGF0ZShrZXksIGRhdGEsIHRpbWVzdGFtcCkuZGF0YTtcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGVcbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0U3RhdGUoKSB7XG4gICAgICAgIHJldHVybiB7IC4uLnN0YXRlIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGNyZWF0ZUV2ZW50LFxuICAgICAgICBwcm9jZXNzTWVzc2FnZSxcbiAgICAgICAgZ2V0U3RhdGVcbiAgICB9O1xufVxuZXhwb3J0cy5jcmR0UHJvdG9jb2wgPSBjcmR0UHJvdG9jb2w7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCIvKipcbiAqIFRha2UgdGhlIG1heCBiZXR3ZWVuIGN1cnJlbnRTaXplIGFuZCBpbnRlbmRlZFNpemUgYW5kIHRoZW4gcGx1cyAxMDI0LiBUaGVuLFxuICogIGZpbmQgdGhlIG5leHQgbmVhcmVyIG11bHRpcGxlIG9mIDEwMjQuXG4gKiBAcGFyYW0gY3VycmVudFNpemUgLSBudW1iZXJcbiAqIEBwYXJhbSBpbnRlbmRlZFNpemUgLSBudW1iZXJcbiAqIEByZXR1cm5zIHRoZSBjYWxjdWxhdGVkIG51bWJlclxuICovXG5mdW5jdGlvbiBnZXROZXh0U2l6ZShjdXJyZW50U2l6ZTogbnVtYmVyLCBpbnRlbmRlZFNpemU6IG51bWJlcikge1xuICBjb25zdCBtaW5OZXdTaXplID0gTWF0aC5tYXgoY3VycmVudFNpemUsIGludGVuZGVkU2l6ZSkgKyAxMDI0XG4gIHJldHVybiBNYXRoLmNlaWwobWluTmV3U2l6ZSAvIDEwMjQpICogMTAyNFxufVxuXG4vKipcbiAqIEBwYXJhbSB3cml0aW5nIC0gd3JpdGluZyBvcHRpb24sIHNlZSBvYmplY3Qgc3BlY3MuXG4gKiBAcGFyYW0gcmVhZGluZyAtIHJlYWRpbmcgb3B0aW9uLCBzZWUgb2JqZWN0IHNwZWNzLlxuICogQHBhcmFtIGluaXRpYWxDYXBhY2l0eSAtIEluaXRpYWwgY2FwYWNpdHkgb2YgYnVmZmVyIHRvIGFsbG9jYXRlLCBpZ25vcmVkIGlmIHlvdSB1c2Ugd3JpdGluZyBvciByZWFkaW5nIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVCeXRlQnVmZmVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBAcGFyYW0gYnVmZmVyIC0gYSBidWZmZXIgYWxyZWFkeSBhbGxvY2F0ZWQgdG8gcmVhZCBmcm9tIHRoZXJlLlxuICAgKiBAcGFyYW0gY3VycmVudE9mZnNldCAtIHNldCB0aGUgY3Vyc29yIHdoZXJlIGJlZ2lucyB0byByZWFkLiBEZWZhdWx0IDBcbiAgICogQHBhcmFtIGxlbmd0aCAtIGRlbGltaXRlIHdoZXJlIHRoZSB2YWxpZCBkYXRhIGVuZHMuIERlZmF1bHQ6IGJ1ZmZlci5sZW5ndGhcbiAgICovXG4gIHJlYWRpbmc/OiB7XG4gICAgYnVmZmVyOiBVaW50OEFycmF5XG4gICAgbGVuZ3RoPzogbnVtYmVyXG4gICAgY3VycmVudE9mZnNldDogbnVtYmVyXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGJ1ZmZlciAtIGEgYnVmZmVyIGFscmVhZHkgYWxsb2NhdGVkIHRvIHdyaXRlIHRoZXJlLlxuICAgKiBAcGFyYW0gY3VycmVudE9mZnNldCAtIHNldCB0aGUgY3Vyc29yIHRvIG5vdCBzdGFydCB3cml0aW5nIGZyb20gdGhlIGJlZ2luIG9mIGl0LiBEZWZhdWx0IDBcbiAgICovXG4gIHdyaXRpbmc/OiB7XG4gICAgYnVmZmVyOiBVaW50OEFycmF5XG4gICAgY3VycmVudE9mZnNldD86IG51bWJlclxuICB9XG5cbiAgaW5pdGlhbENhcGFjaXR5PzogbnVtYmVyXG59XG5cbmNvbnN0IGRlZmF1bHRJbml0aWFsQ2FwYWNpdHkgPSAxMDI0MFxuXG4vKipcbiAqIEJ5dGVCdWZmZXIgaXMgYSB3cmFwcGVyIG9mIERhdGFWaWV3IHdoaWNoIGFsc28gYWRkcyBhIHJlYWQgYW5kIHdyaXRlIG9mZnNldC5cbiAqICBBbHNvIGluIGEgd3JpdGUgb3BlcmF0aW9uIGl0IHJlc2l6ZXMgdGhlIGJ1ZmZlciBpcyBiZWluZyB1c2VkIGlmIGl0IG5lZWRzLlxuICpcbiAqIC0gVXNlIHJlYWQgYW5kIHdyaXRlIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIG9yIGNvbnN1bWUgZGF0YS5cbiAqIC0gVXNlIHNldCBhbmQgZ2V0IG9ubHkgaWYgeW91IGFyZSBzdXJlIHRoYXQgeW91J3JlIGRvaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQnl0ZUJ1ZmZlcihvcHRpb25zOiBDcmVhdGVCeXRlQnVmZmVyT3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IGluaXRpYWxST2Zmc2V0OiBudW1iZXIgPSBvcHRpb25zLnJlYWRpbmc/LmN1cnJlbnRPZmZzZXQgfHwgMFxuICBsZXQgaW5pdGlhbEJ1ZmZlcjogVWludDhBcnJheSB8IG51bGwgPSBudWxsXG4gIGxldCBpbml0aWFsV09mZnNldDogbnVtYmVyID0gMFxuXG4gIGlmIChvcHRpb25zLndyaXRpbmcpIHtcbiAgICBpbml0aWFsQnVmZmVyID0gb3B0aW9ucy53cml0aW5nLmJ1ZmZlclxuICAgIGlmIChvcHRpb25zLndyaXRpbmcuY3VycmVudE9mZnNldCkge1xuICAgICAgaW5pdGlhbFdPZmZzZXQgPSBvcHRpb25zLndyaXRpbmcuY3VycmVudE9mZnNldFxuICAgIH1cbiAgfSBlbHNlIGlmIChvcHRpb25zLnJlYWRpbmcpIHtcbiAgICBpbml0aWFsQnVmZmVyID0gb3B0aW9ucy5yZWFkaW5nLmJ1ZmZlclxuICAgIGluaXRpYWxXT2Zmc2V0ID0gb3B0aW9ucy5yZWFkaW5nLmxlbmd0aCB8fCBvcHRpb25zLnJlYWRpbmcuYnVmZmVyLmxlbmd0aFxuICB9IGVsc2Uge1xuICAgIGluaXRpYWxCdWZmZXIgPSBuZXcgVWludDhBcnJheShcbiAgICAgIG9wdGlvbnMuaW5pdGlhbENhcGFjaXR5IHx8IGRlZmF1bHRJbml0aWFsQ2FwYWNpdHlcbiAgICApXG4gIH1cblxuICBsZXQgYnVmZmVyOiBVaW50OEFycmF5ID0gaW5pdGlhbEJ1ZmZlciFcbiAgbGV0IHZpZXc6IERhdGFWaWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIsIGJ1ZmZlci5ieXRlT2Zmc2V0KVxuICBsZXQgd29mZnNldDogbnVtYmVyID0gaW5pdGlhbFdPZmZzZXRcbiAgbGV0IHJvZmZzZXQ6IG51bWJlciA9IGluaXRpYWxST2Zmc2V0XG5cbiAgLyoqXG4gICAqIEluY3JlZW1lbnQgdGhlIHdyaXRlIG9mZnNldCBhbmQgcmVzaXplIHRoZSBidWZmZXIgaWYgaXQgbmVlZHMuXG4gICAqL1xuICBjb25zdCB3b0FkZCA9IChhbW91bnQ6IG51bWJlcikgPT4ge1xuICAgIGlmICh3b2Zmc2V0ICsgYW1vdW50ID4gYnVmZmVyLmJ5dGVMZW5ndGgpIHtcbiAgICAgIGNvbnN0IG5ld3NpemUgPSBnZXROZXh0U2l6ZShidWZmZXIuYnl0ZUxlbmd0aCwgd29mZnNldCArIGFtb3VudClcbiAgICAgIGNvbnN0IG5ld0J1ZmZlciA9IG5ldyBVaW50OEFycmF5KG5ld3NpemUpXG4gICAgICBuZXdCdWZmZXIuc2V0KGJ1ZmZlcilcbiAgICAgIGJ1ZmZlciA9IG5ld0J1ZmZlclxuICAgICAgdmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIuYnVmZmVyKVxuICAgIH1cblxuICAgIHdvZmZzZXQgKz0gYW1vdW50XG4gICAgcmV0dXJuIHdvZmZzZXQgLSBhbW91bnRcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmNyZW1lbnQgdGhlIHJlYWQgb2Zmc2V0IGFuZCB0aHJvdyBhbiBlcnJvciBpZiBpdCdzIHRyeWluZyB0byByZWFkXG4gICAqICBvdXRzaWRlIHRoZSBib3VuZHMuXG4gICAqL1xuICBjb25zdCByb0FkZCA9IChhbW91bnQ6IG51bWJlcikgPT4ge1xuICAgIGlmIChyb2Zmc2V0ICsgYW1vdW50ID4gd29mZnNldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdPdXRzaWRlIG9mIHRoZSBib3VuZHMgb2Ygd3JpdGVuIGRhdGEuJylcbiAgICB9XG5cbiAgICByb2Zmc2V0ICs9IGFtb3VudFxuICAgIHJldHVybiByb2Zmc2V0IC0gYW1vdW50XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIFRoZSBlbnRpcmUgY3VycmVudCBVaW50OEFycmF5LlxuICAgICAqXG4gICAgICogV0FSTklORzogaWYgdGhlIGJ1ZmZlciBncm93cywgdGhlIHZpZXcgaGFkIGNoYW5nZWQgaXRzZWxmLFxuICAgICAqICBhbmQgdGhlIHJlZmVyZW5jZSB3aWxsIGJlIGEgaW52YWxpZCBvbmUuXG4gICAgICovXG4gICAgYnVmZmVyKCk6IFVpbnQ4QXJyYXkge1xuICAgICAgcmV0dXJuIGJ1ZmZlclxuICAgIH0sXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgVGhlIGNhcGFjaXR5IG9mIHRoZSBjdXJyZW50IGJ1ZmZlclxuICAgICAqL1xuICAgIGJ1ZmZlckxlbmd0aCgpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIGJ1ZmZlci5sZW5ndGhcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFJlc2V0cyBieXRlQnVmZmVyIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IG9uZVxuICAgICAqL1xuICAgIHJlc2V0QnVmZmVyKCk6IHZvaWQge1xuICAgICAgcm9mZnNldCA9IDBcbiAgICAgIHdvZmZzZXQgPSAwXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCByZWFkIG9mZnNldFxuICAgICAqL1xuICAgIGN1cnJlbnRSZWFkT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICByZXR1cm4gcm9mZnNldFxuICAgIH0sXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgd3JpdGUgb2Zmc2V0XG4gICAgICovXG4gICAgY3VycmVudFdyaXRlT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICByZXR1cm4gd29mZnNldFxuICAgIH0sXG4gICAgLyoqXG4gICAgICogUmVhZGluZyBwdXJwb3NlXG4gICAgICogUmV0dXJucyB0aGUgcHJldml1b3Mgb2Zmc3NldCBzaXplIGJlZm9yZSBpbmNyZW1lbnRpbmdcbiAgICAgKi9cbiAgICBpbmNyZW1lbnRSZWFkT2Zmc2V0KGFtb3VudDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiByb0FkZChhbW91bnQpXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBIb3cgbWFueSBieXRlcyBhcmUgYXZhaWxhYmxlIHRvIHJlYWQuXG4gICAgICovXG4gICAgcmVtYWluaW5nQnl0ZXMoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiB3b2Zmc2V0IC0gcm9mZnNldFxuICAgIH0sXG4gICAgcmVhZEZsb2F0MzIoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiB2aWV3LmdldEZsb2F0MzIocm9BZGQoNCkpXG4gICAgfSxcbiAgICByZWFkRmxvYXQ2NCgpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIHZpZXcuZ2V0RmxvYXQ2NChyb0FkZCg4KSlcbiAgICB9LFxuICAgIHJlYWRJbnQ4KCk6IG51bWJlciB7XG4gICAgICByZXR1cm4gdmlldy5nZXRJbnQ4KHJvQWRkKDEpKVxuICAgIH0sXG4gICAgcmVhZEludDE2KCk6IG51bWJlciB7XG4gICAgICByZXR1cm4gdmlldy5nZXRJbnQxNihyb0FkZCgyKSlcbiAgICB9LFxuICAgIHJlYWRJbnQzMigpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIHZpZXcuZ2V0SW50MzIocm9BZGQoNCkpXG4gICAgfSxcbiAgICByZWFkSW50NjQoKTogYmlnaW50IHtcbiAgICAgIHJldHVybiB2aWV3LmdldEJpZ0ludDY0KHJvQWRkKDgpKVxuICAgIH0sXG4gICAgcmVhZFVpbnQ4KCk6IG51bWJlciB7XG4gICAgICByZXR1cm4gdmlldy5nZXRVaW50OChyb0FkZCgxKSlcbiAgICB9LFxuICAgIHJlYWRVaW50MTYoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiB2aWV3LmdldFVpbnQxNihyb0FkZCgyKSlcbiAgICB9LFxuICAgIHJlYWRVaW50MzIoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiB2aWV3LmdldFVpbnQzMihyb0FkZCg0KSlcbiAgICB9LFxuICAgIHJlYWRVaW50NjQoKTogYmlnaW50IHtcbiAgICAgIHJldHVybiB2aWV3LmdldEJpZ1VpbnQ2NChyb0FkZCg4KSlcbiAgICB9LFxuICAgIHJlYWRCdWZmZXIoKSB7XG4gICAgICBjb25zdCBsZW5ndGggPSB2aWV3LmdldFVpbnQzMihyb0FkZCg0KSlcbiAgICAgIHJldHVybiBidWZmZXIuc3ViYXJyYXkocm9BZGQobGVuZ3RoKSwgcm9BZGQoMCkpXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBXcml0aW5nIHB1cnBvc2VcbiAgICAgKi9cbiAgICAvKipcbiAgICAgKiBJbmNyZW1lbnQgb2Zmc2V0XG4gICAgICogQHBhcmFtIGFtb3VudCAtIGhvdyBtYW55IGJ5dGVzXG4gICAgICogQHJldHVybnMgVGhlIG9mZnNldCB3aGVuIHRoaXMgcmVzZXJ2aW5nIHN0YXJ0cy5cbiAgICAgKi9cbiAgICBpbmNyZW1lbnRXcml0ZU9mZnNldChhbW91bnQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgICByZXR1cm4gd29BZGQoYW1vdW50KVxuICAgIH0sXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgVGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyB3cml0ZW4gaW4gdGhlIGJ1ZmZlci5cbiAgICAgKi9cbiAgICBzaXplKCk6IG51bWJlciB7XG4gICAgICByZXR1cm4gd29mZnNldFxuICAgIH0sXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgVGhlIHN1YmFycmF5IGZyb20gMCB0byBvZmZzZXQuXG4gICAgICovXG4gICAgdG9CaW5hcnkoKSB7XG4gICAgICByZXR1cm4gYnVmZmVyLnN1YmFycmF5KDAsIHdvZmZzZXQpXG4gICAgfSxcbiAgICB3cml0ZUJ1ZmZlcih2YWx1ZTogVWludDhBcnJheSwgd3JpdGVMZW5ndGg6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgICBpZiAod3JpdGVMZW5ndGgpIHtcbiAgICAgICAgdGhpcy53cml0ZVVpbnQzMih2YWx1ZS5ieXRlTGVuZ3RoKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBvID0gd29BZGQodmFsdWUuYnl0ZUxlbmd0aClcbiAgICAgIGJ1ZmZlci5zZXQodmFsdWUsIG8pXG4gICAgfSxcbiAgICB3cml0ZUZsb2F0MzIodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgY29uc3QgbyA9IHdvQWRkKDQpXG4gICAgICB2aWV3LnNldEZsb2F0MzIobywgdmFsdWUpXG4gICAgfSxcbiAgICB3cml0ZUZsb2F0NjQodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgY29uc3QgbyA9IHdvQWRkKDgpXG4gICAgICB2aWV3LnNldEZsb2F0NjQobywgdmFsdWUpXG4gICAgfSxcbiAgICB3cml0ZUludDgodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgY29uc3QgbyA9IHdvQWRkKDEpXG4gICAgICB2aWV3LnNldEludDgobywgdmFsdWUpXG4gICAgfSxcbiAgICB3cml0ZUludDE2KHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgIGNvbnN0IG8gPSB3b0FkZCgyKVxuICAgICAgdmlldy5zZXRJbnQxNihvLCB2YWx1ZSlcbiAgICB9LFxuICAgIHdyaXRlSW50MzIodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgY29uc3QgbyA9IHdvQWRkKDQpXG4gICAgICB2aWV3LnNldEludDMyKG8sIHZhbHVlKVxuICAgIH0sXG4gICAgd3JpdGVJbnQ2NCh2YWx1ZTogYmlnaW50KTogdm9pZCB7XG4gICAgICBjb25zdCBvID0gd29BZGQoOClcbiAgICAgIHZpZXcuc2V0QmlnSW50NjQobywgdmFsdWUpXG4gICAgfSxcbiAgICB3cml0ZVVpbnQ4KHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgIGNvbnN0IG8gPSB3b0FkZCgxKVxuICAgICAgdmlldy5zZXRVaW50OChvLCB2YWx1ZSlcbiAgICB9LFxuICAgIHdyaXRlVWludDE2KHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgIGNvbnN0IG8gPSB3b0FkZCgyKVxuICAgICAgdmlldy5zZXRVaW50MTYobywgdmFsdWUpXG4gICAgfSxcbiAgICB3cml0ZVVpbnQzMih2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICBjb25zdCBvID0gd29BZGQoNClcbiAgICAgIHZpZXcuc2V0VWludDMyKG8sIHZhbHVlKVxuICAgIH0sXG4gICAgd3JpdGVVaW50NjQodmFsdWU6IGJpZ2ludCk6IHZvaWQge1xuICAgICAgY29uc3QgbyA9IHdvQWRkKDgpXG4gICAgICB2aWV3LnNldEJpZ1VpbnQ2NChvLCB2YWx1ZSlcbiAgICB9LFxuICAgIC8vIERhdGF2aWV3IFByb3h5XG4gICAgZ2V0RmxvYXQzMihvZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgICByZXR1cm4gdmlldy5nZXRGbG9hdDMyKG9mZnNldClcbiAgICB9LFxuICAgIGdldEZsb2F0NjQob2Zmc2V0OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIHZpZXcuZ2V0RmxvYXQ2NChvZmZzZXQpXG4gICAgfSxcbiAgICBnZXRJbnQ4KG9mZnNldDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiB2aWV3LmdldEludDgob2Zmc2V0KVxuICAgIH0sXG4gICAgZ2V0SW50MTYob2Zmc2V0OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIHZpZXcuZ2V0SW50MTYob2Zmc2V0KVxuICAgIH0sXG4gICAgZ2V0SW50MzIob2Zmc2V0OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIHZpZXcuZ2V0SW50MzIob2Zmc2V0KVxuICAgIH0sXG4gICAgZ2V0SW50NjQob2Zmc2V0OiBudW1iZXIpOiBiaWdpbnQge1xuICAgICAgcmV0dXJuIHZpZXcuZ2V0QmlnSW50NjQob2Zmc2V0KVxuICAgIH0sXG4gICAgZ2V0VWludDgob2Zmc2V0OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIHZpZXcuZ2V0VWludDgob2Zmc2V0KVxuICAgIH0sXG4gICAgZ2V0VWludDE2KG9mZnNldDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiB2aWV3LmdldFVpbnQxNihvZmZzZXQpXG4gICAgfSxcbiAgICBnZXRVaW50MzIob2Zmc2V0OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIHZpZXcuZ2V0VWludDMyKG9mZnNldClcbiAgICB9LFxuICAgIGdldFVpbnQ2NChvZmZzZXQ6IG51bWJlcik6IGJpZ2ludCB7XG4gICAgICByZXR1cm4gdmlldy5nZXRCaWdVaW50NjQob2Zmc2V0KVxuICAgIH0sXG4gICAgc2V0RmxvYXQzMihvZmZzZXQ6IG51bWJlciwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgdmlldy5zZXRGbG9hdDMyKG9mZnNldCwgdmFsdWUpXG4gICAgfSxcbiAgICBzZXRGbG9hdDY0KG9mZnNldDogbnVtYmVyLCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICB2aWV3LnNldEZsb2F0NjQob2Zmc2V0LCB2YWx1ZSlcbiAgICB9LFxuICAgIHNldEludDgob2Zmc2V0OiBudW1iZXIsIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgIHZpZXcuc2V0SW50OChvZmZzZXQsIHZhbHVlKVxuICAgIH0sXG4gICAgc2V0SW50MTYob2Zmc2V0OiBudW1iZXIsIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgIHZpZXcuc2V0SW50MTYob2Zmc2V0LCB2YWx1ZSlcbiAgICB9LFxuICAgIHNldEludDMyKG9mZnNldDogbnVtYmVyLCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICB2aWV3LnNldEludDMyKG9mZnNldCwgdmFsdWUpXG4gICAgfSxcbiAgICBzZXRJbnQ2NChvZmZzZXQ6IG51bWJlciwgdmFsdWU6IGJpZ2ludCk6IHZvaWQge1xuICAgICAgdmlldy5zZXRCaWdJbnQ2NChvZmZzZXQsIHZhbHVlKVxuICAgIH0sXG4gICAgc2V0VWludDgob2Zmc2V0OiBudW1iZXIsIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgIHZpZXcuc2V0VWludDgob2Zmc2V0LCB2YWx1ZSlcbiAgICB9LFxuICAgIHNldFVpbnQxNihvZmZzZXQ6IG51bWJlciwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgdmlldy5zZXRVaW50MTYob2Zmc2V0LCB2YWx1ZSlcbiAgICB9LFxuICAgIHNldFVpbnQzMihvZmZzZXQ6IG51bWJlciwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgdmlldy5zZXRVaW50MzIob2Zmc2V0LCB2YWx1ZSlcbiAgICB9LFxuICAgIHNldFVpbnQ2NChvZmZzZXQ6IG51bWJlciwgdmFsdWU6IGJpZ2ludCk6IHZvaWQge1xuICAgICAgdmlldy5zZXRCaWdVaW50NjQob2Zmc2V0LCB2YWx1ZSlcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIEJ5dGVCdWZmZXIgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVCeXRlQnVmZmVyPlxuIiwiLyoqXG4gKiBUaGUgd2lyZSBtZXNzYWdlIGlzIHRoZSB0b3AtbGV2ZWwgbWVzc2FnZSB0aGF0IGNhbiBiZSBwYWNrZWRcbiAqICBpbnNpZGUgaXQgY2FuIGNvbnRhaW4gYSBkYXRhIHdpdGggYW5vdGhlciBzdHJ1Y3R1cmUgb3IgcHJvdG9jb2xcbiAqXG4gKiBFYWNoIHdpcmUgbWVzc2FnZSBoYXMgdGhyZWUgcHJpbWl0aXZlIHByb3BlcnR5IHRoYXQgaXQnbGwgbmV2ZXIgY2hhbmdlXG4gKiAgIC0tLT4gbGVuZ3RoICAgICAgICB1aW50MzIgKG1lc3NhZ2Ugc2l6ZSB1cCB0byA0LDI5NCw5NjcsMjk1KVxuICogICAtLS0+IHZlcnNpb24gICAgICAgdWludDMyIChmb3Igbm93IGp1c3QgYSBudW1iZXIgd2hpY2ggaXMgemVybylcbiAqICAgLS0tPiBtZXNzYWdlIHR5cGUgIHVpbnQzMlxuICogVGhlIGxlbmd0aCBpbmRpY2F0ZXMgaG93IG1hbnkgYnl0ZXMgYXJlIGFib3ZlIHNlbGYsIHRoZSB2ZXJzaW9uIGluXG4gKiBjb21iaW5hdGlvbiB3aXRoIG1lc3NhZ2UgdHlwZSBkZWZpbmVzIHRoZSBzZXQgb2YgaGFuZGxlcnMgdGhhdCB3aWxsIGJlXG4gKiBhdmFpbGFibGUgdG8gcHJvY2VzcyB0aGUgbWVzc2FnZVxuICpcbiAqL1xuXG5pbXBvcnQgeyBCeXRlQnVmZmVyIH0gZnJvbSAnLi9CeXRlQnVmZmVyJ1xuXG50eXBlIFVpbnQzMiA9IG51bWJlclxuXG5leHBvcnQgbmFtZXNwYWNlIFdpcmVNZXNzYWdlIHtcbiAgZXhwb3J0IGVudW0gRW51bSB7XG4gICAgUkVTRVJWRUQgPSAwLFxuXG4gICAgLy8gQ29tcG9uZW50IE9wZXJhdGlvblxuICAgIFBVVF9DT01QT05FTlQgPSAxLFxuICAgIERFTEVURV9DT01QT05FTlQgPSAyLFxuXG4gICAgTUFYX01FU1NBR0VfVFlQRVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBsZW5ndGggLSBVaW50MzIgdGhlIGxlbmd0aCBvZiBhbGwgbWVzc2FnZSAoaW5jbHVkaW5nIHRoZSBoZWFkZXIpXG4gICAqIEBwYXJhbSB0eXBlIC0gZGVmaW5lIHRoZSBmdW5jdGlvbiB3aGljaCBoYW5kbGVzIHRoZSBkYXRhXG4gICAqL1xuICBleHBvcnQgdHlwZSBIZWFkZXIgPSB7XG4gICAgbGVuZ3RoOiBVaW50MzJcbiAgICB0eXBlOiBVaW50MzJcbiAgfVxuXG4gIGV4cG9ydCBjb25zdCBIRUFERVJfTEVOR1RIID0gOFxuICAvKipcbiAgICogVmFsaWRhdGUgaWYgdGhlIG1lc3NhZ2UgaW5jb21pbmcgaXMgY29tcGxldGVkXG4gICAqIEBwYXJhbSBidWZcbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZShidWY6IEJ5dGVCdWZmZXIpIHtcbiAgICBjb25zdCByZW0gPSBidWYucmVtYWluaW5nQnl0ZXMoKVxuICAgIGlmIChyZW0gPCBIRUFERVJfTEVOR1RIKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBjb25zdCBtZXNzYWdlTGVuZ3RoID0gYnVmLmdldFVpbnQzMihidWYuY3VycmVudFJlYWRPZmZzZXQoKSlcbiAgICBpZiAocmVtIDwgbWVzc2FnZUxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiByZWFkSGVhZGVyKGJ1ZjogQnl0ZUJ1ZmZlcik6IEhlYWRlciB8IG51bGwge1xuICAgIGlmICghdmFsaWRhdGUoYnVmKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGVuZ3RoOiBidWYucmVhZFVpbnQzMigpLFxuICAgICAgdHlwZTogYnVmLnJlYWRVaW50MzIoKSBhcyBFbnVtXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFdpcmVNZXNzYWdlXG4iLCJpbXBvcnQgeyBDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vZW5naW5lL2NvbXBvbmVudCdcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4uLy4uL2VuZ2luZS9lbnRpdHknXG5pbXBvcnQgeyBCeXRlQnVmZmVyIH0gZnJvbSAnLi4vQnl0ZUJ1ZmZlcidcbmltcG9ydCBXaXJlTWVzc2FnZSBmcm9tICcuLi93aXJlTWVzc2FnZSdcblxuZXhwb3J0IG5hbWVzcGFjZSBDb21wb25lbnRPcGVyYXRpb24ge1xuICAvKipcbiAgICogQHBhcmFtIGVudGl0eSAtIFVpbnQzMiBudW1iZXIgb2YgdGhlIGVudGl0eVxuICAgKiBAcGFyYW0gY29tcG9uZW50SWQgLSBVaW50MzIgbnVtYmVyIG9mIGlkXG4gICAqIEBwYXJhbSB0aW1lc3RhbXAgLSBVaW50NjQgTGFtcG9ydCB0aW1lc3RhbXBcbiAgICogQHBhcmFtIGRhdGEgLSBVaW50OFtdIGRhdGEgb2YgY29tcG9uZW50XG4gICAqL1xuICBleHBvcnQgdHlwZSBJUHV0Q29tcG9uZW50ID0ge1xuICAgIGVudGl0eTogRW50aXR5XG4gICAgY29tcG9uZW50SWQ6IG51bWJlclxuICAgIHRpbWVzdGFtcDogbnVtYmVyXG4gICAgZGF0YTogVWludDhBcnJheVxuICB9XG4gIGV4cG9ydCB0eXBlIElEZWxldGVDb21wb25lbnQgPSB7XG4gICAgZW50aXR5OiBFbnRpdHlcbiAgICBjb21wb25lbnRJZDogbnVtYmVyXG4gICAgdGltZXN0YW1wOiBudW1iZXJcbiAgICBkYXRhPzogdW5kZWZpbmVkXG4gIH1cblxuICBleHBvcnQgY29uc3QgTUVTU0FHRV9IRUFERVJfTEVOR1RIID0gMjBcbiAgLyoqXG4gICAqIENhbGwgdGhpcyBmdW5jdGlvbiBmb3IgYW4gb3B0aW1hbCB3cml0aW5nIGRhdGEgcGFzc2luZyB0aGUgQnl0ZUJ1ZmZlclxuICAgKiAgYWxyZWFkeSBhbGxvY2F0ZWRcbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiB3cml0ZShcbiAgICB0eXBlOiBXaXJlTWVzc2FnZS5FbnVtLFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHRpbWVzdGFtcDogbnVtYmVyLFxuICAgIGNvbXBvbmVudERlZmluaXRpb246IENvbXBvbmVudERlZmluaXRpb24sXG4gICAgYnVmOiBCeXRlQnVmZmVyXG4gICkge1xuICAgIC8vIHJlc2VydmUgdGhlIGJlZ2lubmluZ1xuICAgIGNvbnN0IHN0YXJ0TWVzc2FnZU9mZnNldCA9IGJ1Zi5pbmNyZW1lbnRXcml0ZU9mZnNldChcbiAgICAgIFdpcmVNZXNzYWdlLkhFQURFUl9MRU5HVEggKyBNRVNTQUdFX0hFQURFUl9MRU5HVEhcbiAgICApXG5cbiAgICAvLyB3cml0ZSBib2R5XG4gICAgaWYgKHR5cGUgPT09IFdpcmVNZXNzYWdlLkVudW0uUFVUX0NPTVBPTkVOVCkge1xuICAgICAgY29tcG9uZW50RGVmaW5pdGlvbi53cml0ZVRvQnl0ZUJ1ZmZlcihlbnRpdHksIGJ1ZilcbiAgICB9XG4gICAgY29uc3QgbWVzc2FnZUxlbmd0aCA9IGJ1Zi5zaXplKCkgLSBzdGFydE1lc3NhZ2VPZmZzZXRcblxuICAgIC8vIFdyaXRlIFdpcmVNZXNzYWdlIGhlYWRlclxuICAgIGJ1Zi5zZXRVaW50MzIoc3RhcnRNZXNzYWdlT2Zmc2V0LCBtZXNzYWdlTGVuZ3RoKVxuICAgIGJ1Zi5zZXRVaW50MzIoc3RhcnRNZXNzYWdlT2Zmc2V0ICsgNCwgdHlwZSlcblxuICAgIC8vIFdyaXRlIENvbXBvbmVudE9wZXJhdGlvbiBoZWFkZXJcbiAgICBidWYuc2V0VWludDMyKHN0YXJ0TWVzc2FnZU9mZnNldCArIDgsIGVudGl0eSlcbiAgICBidWYuc2V0VWludDMyKHN0YXJ0TWVzc2FnZU9mZnNldCArIDEyLCBjb21wb25lbnREZWZpbml0aW9uLl9pZClcbiAgICBidWYuc2V0VWludDY0KHN0YXJ0TWVzc2FnZU9mZnNldCArIDE2LCBCaWdJbnQodGltZXN0YW1wKSlcbiAgICBidWYuc2V0VWludDMyKFxuICAgICAgc3RhcnRNZXNzYWdlT2Zmc2V0ICsgMjQsXG4gICAgICBtZXNzYWdlTGVuZ3RoIC0gTUVTU0FHRV9IRUFERVJfTEVOR1RIIC0gV2lyZU1lc3NhZ2UuSEVBREVSX0xFTkdUSFxuICAgIClcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiByZWFkKFxuICAgIGJ1ZjogQnl0ZUJ1ZmZlclxuICApOiAoV2lyZU1lc3NhZ2UuSGVhZGVyICYgKElQdXRDb21wb25lbnQgfCBJRGVsZXRlQ29tcG9uZW50KSkgfCBudWxsIHtcbiAgICBjb25zdCBoZWFkZXIgPSBXaXJlTWVzc2FnZS5yZWFkSGVhZGVyKGJ1ZilcblxuICAgIGlmICghaGVhZGVyKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IGNvbW1vbiA9IHtcbiAgICAgIC4uLmhlYWRlcixcbiAgICAgIGVudGl0eTogYnVmLnJlYWRVaW50MzIoKSBhcyBFbnRpdHksXG4gICAgICBjb21wb25lbnRJZDogYnVmLnJlYWRJbnQzMigpLFxuICAgICAgdGltZXN0YW1wOiBOdW1iZXIoYnVmLnJlYWRVaW50NjQoKSlcbiAgICB9XG5cbiAgICBpZiAoaGVhZGVyLnR5cGUgPT09IFdpcmVNZXNzYWdlLkVudW0uREVMRVRFX0NPTVBPTkVOVCkge1xuICAgICAgcmV0dXJuIGNvbW1vblxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5jb21tb24sXG4gICAgICBkYXRhOiBidWYucmVhZEJ1ZmZlcigpXG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vZW5naW5lL2NvbXBvbmVudCdcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4uLy4uL2VuZ2luZS9lbnRpdHknXG5cbmV4cG9ydCBuYW1lc3BhY2UgQ3JkdFV0aWxzIHtcbiAgZXhwb3J0IHR5cGUgQ29tcG9uZW50SUQgPSBDb21wb25lbnREZWZpbml0aW9uWydfaWQnXVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRLZXkoZW50aXR5OiBFbnRpdHksIGNvbXBvbmVudElkOiBDb21wb25lbnRJRCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2VudGl0eX0uJHtjb21wb25lbnRJZH1gXG4gIH1cblxuICBleHBvcnQgZW51bSBTeW5jaHJvbml6ZWRFbnRpdHlUeXBlIHtcbiAgICAvLyBzeW5jaHJvbml6ZXMgZW50aXRpZXMgd2l0aCB0aGUgTmV0d29ya1N5bmNocm9uaXplZCBjb21wb25lbnQgb25seSwgdXNlZCBmb3IgbmV0d29ya2VkIGdhbWVzXG4gICAgTkVUV09SS0VELFxuICAgIC8vIHN5bmNocm9uaXplcyBlbnRpdGllcyBuZWVkZWQgYnkgdGhlIHJlbmRlcmVyXG4gICAgUkVOREVSRVJcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDcmR0VXRpbHNcbiIsImltcG9ydCB7IGNyZHRQcm90b2NvbCwgTWVzc2FnZSBhcyBDcmR0TWVzc2FnZSB9IGZyb20gJ0BkY2wvY3JkdCdcblxuaW1wb3J0IHR5cGUgeyBQcmVFbmdpbmUgfSBmcm9tICcuLi8uLi9lbmdpbmUnXG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tICcuLi8uLi9lbmdpbmUvZW50aXR5J1xuaW1wb3J0IHsgY3JlYXRlQnl0ZUJ1ZmZlciB9IGZyb20gJy4uLy4uL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IENvbXBvbmVudE9wZXJhdGlvbiBhcyBNZXNzYWdlIH0gZnJvbSAnLi4vLi4vc2VyaWFsaXphdGlvbi9jcmR0L2NvbXBvbmVudE9wZXJhdGlvbidcbmltcG9ydCBXaXJlTWVzc2FnZSBmcm9tICcuLi8uLi9zZXJpYWxpemF0aW9uL3dpcmVNZXNzYWdlJ1xuaW1wb3J0IHsgVHJhbnNwb3J0IH0gZnJvbSAnLi90cmFuc3BvcnRzL3R5cGVzJ1xuaW1wb3J0IHsgUmVjZWl2ZU1lc3NhZ2UsIFRyYW5zcG9ydE1lc3NhZ2UgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IENyZHRVdGlscyBmcm9tICcuL3V0aWxzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JkdFNjZW5lU3lzdGVtKHtcbiAgZW5naW5lLFxuICB0cmFuc3BvcnRzXG59OiB7XG4gIGVuZ2luZTogUHJlRW5naW5lXG4gIHRyYW5zcG9ydHM6IFRyYW5zcG9ydFtdXG59KSB7XG4gIC8vIENSRFQgQ2xpZW50XG4gIGNvbnN0IGNyZHRDbGllbnQgPSBjcmR0UHJvdG9jb2w8VWludDhBcnJheT4oKVxuICAvLyBNZXNzYWdlcyB0aGF0IHdlIHJlY2VpdmVkIGF0IHRyYW5zcG9ydC5vbk1lc3NhZ2Ugd2FpdGluZyB0byBiZSBwcm9jZXNzZWRcbiAgY29uc3QgcmVjZWl2ZWRNZXNzYWdlczogUmVjZWl2ZU1lc3NhZ2VbXSA9IFtdXG4gIC8vIE1lc3NhZ2VzIGFscmVhZHkgcHJvY2Vzc2VkIGJ5IHRoZSBlbmdpbmUgYnV0IHRoYXQgd2UgbmVlZCB0byBicm9hZGNhc3QgdG8gb3RoZXIgdHJhbnNwb3J0cy5cbiAgY29uc3QgdHJhbnNwb3J0TWVzc2FnZXM6IFRyYW5zcG9ydE1lc3NhZ2VbXSA9IFtdXG4gIC8vIE1hcCBvZiBlbnRpdGllcyBhbHJlYWR5IHByb2Nlc3NlZCBhdCBsZWFzdCBvbmNlXG5cbiAgdHJhbnNwb3J0cy5mb3JFYWNoKFxuICAgICh0cmFuc3BvcnQpID0+ICh0cmFuc3BvcnQub25tZXNzYWdlID0gcGFyc2VDaHVua01lc3NhZ2UodHJhbnNwb3J0LnR5cGUpKVxuICApXG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB0cmFuc3BvcnRUeXBlIHRyYW5wb3J0IGlkIHRvIGlkZW50aXkgbWVzc2FnZXNcbiAgICogQHJldHVybnMgYSBmdW5jdGlvbiB0byBwcm9jZXNzIHJlY2VpdmVkIG1lc3NhZ2VzXG4gICAqL1xuICBmdW5jdGlvbiBwYXJzZUNodW5rTWVzc2FnZSh0cmFuc3BvcnRUeXBlOiBzdHJpbmcpIHtcbiAgICAvKipcbiAgICAgKiBSZWNlaXZlcyBhIGNodW5rIG9mIGJpbmFyeSBtZXNzYWdlcyBhbmQgc3RvcmVzIGFsbCB0aGUgdmFsaWRcbiAgICAgKiBDb21wb25lbnQgT3BlcmF0aW9uIE1lc3NhZ2VzIGF0IG1lc3NhZ2VzIHF1ZXVlXG4gICAgICogQHBhcmFtIGNodW5rTWVzc2FnZSBBIGNodW5rIG9mIGJpbmFyeSBtZXNzYWdlc1xuICAgICAqL1xuICAgIHJldHVybiBmdW5jdGlvbiBwYXJzZUNodW5rTWVzc2FnZShjaHVua01lc3NhZ2U6IFVpbnQ4QXJyYXkpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGNyZWF0ZUJ5dGVCdWZmZXIoe1xuICAgICAgICByZWFkaW5nOiB7IGJ1ZmZlcjogY2h1bmtNZXNzYWdlLCBjdXJyZW50T2Zmc2V0OiAwIH1cbiAgICAgIH0pXG5cbiAgICAgIHdoaWxlIChXaXJlTWVzc2FnZS52YWxpZGF0ZShidWZmZXIpKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IGJ1ZmZlci5jdXJyZW50UmVhZE9mZnNldCgpXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBNZXNzYWdlLnJlYWQoYnVmZmVyKSFcblxuICAgICAgICBjb25zdCB7IHR5cGUsIGVudGl0eSwgY29tcG9uZW50SWQsIGRhdGEsIHRpbWVzdGFtcCB9ID0gbWVzc2FnZVxuICAgICAgICByZWNlaXZlZE1lc3NhZ2VzLnB1c2goe1xuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgZW50aXR5LFxuICAgICAgICAgIGNvbXBvbmVudElkLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgdGltZXN0YW1wLFxuICAgICAgICAgIHRyYW5zcG9ydFR5cGUsXG4gICAgICAgICAgbWVzc2FnZUJ1ZmZlcjogYnVmZmVyXG4gICAgICAgICAgICAuYnVmZmVyKClcbiAgICAgICAgICAgIC5zdWJhcnJheShvZmZzZXQsIGJ1ZmZlci5jdXJyZW50UmVhZE9mZnNldCgpKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW5kIGNsZWFyIHRoZSBtZXNzYWVzIHF1ZXVlXG4gICAqIEByZXR1cm5zIG1lc3NhZ2VzIHJlY2lldmVkIGJ5IHRoZSB0cmFuc3BvcnQgdG8gcHJvY2VzcyBvbiB0aGUgbmV4dCB0aWNrXG4gICAqL1xuICBmdW5jdGlvbiBnZXRNZXNzYWdlczxUID0gdW5rbm93bj4odmFsdWU6IFRbXSkge1xuICAgIGNvbnN0IG1lc3NhZ2VzVG9Qcm9jZXNzID0gQXJyYXkuZnJvbSh2YWx1ZSlcbiAgICB2YWx1ZS5sZW5ndGggPSAwXG4gICAgcmV0dXJuIG1lc3NhZ2VzVG9Qcm9jZXNzXG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmbiB3aWxsIGJlIGNhbGxlZCBvbiBldmVyeSB0aWNrLlxuICAgKiBQcm9jZXNzIGFsbCB0aGUgbWVzc2FnZXMgcXVldWUgcmVjZWl2ZWQgYnkgdGhlIHRyYW5zcG9ydFxuICAgKi9cbiAgZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2VzKCkge1xuICAgIGNvbnN0IG1lc3NhZ2VzVG9Qcm9jZXNzID0gZ2V0TWVzc2FnZXMocmVjZWl2ZWRNZXNzYWdlcylcbiAgICBmb3IgKGNvbnN0IHRyYW5zcG9ydCBvZiB0cmFuc3BvcnRzKSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBjcmVhdGVCeXRlQnVmZmVyKClcbiAgICAgIGZvciAoY29uc3QgbWVzc2FnZSBvZiBtZXNzYWdlc1RvUHJvY2Vzcykge1xuICAgICAgICBjb25zdCB7IGRhdGEsIHRpbWVzdGFtcCwgY29tcG9uZW50SWQsIGVudGl0eSwgdHlwZSB9ID0gbWVzc2FnZVxuICAgICAgICBjb25zdCBjcmR0TWVzc2FnZTogQ3JkdE1lc3NhZ2U8VWludDhBcnJheT4gPSB7XG4gICAgICAgICAga2V5OiBDcmR0VXRpbHMuZ2V0S2V5KGVudGl0eSwgY29tcG9uZW50SWQpLFxuICAgICAgICAgIGRhdGE6IGRhdGEgfHwgbnVsbCxcbiAgICAgICAgICB0aW1lc3RhbXA6IHRpbWVzdGFtcFxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGVuZ2luZS5nZXRDb21wb25lbnQoY29tcG9uZW50SWQpXG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBjcmR0Q2xpZW50LnByb2Nlc3NNZXNzYWdlKGNyZHRNZXNzYWdlKVxuXG4gICAgICAgIC8vIENSRFQgb3V0ZGF0ZWQgbWVzc2FnZS4gUmVzZW5kIHRoaXMgbWVzc2FnZSB0aHJvdWdoIHRoZSB3aXJlXG4gICAgICAgIGlmIChjcmR0TWVzc2FnZSAhPT0gY3VycmVudCkge1xuICAgICAgICAgIGNvbnN0IHR5cGUgPSBjb21wb25lbnQuaGFzKGVudGl0eSlcbiAgICAgICAgICAgID8gV2lyZU1lc3NhZ2UuRW51bS5QVVRfQ09NUE9ORU5UXG4gICAgICAgICAgICA6IFdpcmVNZXNzYWdlLkVudW0uREVMRVRFX0NPTVBPTkVOVFxuICAgICAgICAgIE1lc3NhZ2Uud3JpdGUodHlwZSwgZW50aXR5LCBjdXJyZW50LnRpbWVzdGFtcCwgY29tcG9uZW50LCBidWZmZXIpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUHJvY2VzcyBDUkRUIE1lc3NhZ2VcbiAgICAgICAgICBpZiAodHlwZSA9PT0gV2lyZU1lc3NhZ2UuRW51bS5ERUxFVEVfQ09NUE9ORU5UKSB7XG4gICAgICAgICAgICBjb21wb25lbnQuZGVsZXRlRnJvbShlbnRpdHkpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG9wdHMgPSB7XG4gICAgICAgICAgICAgIHJlYWRpbmc6IHsgYnVmZmVyOiBtZXNzYWdlLmRhdGEhLCBjdXJyZW50T2Zmc2V0OiAwIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGJiID0gY3JlYXRlQnl0ZUJ1ZmZlcihvcHRzKVxuXG4gICAgICAgICAgICAvLyBVcGRhdGUgZW5naW5lIGNvbXBvbmVudFxuICAgICAgICAgICAgY29tcG9uZW50LnVwc2VydEZyb21CaW5hcnkobWVzc2FnZS5lbnRpdHksIGJiKVxuICAgICAgICAgICAgY29tcG9uZW50LmNsZWFyRGlydHkoKVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBBZGQgbWVzc2FnZSB0byB0cmFuc3BvcnQgcXVldWUgdG8gYmUgcHJvY2Vzc2VkIGJ5IG90aGVycyB0cmFuc3BvcnRzXG4gICAgICAgICAgdHJhbnNwb3J0TWVzc2FnZXMucHVzaChtZXNzYWdlKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChidWZmZXIuc2l6ZSgpKSB7XG4gICAgICAgIHRyYW5zcG9ydC5zZW5kKGJ1ZmZlci50b0JpbmFyeSgpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJdGVyYXRlcyB0aGUgZGlydHkgbWFwIGFuZCBnZW5lcmF0ZXMgY3JkdCBtZXNzYWdlcyB0byBiZSBzZW5kXG4gICAqIEBwYXJhbSBkaXJ0eU1hcCBhIG1hcCBvZiB7IGVudGl0aWVzOiBbY29tcG9uZW50SWRdIH1cbiAgICovXG4gIGZ1bmN0aW9uIGNyZWF0ZU1lc3NhZ2VzKGRpcnR5TWFwOiBNYXA8RW50aXR5LCBTZXQ8bnVtYmVyPj4pIHtcbiAgICAvLyBDUkRUIE1lc3NhZ2VzIHdpbGwgYmUgdGhlIG1lcmdlIGJldHdlZW4gdGhlIHJlY2lldmVkIHRyYW5zcG9ydCBtZXNzYWdlcyBhbmQgdGhlIG5ldyBjcmR0IG1lc3NhZ2VzXG4gICAgY29uc3QgY3JkdE1lc3NhZ2VzID0gZ2V0TWVzc2FnZXModHJhbnNwb3J0TWVzc2FnZXMpXG4gICAgY29uc3QgYnVmZmVyID0gY3JlYXRlQnl0ZUJ1ZmZlcigpXG5cbiAgICBmb3IgKGNvbnN0IFtlbnRpdHksIGNvbXBvbmVudHNJZF0gb2YgZGlydHlNYXApIHtcbiAgICAgIGZvciAoY29uc3QgY29tcG9uZW50SWQgb2YgY29tcG9uZW50c0lkKSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGVuZ2luZS5nZXRDb21wb25lbnQoY29tcG9uZW50SWQpXG4gICAgICAgIGNvbnN0IGVudGl0eUNvbXBvbmVudCA9IGNvbXBvbmVudC5oYXMoZW50aXR5KVxuICAgICAgICAgID8gY29tcG9uZW50LnRvQmluYXJ5KGVudGl0eSkudG9CaW5hcnkoKVxuICAgICAgICAgIDogbnVsbFxuICAgICAgICBjb25zdCBldmVudCA9IGNyZHRDbGllbnQuY3JlYXRlRXZlbnQoXG4gICAgICAgICAgQ3JkdFV0aWxzLmdldEtleShlbnRpdHksIGNvbXBvbmVudElkKSxcbiAgICAgICAgICBlbnRpdHlDb21wb25lbnRcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBvZmZzZXQgPSBidWZmZXIuY3VycmVudFdyaXRlT2Zmc2V0KClcbiAgICAgICAgY29uc3QgdHlwZSA9IGNvbXBvbmVudC5oYXMoZW50aXR5KVxuICAgICAgICAgID8gV2lyZU1lc3NhZ2UuRW51bS5QVVRfQ09NUE9ORU5UXG4gICAgICAgICAgOiBXaXJlTWVzc2FnZS5FbnVtLkRFTEVURV9DT01QT05FTlRcbiAgICAgICAgY29uc3QgdHJhbnNwb3J0TWVzc2FnZTogT21pdDxUcmFuc3BvcnRNZXNzYWdlLCAnbWVzc2FnZUJ1ZmZlcic+ID0ge1xuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgY29tcG9uZW50SWQsXG4gICAgICAgICAgZW50aXR5LFxuICAgICAgICAgIHRpbWVzdGFtcDogZXZlbnQudGltZXN0YW1wXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRyYW5zcG9ydHMuc29tZSgodCkgPT4gdC5maWx0ZXIodHJhbnNwb3J0TWVzc2FnZSkpKSB7XG4gICAgICAgICAgTWVzc2FnZS53cml0ZSh0eXBlLCBlbnRpdHksIGV2ZW50LnRpbWVzdGFtcCwgY29tcG9uZW50LCBidWZmZXIpXG4gICAgICAgICAgY3JkdE1lc3NhZ2VzLnB1c2goe1xuICAgICAgICAgICAgLi4udHJhbnNwb3J0TWVzc2FnZSxcbiAgICAgICAgICAgIG1lc3NhZ2VCdWZmZXI6IGJ1ZmZlclxuICAgICAgICAgICAgICAuYnVmZmVyKClcbiAgICAgICAgICAgICAgLnN1YmFycmF5KG9mZnNldCwgYnVmZmVyLmN1cnJlbnRXcml0ZU9mZnNldCgpKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZW5kIG1lc3NhZ2VzIHRvIHRyYW5zcG9ydHNcbiAgICBjb25zdCB0cmFuc3BvcnRCdWZmZXIgPSBjcmVhdGVCeXRlQnVmZmVyKClcbiAgICBmb3IgKGNvbnN0IHRyYW5zcG9ydCBvZiB0cmFuc3BvcnRzKSB7XG4gICAgICB0cmFuc3BvcnRCdWZmZXIucmVzZXRCdWZmZXIoKVxuICAgICAgZm9yIChjb25zdCBtZXNzYWdlIG9mIGNyZHRNZXNzYWdlcykge1xuICAgICAgICBpZiAodHJhbnNwb3J0LmZpbHRlcihtZXNzYWdlKSkge1xuICAgICAgICAgIHRyYW5zcG9ydEJ1ZmZlci53cml0ZUJ1ZmZlcihtZXNzYWdlLm1lc3NhZ2VCdWZmZXIsIGZhbHNlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodHJhbnNwb3J0QnVmZmVyLnNpemUoKSkge1xuICAgICAgICB0cmFuc3BvcnQuc2VuZCh0cmFuc3BvcnRCdWZmZXIudG9CaW5hcnkoKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNyZWF0ZU1lc3NhZ2VzLFxuICAgIHJlY2VpdmVNZXNzYWdlc1xuICB9XG59XG4iLCJpbXBvcnQgeyBFbnRpdHkgfSBmcm9tICcuL2VudGl0eSdcblxuZXhwb3J0IG5hbWVzcGFjZSBFbnRpdHlVdGlscyB7XG4gIGV4cG9ydCBjb25zdCBNQVhfRU5USVRJRVMgPSAxMDAwMFxuXG4gIGxldCBvZmZzZXQ6IG51bWJlciA9IE1BWF9FTlRJVElFU1xuICBleHBvcnQgZnVuY3Rpb24gZ2V0T2Zmc2V0KCkge1xuICAgIGNvbnN0IG9mZiA9IG9mZnNldCArIDFcbiAgICBvZmZzZXQgKz0gTUFYX0VOVElUSUVTXG4gICAgcmV0dXJuIG9mZlxuICB9XG5cbiAgY29uc3QgU1RBVElDX0VOVElUSUVTID0gWzAsIE1BWF9FTlRJVElFU11cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzU3RhdGljRW50aXR5KGVudGl0eTogRW50aXR5KSB7XG4gICAgY29uc3QgW21pbiwgbWF4XSA9IFNUQVRJQ19FTlRJVElFU1xuICAgIHJldHVybiBlbnRpdHkgPj0gbWluICYmIGVudGl0eSA8PSBtYXhcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBFbnRpdHlVdGlsc1xuIiwiaW1wb3J0IHsgRW50aXR5VXRpbHMgfSBmcm9tICcuL2VudGl0eS11dGlscydcblxuZGVjbGFyZSBjb25zdCBlbnRpdHlTeW1ib2w6IHVuaXF1ZSBzeW1ib2xcbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBFbnRpdHkgPSBudW1iZXIgJiB7IFtlbnRpdHlTeW1ib2xdOiB0cnVlIH1cblxuZXhwb3J0IGZ1bmN0aW9uIEVudGl0eUNvbnRhaW5lcigpIHtcbiAgY29uc3Qgc3RhdGljRW50aXR5ID0gRW50aXR5KClcbiAgY29uc3QgZHluYW1pY0VudGl0eSA9IEVudGl0eSh0cnVlKVxuICByZXR1cm4ge1xuICAgIGdlbmVyYXRlRW50aXR5KGR5bmFtaWM6IGJvb2xlYW4gPSBmYWxzZSk6IEVudGl0eSB7XG4gICAgICBpZiAoZHluYW1pYykgcmV0dXJuIGR5bmFtaWNFbnRpdHkuZ2VuZXJhdGVFbnRpdHkoKVxuICAgICAgcmV0dXJuIHN0YXRpY0VudGl0eS5nZW5lcmF0ZUVudGl0eSgpXG4gICAgfSxcbiAgICByZW1vdmVFbnRpdHkoZW50aXR5OiBFbnRpdHkpOiB2b2lkIHtcbiAgICAgIHN0YXRpY0VudGl0eS5yZW1vdmVFbnRpdHkoZW50aXR5KVxuICAgICAgZHluYW1pY0VudGl0eS5yZW1vdmVFbnRpdHkoZW50aXR5KVxuICAgIH0sXG4gICAgZ2V0VW51c2VkRW50aXRpZXMoKTogU2V0PEVudGl0eT4ge1xuICAgICAgcmV0dXJuIG5ldyBTZXQoW1xuICAgICAgICAuLi5zdGF0aWNFbnRpdHkuZ2V0VW51c2VkRW50aXRpZXMoKSxcbiAgICAgICAgLi4uZHluYW1pY0VudGl0eS5nZXRVbnVzZWRFbnRpdGllcygpXG4gICAgICBdKVxuICAgIH0sXG4gICAgZ2V0VXNlZEVudGl0aWVzKCk6IFNldDxFbnRpdHk+IHtcbiAgICAgIHJldHVybiBuZXcgU2V0KFtcbiAgICAgICAgLi4uc3RhdGljRW50aXR5LmdldFVzZWRFbnRpdGllcygpLFxuICAgICAgICAuLi5keW5hbWljRW50aXR5LmdldFVzZWRFbnRpdGllcygpXG4gICAgICBdKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBFbnRpdHkod2l0aE9mZnNldDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gIGZ1bmN0aW9uIGNyZWF0ZUVudGl0eShlbnRpdHk6IG51bWJlcik6IEVudGl0eSB7XG4gICAgcmV0dXJuIGVudGl0eSBhcyBFbnRpdHlcbiAgfVxuXG4gIC8vIFRPRE86IGdldG9mZnNldCBmcm9tIGEgc2VydmVyP1xuICBjb25zdCBvZmZzZXQgPSB3aXRoT2Zmc2V0ID8gRW50aXR5VXRpbHMuZ2V0T2Zmc2V0KCkgOiAwXG4gIGNvbnN0IHVzZWRFbnRpdGllczogU2V0PEVudGl0eT4gPSBuZXcgU2V0KClcbiAgY29uc3QgdW51c2VkRW50aXRpZXM6IFNldDxFbnRpdHk+ID0gbmV3IFNldCgpXG5cbiAgZnVuY3Rpb24gZ2VuZXJhdGVFbnRpdHkoKTogRW50aXR5IHtcbiAgICBpZiAoIXVudXNlZEVudGl0aWVzLnNpemUgJiYgIXVzZWRFbnRpdGllcy5zaXplKSB7XG4gICAgICBjb25zdCBlbnRpdHkgPSBjcmVhdGVFbnRpdHkob2Zmc2V0KVxuICAgICAgdXNlZEVudGl0aWVzLmFkZChlbnRpdHkpXG4gICAgICByZXR1cm4gZW50aXR5XG4gICAgfVxuXG4gICAgLy8gVE9ETzogd2hhdCBoYXBwZW5zIGlmIHdlIGRlbGV0ZSBhbiBlbnRpdHlcbiAgICAvLyBhbmQgY3JlYXRlcyBhIG5ldyBvbmUgaW4gdGhlIHNhbWUgdGlja1xuICAgIGNvbnN0IGl0ZXJhdG9yID0gdW51c2VkRW50aXRpZXNbU3ltYm9sLml0ZXJhdG9yXSgpLm5leHQoKVxuICAgIGlmIChpdGVyYXRvci5kb25lKSB7XG4gICAgICBjb25zdCBlbnRpdHkgPSBjcmVhdGVFbnRpdHkoTWF0aC5tYXgoLi4udXNlZEVudGl0aWVzLnZhbHVlcygpKSArIDEpXG4gICAgICBpZiAoZW50aXR5ID49IEVudGl0eVV0aWxzLk1BWF9FTlRJVElFUyArIG9mZnNldCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VudGl0eSByYXRlIGxpbWl0IGV4Y2VlZCcpXG4gICAgICB9XG4gICAgICB1c2VkRW50aXRpZXMuYWRkKGVudGl0eSlcbiAgICAgIHJldHVybiBlbnRpdHlcbiAgICB9XG5cbiAgICBjb25zdCBlbnRpdHkgPSBpdGVyYXRvci52YWx1ZVxuICAgIHVudXNlZEVudGl0aWVzLmRlbGV0ZShlbnRpdHkpXG4gICAgdXNlZEVudGl0aWVzLmFkZChlbnRpdHkpXG5cbiAgICByZXR1cm4gZW50aXR5XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVFbnRpdHkoZW50aXR5OiBFbnRpdHkpIHtcbiAgICBpZiAoIXVzZWRFbnRpdGllcy5oYXMoZW50aXR5KSkgcmV0dXJuXG4gICAgdXNlZEVudGl0aWVzLmRlbGV0ZShlbnRpdHkpXG4gICAgdW51c2VkRW50aXRpZXMuYWRkKGVudGl0eSlcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZ2V0VW51c2VkRW50aXRpZXMoKSB7XG4gICAgICByZXR1cm4gbmV3IFNldCh1bnVzZWRFbnRpdGllcylcbiAgICB9LFxuICAgIGdldFVzZWRFbnRpdGllcygpIHtcbiAgICAgIHJldHVybiBuZXcgU2V0KHVzZWRFbnRpdGllcylcbiAgICB9LFxuICAgIGdlbmVyYXRlRW50aXR5LFxuICAgIHJlbW92ZUVudGl0eVxuICB9XG59XG4iLCJpbXBvcnQgdHlwZSB7IERlZXBSZWFkb25seSB9IGZyb20gJy4uL01hdGgnXG5leHBvcnQgdHlwZSB7IERlZXBSZWFkb25seSB9XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWVwUmVhZG9ubHk8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgdmFsOiBUXG4pOiBEZWVwUmVhZG9ubHk8VD4ge1xuICAvLyBGYWlsIG9ubHkgb24gZGV2ZWxvcG1lbnQgZHVlIHRvIHBlcmYgaXNzdWVzXG4gIC8vIGlmIChpc1Byb2QoKSkge1xuICAvLyAgIHJldHVybiB2YWxcbiAgLy8gfVxuXG4gIHJldHVybiBPYmplY3QuZnJlZXplKHsgLi4udmFsIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vdFVuZGVmaW5lZDxUPih2YWw6IFQgfCB1bmRlZmluZWQpOiB2YWwgaXMgVCB7XG4gIHJldHVybiAhIXZhbFxufVxuIiwiaW1wb3J0IHR5cGUgeyBFY3NUeXBlIH0gZnJvbSAnLi4vYnVpbHQtaW4tdHlwZXMvRWNzVHlwZSdcbmltcG9ydCB7IEJ5dGVCdWZmZXIsIGNyZWF0ZUJ5dGVCdWZmZXIgfSBmcm9tICcuLi9zZXJpYWxpemF0aW9uL0J5dGVCdWZmZXInXG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tICcuL2VudGl0eSdcbmltcG9ydCB7IGRlZXBSZWFkb25seSwgRGVlcFJlYWRvbmx5IH0gZnJvbSAnLi91dGlscydcblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIEVjc1Jlc3VsdDxUIGV4dGVuZHMgRWNzVHlwZT4gPSBUIGV4dGVuZHMgRWNzVHlwZVxuICA/IFJldHVyblR5cGU8VFsnZGVzZXJpYWxpemUnXT5cbiAgOiBuZXZlclxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgQ29tcG9uZW50VHlwZTxUIGV4dGVuZHMgRWNzVHlwZT4gPSBFY3NSZXN1bHQ8VD5cblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIENvbXBvbmVudERlZmluaXRpb248VCBleHRlbmRzIEVjc1R5cGUgPSBFY3NUeXBlPGFueT4+ID0ge1xuICBfaWQ6IG51bWJlclxuICBoYXMoZW50aXR5OiBFbnRpdHkpOiBib29sZWFuXG4gIGdldEZyb20oZW50aXR5OiBFbnRpdHkpOiBEZWVwUmVhZG9ubHk8Q29tcG9uZW50VHlwZTxUPj5cblxuICBnZXRPck51bGwoZW50aXR5OiBFbnRpdHkpOiBEZWVwUmVhZG9ubHk8Q29tcG9uZW50VHlwZTxUPj4gfCBudWxsXG5cbiAgLy8gYWRkcyB0aGlzIGNvbXBvbmVudCB0byB0aGUgbGlzdCBcInRvIGJlIHJldmlld2VkIG5leHQgZnJhbWVcIlxuICBjcmVhdGUoZW50aXR5OiBFbnRpdHksIHZhbD86IENvbXBvbmVudFR5cGU8VD4pOiBDb21wb25lbnRUeXBlPFQ+XG5cbiAgLy8gYWRkcyB0aGlzIGNvbXBvbmVudCB0byB0aGUgbGlzdCBcInRvIGJlIHJldmlld2VkIG5leHQgZnJhbWVcIlxuICBtdXRhYmxlKGVudGl0eTogRW50aXR5KTogQ29tcG9uZW50VHlwZTxUPlxuICBjcmVhdGVPclJlcGxhY2UoZW50aXR5OiBFbnRpdHksIHZhbD86IENvbXBvbmVudFR5cGU8VD4pOiBDb21wb25lbnRUeXBlPFQ+XG4gIGRlbGV0ZUZyb20oZW50aXR5OiBFbnRpdHkpOiBDb21wb25lbnRUeXBlPFQ+IHwgbnVsbFxuXG4gIHVwc2VydEZyb21CaW5hcnkoZW50aXR5OiBFbnRpdHksIGRhdGE6IEJ5dGVCdWZmZXIpOiBDb21wb25lbnRUeXBlPFQ+IHwgbnVsbFxuICB1cGRhdGVGcm9tQmluYXJ5KGVudGl0eTogRW50aXR5LCBkYXRhOiBCeXRlQnVmZmVyKTogQ29tcG9uZW50VHlwZTxUPiB8IG51bGxcbiAgLy8gYWxsb2NhdGVzIGEgYnVmZmVyIGFuZCByZXR1cm5zIG5ldyBidWZmZXJcbiAgdG9CaW5hcnkoZW50aXR5OiBFbnRpdHkpOiBCeXRlQnVmZmVyXG4gIC8vIHdyaXRlcyB0byBhIHByZS1hbGxvY2F0ZWQgYnVmZmVyXG4gIHdyaXRlVG9CeXRlQnVmZmVyKGVudGl0eTogRW50aXR5LCBidWZmZXI6IEJ5dGVCdWZmZXIpOiB2b2lkXG5cbiAgaXRlcmF0b3IoKTogSXRlcmFibGU8W0VudGl0eSwgQ29tcG9uZW50VHlwZTxUPl0+XG5cbiAgLy8gRGlydHlcbiAgZGlydHlJdGVyYXRvcigpOiBJdGVyYWJsZTxFbnRpdHk+XG4gIGNsZWFyRGlydHkoKTogdm9pZFxuICBpc0RpcnR5KGVudGl0eTogRW50aXR5KTogYm9vbGVhblxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lQ29tcG9uZW50PFQgZXh0ZW5kcyBFY3NUeXBlPihcbiAgY29tcG9uZW50SWQ6IG51bWJlcixcbiAgc3BlYzogVFxuICAvLyBtZXRhOiB7IHN5bmNGbGFncyB9XG4pOiBDb21wb25lbnREZWZpbml0aW9uPFQ+IHtcbiAgY29uc3QgZGF0YSA9IG5ldyBNYXA8RW50aXR5LCBDb21wb25lbnRUeXBlPFQ+PigpXG4gIGNvbnN0IGRpcnR5SXRlcmF0b3IgPSBuZXcgU2V0PEVudGl0eT4oKVxuXG4gIHJldHVybiB7XG4gICAgX2lkOiBjb21wb25lbnRJZCxcbiAgICBpc0RpcnR5OiBmdW5jdGlvbiAoZW50aXR5OiBFbnRpdHkpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBkaXJ0eUl0ZXJhdG9yLmhhcyhlbnRpdHkpXG4gICAgfSxcbiAgICBoYXM6IGZ1bmN0aW9uIChlbnRpdHk6IEVudGl0eSk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIGRhdGEuaGFzKGVudGl0eSlcbiAgICB9LFxuICAgIGRlbGV0ZUZyb206IGZ1bmN0aW9uIChlbnRpdHk6IEVudGl0eSk6IENvbXBvbmVudFR5cGU8VD4gfCBudWxsIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRhdGEuZ2V0KGVudGl0eSlcbiAgICAgIGRhdGEuZGVsZXRlKGVudGl0eSlcbiAgICAgIGRpcnR5SXRlcmF0b3IuYWRkKGVudGl0eSlcbiAgICAgIHJldHVybiBjb21wb25lbnQgfHwgbnVsbFxuICAgIH0sXG4gICAgZ2V0T3JOdWxsOiBmdW5jdGlvbiAoXG4gICAgICBlbnRpdHk6IEVudGl0eVxuICAgICk6IERlZXBSZWFkb25seTxDb21wb25lbnRUeXBlPFQ+PiB8IG51bGwge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZGF0YS5nZXQoZW50aXR5KVxuICAgICAgcmV0dXJuIGNvbXBvbmVudCA/IGRlZXBSZWFkb25seShjb21wb25lbnQpIDogbnVsbFxuICAgIH0sXG4gICAgZ2V0RnJvbTogZnVuY3Rpb24gKGVudGl0eTogRW50aXR5KTogRGVlcFJlYWRvbmx5PENvbXBvbmVudFR5cGU8VD4+IHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRhdGEuZ2V0KGVudGl0eSlcbiAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgW2dldEZyb21dIENvbXBvbmVudCAke2NvbXBvbmVudElkfSBmb3IgJHtlbnRpdHl9IG5vdCBmb3VuZGBcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGRlZXBSZWFkb25seShjb21wb25lbnQpXG4gICAgfSxcbiAgICBjcmVhdGU6IGZ1bmN0aW9uIChcbiAgICAgIGVudGl0eTogRW50aXR5LFxuICAgICAgdmFsdWU/OiBDb21wb25lbnRUeXBlPFQ+XG4gICAgKTogQ29tcG9uZW50VHlwZTxUPiB7XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBkYXRhLmdldChlbnRpdHkpXG4gICAgICBpZiAoY29tcG9uZW50KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgW2NyZWF0ZV0gQ29tcG9uZW50ICR7Y29tcG9uZW50SWR9IGZvciAke2VudGl0eX0gYWxyZWFkeSBleGlzdHNgXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGNvbnN0IHVzZWRWYWx1ZSA9IHZhbHVlID09PSB1bmRlZmluZWQgPyBzcGVjLmNyZWF0ZSgpIDogdmFsdWVcbiAgICAgIGRhdGEuc2V0KGVudGl0eSwgdXNlZFZhbHVlKVxuICAgICAgZGlydHlJdGVyYXRvci5hZGQoZW50aXR5KVxuICAgICAgcmV0dXJuIHVzZWRWYWx1ZVxuICAgIH0sXG4gICAgY3JlYXRlT3JSZXBsYWNlOiBmdW5jdGlvbiAoXG4gICAgICBlbnRpdHk6IEVudGl0eSxcbiAgICAgIHZhbHVlPzogQ29tcG9uZW50VHlwZTxUPlxuICAgICk6IENvbXBvbmVudFR5cGU8VD4ge1xuICAgICAgY29uc3QgdXNlZFZhbHVlID0gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHNwZWMuY3JlYXRlKCkgOiB2YWx1ZVxuICAgICAgZGF0YS5zZXQoZW50aXR5LCB1c2VkVmFsdWUhKVxuICAgICAgZGlydHlJdGVyYXRvci5hZGQoZW50aXR5KVxuICAgICAgcmV0dXJuIHVzZWRWYWx1ZSFcbiAgICB9LFxuICAgIG11dGFibGU6IGZ1bmN0aW9uIChlbnRpdHk6IEVudGl0eSk6IENvbXBvbmVudFR5cGU8VD4ge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZGF0YS5nZXQoZW50aXR5KVxuICAgICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBbbXV0YWJsZV0gQ29tcG9uZW50ICR7Y29tcG9uZW50SWR9IGZvciAke2VudGl0eX0gbm90IGZvdW5kYFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBkaXJ0eUl0ZXJhdG9yLmFkZChlbnRpdHkpXG4gICAgICByZXR1cm4gY29tcG9uZW50XG4gICAgfSxcbiAgICBpdGVyYXRvcjogZnVuY3Rpb24qICgpOiBJdGVyYWJsZTxbRW50aXR5LCBDb21wb25lbnRUeXBlPFQ+XT4ge1xuICAgICAgZm9yIChjb25zdCBbZW50aXR5LCBjb21wb25lbnRdIG9mIGRhdGEpIHtcbiAgICAgICAgeWllbGQgW2VudGl0eSwgY29tcG9uZW50XVxuICAgICAgfVxuICAgIH0sXG4gICAgZGlydHlJdGVyYXRvcjogZnVuY3Rpb24qICgpOiBJdGVyYWJsZTxFbnRpdHk+IHtcbiAgICAgIGZvciAoY29uc3QgZW50aXR5IG9mIGRpcnR5SXRlcmF0b3IpIHtcbiAgICAgICAgeWllbGQgZW50aXR5XG4gICAgICB9XG4gICAgfSxcbiAgICB0b0JpbmFyeShlbnRpdHk6IEVudGl0eSk6IEJ5dGVCdWZmZXIge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZGF0YS5nZXQoZW50aXR5KVxuICAgICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBbdG9CaW5hcnldIENvbXBvbmVudCAke2NvbXBvbmVudElkfSBmb3IgJHtlbnRpdHl9IG5vdCBmb3VuZGBcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBjb25zdCB3cml0ZUJ1ZmZlciA9IGNyZWF0ZUJ5dGVCdWZmZXIoKVxuICAgICAgc3BlYy5zZXJpYWxpemUoY29tcG9uZW50LCB3cml0ZUJ1ZmZlcilcbiAgICAgIHJldHVybiB3cml0ZUJ1ZmZlclxuICAgIH0sXG4gICAgd3JpdGVUb0J5dGVCdWZmZXIoZW50aXR5OiBFbnRpdHksIGJ1ZmZlcjogQnl0ZUJ1ZmZlcik6IHZvaWQge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZGF0YS5nZXQoZW50aXR5KVxuICAgICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBbd3JpdGVUb0J5dGVCdWZmZXJdIENvbXBvbmVudCAke2NvbXBvbmVudElkfSBmb3IgJHtlbnRpdHl9IG5vdCBmb3VuZGBcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBzcGVjLnNlcmlhbGl6ZShjb21wb25lbnQsIGJ1ZmZlcilcbiAgICB9LFxuICAgIHVwZGF0ZUZyb21CaW5hcnkoXG4gICAgICBlbnRpdHk6IEVudGl0eSxcbiAgICAgIGJ1ZmZlcjogQnl0ZUJ1ZmZlclxuICAgICk6IENvbXBvbmVudFR5cGU8VD4gfCBudWxsIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRhdGEuZ2V0KGVudGl0eSlcbiAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgW3VwZGF0ZUZyb21CaW5hcnldIENvbXBvbmVudCAke2NvbXBvbmVudElkfSBmb3IgJHtlbnRpdHl9IG5vdCBmb3VuZGBcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMudXBzZXJ0RnJvbUJpbmFyeShlbnRpdHksIGJ1ZmZlcilcbiAgICB9LFxuICAgIHVwc2VydEZyb21CaW5hcnkoXG4gICAgICBlbnRpdHk6IEVudGl0eSxcbiAgICAgIGJ1ZmZlcjogQnl0ZUJ1ZmZlclxuICAgICk6IENvbXBvbmVudFR5cGU8VD4gfCBudWxsIHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gc3BlYy5kZXNlcmlhbGl6ZShidWZmZXIpXG4gICAgICBkYXRhLnNldChlbnRpdHksIG5ld1ZhbHVlKVxuICAgICAgZGlydHlJdGVyYXRvci5hZGQoZW50aXR5KVxuICAgICAgcmV0dXJuIG5ld1ZhbHVlXG4gICAgfSxcbiAgICBjbGVhckRpcnR5OiBmdW5jdGlvbiAoKSB7XG4gICAgICBkaXJ0eUl0ZXJhdG9yLmNsZWFyKClcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGRlZmluZVNka0NvbXBvbmVudHMsIFNka0NvbXBvbmVudHMgfSBmcm9tICcuLi9jb21wb25lbnRzJ1xuaW1wb3J0IHsgY3JkdFNjZW5lU3lzdGVtIH0gZnJvbSAnLi4vc3lzdGVtcy9jcmR0J1xuaW1wb3J0IHsgRW50aXR5LCBFbnRpdHlDb250YWluZXIgfSBmcm9tICcuL2VudGl0eSdcbmltcG9ydCB7XG4gIENvbXBvbmVudFR5cGUsXG4gIENvbXBvbmVudERlZmluaXRpb24sXG4gIGRlZmluZUNvbXBvbmVudCBhcyBkZWZDb21wb25lbnRcbn0gZnJvbSAnLi9jb21wb25lbnQnXG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudEVjc1R5cGUsIElFbmdpbmVQYXJhbXMsIFVwZGF0ZSB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IERlZXBSZWFkb25seSB9IGZyb20gJy4uL01hdGgnXG5pbXBvcnQgdHlwZSB7IEVjc1R5cGUgfSBmcm9tICcuLi9idWlsdC1pbi10eXBlcy9FY3NUeXBlJ1xuaW1wb3J0IHsgSUVuZ2luZSB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQgeyBCeXRlQnVmZmVyIH0gZnJvbSAnLi4vc2VyaWFsaXphdGlvbi9CeXRlQnVmZmVyJ1xuXG5leHBvcnQge1xuICBDb21wb25lbnRUeXBlLFxuICBFbnRpdHksXG4gIEJ5dGVCdWZmZXIsXG4gIFNka0NvbXBvbmVudHMgYXMgU2RrQ29tcG9uZXRucyxcbiAgQ29tcG9uZW50RGVmaW5pdGlvblxufVxuZXhwb3J0ICogZnJvbSAnLi90eXBlcydcblxuZnVuY3Rpb24gcHJlRW5naW5lKCkge1xuICBjb25zdCBlbnRpdHlDb250YWluZXIgPSBFbnRpdHlDb250YWluZXIoKVxuICBjb25zdCBjb21wb25lbnRzRGVmaW5pdGlvbiA9IG5ldyBNYXA8bnVtYmVyLCBDb21wb25lbnREZWZpbml0aW9uPGFueT4+KClcbiAgLy8gVE9ETzogZmluZCBhIHdheSB0byBtYWtlIHRoaXMgd29yay5cbiAgLy8gTWF5YmUgYSBwcm94eS9jYWxsYmFjayB0byBiZSB1cC10by1kYXRlXG4gIGNvbnN0IGVudGl0aWVzQ29tcG9uZW50ID0gbmV3IE1hcDxcbiAgICBudW1iZXIsXG4gICAgU2V0PENvbXBvbmVudERlZmluaXRpb248YW55PlsnX2lkJ10+XG4gID4oKVxuICBjb25zdCBzeXN0ZW1zID0gbmV3IFNldDxVcGRhdGU+KClcblxuICBmdW5jdGlvbiBhZGRTeXN0ZW0oZm46IFVwZGF0ZSkge1xuICAgIGlmIChzeXN0ZW1zLmhhcyhmbikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU3lzdGVtIGFscmVhZHkgYWRkZWQnKVxuICAgIH1cbiAgICBzeXN0ZW1zLmFkZChmbilcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZEVudGl0eShkeW5hbWljOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAvLyBlbnRpdGllc0NvbXBub25lbnQuc2V0KGVudGl0eSwgbmV3IFNldCgpKVxuICAgIGNvbnN0IGVudGl0eSA9IGVudGl0eUNvbnRhaW5lci5nZW5lcmF0ZUVudGl0eShkeW5hbWljKVxuICAgIHJldHVybiBlbnRpdHlcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZER5bmFtaWNFbnRpdHkoKSB7XG4gICAgcmV0dXJuIGFkZEVudGl0eSh0cnVlKVxuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlRW50aXR5KGVudGl0eTogRW50aXR5KSB7XG4gICAgZm9yIChjb25zdCBbLCBjb21wb25lbnRdIG9mIGNvbXBvbmVudHNEZWZpbml0aW9uKSB7XG4gICAgICBpZiAoY29tcG9uZW50LmhhcyhlbnRpdHkpKSB7XG4gICAgICAgIGNvbXBvbmVudC5kZWxldGVGcm9tKGVudGl0eSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZW50aXR5Q29udGFpbmVyLnJlbW92ZUVudGl0eShlbnRpdHkpXG4gIH1cblxuICBmdW5jdGlvbiBkZWZpbmVDb21wb25lbnQ8VCBleHRlbmRzIEVjc1R5cGU+KFxuICAgIGNvbXBvbmVudElkOiBudW1iZXIsXG4gICAgc3BlYzogVFxuICApOiBDb21wb25lbnREZWZpbml0aW9uPFQ+IHtcbiAgICBpZiAoY29tcG9uZW50c0RlZmluaXRpb24uZ2V0KGNvbXBvbmVudElkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgJHtjb21wb25lbnRJZH0gYWxyZWFkeSBkZWNsYXJlZGApXG4gICAgfVxuICAgIGNvbnN0IG5ld0NvbXBvbmVudCA9IGRlZkNvbXBvbmVudDxUPihjb21wb25lbnRJZCwgc3BlYylcbiAgICBjb21wb25lbnRzRGVmaW5pdGlvbi5zZXQoY29tcG9uZW50SWQsIG5ld0NvbXBvbmVudClcbiAgICByZXR1cm4gbmV3Q29tcG9uZW50XG4gIH1cblxuICBmdW5jdGlvbiBnZXRDb21wb25lbnQ8VCBleHRlbmRzIEVjc1R5cGU+KFxuICAgIGNvbXBvbmVudElkOiBudW1iZXJcbiAgKTogQ29tcG9uZW50RGVmaW5pdGlvbjxUPiB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gY29tcG9uZW50c0RlZmluaXRpb24uZ2V0KGNvbXBvbmVudElkKVxuICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDb21wb25lbnQgbm90IGZvdW5kLiBZb3UgbmVlZCB0byBkZWNsYXJlIHRoZSBjb21wb25lbnRzIGF0IHRoZSBiZWdpbm5pZyBvZiB0aGUgZW5naW5lIGRlY2xhcmF0aW9uJ1xuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gY29tcG9uZW50XG4gIH1cblxuICBmdW5jdGlvbiogbXV0YWJsZUdyb3VwT2Y8XG4gICAgVCBleHRlbmRzIFtDb21wb25lbnREZWZpbml0aW9uLCAuLi5Db21wb25lbnREZWZpbml0aW9uW11dXG4gID4oLi4uY29tcG9uZW50czogVCk6IEl0ZXJhYmxlPFtFbnRpdHksIC4uLkNvbXBvbmVudEVjc1R5cGU8VD5dPiB7XG4gICAgZm9yIChjb25zdCBbZW50aXR5LCAuLi5ncm91cENvbXBdIG9mIGdldENvbXBvbmVudERlZkdyb3VwKC4uLmNvbXBvbmVudHMpKSB7XG4gICAgICB5aWVsZCBbZW50aXR5LCAuLi5ncm91cENvbXAubWFwKChjKSA9PiBjLm11dGFibGUoZW50aXR5KSldIGFzIFtcbiAgICAgICAgRW50aXR5LFxuICAgICAgICAuLi5Db21wb25lbnRFY3NUeXBlPFQ+XG4gICAgICBdXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24qIGdyb3VwT2Y8VCBleHRlbmRzIFtDb21wb25lbnREZWZpbml0aW9uLCAuLi5Db21wb25lbnREZWZpbml0aW9uW11dPihcbiAgICAuLi5jb21wb25lbnRzOiBUXG4gICk6IEl0ZXJhYmxlPFtFbnRpdHksIC4uLkRlZXBSZWFkb25seTxDb21wb25lbnRFY3NUeXBlPFQ+Pl0+IHtcbiAgICBmb3IgKGNvbnN0IFtlbnRpdHksIC4uLmdyb3VwQ29tcF0gb2YgZ2V0Q29tcG9uZW50RGVmR3JvdXAoLi4uY29tcG9uZW50cykpIHtcbiAgICAgIHlpZWxkIFtlbnRpdHksIC4uLmdyb3VwQ29tcC5tYXAoKGMpID0+IGMuZ2V0RnJvbShlbnRpdHkpKV0gYXMgW1xuICAgICAgICBFbnRpdHksXG4gICAgICAgIC4uLkRlZXBSZWFkb25seTxDb21wb25lbnRFY3NUeXBlPFQ+PlxuICAgICAgXVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uKiBnZXRDb21wb25lbnREZWZHcm91cDxUIGV4dGVuZHMgQ29tcG9uZW50RGVmaW5pdGlvbltdPihcbiAgICAuLi5hcmdzOiBUXG4gICk6IEl0ZXJhYmxlPFtFbnRpdHksIC4uLlRdPiB7XG4gICAgY29uc3QgW2ZpcnN0Q29tcG9uZW50RGVmLCAuLi5jb21wb25lbnREZWZpbml0aW9uc10gPSBhcmdzXG4gICAgZm9yIChjb25zdCBbZW50aXR5XSBvZiBmaXJzdENvbXBvbmVudERlZi5pdGVyYXRvcigpKSB7XG4gICAgICBsZXQgbWF0Y2hlcyA9IHRydWVcbiAgICAgIGZvciAoY29uc3QgY29tcG9uZW50RGVmIG9mIGNvbXBvbmVudERlZmluaXRpb25zKSB7XG4gICAgICAgIGlmICghY29tcG9uZW50RGVmLmhhcyhlbnRpdHkpKSB7XG4gICAgICAgICAgbWF0Y2hlcyA9IGZhbHNlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICB5aWVsZCBbZW50aXR5LCAuLi5hcmdzXVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZW50aXRpZXNDb21wb25lbnQsXG4gICAgY29tcG9uZW50c0RlZmluaXRpb24sXG4gICAgc3lzdGVtcyxcbiAgICBhZGRFbnRpdHksXG4gICAgYWRkRHluYW1pY0VudGl0eSxcbiAgICByZW1vdmVFbnRpdHksXG4gICAgYWRkU3lzdGVtLFxuICAgIGRlZmluZUNvbXBvbmVudCxcbiAgICBtdXRhYmxlR3JvdXBPZixcbiAgICBncm91cE9mLFxuICAgIGdldENvbXBvbmVudFxuICB9XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCB0eXBlIFByZUVuZ2luZSA9IFJldHVyblR5cGU8dHlwZW9mIHByZUVuZ2luZT5cblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbmdpbmUoeyB0cmFuc3BvcnRzIH06IElFbmdpbmVQYXJhbXMgPSB7fSk6IElFbmdpbmUge1xuICBjb25zdCBlbmdpbmUgPSBwcmVFbmdpbmUoKVxuICBjb25zdCBjcmR0U3lzdGVtID0gY3JkdFNjZW5lU3lzdGVtKHsgZW5naW5lLCB0cmFuc3BvcnRzOiB0cmFuc3BvcnRzIHx8IFtdIH0pXG4gIGNvbnN0IGJhc2VDb21wb25lbnRzID0gZGVmaW5lU2RrQ29tcG9uZW50cyhlbmdpbmUpXG5cbiAgZnVuY3Rpb24gdXBkYXRlKGR0OiBudW1iZXIpIHtcbiAgICBjcmR0U3lzdGVtLnJlY2VpdmVNZXNzYWdlcygpXG5cbiAgICBmb3IgKGNvbnN0IHN5c3RlbSBvZiBlbmdpbmUuc3lzdGVtcykge1xuICAgICAgc3lzdGVtKGR0KVxuICAgIH1cblxuICAgIC8vIFRPRE86IFBlcmYgdGlwXG4gICAgLy8gU2hvdWxkIHdlIGFkZCBzb21lIGRpcnR5SXRlcmF0b3JTZXQgYXQgZW5naW5lIGxldmVsIHNvIHdlIGRvbnQgaGF2ZVxuICAgIC8vIHRvIGl0ZXJhdGUgYWxsIHRoZSBjb21wb25lbnQgZGVmaW5pdGlvbnMgdG8gZ2V0IHRoZSBkaXJ0eSBvbmVzID9cbiAgICBjb25zdCBkaXJ0eVNldCA9IG5ldyBNYXA8RW50aXR5LCBTZXQ8bnVtYmVyPj4oKVxuICAgIGZvciAoY29uc3QgW2NvbXBvbmVudElkLCBkZWZpbml0aW9uXSBvZiBlbmdpbmUuY29tcG9uZW50c0RlZmluaXRpb24pIHtcbiAgICAgIGZvciAoY29uc3QgZW50aXR5IG9mIGRlZmluaXRpb24uZGlydHlJdGVyYXRvcigpKSB7XG4gICAgICAgIGlmICghZGlydHlTZXQuaGFzKGVudGl0eSkpIHtcbiAgICAgICAgICBkaXJ0eVNldC5zZXQoZW50aXR5LCBuZXcgU2V0KCkpXG4gICAgICAgIH1cbiAgICAgICAgZGlydHlTZXQuZ2V0KGVudGl0eSkhLmFkZChjb21wb25lbnRJZClcbiAgICAgIH1cbiAgICB9XG4gICAgY3JkdFN5c3RlbS5jcmVhdGVNZXNzYWdlcyhkaXJ0eVNldClcblxuICAgIGZvciAoY29uc3QgW19jb21wb25lbnRJZCwgZGVmaW5pdGlvbl0gb2YgZW5naW5lLmNvbXBvbmVudHNEZWZpbml0aW9uKSB7XG4gICAgICBkZWZpbml0aW9uLmNsZWFyRGlydHkoKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYWRkRW50aXR5OiBlbmdpbmUuYWRkRW50aXR5LFxuICAgIGFkZER5bmFtaWNFbnRpdHk6IGVuZ2luZS5hZGREeW5hbWljRW50aXR5LFxuICAgIHJlbW92ZUVudGl0eTogZW5naW5lLnJlbW92ZUVudGl0eSxcbiAgICBhZGRTeXN0ZW06IGVuZ2luZS5hZGRTeXN0ZW0sXG4gICAgZGVmaW5lQ29tcG9uZW50OiBlbmdpbmUuZGVmaW5lQ29tcG9uZW50LFxuICAgIG11dGFibGVHcm91cE9mOiBlbmdpbmUubXV0YWJsZUdyb3VwT2YsXG4gICAgZ3JvdXBPZjogZW5naW5lLmdyb3VwT2YsXG4gICAgZ2V0Q29tcG9uZW50OiBlbmdpbmUuZ2V0Q29tcG9uZW50LFxuICAgIHVwZGF0ZSxcbiAgICBiYXNlQ29tcG9uZW50c1xuICB9XG59XG4iLCJpbXBvcnQgeyBCeXRlQnVmZmVyIH0gZnJvbSAnLi4vc2VyaWFsaXphdGlvbi9CeXRlQnVmZmVyJ1xuaW1wb3J0IHsgRWNzVHlwZSB9IGZyb20gJy4vRWNzVHlwZSdcbmltcG9ydCB7IFRvT3B0aW9uYWwgfSBmcm9tICcuL3R5cGluZydcblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3BlYyB7XG4gIFtrZXk6IHN0cmluZ106IEVjc1R5cGVcbn1cblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIFJlc3VsdDxUIGV4dGVuZHMgU3BlYz4gPSBUb09wdGlvbmFsPHtcbiAgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBFY3NUeXBlXG4gICAgPyBSZXR1cm5UeXBlPFRbS11bJ2Rlc2VyaWFsaXplJ10+XG4gICAgOiBUW0tdIGV4dGVuZHMgU3BlY1xuICAgID8gUmVzdWx0PFRbS10+XG4gICAgOiBuZXZlclxufT5cblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBNYXBUeXBlPFQgZXh0ZW5kcyBTcGVjPihzcGVjOiBUKTogRWNzVHlwZTxSZXN1bHQ8VD4+IHtcbiAgcmV0dXJuIHtcbiAgICBzZXJpYWxpemUodmFsdWU6IFJlc3VsdDxUPiwgYnVpbGRlcjogQnl0ZUJ1ZmZlcik6IHZvaWQge1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gc3BlYykge1xuICAgICAgICAvLyBUT0RPOiBhcyBhbnlcbiAgICAgICAgc3BlY1trZXldLnNlcmlhbGl6ZSgodmFsdWUgYXMgYW55KVtrZXldLCBidWlsZGVyKVxuICAgICAgfVxuICAgIH0sXG4gICAgZGVzZXJpYWxpemUocmVhZGVyOiBCeXRlQnVmZmVyKTogUmVzdWx0PFQ+IHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlOiBSZXN1bHQ8VD4gPSB7fSBhcyBhbnlcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHNwZWMpIHtcbiAgICAgICAgLy8gVE9ETzogYXMgYW55XG4gICAgICAgIDsobmV3VmFsdWUgYXMgYW55KVtrZXldID0gc3BlY1trZXldLmRlc2VyaWFsaXplKHJlYWRlcilcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXdWYWx1ZVxuICAgIH0sXG4gICAgY3JlYXRlKCkge1xuICAgICAgY29uc3QgbmV3VmFsdWU6IFJlc3VsdDxUPiA9IHt9IGFzIGFueVxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gc3BlYykge1xuICAgICAgICAvLyBUT0RPOiBhcyBhbnlcbiAgICAgICAgOyhuZXdWYWx1ZSBhcyBhbnkpW2tleV0gPSBzcGVjW2tleV0uY3JlYXRlKClcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXdWYWx1ZVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgQnl0ZUJ1ZmZlciB9IGZyb20gJy4uL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IEVjc1R5cGUgfSBmcm9tICcuL0Vjc1R5cGUnXG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gQXJyYXlUeXBlPFQ+KHR5cGU6IEVjc1R5cGU8VD4pOiBFY3NUeXBlPEFycmF5PFQ+PiB7XG4gIHJldHVybiB7XG4gICAgc2VyaWFsaXplKHZhbHVlOiBBcnJheTxUPiwgYnVpbGRlcjogQnl0ZUJ1ZmZlcik6IHZvaWQge1xuICAgICAgYnVpbGRlci53cml0ZVVpbnQzMih2YWx1ZS5sZW5ndGgpXG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdmFsdWUpIHtcbiAgICAgICAgdHlwZS5zZXJpYWxpemUoaXRlbSwgYnVpbGRlcilcbiAgICAgIH1cbiAgICB9LFxuICAgIGRlc2VyaWFsaXplKHJlYWRlcjogQnl0ZUJ1ZmZlcik6IEFycmF5PFQ+IHtcbiAgICAgIGNvbnN0IG5ld0FycmF5OiBBcnJheTxUPiA9IFtdXG4gICAgICBjb25zdCBsZW5ndGggPSByZWFkZXIucmVhZFVpbnQzMigpXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIG5ld0FycmF5LnB1c2godHlwZS5kZXNlcmlhbGl6ZShyZWFkZXIpKVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ld0FycmF5XG4gICAgfSxcbiAgICBjcmVhdGUoKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IEJ5dGVCdWZmZXIgfSBmcm9tICcuLi9zZXJpYWxpemF0aW9uL0J5dGVCdWZmZXInXG5pbXBvcnQgeyBFY3NUeXBlIH0gZnJvbSAnLi9FY3NUeXBlJ1xuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE9wdGlvbmFsPFQ+KHNwZWM6IEVjc1R5cGU8VD4pOiBFY3NUeXBlPFQgfCB1bmRlZmluZWQ+IHtcbiAgcmV0dXJuIHtcbiAgICBzZXJpYWxpemUodmFsdWU6IFQgfCB1bmRlZmluZWQsIGJ1aWxkZXI6IEJ5dGVCdWZmZXIpOiB2b2lkIHtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBidWlsZGVyLndyaXRlSW50OCgxKVxuICAgICAgICBzcGVjLnNlcmlhbGl6ZSh2YWx1ZSwgYnVpbGRlcilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJ1aWxkZXIud3JpdGVJbnQ4KDApXG4gICAgICB9XG4gICAgfSxcbiAgICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICAgIGNvbnN0IGV4aXN0cyA9IHJlYWRlci5yZWFkSW50OCgpXG4gICAgICBpZiAoZXhpc3RzKSB7XG4gICAgICAgIHJldHVybiBzcGVjLmRlc2VyaWFsaXplKHJlYWRlcilcbiAgICAgIH1cbiAgICB9LFxuICAgIGNyZWF0ZSgpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IEJ5dGVCdWZmZXIgfSBmcm9tICcuLi8uLi9zZXJpYWxpemF0aW9uL0J5dGVCdWZmZXInXG5pbXBvcnQgeyBFY3NUeXBlIH0gZnJvbSAnLi4vRWNzVHlwZSdcblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBJbnQ2NDogRWNzVHlwZTxudW1iZXI+ID0ge1xuICBzZXJpYWxpemUodmFsdWU6IG51bWJlciwgYnVpbGRlcjogQnl0ZUJ1ZmZlcik6IHZvaWQge1xuICAgIGJ1aWxkZXIud3JpdGVJbnQ2NChCaWdJbnQodmFsdWUpKVxuICB9LFxuICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBOdW1iZXIocmVhZGVyLnJlYWRJbnQ2NCgpKVxuICB9LFxuICBjcmVhdGUoKSB7XG4gICAgcmV0dXJuIDBcbiAgfVxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEludDMyOiBFY3NUeXBlPG51bWJlcj4gPSB7XG4gIHNlcmlhbGl6ZSh2YWx1ZTogbnVtYmVyLCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgYnVpbGRlci53cml0ZUludDMyKHZhbHVlKVxuICB9LFxuICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBudW1iZXIge1xuICAgIHJldHVybiByZWFkZXIucmVhZEludDMyKClcbiAgfSxcbiAgY3JlYXRlKCkge1xuICAgIHJldHVybiAwXG4gIH1cbn1cblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBJbnQxNjogRWNzVHlwZTxudW1iZXI+ID0ge1xuICBzZXJpYWxpemUodmFsdWU6IG51bWJlciwgYnVpbGRlcjogQnl0ZUJ1ZmZlcik6IHZvaWQge1xuICAgIGJ1aWxkZXIud3JpdGVJbnQxNih2YWx1ZSlcbiAgfSxcbiAgZGVzZXJpYWxpemUocmVhZGVyOiBCeXRlQnVmZmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWRJbnQxNigpXG4gIH0sXG4gIGNyZWF0ZSgpIHtcbiAgICByZXR1cm4gMFxuICB9XG59XG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSW50ODogRWNzVHlwZTxudW1iZXI+ID0ge1xuICBzZXJpYWxpemUodmFsdWU6IG51bWJlciwgYnVpbGRlcjogQnl0ZUJ1ZmZlcik6IHZvaWQge1xuICAgIGJ1aWxkZXIud3JpdGVJbnQ4KHZhbHVlKVxuICB9LFxuICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBudW1iZXIge1xuICAgIHJldHVybiByZWFkZXIucmVhZEludDgoKVxuICB9LFxuICBjcmVhdGUoKSB7XG4gICAgcmV0dXJuIDBcbiAgfVxufVxuIiwiaW1wb3J0IHsgQnl0ZUJ1ZmZlciB9IGZyb20gJy4uLy4uL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IEVjc1R5cGUgfSBmcm9tICcuLi9FY3NUeXBlJ1xuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEZsb2F0MzI6IEVjc1R5cGU8bnVtYmVyPiA9IHtcbiAgc2VyaWFsaXplKHZhbHVlOiBudW1iZXIsIGJ1aWxkZXI6IEJ5dGVCdWZmZXIpOiB2b2lkIHtcbiAgICBidWlsZGVyLndyaXRlRmxvYXQzMih2YWx1ZSlcbiAgfSxcbiAgZGVzZXJpYWxpemUocmVhZGVyOiBCeXRlQnVmZmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWRGbG9hdDMyKClcbiAgfSxcbiAgY3JlYXRlKCkge1xuICAgIHJldHVybiAwLjBcbiAgfVxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEZsb2F0NjQ6IEVjc1R5cGU8bnVtYmVyPiA9IHtcbiAgc2VyaWFsaXplKHZhbHVlOiBudW1iZXIsIGJ1aWxkZXI6IEJ5dGVCdWZmZXIpOiB2b2lkIHtcbiAgICBidWlsZGVyLndyaXRlRmxvYXQ2NCh2YWx1ZSlcbiAgfSxcbiAgZGVzZXJpYWxpemUocmVhZGVyOiBCeXRlQnVmZmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWRGbG9hdDY0KClcbiAgfSxcbiAgY3JlYXRlKCkge1xuICAgIHJldHVybiAwLjBcbiAgfVxufVxuIiwiaW1wb3J0IHsgQnl0ZUJ1ZmZlciB9IGZyb20gJy4uLy4uL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IEVjc1R5cGUgfSBmcm9tICcuLi9FY3NUeXBlJ1xuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEZsYXRTdHJpbmc6IEVjc1R5cGU8c3RyaW5nPiA9IHtcbiAgc2VyaWFsaXplKHZhbHVlOiBzdHJpbmcsIGJ1aWxkZXI6IEJ5dGVCdWZmZXIpOiB2b2lkIHtcbiAgICBidWlsZGVyLndyaXRlQnVmZmVyKG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSh2YWx1ZSkpXG4gIH0sXG4gIGRlc2VyaWFsaXplKHJlYWRlcjogQnl0ZUJ1ZmZlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShyZWFkZXIucmVhZEJ1ZmZlcigpKVxuICB9LFxuICBjcmVhdGUoKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cbn1cblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBFY3NTdHJpbmcgPSBGbGF0U3RyaW5nXG4iLCJpbXBvcnQgeyBCeXRlQnVmZmVyIH0gZnJvbSAnLi4vLi4vc2VyaWFsaXphdGlvbi9CeXRlQnVmZmVyJ1xuaW1wb3J0IHsgRWNzVHlwZSB9IGZyb20gJy4uL0Vjc1R5cGUnXG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gRW51bTxUPih0eXBlOiBFY3NUeXBlPGFueT4pOiBFY3NUeXBlPFQ+IHtcbiAgcmV0dXJuIHtcbiAgICBzZXJpYWxpemUodmFsdWU6IFQsIGJ1aWxkZXI6IEJ5dGVCdWZmZXIpOiB2b2lkIHtcbiAgICAgIHR5cGUuc2VyaWFsaXplKHZhbHVlLCBidWlsZGVyKVxuICAgIH0sXG4gICAgZGVzZXJpYWxpemUocmVhZGVyOiBCeXRlQnVmZmVyKTogVCB7XG4gICAgICByZXR1cm4gdHlwZS5kZXNlcmlhbGl6ZShyZWFkZXIpXG4gICAgfSxcbiAgICBjcmVhdGUoKSB7XG4gICAgICByZXR1cm4gdHlwZS5jcmVhdGUoKVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgQnl0ZUJ1ZmZlciB9IGZyb20gJy4uLy4uL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IEVjc1R5cGUgfSBmcm9tICcuLi9FY3NUeXBlJ1xuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEVjc0Jvb2xlYW46IEVjc1R5cGU8Ym9vbGVhbj4gPSB7XG4gIHNlcmlhbGl6ZSh2YWx1ZTogYm9vbGVhbiwgYnVpbGRlcjogQnl0ZUJ1ZmZlcik6IHZvaWQge1xuICAgIGJ1aWxkZXIud3JpdGVJbnQ4KHZhbHVlID8gMSA6IDApXG4gIH0sXG4gIGRlc2VyaWFsaXplKHJlYWRlcjogQnl0ZUJ1ZmZlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZWFkZXIucmVhZEludDgoKSA9PT0gMVxuICB9LFxuICBjcmVhdGUoKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cbiIsImltcG9ydCB7IFRyYW5zcG9ydE1lc3NhZ2UgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IFRyYW5zcG9ydCB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQgeyBDb21wb25lbnRJZHMgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2dlbmVyYXRlZC9pbmRleC5nZW4nXG5pbXBvcnQgeyBMRUdBQ1lfQ09NUE9ORU5UX0lEIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9sZWdhY3kvdHlwZXMnXG5cbmNvbnN0IGNvbXBvbmVudElkcyA9IE9iamVjdC52YWx1ZXMoQ29tcG9uZW50SWRzKVxuICAuZmlsdGVyKChhKSA9PiB0eXBlb2YgYSA9PT0gJ251bWJlcicpXG4gIC5tYXAoTnVtYmVyKVxuY29uc3QgcmVuZGVyZXJDb21wb25lbnRJZHMgPSBjb21wb25lbnRJZHMuY29uY2F0KExFR0FDWV9DT01QT05FTlRfSUQuVFJBTlNGT1JNKVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVuZGVyZXJUcmFuc3BvcnQoKTogVHJhbnNwb3J0IHtcbiAgY29uc3QgdHlwZSA9ICdyZW5kZXJlcidcbiAgcmV0dXJuIHtcbiAgICB0eXBlLFxuICAgIHNlbmQobWVzc2FnZTogVWludDhBcnJheSk6IHZvaWQge1xuICAgICAgLy8gVE9ETzogcmVwbGFjZSB3aXRoIG5ldyBycGNcbiAgICAgIGRjbFxuICAgICAgICAuY2FsbFJwYygnQGRlY2VudHJhbGFuZC9FeHBlcmltZW50YWxBUEknLCAnc2VuZFRvUmVuZGVyZXInLCBbXG4gICAgICAgICAgeyBkYXRhOiBtZXNzYWdlIH1cbiAgICAgICAgXSlcbiAgICAgICAgLmNhdGNoKGRjbC5lcnJvcilcbiAgICB9LFxuICAgIGZpbHRlcihtZXNzYWdlOiBUcmFuc3BvcnRNZXNzYWdlKTogYm9vbGVhbiB7XG4gICAgICAvLyBFY2hvIG1lc3NhZ2UsIGlnbm9yZSB0aGVtXG4gICAgICBpZiAobWVzc2FnZS50cmFuc3BvcnRUeXBlID09PSB0eXBlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuXG4gICAgICAvLyBPbmx5IHNlbmQgcmVuZGVyZXIgY29tcG9uZW50cyAoUHJvdG8gR2VuZXJhdGVkKVxuICAgICAgaWYgKCFyZW5kZXJlckNvbXBvbmVudElkcy5pbmNsdWRlcyhtZXNzYWdlLmNvbXBvbmVudElkKSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICEhbWVzc2FnZVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgVHJhbnNwb3J0TWVzc2FnZSB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgVHJhbnNwb3J0IH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5ldHdvcmtUcmFuc3BvcnQoKTogVHJhbnNwb3J0IHtcbiAgLy8gY29uc3QgcnBjID0gbmV3IFJwY1RyYW5zcG9ydCgpXG4gIGZ1bmN0aW9uIHNlbmQoLi4uX2FyZ3M6IGFueVtdKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ05ldHdvcmtNZXNzYWdlIFNlbnQ6ICcsIC4uLmFyZ3MpXG4gIH1cblxuICBjb25zdCB0eXBlID0gJ25ldHdvcmstdHJhbnNwb3J0J1xuICByZXR1cm4ge1xuICAgIHNlbmQsXG4gICAgdHlwZSxcbiAgICBmaWx0ZXIobWVzc2FnZTogVHJhbnNwb3J0TWVzc2FnZSk6IGJvb2xlYW4ge1xuICAgICAgLy8gRWNobyBtZXNzYWdlLCBpZ25vcmUgdGhlbVxuICAgICAgaWYgKG1lc3NhZ2UudHJhbnNwb3J0VHlwZSA9PT0gdHlwZSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgLy8gVE9ETzogU3RhdGljIGVudGl0aWVzICYgTmV0d29yayBjb21wb25lbnRzXG5cbiAgICAgIHJldHVybiAhIW1lc3NhZ2UgLy8gdmFsaWRDb21wb25lbnRzLmluY2x1ZGVzKGNvbXBvbmVudElkKVxuICAgIH1cbiAgfVxufVxuIiwiLyoqXG4gKiBAYWxwaGEgKiBUaGlzIGZpbGUgaW5pdGlhbGl6YXRpb24gaXMgYW4gYWxwaGEgb25lLiBUaGlzIGlzIGJhc2VkIG9uIHRoZSBvbGQtZWNzXG4gKiBpbml0IGFuZCBpdCdsbCBiZSBjaGFuZ2luZy5cbiAqL1xuXG5pbXBvcnQgeyBFbmdpbmUgfSBmcm9tICcuL2VuZ2luZSdcbmltcG9ydCB7IGNyZWF0ZVJlbmRlcmVyVHJhbnNwb3J0IH0gZnJvbSAnLi9zeXN0ZW1zL2NyZHQvdHJhbnNwb3J0cy9yZW5kZXJlclRyYW5zcG9ydCdcbmltcG9ydCB7IGNyZWF0ZU5ldHdvcmtUcmFuc3BvcnQgfSBmcm9tICcuL3N5c3RlbXMvY3JkdC90cmFuc3BvcnRzL25ldHdvcmtUcmFuc3BvcnQnXG5cbmNvbnN0IHJlbmRlcmVyVHJhbnNwb3J0ID0gY3JlYXRlUmVuZGVyZXJUcmFuc3BvcnQoKVxuZXhwb3J0IGNvbnN0IGVuZ2luZSA9IEVuZ2luZSh7XG4gIHRyYW5zcG9ydHM6IFtyZW5kZXJlclRyYW5zcG9ydCwgY3JlYXRlTmV0d29ya1RyYW5zcG9ydCgpXVxufSlcblxuaWYgKGRjbCkge1xuICBkY2wubG9hZE1vZHVsZSgnQGRlY2VudHJhbGFuZC9FeHBlcmltZW50YWxBUEknLCB7fSkuY2F0Y2goZGNsLmVycm9yKVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHB1bGxSZW5kZXJlck1lc3NhZ2VzKCkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZGNsLmNhbGxScGMoXG4gICAgICAnQGRlY2VudHJhbGFuZC9FeHBlcmltZW50YWxBUEknLFxuICAgICAgJ21lc3NhZ2VGcm9tUmVuZGVyZXInLFxuICAgICAgW11cbiAgICApXG5cbiAgICBpZiAocmVzcG9uc2UuZGF0YT8ubGVuZ3RoKSB7XG4gICAgICBpZiAocmVuZGVyZXJUcmFuc3BvcnQub25tZXNzYWdlKSB7XG4gICAgICAgIGZvciAoY29uc3QgYnl0ZUFycmF5IG9mIHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICByZW5kZXJlclRyYW5zcG9ydC5vbm1lc3NhZ2UoYnl0ZUFycmF5KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZGNsLm9uVXBkYXRlKChkdDogbnVtYmVyKSA9PiB7XG4gICAgcHVsbFJlbmRlcmVyTWVzc2FnZXMoKVxuICAgICAgLmNhdGNoKGRjbC5lcnJvcilcbiAgICAgIC5maW5hbGx5KCgpID0+IGVuZ2luZS51cGRhdGUoZHQpKVxuICB9KVxufVxuIl0sIm5hbWVzIjpbInJlcXVpcmUkJDAiLCJyZXF1aXJlJCQxIiwicmVxdWlyZSQkMiIsInRoaXMiLCJyZXF1aXJlJCQzIiwicmVxdWlyZSQkNCIsInJlcXVpcmUkJDUiLCJyZXF1aXJlJCQ2IiwicmVxdWlyZSQkNyIsImdsb2JhbCIsIl9tMC5Xcml0ZXIiLCJfbTAuUmVhZGVyIiwiQ09NUE9ORU5UX0lEIiwiQW5pbWF0b3IuQ09NUE9ORU5UX0lEIiwiQW5pbWF0b3IuQW5pbWF0b3IiLCJBdWRpb1NvdXJjZS5DT01QT05FTlRfSUQiLCJBdWRpb1NvdXJjZS5BdWRpb1NvdXJjZSIsIkF1ZGlvU3RyZWFtLkNPTVBPTkVOVF9JRCIsIkF1ZGlvU3RyZWFtLkF1ZGlvU3RyZWFtIiwiQm94U2hhcGUuQ09NUE9ORU5UX0lEIiwiQm94U2hhcGUuQm94U2hhcGUiLCJDeWxpbmRlclNoYXBlLkNPTVBPTkVOVF9JRCIsIkN5bGluZGVyU2hhcGUuQ3lsaW5kZXJTaGFwZSIsIkdMVEZTaGFwZS5DT01QT05FTlRfSUQiLCJHTFRGU2hhcGUuR0xURlNoYXBlIiwiTkZUU2hhcGUuQ09NUE9ORU5UX0lEIiwiTkZUU2hhcGUuTkZUU2hhcGUiLCJPblBvaW50ZXJEb3duLkNPTVBPTkVOVF9JRCIsIk9uUG9pbnRlckRvd24uT25Qb2ludGVyRG93biIsIk9uUG9pbnRlckRvd25SZXN1bHQuQ09NUE9ORU5UX0lEIiwiT25Qb2ludGVyRG93blJlc3VsdC5PblBvaW50ZXJEb3duUmVzdWx0IiwiT25Qb2ludGVyVXAuQ09NUE9ORU5UX0lEIiwiT25Qb2ludGVyVXAuT25Qb2ludGVyVXAiLCJPblBvaW50ZXJVcFJlc3VsdC5DT01QT05FTlRfSUQiLCJPblBvaW50ZXJVcFJlc3VsdC5PblBvaW50ZXJVcFJlc3VsdCIsIlBsYW5lU2hhcGUuQ09NUE9ORU5UX0lEIiwiUGxhbmVTaGFwZS5QbGFuZVNoYXBlIiwiU3BoZXJlU2hhcGUuQ09NUE9ORU5UX0lEIiwiU3BoZXJlU2hhcGUuU3BoZXJlU2hhcGUiLCJUZXh0U2hhcGUuQ09NUE9ORU5UX0lEIiwiVGV4dFNoYXBlLlRleHRTaGFwZSIsIlVpVHJhbnNmb3JtLkNPTVBPTkVOVF9JRCIsIlVpVHJhbnNmb3JtLlVpVHJhbnNmb3JtIiwiVmVjdG9yMyIsIlF1YXRlcm5pb24iLCJJRCIsIkxlZ2FjeVRyYW5zZm9ybSIsIldpcmVNZXNzYWdlIiwiY3JkdFByb3RvY29sIiwiTWVzc2FnZSIsIkNyZHRVdGlscyIsImRlZmluZUNvbXBvbmVudCIsImRlZkNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FDQSxNQUFNLENBQUMsY0FBYyxDQUFBLE9BQUEsRUFBVSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztHQUM5RCxPQUFrQixDQUFBLE9BQUEsR0FBQSxLQUFLLENBQUMsQ0FBQztHQUt6QixDQUFDLFVBQVUsT0FBTyxFQUFFO0NBQ3BCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLE1BQUksU0FBUyxNQUFNO0NBQ25CO0NBQ0E7Q0FDQTtPQUNJLENBQUMsR0FBRyxDQUFDO0NBQ1Q7Q0FDQTtDQUNBO09BQ0ksQ0FBQyxHQUFHLENBQUM7Q0FDVDtDQUNBO0NBQ0E7T0FDSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1dBQ0gsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDdEI7Q0FDTCxNQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0NBQzVCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLE1BQUksU0FBUyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRTtDQUNuQyxVQUFRLE9BQU87ZUFDSCxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztlQUN4QixDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztlQUN4QixDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztDQUNwQyxXQUFTLENBQUM7UUFDTDtDQUNMLE1BQUksT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7Q0FDdEI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxNQUFJLFNBQVMsUUFBUSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUU7Q0FDM0MsVUFBUSxPQUFPO2VBQ0gsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7ZUFDM0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7ZUFDM0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7Q0FDdkMsV0FBUyxDQUFDO1FBQ0w7Q0FDTCxNQUFJLE9BQU8sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0NBQ2hDO0NBQ0E7Q0FDQTtDQUNBO09BQ0ksU0FBUyxhQUFhLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7V0FDaEQsTUFBTSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7V0FDcEMsTUFBTSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7V0FDcEMsTUFBTSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDdkM7Q0FDTCxNQUFJLE9BQU8sQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0NBQzFDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsTUFBSSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUU7V0FDckIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDcEQ7Q0FDTCxNQUFJLE9BQU8sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0NBQ2hDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsTUFBSSxTQUFTLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO0NBQ2hDLFVBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0NBQzFCLFVBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0NBQzFCLFVBQVEsSUFBSSxD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akQ7Q0FDQSxVQUFRLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0NBQzVDLFVBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Q0FDNUMsVUFBUSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztDQUM1QyxVQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Q0FDN0M7Q0FDQSxVQUFRLE9BQU87Q0FDZixjQUFZLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTtDQUN2RCxjQUFZLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTtDQUN2RCxjQUFZLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTtDQUN2RCxXQUFTLENBQUM7UUFDTDtDQUNMLE1BQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDNUI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7T0FDSSxTQUFTLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTtXQUM5QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFB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QUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztlQUMvQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7ZUFDbkYsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RGO0NBQ1QsVUFBUSxHQUFHLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUM7Q0FDakMsVUFBUSxHQUFHLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUM7Q0FDakMsVUFBUSxHQUFHLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUM7Q0FDakM7Q0FDQSxVQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztDQUNuRCxVQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFD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RyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztjQUN0QixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztjQUN0QixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztjQUN0QixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztjQUN0QixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztjQUN0QixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztjQUN0QixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztXQUN6QjtBQUNUO1VBQ1EsU0FBUyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtDQUNwRCxhQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7Y0FDYixHQUFHLENBQUMsR0FBRyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1dBQ3pCO0FBQ1Q7Q0FDQTtVQUNRLE9BQU8sQ0FBQyxhQUFhLEdBQUcsRUFBRSxHQUFHLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDO0NBQy9FO1VBQ1EsT0FBTyxDQUFDLGFBQWEsR0FBRyxFQUFFLEdBQUcsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUM7QUFDL0U7Q0FDQSxTQUFRLFNBQVMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtjQUNsQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQ2xDLGFBQVksT0FBTyxHQUFH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Q0FBQyxHQUFHLEdBQUc7ZUFDdkIsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFO0NBQ3JDLGNBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxPQUFPLENBQUM7Q0FDOUgsY0FBWSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0NBQzVDLGNBQVksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNwQztDQUNULGNBQVksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0NBQzdGLFVBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFO2VBQ1YsQ0FBQyxLQUFLLEtBQUssS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztlQUN2RSxDQUFDLEdBQUcsQ0FBQyxD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LElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLEdBQUc7Q0FDNUIsU0FBUSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHO0NBQzVCLFNBQVEsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFO0NBQ3RCLFNBQVEsSUFBSSxDQUFDLEVBQUUsVUFBVSxHQUFHO0NBQzVCLFNBQVEsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksR0FBRztDQUM1QixTQUFRLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUc7Q0FDNUIsU0FBUSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUU7Q0FDdEIsTUFBSyxDQUFDO0NBQ04sRUFBQyxDQUFDO0FBQ0Y7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLENBQUEsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsU0FBUyxRQUFRLEdBQUc7TUFDOUMsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7TUFDM0IsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQztDQUM5RCxLQUFJLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMscUJBQXFCLElBQUksTUFBTSxDQUFDLENBQUM7TUFDMUQsT0FBTyxJQUFJLENBQUM7Q0FDaEIsRUFBQyxDQUFDO0FBQ0Y7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLENBQUEsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsU0FBUyxRQUFRLEdBQUc7TUFDOUMsSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO01BQzFCLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksTUFBTSxDQUFDLENBQUM7Q0FDOUQsS0FBSSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixJQUFJLE1BQU0sQ0FBQyxDQUFDO01BQzFELE9BQU8sSUFBSSxDQUFDO0NBQ2hCLEVBQUMsQ0FBQztBQUNGO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxDQUFBLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFNBQVMsTUFBTSxHQUFHO0NBQzlDLEtBQUksSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLEVBQUU7Q0FDeEIsU0FBUSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3JELFNBQVEsS0FBSyxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO01BQzVCLE9BQU8sS0FBSyxLQUFLLENBQUM7YUFDWCxLQUFLLEtBQUssQ0FBQztlQUNULEtBQUssR0FBRyxLQUFLO0NBQzFCLGdCQUFlLEtBQUssR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7Q0FDbEMsZ0JBQWUsS0FBSyxHQUFHLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQztlQUN6QixLQUFLLEdBQUcsS0FBSztDQUMxQixnQkFBZSxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO0NBQ2xDLGdCQUFlLEtBQUssR0FBRyxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUM7Q0FDdEMsWUFBVyxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7R0FDL0IsQ0FBQTs7Ozs7Ozs7OztHQ3RNRCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUM7QUFDbkI7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLFNBQVMsR0FBR0EsZ0JBQUEsRUFBZ0MsQ0FBQztBQUNsRDtDQUNBO0NBQ0EsRUFBQSxJQUFJLENBQUMsTUFBTSxHQUFHQyxhQUFBLEVBQTZCLENBQUM7QUFDNUM7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLFlBQVksR0FBR0MsbUJBQUEsRUFBbUMsQ0FBQztBQUN4RDtDQUNBO0NBQ0EsRUFBQSxJQUFJLENBQUMsS0FBSyxHQUFHRSxZQUFBLEVBQTRCLENBQUM7QUFDMUM7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLE9BQU8sR0FBR0MsY0FBQSxFQUE4QixDQUFDO0FBQzlDO0NBQ0E7Q0FDQSxFQUFBLElBQUksQ0FBQyxJQUFJLEdBQUdDLFdBQUEsRUFBMkIsQ0FBQztBQUN4QztDQUNBO0NBQ0EsRUFBQSxJQUFJLENBQUMsSUFBSSxHQUFHQyxXQUFBLEVBQTJCLENBQUM7QUFDeEM7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLFFBQVEsR0FBR0MsZUFBQSxFQUFxQixDQUFDO0FBQ3RDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtHQUNBLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU9DLGNBQU0sS0FBSyxXQUFXO0NBQ25ELHdCQUFzQkEsY0FBTTt5QkFDTkEsY0FBTSxDQUFDLE9BQU87Q0FDcEMsd0JBQXNCQSxjQUFNLENBQUMsT0FBTyxDQUFDLFFBQVE7eUJBQ3ZCQSxjQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwRDtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxFQUFBLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSUEsY0FBTTtDQUNuQyxnQkFBYyxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksTUFBTTtDQUNyRCxnQkFBYyxPQUFPLElBQUksT0FBTyxXQUFXLElBQUksSUFBSTtDQUNuRCxnQkFBY04sY0FBSSxDQUFDO0FBQ25CO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsRUFBQSxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsOEJBQThCLEVBQUUsQ0FBQztBQUNwRjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxFQUFBLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO0FBQ3JGO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0dBQ0EsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUywrQkFBK0IsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFO0NBQzFGLE1BQUksT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDO0NBQ3ZGLEdBQUMsQ0FBQztBQUNGO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUU7T0FDckMsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxZQUFZLE1BQU0sQ0FBQztDQUNoRSxHQUFDLENBQUM7QUFDRjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxFQUFBLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFO0NBQ3pDLE1BQUksT0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDO0NBQzlDLEdBQUMsQ0FBQztBQUNGO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLEtBQUs7QUFDVjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtHQUNBLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRTtDQUN2QyxNQUFJLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QixJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7Q0FDakQsVUFBUSxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7T0FDOUcsT0FBTyxLQUFLLENBQUM7Q0FDakIsR0FBQyxDQUFDO0FBQ0Y7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7QUFDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsRUFBQSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsV0FBVztDQUMxQixNQUFJLElBQUk7V0FDQSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQztDQUNuRDtXQUNRLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsTUFBTSw4QkFBOEIsSUFBSSxDQUFDO1FBQ2hGLENBQUMsT0FBTyxDQUFDLEVBQUU7Q0FDaEI7V0FDUSxPQUFPLElBQUksQ0FBQztRQUNmO0NBQ0wsR0FBQyxHQUFHLENBQUM7QUFDTDtDQUNBO0NBQ0EsRUFBQSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztBQUN6QjtDQUNBO0NBQ0EsRUFBQSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0FBQ2hDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLFNBQVMsQ0FBQyxXQUFXLEVBQUU7Q0FDakQ7Q0FDQSxNQUFJLE9BQU8sT0FBTyxXQUFXLEtBQUssUUFBUTthQUNoQyxJQUFJLENBQUMsTUFBTTtDQUNyQixnQkFBYyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDO0NBQ25ELGdCQUFjLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7YUFDL0IsSUFBSSxDQUFDLE1BQU07Q0FDckIsZ0JBQWMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7aUJBQzlCLE9BQU8sVUFBVSxLQUFLLFdBQVc7Q0FDL0Msb0JBQWtCLFdBQVc7Q0FDN0Isb0JBQWtCLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0NBQzlDLEdBQUMsQ0FBQztBQUNGO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7R0FDQSxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sVUFBVSxLQUFLLFdBQVcsR0FBRyxVQUFVLDhCQUE4QixLQUFLLENBQUM7QUFDL0Y7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0FBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLElBQUksOEJBQThCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTywrQkFBK0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSTtDQUNqSCx5Q0FBdUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJO0NBQ3ZELGNBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNqQztDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxFQUFBLElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLENBQUM7QUFDakM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsRUFBQSxJQUFJLENBQUMsT0FBTyxHQUFHLHVCQUF1QixDQUFDO0FBQ3ZDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLE9BQU8sR0FBRyw0Q0FBNEMsQ0FBQztBQUM1RDtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxFQUFBLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxVQUFVLENBQUMsS0FBSyxFQUFFO0NBQzdDLE1BQUksT0FBTyxLQUFLO2FBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFO0NBQzVDLFlBQVUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7Q0FDakMsR0FBQyxDQUFDO0FBQ0Y7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7R0FDQSxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7T0FDdEQsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7T0FDeEMsSUFBSSxJQUFJLENBQUMsSUFBSTtDQUNqQixVQUFRLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO09BQzFELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztDQUM1QyxHQUFDLENBQUM7QUFDRjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxFQUFBLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFO09BQy9CLEtBQUssSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztDQUNqRSxVQUFRLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLFFBQVE7Q0FDbkQsY0FBWSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO09BQ3BDLE9BQU8sR0FBRyxDQUFDO0lBQ2Q7QUFDRDtDQUNBLEVBQUEsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsRUFBQSxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsT0FBTyxDQUFDLEdBQUcsRUFBRTtDQUNyQyxNQUFJLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzFELEdBQUMsQ0FBQztBQUNGO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0dBQ0EsU0FBUyxRQUFRLENBQUMsSUFBSSxFQUFFO0FBQ3hCO0NBQ0EsTUFBSSxTQUFTLFdBQVcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFO0FBQzlDO0NBQ0EsVUFBUSxJQUFJLEVBQUUsSUFBSSxZQUFZLFdBQVcsQ0FBQztlQUM5QixPQUFPLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN4RDtDQUNBO0NBQ0E7QUFDQTtDQUNBLFVBQVEsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxPQUFPLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hGO0NBQ0E7V0FDUSxJQUFJLEtBQUssQ0FBQyxpQkFBaUI7ZUFDdkIsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztDQUN2RDtlQUNZLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEtBQUssRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3JGO0NBQ0EsVUFBUSxJQUFJLFVBQVU7Q0FDdEIsY0FBWSxLQUFLLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9CO0FBQ0w7Q0FDQSxNQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxXQUFXLEdBQUcsV0FBVyxDQUFDO0FBQ3ZGO09BQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsT0FBTyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMvRjtPQUNJLFdBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFNBQVMsUUFBUSxHQUFHO1dBQ2pELE9BQU8sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztDQUMvQyxPQUFLLENBQUM7QUFDTjtPQUNJLE9BQU8sV0FBVyxDQUFDO0lBQ3RCO0FBQ0Q7Q0FDQSxFQUFBLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQ3pCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDL0M7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0FBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7QUFDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxFQUFBLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxRQUFRLENBQUMsVUFBVSxFQUFFO0NBQ2pELE1BQUksSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO0NBQ3RCLE1BQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1dBQ3RDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsTUFBSSxPQUFPLFdBQVc7V0FDZCxLQUFLLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7Q0FDM0UsY0FBWSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSTtDQUNoRyxrQkFBZ0IsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDL0IsT0FBSyxDQUFDO0NBQ04sR0FBQyxDQUFDO0FBQ0Y7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtBQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLFFBQVEsQ0FBQyxVQUFVLEVBQUU7QUFDakQ7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7T0FDSSxPQUFPLFNBQVMsSUFBSSxFQUFFO0NBQzFCLFVBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO0NBQ2xELGNBQVksSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSTttQkFDdEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsT0FBSyxDQUFDO0NBQ04sR0FBQyxDQUFDO0FBQ0Y7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtHQUNBLElBQUksQ0FBQyxhQUFhLEdBQUc7T0FDakIsS0FBSyxFQUFFLE1BQU07T0FDYixLQUFLLEVBQUUsTUFBTTtPQUNiLEtBQUssRUFBRSxNQUFNO09BQ2IsSUFBSSxFQUFFLElBQUk7Q0FDZCxHQUFDLENBQUM7QUFDRjtDQUNBO0dBQ0EsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXO0NBQzdCLE1BQUksSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztDQUM3QjtPQUNJLElBQUksQ0FBQyxNQUFNLEVBQUU7V0FDVCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7Q0FDNUQsVUFBUSxPQUFPO1FBQ1Y7Q0FDTDtDQUNBO0NBQ0EsTUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSTtDQUN0RTtDQUNBLFVBQVEsU0FBUyxXQUFXLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtlQUNsQyxPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztDQUMvQyxXQUFTLENBQUM7Q0FDVixNQUFJLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLENBQUMsV0FBVztDQUNqRDtDQUNBLFVBQVEsU0FBUyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7Q0FDMUMsY0FBWSxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQ3BDLFdBQVMsQ0FBQztJQUNULENBQUE7Ozs7Ozs7Ozs7O0NDbmFELENBQWMsTUFBQSxHQUFHLE1BQU0sQ0FBQztBQUN4QjtFQUNBLElBQUksSUFBSSxRQUFRSCxnQkFBQSxFQUF5QixDQUFDO0FBQzFDO0NBQ0EsQ0FBQSxJQUFJLFlBQVksQ0FBQztBQUNqQjtDQUNBLENBQUEsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVE7Q0FDN0IsS0FBSSxNQUFNLE1BQU0sSUFBSSxDQUFDLE1BQU07Q0FDM0IsS0FBSSxJQUFJLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQztBQUMxQjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLENBQUEsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDMUI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEtBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDakI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEtBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDbkI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEtBQUksSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7QUFDMUI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEtBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7R0FDbEI7QUFDRDtDQUNBO0VBQ0EsU0FBUyxJQUFJLEdBQUcsRUFBRTtBQUNsQjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7RUFDQSxTQUFTLEtBQUssQ0FBQyxNQUFNLEVBQUU7QUFDdkI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEtBQUksSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQzVCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxLQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztBQUM1QjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsS0FBSSxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDMUI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEtBQUksSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0dBQzdCO0FBQ0Q7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsQ0FBQSxTQUFTLE1BQU0sR0FBRztBQUNsQjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsS0FBSSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNqQjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsS0FBSSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEtBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQzFCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxLQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtHQUNDO0FBQ0Q7Q0FDQSxDQUFBLElBQUksTUFBTSxHQUFHLFNBQVMsTUFBTSxHQUFHO01BQzNCLE9BQU8sSUFBSSxDQUFDLE1BQU07WUFDWixTQUFTLG1CQUFtQixHQUFHO2NBQzdCLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLFNBQVMsYUFBYSxHQUFHO0NBQzdELGlCQUFnQixPQUFPLElBQUksWUFBWSxFQUFFLENBQUM7Q0FDMUMsY0FBYSxHQUFHLENBQUM7V0FDUjtDQUNUO1lBQ1UsU0FBUyxZQUFZLEdBQUc7Q0FDbEMsYUFBWSxPQUFPLElBQUksTUFBTSxFQUFFLENBQUM7Q0FDaEMsVUFBUyxDQUFDO0NBQ1YsRUFBQyxDQUFDO0FBQ0Y7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsQ0FBQSxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ3pCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLENBQUEsTUFBTSxDQUFDLEtBQUssR0FBRyxTQUFTLEtBQUssQ0FBQyxJQUFJLEVBQUU7TUFDaEMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDaEMsRUFBQyxDQUFDO0FBQ0Y7Q0FDQTtDQUNBO0NBQ0EsQ0FBQSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSztNQUNwQixNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxDQUFBLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFNBQVMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0NBQ3JELEtBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0NBQ3RELEtBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUM7TUFDaEIsT0FBTyxJQUFJLENBQUM7Q0FDaEIsRUFBQyxDQUFDO0FBQ0Y7Q0FDQSxDQUFBLFNBQVMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO01BQzlCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO0dBQ3hCO0FBQ0Q7Q0FDQSxDQUFBLFNBQVMsYUFBYSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0NBQ3RDLEtBQUksT0FBTyxHQUFHLEdBQUcsR0FBRyxFQUFFO1VBQ2QsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7VUFDN0IsR0FBRyxNQUFNLENBQUMsQ0FBQztPQUNkO0NBQ0wsS0FBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0dBQ2xCO0FBQ0Q7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxDQUFBLFNBQVMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7Q0FDNUIsS0FBSSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztDQUNu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TSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0NBQ3ZDLFNBQUE7Q0FDRCxRQUFBLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUU7Q0FDNUIsWUFBQSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7Q0FDeEMsU0FBQTtDQUNELFFBQUEsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLEVBQUUsRUFBRTtDQUN2QixZQUFBLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtDQUN2QyxTQUFBO0NBQ0QsUUFBQSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssQ0FBQyxFQUFFO0NBQ3pCLFlBQUEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0NBQ3pDLFNBQUE7Q0FDRCxRQUFBLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxDQUFDLEVBQUU7Q0FDMUIsWUFBQSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7Q0FDMUMsU0FBQTtDQUNELFFBQUEsSUFBSSxPQUFPLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRTtDQUNqQyxZQUFBLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQTtDQUM3QyxTQUFBO0NBQ0QsUUFBQSxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssRUFBRSxFQUFFO0NBQzdCLFlBQUEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0NBQzdDLFNBQUE7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QUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUE7Q0FDOUMsU0FBQTtDQUNELFFBQUEsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLENBQUMsRUFBRTtDQUM1QixZQUFBLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQTtDQUM1QyxTQUFBO0NBQ0QsUUFBQSxJQUFJLE9BQU8sQ0FBQyxTQUFTLEtBQUssQ0FBQyxFQUFFO0NBQzNCLFlBQUEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0NBQzNDLFNBQUE7Q0FDRCxRQUFBLElBQUksT0FBTyxDQUFDLGFBQWEsS0FBSyxDQUFDLEVBQUU7Q0FDL0IsWUFBQSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUE7Q0FDL0MsU0FBQTtDQUNELFFBQUEsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRTtDQUMxQixZQUFBLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtDQUMxQyxTQUFBO0NBQ0QsUUFBQSxJQUFJLE9BQU8sQ0FBQyxjQUFjLEtBQUssQ0FBQyxFQUFFO0NBQ2hDLFlBQUEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFBO0NBQ2hELFNBQUE7Q0FDRCxRQUFBLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxDQUFDLEVBQUU7Q0FDMUIsWUFBQSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7Q0FDMUMsU0FBQTtDQUNE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
|
7443
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy9AZGNsL2Vjcy1tYXRoL2Rpc3QvVmVjdG9yMy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZGNsL2Vjcy1tYXRoL2Rpc3QvU2NhbGFyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BkY2wvZWNzLW1hdGgvZGlzdC90eXBlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZGNsL2Vjcy1tYXRoL2Rpc3QvUXVhdGVybmlvbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZGNsL2Vjcy1tYXRoL2Rpc3QvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvQHByb3RvYnVmanMvYXNwcm9taXNlL2luZGV4LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0Bwcm90b2J1ZmpzL2Jhc2U2NC9pbmRleC5qcyIsIi4uL25vZGVfbW9kdWxlcy9AcHJvdG9idWZqcy9ldmVudGVtaXR0ZXIvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvQHByb3RvYnVmanMvZmxvYXQvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvQHByb3RvYnVmanMvaW5xdWlyZS9pbmRleC5qcyIsIi4uL25vZGVfbW9kdWxlcy9AcHJvdG9idWZqcy91dGY4L2luZGV4LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0Bwcm90b2J1ZmpzL3Bvb2wvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvcHJvdG9idWZqcy9zcmMvdXRpbC9sb25nYml0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9wcm90b2J1ZmpzL3NyYy91dGlsL21pbmltYWwuanMiLCIuLi9ub2RlX21vZHVsZXMvcHJvdG9idWZqcy9zcmMvd3JpdGVyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3Byb3RvYnVmanMvc3JjL3dyaXRlcl9idWZmZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvcHJvdG9idWZqcy9zcmMvcmVhZGVyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3Byb3RvYnVmanMvc3JjL3JlYWRlcl9idWZmZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvcHJvdG9idWZqcy9zcmMvcnBjL3NlcnZpY2UuanMiLCIuLi9ub2RlX21vZHVsZXMvcHJvdG9idWZqcy9zcmMvcnBjLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3Byb3RvYnVmanMvc3JjL3Jvb3RzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3Byb3RvYnVmanMvc3JjL2luZGV4LW1pbmltYWwuanMiLCIuLi9ub2RlX21vZHVsZXMvcHJvdG9idWZqcy9taW5pbWFsLmpzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL3BiL0FuaW1hdG9yLmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2dlbmVyYXRlZC9BbmltYXRvci5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvcGIvQXVkaW9Tb3VyY2UuZ2VuLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL0F1ZGlvU291cmNlLmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2dlbmVyYXRlZC9wYi9BdWRpb1N0cmVhbS5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvQXVkaW9TdHJlYW0uZ2VuLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL3BiL0JveFNoYXBlLmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2dlbmVyYXRlZC9Cb3hTaGFwZS5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvcGIvQ3lsaW5kZXJTaGFwZS5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvQ3lsaW5kZXJTaGFwZS5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvcGIvR0xURlNoYXBlLmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2dlbmVyYXRlZC9HTFRGU2hhcGUuZ2VuLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL3BiL2NvbW1vbi9Db2xvcjMuZ2VuLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL3BiL05GVFNoYXBlLmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2dlbmVyYXRlZC9ORlRTaGFwZS5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvcGIvT25Qb2ludGVyRG93bi5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvT25Qb2ludGVyRG93bi5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvcGIvY29tbW9uL1ZlY3RvcjMuZ2VuLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL3BiL09uUG9pbnRlckRvd25SZXN1bHQuZ2VuLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL09uUG9pbnRlckRvd25SZXN1bHQuZ2VuLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL3BiL09uUG9pbnRlclVwLmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2dlbmVyYXRlZC9PblBvaW50ZXJVcC5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvcGIvT25Qb2ludGVyVXBSZXN1bHQuZ2VuLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL09uUG9pbnRlclVwUmVzdWx0Lmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2dlbmVyYXRlZC9wYi9QbGFuZVNoYXBlLmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2dlbmVyYXRlZC9QbGFuZVNoYXBlLmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2dlbmVyYXRlZC9wYi9TcGhlcmVTaGFwZS5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvU3BoZXJlU2hhcGUuZ2VuLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL3BiL1RleHRTaGFwZS5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvVGV4dFNoYXBlLmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2dlbmVyYXRlZC9wYi9VaVRyYW5zZm9ybS5nZW4udHMiLCIuLi9zcmMvY29tcG9uZW50cy9nZW5lcmF0ZWQvVWlUcmFuc2Zvcm0uZ2VuLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvZ2VuZXJhdGVkL2luZGV4Lmdlbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL2xlZ2FjeS9UcmFuc2Zvcm0udHMiLCIuLi9zcmMvY29tcG9uZW50cy9sZWdhY3kvdHlwZXMudHMiLCIuLi9zcmMvY29tcG9uZW50cy9sZWdhY3kvaW5kZXgudHMiLCIuLi9zcmMvY29tcG9uZW50cy90eXBlcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL2luZGV4LnRzIiwiLi4vbm9kZV9tb2R1bGVzL0BkY2wvY3JkdC9kaXN0L3R5cGVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BkY2wvY3JkdC9kaXN0L2luZGV4LmpzIiwiLi4vc3JjL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlci9pbmRleC50cyIsIi4uL3NyYy9zZXJpYWxpemF0aW9uL3dpcmVNZXNzYWdlLnRzIiwiLi4vc3JjL3NlcmlhbGl6YXRpb24vY3JkdC9jb21wb25lbnRPcGVyYXRpb24udHMiLCIuLi9zcmMvc3lzdGVtcy9jcmR0L3V0aWxzLnRzIiwiLi4vc3JjL3N5c3RlbXMvY3JkdC9pbmRleC50cyIsIi4uL3NyYy9lbmdpbmUvZW50aXR5LXV0aWxzLnRzIiwiLi4vc3JjL2VuZ2luZS9lbnRpdHkudHMiLCIuLi9zcmMvZW5naW5lL3V0aWxzLnRzIiwiLi4vc3JjL2VuZ2luZS9jb21wb25lbnQudHMiLCIuLi9zcmMvZW5naW5lL2luZGV4LnRzIiwiLi4vc3JjL2J1aWx0LWluLXR5cGVzL01hcFR5cGUudHMiLCIuLi9zcmMvYnVpbHQtaW4tdHlwZXMvQXJyYXlUeXBlLnRzIiwiLi4vc3JjL2J1aWx0LWluLXR5cGVzL09wdGlvbmFsLnRzIiwiLi4vc3JjL2J1aWx0LWluLXR5cGVzL2Jhc2ljL0ludGVnZXIudHMiLCIuLi9zcmMvYnVpbHQtaW4tdHlwZXMvYmFzaWMvRmxvYXQudHMiLCIuLi9zcmMvYnVpbHQtaW4tdHlwZXMvYmFzaWMvU3RyaW5nLnRzIiwiLi4vc3JjL2J1aWx0LWluLXR5cGVzL2Jhc2ljL0VudW0udHMiLCIuLi9zcmMvYnVpbHQtaW4tdHlwZXMvYmFzaWMvQm9vbGVhbi50cyIsIi4uL3NyYy9zeXN0ZW1zL2NyZHQvdHJhbnNwb3J0cy9yZW5kZXJlclRyYW5zcG9ydC50cyIsIi4uL3NyYy9zeXN0ZW1zL2NyZHQvdHJhbnNwb3J0cy9uZXR3b3JrVHJhbnNwb3J0LnRzIiwiLi4vc3JjL2luaXRpYWxpemF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5WZWN0b3IzID0gdm9pZCAwO1xuLyoqXG4gKiBAcHVibGljXG4gKi9cbnZhciBWZWN0b3IzO1xuKGZ1bmN0aW9uIChWZWN0b3IzKSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBWZWN0b3IzIG9iamVjdCBmcm9tIHRoZSBnaXZlbiB4LCB5LCB6IChmbG9hdHMpIGNvb3JkaW5hdGVzLlxuICAgICAqIEBwYXJhbSB4IC0gZGVmaW5lcyB0aGUgZmlyc3QgY29vcmRpbmF0ZXMgKG9uIFggYXhpcylcbiAgICAgKiBAcGFyYW0geSAtIGRlZmluZXMgdGhlIHNlY29uZCBjb29yZGluYXRlcyAob24gWSBheGlzKVxuICAgICAqIEBwYXJhbSB6IC0gZGVmaW5lcyB0aGUgdGhpcmQgY29vcmRpbmF0ZXMgKG9uIFogYXhpcylcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGUoXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgZmlyc3QgY29vcmRpbmF0ZXMgKG9uIFggYXhpcylcbiAgICAgKi9cbiAgICB4ID0gMCwgXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgc2Vjb25kIGNvb3JkaW5hdGVzIChvbiBZIGF4aXMpXG4gICAgICovXG4gICAgeSA9IDAsIFxuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGhlIHRoaXJkIGNvb3JkaW5hdGVzIChvbiBaIGF4aXMpXG4gICAgICovXG4gICAgeiA9IDApIHtcbiAgICAgICAgcmV0dXJuIHsgeCwgeSwgeiB9O1xuICAgIH1cbiAgICBWZWN0b3IzLmNyZWF0ZSA9IGNyZWF0ZTtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbmV3IFZlY3RvcjMgYXMgdGhlIHJlc3VsdCBvZiB0aGUgYWRkaXRpb24gb2YgdGhlIHR3byBnaXZlbiB2ZWN0b3JzLlxuICAgICAqIEBwYXJhbSB2ZWN0b3IxIC0gdGhlIGZpcnN0IHZlY3RvclxuICAgICAqIEBwYXJhbSB2ZWN0b3IyIC0gdGhlIHNlY29uZCB2ZWN0b3JcbiAgICAgKiBAcmV0dXJucyB0aGUgcmVzdWx0aW5nIHZlY3RvclxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFkZCh2ZWN0b3IxLCB2ZWN0b3IyKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB2ZWN0b3IxLnggKyB2ZWN0b3IyLngsXG4gICAgICAgICAgICB5OiB2ZWN0b3IxLnkgKyB2ZWN0b3IyLnksXG4gICAgICAgICAgICB6OiB2ZWN0b3IxLnogKyB2ZWN0b3IyLnpcbiAgICAgICAgfTtcbiAgICB9XG4gICAgVmVjdG9yMy5hZGQgPSBhZGQ7XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIG5ldyBWZWN0b3IzIGFzIHRoZSByZXN1bHQgb2YgdGhlIHN1YnN0cmFjdGlvbiBvZiB0aGUgdHdvIGdpdmVuIHZlY3RvcnMuXG4gICAgICogQHJldHVybnMgdGhlIHJlc3VsdGluZyB2ZWN0b3JcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdWJ0cmFjdChtaW51ZW5kLCBzdWJ0cmFoZW5kKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBtaW51ZW5kLnggLSBzdWJ0cmFoZW5kLngsXG4gICAgICAgICAgICB5OiBtaW51ZW5kLnkgLSBzdWJ0cmFoZW5kLnksXG4gICAgICAgICAgICB6OiBtaW51ZW5kLnogLSBzdWJ0cmFoZW5kLnpcbiAgICAgICAgfTtcbiAgICB9XG4gICAgVmVjdG9yMy5zdWJ0cmFjdCA9IHN1YnRyYWN0O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgVmVjdG9yMyBhcyB0aGUgcmVzdWx0IG9mIHRoZSBzdWJzdHJhY3Rpb24gb2YgdGhlIHR3byBnaXZlbiB2ZWN0b3JzLlxuICAgICAqIEByZXR1cm5zIHRoZSByZXN1bHRpbmcgdmVjdG9yXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3VidHJhY3RUb1JlZihtaW51ZW5kLCBzdWJ0cmFoZW5kLCByZXN1bHQpIHtcbiAgICAgICAgcmVzdWx0LnggPSBtaW51ZW5kLnggLSBzdWJ0cmFoZW5kLng7XG4gICAgICAgIHJlc3VsdC55ID0gbWludWVuZC55IC0gc3VidHJhaGVuZC55O1xuICAgICAgICByZXN1bHQueiA9IG1pbnVlbmQueiAtIHN1YnRyYWhlbmQuejtcbiAgICB9XG4gICAgVmVjdG9yMy5zdWJ0cmFjdFRvUmVmID0gc3VidHJhY3RUb1JlZjtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbmV3IFZlY3RvcjMgd2l0aCB0aGUgb3RoZXIgc2lnblxuICAgICAqIEByZXR1cm5zIHRoZSByZXN1bHRpbmcgdmVjdG9yXG4gICAgICovXG4gICAgZnVuY3Rpb24gb3Bwb3NpdGUodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHsgeDogLXZhbHVlLngsIHk6IC12YWx1ZS55LCB6OiAtdmFsdWUueiB9O1xuICAgIH1cbiAgICBWZWN0b3IzLm9wcG9zaXRlID0gb3Bwb3NpdGU7XG4gICAgLyoqXG4gICAgICogQ29weSBzb3VyY2UgaW50byBkZXN0XG4gICAgICpcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb3B5KHNvdXJjZSwgZGVzdCkge1xuICAgICAgICBkZXN0LnggPSBzb3VyY2UueDtcbiAgICAgICAgZGVzdC55ID0gc291cmNlLnk7XG4gICAgICAgIGRlc3QueiA9IHNvdXJjZS56O1xuICAgIH1cbiAgICBWZWN0b3IzLmNvcHkgPSBjb3B5O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgVmVjdG9yMyB3aXRoIHRoZSBzYW1lIHZhbHVlXG4gICAgICogQHJldHVybnMgdGhlIHJlc3VsdGluZyB2ZWN0b3JcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZShzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHNvdXJjZSk7XG4gICAgfVxuICAgIFZlY3RvcjMuY2xvbmUgPSBjbG9uZTtcbiAgICAvLyBQcm9wZXJ0aWVzXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbGVuZ3RoIG9mIHRoZSBWZWN0b3IzXG4gICAgICogQHJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgVmVjdG8zXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGVuZ3RoKHZlY3Rvcikge1xuICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KHZlY3Rvci54ICogdmVjdG9yLnggKyB2ZWN0b3IueSAqIHZlY3Rvci55ICsgdmVjdG9yLnogKiB2ZWN0b3Iueik7XG4gICAgfVxuICAgIFZlY3RvcjMubGVuZ3RoID0gbGVuZ3RoO1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHNxdWFyZWQgbGVuZ3RoIG9mIHRoZSBWZWN0b3IzXG4gICAgICogQHJldHVybnMgc3F1YXJlZCBsZW5ndGggb2YgdGhlIFZlY3RvcjNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsZW5ndGhTcXVhcmVkKHZlY3Rvcikge1xuICAgICAgICByZXR1cm4gdmVjdG9yLnggKiB2ZWN0b3IueCArIHZlY3Rvci55ICogdmVjdG9yLnkgKyB2ZWN0b3IueiAqIHZlY3Rvci56O1xuICAgIH1cbiAgICBWZWN0b3IzLmxlbmd0aFNxdWFyZWQgPSBsZW5ndGhTcXVhcmVkO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgVmVjdG9yMyBzZXQgd2l0aCB0aGUgY3VycmVudCBWZWN0b3IzIGNvb3JkaW5hdGVzIG11bHRpcGxpZWQgYnkgdGhlIGZsb2F0IFwic2NhbGVcIlxuICAgICAqIEBwYXJhbSBzY2FsZSAtIGRlZmluZXMgdGhlIG11bHRpcGxpZXIgZmFjdG9yXG4gICAgICogQHJldHVybnMgYSBuZXcgVmVjdG9yM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNjYWxlVG9SZWYodmVjdG9yLCBzY2FsZSwgcmVzdWx0KSB7XG4gICAgICAgIHJlc3VsdC54ID0gdmVjdG9yLnggKiBzY2FsZTtcbiAgICAgICAgcmVzdWx0LnkgPSB2ZWN0b3IueSAqIHNjYWxlO1xuICAgICAgICByZXN1bHQueiA9IHZlY3Rvci56ICogc2NhbGU7XG4gICAgfVxuICAgIFZlY3RvcjMuc2NhbGVUb1JlZiA9IHNjYWxlVG9SZWY7XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIG5ldyBWZWN0b3IzIHNldCB3aXRoIHRoZSBjdXJyZW50IFZlY3RvcjMgY29vcmRpbmF0ZXMgbXVsdGlwbGllZCBieSB0aGUgZmxvYXQgXCJzY2FsZVwiXG4gICAgICogQHBhcmFtIHNjYWxlIC0gZGVmaW5lcyB0aGUgbXVsdGlwbGllciBmYWN0b3JcbiAgICAgKiBAcmV0dXJucyBhIG5ldyBWZWN0b3IzXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2NhbGUodmVjdG9yLCBzY2FsZSkge1xuICAgICAgICByZXR1cm4gY3JlYXRlKHZlY3Rvci54ICogc2NhbGUsIHZlY3Rvci55ICogc2NhbGUsIHZlY3Rvci56ICogc2NhbGUpO1xuICAgIH1cbiAgICBWZWN0b3IzLnNjYWxlID0gc2NhbGU7XG4gICAgLyoqXG4gICAgICogTm9ybWFsaXplIHRoZSBjdXJyZW50IFZlY3RvcjMgd2l0aCB0aGUgZ2l2ZW4gaW5wdXQgbGVuZ3RoLlxuICAgICAqIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBpcyBhbiBpbiBwbGFjZSBvcGVyYXRpb24uXG4gICAgICogQHBhcmFtIGxlbiAtIHRoZSBsZW5ndGggb2YgdGhlIHZlY3RvclxuICAgICAqIEByZXR1cm5zIHRoZSBjdXJyZW50IHVwZGF0ZWQgVmVjdG9yM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUZyb21MZW5ndGgodmVjdG9yLCBsZW4pIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY3JlYXRlKDAsIDAsIDApO1xuICAgICAgICBub3JtYWxpemVGcm9tTGVuZ3RoVG9SZWYodmVjdG9yLCBsZW4sIHJlc3VsdCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIFZlY3RvcjMubm9ybWFsaXplRnJvbUxlbmd0aCA9IG5vcm1hbGl6ZUZyb21MZW5ndGg7XG4gICAgLyoqXG4gICAgICogTm9ybWFsaXplIHRoZSBjdXJyZW50IFZlY3RvcjMgd2l0aCB0aGUgZ2l2ZW4gaW5wdXQgbGVuZ3RoLlxuICAgICAqIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBpcyBhbiBpbiBwbGFjZSBvcGVyYXRpb24uXG4gICAgICogQHBhcmFtIGxlbiAtIHRoZSBsZW5ndGggb2YgdGhlIHZlY3RvclxuICAgICAqIEByZXR1cm5zIHRoZSBjdXJyZW50IHVwZGF0ZWQgVmVjdG9yM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUZyb21MZW5ndGhUb1JlZih2ZWN0b3IsIGxlbiwgcmVzdWx0KSB7XG4gICAgICAgIGlmIChsZW4gPT09IDAgfHwgbGVuID09PSAxLjApIHtcbiAgICAgICAgICAgIGNvcHkodmVjdG9yLCByZXN1bHQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNjYWxlVG9SZWYodmVjdG9yLCAxLjAgLyBsZW4sIHJlc3VsdCk7XG4gICAgfVxuICAgIFZlY3RvcjMubm9ybWFsaXplRnJvbUxlbmd0aFRvUmVmID0gbm9ybWFsaXplRnJvbUxlbmd0aFRvUmVmO1xuICAgIC8qKlxuICAgICAqIE5vcm1hbGl6ZSB0aGUgY3VycmVudCBWZWN0b3IzLlxuICAgICAqIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBpcyBhbiBpbiBwbGFjZSBvcGVyYXRpb24uXG4gICAgICogQHJldHVybnMgdGhlIGN1cnJlbnQgdXBkYXRlZCBWZWN0b3IzXG4gICAgICovXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplKHZlY3Rvcikge1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplRnJvbUxlbmd0aCh2ZWN0b3IsIGxlbmd0aCh2ZWN0b3IpKTtcbiAgICB9XG4gICAgVmVjdG9yMy5ub3JtYWxpemUgPSBub3JtYWxpemU7XG4gICAgLyoqXG4gICAgICogTm9ybWFsaXplIHRoZSBjdXJyZW50IFZlY3RvcjMuXG4gICAgICogUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGlzIGFuIGluIHBsYWNlIG9wZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB0aGUgY3VycmVudCB1cGRhdGVkIFZlY3RvcjNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBub3JtYWxpemVUb1JlZih2ZWN0b3IsIHJlc3VsdCkge1xuICAgICAgICBub3JtYWxpemVGcm9tTGVuZ3RoVG9SZWYodmVjdG9yLCBsZW5ndGgodmVjdG9yKSwgcmVzdWx0KTtcbiAgICB9XG4gICAgVmVjdG9yMy5ub3JtYWxpemVUb1JlZiA9IG5vcm1hbGl6ZVRvUmVmO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGRvdCBwcm9kdWN0IChmbG9hdCkgYmV0d2VlbiB0aGUgdmVjdG9ycyBcImxlZnRcIiBhbmQgXCJyaWdodFwiXG4gICAgICogQHBhcmFtIGxlZnQgLSBkZWZpbmVzIHRoZSBsZWZ0IG9wZXJhbmRcbiAgICAgKiBAcGFyYW0gcmlnaHQgLSBkZWZpbmVzIHRoZSByaWdodCBvcGVyYW5kXG4gICAgICogQHJldHVybnMgdGhlIGRvdCBwcm9kdWN0XG4gICAgICovXG4gICAgZnVuY3Rpb24gZG90KGxlZnQsIHJpZ2h0KSB7XG4gICAgICAgIHJldHVybiBsZWZ0LnggKiByaWdodC54ICsgbGVmdC55ICogcmlnaHQueSArIGxlZnQueiAqIHJpZ2h0Lno7XG4gICAgfVxuICAgIFZlY3RvcjMuZG90ID0gZG90O1xuICAgIC8qKlxuICAgICAqIFJvdGF0ZXMgY3VycmVudCBWZWN0b3IzIGJhc2VkIG9uIHRoZSBnaXZlbiBxdWF0ZXJuaW9uLCBidXQgYXBwbGllcyB0aGUgcm90YXRpb24gdG8gdGFyZ2V0IFZlY3RvcjMuXG4gICAgICogQHBhcmFtIHEgLSBkZWZpbmVzIHRoZSBRdWF0ZXJuaW9uXG4gICAgICogQHBhcmFtIHJlc3VsdCAtIGRlZmluZXMgdGhlIHRhcmdldCBWZWN0b3IzXG4gICAgICogQHJldHVybnMgdGhlIGN1cnJlbnQgVmVjdG9yM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJvdGF0ZSh2ZWN0b3IsIHEpIHtcbiAgICAgICAgY29uc3QgeyB4LCB5LCB6IH0gPSB2ZWN0b3I7XG4gICAgICAgIGNvbnN0IHsgeDogcXgsIHk6IHF5LCB6OiBxeiwgdzogcXcgfSA9IHE7XG4gICAgICAgIC8vIGNhbGN1bGF0ZSBxdWF0ICogdmVjdG9yXG4gICAgICAgIGNvbnN0IGl4ID0gcXcgKiB4ICsgcXkgKiB6IC0gcXogKiB5O1xuICAgICAgICBjb25zdCBpeSA9IHF3ICogeSArIHF6ICogeCAtIHF4ICogejtcbiAgICAgICAgY29uc3QgaXogPSBxdyAqIHogKyBxeCAqIHkgLSBxeSAqIHg7XG4gICAgICAgIGNvbnN0IGl3ID0gLXF4ICogeCAtIHF5ICogeSAtIHF6ICogejtcbiAgICAgICAgLy8gY2FsY3VsYXRlIHJlc3VsdCAqIGludmVyc2UgcXVhdFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogaXggKiBxdyArIGl3ICogLXF4ICsgaXkgKiAtcXogLSBpeiAqIC1xeSxcbiAgICAgICAgICAgIHk6IGl5ICogcXcgKyBpdyAqIC1xeSArIGl6ICogLXF4IC0gaXggKiAtcXosXG4gICAgICAgICAgICB6OiBpeiAqIHF3ICsgaXcgKiAtcXogKyBpeCAqIC1xeSAtIGl5ICogLXF4XG4gICAgICAgIH07XG4gICAgfVxuICAgIFZlY3RvcjMucm90YXRlID0gcm90YXRlO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgVmVjdG9yMyBsb2NhdGVkIGZvciBcImFtb3VudFwiIChmbG9hdCkgb24gdGhlIGxpbmVhciBpbnRlcnBvbGF0aW9uIGJldHdlZW4gdGhlIHZlY3RvcnMgXCJzdGFydFwiIGFuZCBcImVuZFwiXG4gICAgICogQHBhcmFtIHN0YXJ0IC0gZGVmaW5lcyB0aGUgc3RhcnQgdmFsdWVcbiAgICAgKiBAcGFyYW0gZW5kIC0gZGVmaW5lcyB0aGUgZW5kIHZhbHVlXG4gICAgICogQHBhcmFtIGFtb3VudCAtIG1heCBkZWZpbmVzIGFtb3VudCBiZXR3ZWVuIGJvdGggKGJldHdlZW4gMCBhbmQgMSlcbiAgICAgKiBAcmV0dXJucyB0aGUgbmV3IFZlY3RvcjNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsZXJwKHN0YXJ0LCBlbmQsIGFtb3VudCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBjcmVhdGUoMCwgMCwgMCk7XG4gICAgICAgIGxlcnBUb1JlZihzdGFydCwgZW5kLCBhbW91bnQsIHJlc3VsdCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIFZlY3RvcjMubGVycCA9IGxlcnA7XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgZ2l2ZW4gdmVjdG9yIFwicmVzdWx0XCIgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBmcm9tIHRoZSB2ZWN0b3IgXCJzdGFydFwiIGZvciBcImFtb3VudFwiIHRvIHRoZSB2ZWN0b3IgXCJlbmRcIlxuICAgICAqIEBwYXJhbSBzdGFydCAtIGRlZmluZXMgdGhlIHN0YXJ0IHZhbHVlXG4gICAgICogQHBhcmFtIGVuZCAtIGRlZmluZXMgdGhlIGVuZCB2YWx1ZVxuICAgICAqIEBwYXJhbSBhbW91bnQgLSBtYXggZGVmaW5lcyBhbW91bnQgYmV0d2VlbiBib3RoIChiZXR3ZWVuIDAgYW5kIDEpXG4gICAgICogQHBhcmFtIHJlc3VsdCAtIGRlZmluZXMgdGhlIFZlY3RvcjMgd2hlcmUgdG8gc3RvcmUgdGhlIHJlc3VsdFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxlcnBUb1JlZihzdGFydCwgZW5kLCBhbW91bnQsIHJlc3VsdCkge1xuICAgICAgICByZXN1bHQueCA9IHN0YXJ0LnggKyAoZW5kLnggLSBzdGFydC54KSAqIGFtb3VudDtcbiAgICAgICAgcmVzdWx0LnkgPSBzdGFydC55ICsgKGVuZC55IC0gc3RhcnQueSkgKiBhbW91bnQ7XG4gICAgICAgIHJlc3VsdC56ID0gc3RhcnQueiArIChlbmQueiAtIHN0YXJ0LnopICogYW1vdW50O1xuICAgIH1cbiAgICBWZWN0b3IzLmxlcnBUb1JlZiA9IGxlcnBUb1JlZjtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbmV3IFZlY3RvcjMgYXMgdGhlIGNyb3NzIHByb2R1Y3Qgb2YgdGhlIHZlY3RvcnMgXCJsZWZ0XCIgYW5kIFwicmlnaHRcIlxuICAgICAqIFRoZSBjcm9zcyBwcm9kdWN0IGlzIHRoZW4gb3J0aG9nb25hbCB0byBib3RoIFwibGVmdFwiIGFuZCBcInJpZ2h0XCJcbiAgICAgKiBAcGFyYW0gbGVmdCAtIGRlZmluZXMgdGhlIGxlZnQgb3BlcmFuZFxuICAgICAqIEBwYXJhbSByaWdodCAtIGRlZmluZXMgdGhlIHJpZ2h0IG9wZXJhbmRcbiAgICAgKiBAcmV0dXJucyB0aGUgY3Jvc3MgcHJvZHVjdFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyb3NzKGxlZnQsIHJpZ2h0KSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFZlY3RvcjMuWmVybygpO1xuICAgICAgICBWZWN0b3IzLmNyb3NzVG9SZWYobGVmdCwgcmlnaHQsIHJlc3VsdCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIFZlY3RvcjMuY3Jvc3MgPSBjcm9zcztcbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBnaXZlbiB2ZWN0b3IgXCJyZXN1bHRcIiB3aXRoIHRoZSBjcm9zcyBwcm9kdWN0IG9mIFwibGVmdFwiIGFuZCBcInJpZ2h0XCJcbiAgICAgKiBUaGUgY3Jvc3MgcHJvZHVjdCBpcyB0aGVuIG9ydGhvZ29uYWwgdG8gYm90aCBcImxlZnRcIiBhbmQgXCJyaWdodFwiXG4gICAgICogQHBhcmFtIGxlZnQgLSBkZWZpbmVzIHRoZSBsZWZ0IG9wZXJhbmRcbiAgICAgKiBAcGFyYW0gcmlnaHQgLSBkZWZpbmVzIHRoZSByaWdodCBvcGVyYW5kXG4gICAgICogQHBhcmFtIHJlc3VsdCAtIGRlZmluZXMgdGhlIFZlY3RvcjMgd2hlcmUgdG8gc3RvcmUgdGhlIHJlc3VsdFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyb3NzVG9SZWYobGVmdCwgcmlnaHQsIHJlc3VsdCkge1xuICAgICAgICByZXN1bHQueCA9IGxlZnQueSAqIHJpZ2h0LnogLSBsZWZ0LnogKiByaWdodC55O1xuICAgICAgICByZXN1bHQueSA9IGxlZnQueiAqIHJpZ2h0LnggLSBsZWZ0LnggKiByaWdodC56O1xuICAgICAgICByZXN1bHQueiA9IGxlZnQueCAqIHJpZ2h0LnkgLSBsZWZ0LnkgKiByaWdodC54O1xuICAgIH1cbiAgICBWZWN0b3IzLmNyb3NzVG9SZWYgPSBjcm9zc1RvUmVmO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgVmVjdG9yMyBzZXQgdG8gKDAuMCwgMC4wLCAwLjApXG4gICAgICogQHJldHVybnMgYSBuZXcgZW1wdHkgVmVjdG9yM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIFplcm8oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGUoMC4wLCAwLjAsIDAuMCk7XG4gICAgfVxuICAgIFZlY3RvcjMuWmVybyA9IFplcm87XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIG5ldyBWZWN0b3IzIHNldCB0byAoMS4wLCAxLjAsIDEuMClcbiAgICAgKiBAcmV0dXJucyBhIG5ldyB1bml0IFZlY3RvcjNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBPbmUoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGUoMS4wLCAxLjAsIDEuMCk7XG4gICAgfVxuICAgIFZlY3RvcjMuT25lID0gT25lO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgVmVjdG9yMyBzZXQgdG9sZW5ndGhTcXVhcmVkICgwLjAsIDEuMCwgMC4wKVxuICAgICAqIEByZXR1cm5zIGEgbmV3IHVwIFZlY3RvcjNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBVcCgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZSgwLjAsIDEuMCwgMC4wKTtcbiAgICB9XG4gICAgVmVjdG9yMy5VcCA9IFVwO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgVmVjdG9yMyBzZXQgdG8gKDAuMCwgLTEuMCwgMC4wKVxuICAgICAqIEByZXR1cm5zIGEgbmV3IGRvd24gVmVjdG9yM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIERvd24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGUoMC4wLCAtMS4wLCAwLjApO1xuICAgIH1cbiAgICBWZWN0b3IzLkRvd24gPSBEb3duO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgVmVjdG9yMyBzZXQgdG8gKDAuMCwgMC4wLCAxLjApXG4gICAgICogQHJldHVybnMgYSBuZXcgZm9yd2FyZCBWZWN0b3IzXG4gICAgICovXG4gICAgZnVuY3Rpb24gRm9yd2FyZCgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZSgwLjAsIDAuMCwgMS4wKTtcbiAgICB9XG4gICAgVmVjdG9yMy5Gb3J3YXJkID0gRm9yd2FyZDtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbmV3IFZlY3RvcjMgc2V0IHRvICgwLjAsIDAuMCwgLTEuMClcbiAgICAgKiBAcmV0dXJucyBhIG5ldyBmb3J3YXJkIFZlY3RvcjNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBCYWNrd2FyZCgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZSgwLjAsIDAuMCwgLTEuMCk7XG4gICAgfVxuICAgIFZlY3RvcjMuQmFja3dhcmQgPSBCYWNrd2FyZDtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbmV3IFZlY3RvcjMgc2V0IHRvICgxLjAsIDAuMCwgMC4wKVxuICAgICAqIEByZXR1cm5zIGEgbmV3IHJpZ2h0IFZlY3RvcjNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBSaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZSgxLjAsIDAuMCwgMC4wKTtcbiAgICB9XG4gICAgVmVjdG9yMy5SaWdodCA9IFJpZ2h0O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgVmVjdG9yMyBzZXQgdG8gKC0xLjAsIDAuMCwgMC4wKVxuICAgICAqIEByZXR1cm5zIGEgbmV3IGxlZnQgVmVjdG9yM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIExlZnQoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGUoLTEuMCwgMC4wLCAwLjApO1xuICAgIH1cbiAgICBWZWN0b3IzLkxlZnQgPSBMZWZ0O1xufSkoVmVjdG9yMyA9IGV4cG9ydHMuVmVjdG9yMyB8fCAoZXhwb3J0cy5WZWN0b3IzID0ge30pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVZlY3RvcjMuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlNjYWxhciA9IHZvaWQgMDtcbi8qKlxuICogVHdvIHBpIGNvbnN0YW50cyBjb252ZW5pZW50IGZvciBjb21wdXRhdGlvbi5cbiAqL1xuY29uc3QgVHdvUGkgPSBNYXRoLlBJICogMjtcbi8qKlxuICogQm9vbGVhbiA6IHRydWUgaWYgdGhlIGFic29sdXRlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGFuZCBiIGlzIGxvd2VyIHRoYW4gZXBzaWxvbiAoZGVmYXVsdCA9IDEuNDAxMjk4RS00NSlcbiAqIEBwYXJhbSBhIC0gbnVtYmVyXG4gKiBAcGFyYW0gYiAtIG51bWJlclxuICogQHBhcmFtIGVwc2lsb24gLSAoZGVmYXVsdCA9IDEuNDAxMjk4RS00NSlcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGFic29sdXRlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGFuZCBiIGlzIGxvd2VyIHRoYW4gZXBzaWxvbiAoZGVmYXVsdCA9IDEuNDAxMjk4RS00NSlcbiAqL1xuZnVuY3Rpb24gd2l0aGluRXBzaWxvbihhLCBiLCBlcHNpbG9uID0gMS40MDEyOThlLTQ1KSB7XG4gICAgY29uc3QgbnVtID0gYSAtIGI7XG4gICAgcmV0dXJuIC1lcHNpbG9uIDw9IG51bSAmJiBudW0gPD0gZXBzaWxvbjtcbn1cbi8qKlxuICogUmV0dXJucyBhIHN0cmluZyA6IHRoZSB1cHBlciBjYXNlIHRyYW5zbGF0aW9uIG9mIHRoZSBudW1iZXIgaSB0byBoZXhhZGVjaW1hbC5cbiAqIEBwYXJhbSBpIC0gbnVtYmVyXG4gKiBAcmV0dXJucyB0aGUgdXBwZXIgY2FzZSB0cmFuc2xhdGlvbiBvZiB0aGUgbnVtYmVyIGkgdG8gaGV4YWRlY2ltYWwuXG4gKi9cbmZ1bmN0aW9uIHRvSGV4KGkpIHtcbiAgICBjb25zdCBzdHIgPSBpLnRvU3RyaW5nKDE2KTtcbiAgICBpZiAoaSA8PSAxNSkge1xuICAgICAgICByZXR1cm4gKCcwJyArIHN0cikudG9VcHBlckNhc2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0ci50b1VwcGVyQ2FzZSgpO1xufVxuLyoqXG4gKiBSZXR1cm5zIC0xIGlmIHZhbHVlIGlzIG5lZ2F0aXZlIGFuZCArMSBpcyB2YWx1ZSBpcyBwb3NpdGl2ZS5cbiAqIEBwYXJhbSBfdmFsdWUgLSB0aGUgdmFsdWVcbiAqIEByZXR1cm5zIHRoZSB2YWx1ZSBpdHNlbGYgaWYgaXQncyBlcXVhbCB0byB6ZXJvLlxuICovXG5mdW5jdGlvbiBzaWduKHZhbHVlKSB7XG4gICAgY29uc3QgX3ZhbHVlID0gK3ZhbHVlOyAvLyBjb252ZXJ0IHRvIGEgbnVtYmVyXG4gICAgaWYgKF92YWx1ZSA9PT0gMCB8fCBpc05hTihfdmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBfdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBfdmFsdWUgPiAwID8gMSA6IC0xO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSB2YWx1ZSBpdHNlbGYgaWYgaXQncyBiZXR3ZWVuIG1pbiBhbmQgbWF4LlxuICogUmV0dXJucyBtaW4gaWYgdGhlIHZhbHVlIGlzIGxvd2VyIHRoYW4gbWluLlxuICogUmV0dXJucyBtYXggaWYgdGhlIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBtYXguXG4gKiBAcGFyYW0gdmFsdWUgLSB0aGUgdmFsdWUgdG8gY2xtYXBcbiAqIEBwYXJhbSBtaW4gLSB0aGUgbWluIHZhbHVlIHRvIGNsYW1wIHRvIChkZWZhdWx0OiAwKVxuICogQHBhcmFtIG1heCAtIHRoZSBtYXggdmFsdWUgdG8gY2xhbXAgdG8gKGRlZmF1bHQ6IDEpXG4gKiBAcmV0dXJucyB0aGUgY2xhbXBlZCB2YWx1ZVxuICovXG5mdW5jdGlvbiBjbGFtcCh2YWx1ZSwgbWluID0gMCwgbWF4ID0gMSkge1xuICAgIHJldHVybiBNYXRoLm1pbihtYXgsIE1hdGgubWF4KG1pbiwgdmFsdWUpKTtcbn1cbi8qKlxuICogdGhlIGxvZzIgb2YgdmFsdWUuXG4gKiBAcGFyYW0gdmFsdWUgLSB0aGUgdmFsdWUgdG8gY29tcHV0ZSBsb2cyIG9mXG4gKiBAcmV0dXJucyB0aGUgbG9nMiBvZiB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbG9nMih2YWx1ZSkge1xuICAgIHJldHVybiBNYXRoLmxvZyh2YWx1ZSkgKiBNYXRoLkxPRzJFO1xufVxuLyoqXG4gKiBMb29wcyB0aGUgdmFsdWUsIHNvIHRoYXQgaXQgaXMgbmV2ZXIgbGFyZ2VyIHRoYW4gbGVuZ3RoIGFuZCBuZXZlciBzbWFsbGVyIHRoYW4gMC5cbiAqXG4gKiBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIG1vZHVsbyBvcGVyYXRvciBidXQgaXQgd29ya3Mgd2l0aCBmbG9hdGluZyBwb2ludCBudW1iZXJzLlxuICogRm9yIGV4YW1wbGUsIHVzaW5nIDMuMCBmb3IgdCBhbmQgMi41IGZvciBsZW5ndGgsIHRoZSByZXN1bHQgd291bGQgYmUgMC41LlxuICogV2l0aCB0ID0gNSBhbmQgbGVuZ3RoID0gMi41LCB0aGUgcmVzdWx0IHdvdWxkIGJlIDAuMC5cbiAqIE5vdGUsIGhvd2V2ZXIsIHRoYXQgdGhlIGJlaGF2aW91ciBpcyBub3QgZGVmaW5lZCBmb3IgbmVnYXRpdmUgbnVtYmVycyBhcyBpdCBpcyBmb3IgdGhlIG1vZHVsbyBvcGVyYXRvclxuICogQHBhcmFtIHZhbHVlIC0gdGhlIHZhbHVlXG4gKiBAcGFyYW0gbGVuZ3RoIC0gdGhlIGxlbmd0aFxuICogQHJldHVybnMgdGhlIGxvb3BlZCB2YWx1ZVxuICovXG5mdW5jdGlvbiByZXBlYXQodmFsdWUsIGxlbmd0aCkge1xuICAgIHJldHVybiB2YWx1ZSAtIE1hdGguZmxvb3IodmFsdWUgLyBsZW5ndGgpICogbGVuZ3RoO1xufVxuLyoqXG4gKiBOb3JtYWxpemUgdGhlIHZhbHVlIGJldHdlZW4gMC4wIGFuZCAxLjAgdXNpbmcgbWluIGFuZCBtYXggdmFsdWVzXG4gKiBAcGFyYW0gdmFsdWUgLSB2YWx1ZSB0byBub3JtYWxpemVcbiAqIEBwYXJhbSBtaW4gLSBtYXggdG8gbm9ybWFsaXplIGJldHdlZW5cbiAqIEBwYXJhbSBtYXggLSBtaW4gdG8gbm9ybWFsaXplIGJldHdlZW5cbiAqIEByZXR1cm5zIHRoZSBub3JtYWxpemVkIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZSh2YWx1ZSwgbWluLCBtYXgpIHtcbiAgICByZXR1cm4gKHZhbHVlIC0gbWluKSAvIChtYXggLSBtaW4pO1xufVxuLyoqXG4gKiBEZW5vcm1hbGl6ZSB0aGUgdmFsdWUgZnJvbSAwLjAgYW5kIDEuMCB1c2luZyBtaW4gYW5kIG1heCB2YWx1ZXNcbiAqIEBwYXJhbSBub3JtYWxpemVkIC0gdmFsdWUgdG8gZGVub3JtYWxpemVcbiAqIEBwYXJhbSBtaW4gLSBtYXggdG8gZGVub3JtYWxpemUgYmV0d2VlblxuICogQHBhcmFtIG1heCAtIG1pbiB0byBkZW5vcm1hbGl6ZSBiZXR3ZWVuXG4gKiBAcmV0dXJucyB0aGUgZGVub3JtYWxpemVkIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIGRlbm9ybWFsaXplKG5vcm1hbGl6ZWQsIG1pbiwgbWF4KSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQgKiAobWF4IC0gbWluKSArIG1pbjtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgc2hvcnRlc3QgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBnaXZlbiBhbmdsZXMgZ2l2ZW4gaW4gZGVncmVlcy5cbiAqIEBwYXJhbSBjdXJyZW50IC0gY3VycmVudCBhbmdsZSBpbiBkZWdyZWVzXG4gKiBAcGFyYW0gdGFyZ2V0IC0gdGFyZ2V0IGFuZ2xlIGluIGRlZ3JlZXNcbiAqIEByZXR1cm5zIHRoZSBkZWx0YVxuICovXG5mdW5jdGlvbiBkZWx0YUFuZ2xlKGN1cnJlbnQsIHRhcmdldCkge1xuICAgIGxldCBudW0gPSByZXBlYXQodGFyZ2V0IC0gY3VycmVudCwgMzYwLjApO1xuICAgIGlmIChudW0gPiAxODAuMCkge1xuICAgICAgICBudW0gLT0gMzYwLjA7XG4gICAgfVxuICAgIHJldHVybiBudW07XG59XG4vKipcbiAqIFBpbmdQb25ncyB0aGUgdmFsdWUgdCwgc28gdGhhdCBpdCBpcyBuZXZlciBsYXJnZXIgdGhhbiBsZW5ndGggYW5kIG5ldmVyIHNtYWxsZXIgdGhhbiAwLlxuICogQHBhcmFtIHR4IC0gdmFsdWVcbiAqIEBwYXJhbSBsZW5ndGggLSBsZW5ndGhcbiAqIEByZXR1cm5zIFRoZSByZXR1cm5lZCB2YWx1ZSB3aWxsIG1vdmUgYmFjayBhbmQgZm9ydGggYmV0d2VlbiAwIGFuZCBsZW5ndGhcbiAqL1xuZnVuY3Rpb24gcGluZ1BvbmcodHgsIGxlbmd0aCkge1xuICAgIGNvbnN0IHQgPSByZXBlYXQodHgsIGxlbmd0aCAqIDIuMCk7XG4gICAgcmV0dXJuIGxlbmd0aCAtIE1hdGguYWJzKHQgLSBsZW5ndGgpO1xufVxuLyoqXG4gKiBJbnRlcnBvbGF0ZXMgYmV0d2VlbiBtaW4gYW5kIG1heCB3aXRoIHNtb290aGluZyBhdCB0aGUgbGltaXRzLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gaW50ZXJwb2xhdGVzIGJldHdlZW4gbWluIGFuZCBtYXggaW4gYSBzaW1pbGFyIHdheSB0byBMZXJwLiBIb3dldmVyLCB0aGUgaW50ZXJwb2xhdGlvbiB3aWxsIGdyYWR1YWxseSBzcGVlZCB1cFxuICogZnJvbSB0aGUgc3RhcnQgYW5kIHNsb3cgZG93biB0b3dhcmQgdGhlIGVuZC4gVGhpcyBpcyB1c2VmdWwgZm9yIGNyZWF0aW5nIG5hdHVyYWwtbG9va2luZyBhbmltYXRpb24sIGZhZGluZyBhbmQgb3RoZXIgdHJhbnNpdGlvbnMuXG4gKiBAcGFyYW0gZnJvbSAtIGZyb21cbiAqIEBwYXJhbSB0byAtIHRvXG4gKiBAcGFyYW0gdHggLSB2YWx1ZVxuICogQHJldHVybnMgdGhlIHNtb290aCBzdGVwcGVkIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIHNtb290aFN0ZXAoZnJvbSwgdG8sIHR4KSB7XG4gICAgbGV0IHQgPSBjbGFtcCh0eCk7XG4gICAgdCA9IC0yLjAgKiB0ICogdCAqIHQgKyAzLjAgKiB0ICogdDtcbiAgICByZXR1cm4gdG8gKiB0ICsgZnJvbSAqICgxLjAgLSB0KTtcbn1cbi8qKlxuICogTW92ZXMgYSB2YWx1ZSBjdXJyZW50IHRvd2FyZHMgdGFyZ2V0LlxuICpcbiAqIFRoaXMgaXMgZXNzZW50aWFsbHkgdGhlIHNhbWUgYXMgTWF0aGYuTGVycCBidXQgaW5zdGVhZCB0aGUgZnVuY3Rpb24gd2lsbCBlbnN1cmUgdGhhdCB0aGUgc3BlZWQgbmV2ZXIgZXhjZWVkcyBtYXhEZWx0YS5cbiAqIE5lZ2F0aXZlIHZhbHVlcyBvZiBtYXhEZWx0YSBwdXNoZXMgdGhlIHZhbHVlIGF3YXkgZnJvbSB0YXJnZXQuXG4gKiBAcGFyYW0gY3VycmVudCAtIGN1cnJlbnQgdmFsdWVcbiAqIEBwYXJhbSB0YXJnZXQgLSB0YXJnZXQgdmFsdWVcbiAqIEBwYXJhbSBtYXhEZWx0YSAtIG1heCBkaXN0YW5jZSB0byBtb3ZlXG4gKiBAcmV0dXJucyByZXN1bHRpbmcgdmFsdWVcbiAqL1xuZnVuY3Rpb24gbW92ZVRvd2FyZHMoY3VycmVudCwgdGFyZ2V0LCBtYXhEZWx0YSkge1xuICAgIGxldCByZXN1bHQgPSAwO1xuICAgIGlmIChNYXRoLmFicyh0YXJnZXQgLSBjdXJyZW50KSA8PSBtYXhEZWx0YSkge1xuICAgICAgICByZXN1bHQgPSB0YXJnZXQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBjdXJyZW50ICsgc2lnbih0YXJnZXQgLSBjdXJyZW50KSAqIG1heERlbHRhO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLyoqXG4gKiBTYW1lIGFzIE1vdmVUb3dhcmRzIGJ1dCBtYWtlcyBzdXJlIHRoZSB2YWx1ZXMgaW50ZXJwb2xhdGUgY29ycmVjdGx5IHdoZW4gdGhleSB3cmFwIGFyb3VuZCAzNjAgZGVncmVlcy5cbiAqXG4gKiBWYXJpYWJsZXMgY3VycmVudCBhbmQgdGFyZ2V0IGFyZSBhc3N1bWVkIHRvIGJlIGluIGRlZ3JlZXMuIEZvciBvcHRpbWl6YXRpb24gcmVhc29ucywgbmVnYXRpdmUgdmFsdWVzIG9mIG1heERlbHRhXG4gKiAgYXJlIG5vdCBzdXBwb3J0ZWQgYW5kIG1heSBjYXVzZSBvc2NpbGxhdGlvbi4gVG8gcHVzaCBjdXJyZW50IGF3YXkgZnJvbSBhIHRhcmdldCBhbmdsZSwgYWRkIDE4MCB0byB0aGF0IGFuZ2xlIGluc3RlYWQuXG4gKiBAcGFyYW0gY3VycmVudCAtIGN1cnJlbnQgdmFsdWVcbiAqIEBwYXJhbSB0YXJnZXQgLSB0YXJnZXQgdmFsdWVcbiAqIEBwYXJhbSBtYXhEZWx0YSAtIG1heCBkaXN0YW5jZSB0byBtb3ZlXG4gKiBAcmV0dXJucyByZXN1bHRpbmcgYW5nbGVcbiAqL1xuZnVuY3Rpb24gbW92ZVRvd2FyZHNBbmdsZShjdXJyZW50LCB0YXJnZXQsIG1heERlbHRhKSB7XG4gICAgY29uc3QgbnVtID0gZGVsdGFBbmdsZShjdXJyZW50LCB0YXJnZXQpO1xuICAgIGxldCByZXN1bHQgPSAwO1xuICAgIGlmICgtbWF4RGVsdGEgPCBudW0gJiYgbnVtIDwgbWF4RGVsdGEpIHtcbiAgICAgICAgcmVzdWx0ID0gdGFyZ2V0O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gbW92ZVRvd2FyZHMoY3VycmVudCwgY3VycmVudCArIG51bSwgbWF4RGVsdGEpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHNjYWxhciB3aXRoIHZhbHVlcyBsaW5lYXJseSBpbnRlcnBvbGF0ZWQgb2YgXCJhbW91bnRcIiBiZXR3ZWVuIHRoZSBzdGFydCBzY2FsYXIgYW5kIHRoZSBlbmQgc2NhbGFyXG4gKiBAcGFyYW0gc3RhcnQgLSBzdGFydCB2YWx1ZVxuICogQHBhcmFtIGVuZCAtIHRhcmdldCB2YWx1ZVxuICogQHBhcmFtIGFtb3VudCAtIGFtb3VudCB0byBsZXJwIGJldHdlZW5cbiAqIEByZXR1cm5zIHRoZSBsZXJwZWQgdmFsdWVcbiAqL1xuZnVuY3Rpb24gbGVycChzdGFydCwgZW5kLCBhbW91bnQpIHtcbiAgICByZXR1cm4gc3RhcnQgKyAoZW5kIC0gc3RhcnQpICogYW1vdW50O1xufVxuLyoqXG4gKiBTYW1lIGFzIExlcnAgYnV0IG1ha2VzIHN1cmUgdGhlIHZhbHVlcyBpbnRlcnBvbGF0ZSBjb3JyZWN0bHkgd2hlbiB0aGV5IHdyYXAgYXJvdW5kIDM2MCBkZWdyZWVzLlxuICogVGhlIHBhcmFtZXRlciB0IGlzIGNsYW1wZWQgdG8gdGhlIHJhbmdlIFswLCAxXS4gVmFyaWFibGVzIGEgYW5kIGIgYXJlIGFzc3VtZWQgdG8gYmUgaW4gZGVncmVlcy5cbiAqIEBwYXJhbSBzdGFydCAtIHN0YXJ0IHZhbHVlXG4gKiBAcGFyYW0gZW5kIC0gdGFyZ2V0IHZhbHVlXG4gKiBAcGFyYW0gYW1vdW50IC0gYW1vdW50IHRvIGxlcnAgYmV0d2VlblxuICogQHJldHVybnMgdGhlIGxlcnBlZCB2YWx1ZVxuICovXG5mdW5jdGlvbiBsZXJwQW5nbGUoc3RhcnQsIGVuZCwgYW1vdW50KSB7XG4gICAgbGV0IG51bSA9IHJlcGVhdChlbmQgLSBzdGFydCwgMzYwLjApO1xuICAgIGlmIChudW0gPiAxODAuMCkge1xuICAgICAgICBudW0gLT0gMzYwLjA7XG4gICAgfVxuICAgIHJldHVybiBzdGFydCArIG51bSAqIGNsYW1wKGFtb3VudCk7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGxpbmVhciBwYXJhbWV0ZXIgdCB0aGF0IHByb2R1Y2VzIHRoZSBpbnRlcnBvbGFudCB2YWx1ZSB3aXRoaW4gdGhlIHJhbmdlIFthLCBiXS5cbiAqIEBwYXJhbSBhIC0gc3RhcnQgdmFsdWVcbiAqIEBwYXJhbSBiIC0gdGFyZ2V0IHZhbHVlXG4gKiBAcGFyYW0gdmFsdWUgLSB2YWx1ZSBiZXR3ZWVuIGEgYW5kIGJcbiAqIEByZXR1cm5zIHRoZSBpbnZlcnNlTGVycCB2YWx1ZVxuICovXG5mdW5jdGlvbiBpbnZlcnNlTGVycChhLCBiLCB2YWx1ZSkge1xuICAgIGxldCByZXN1bHQgPSAwO1xuICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgIHJlc3VsdCA9IGNsYW1wKCh2YWx1ZSAtIGEpIC8gKGIgLSBhKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXN1bHQgPSAwLjA7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4vKipcbiAqIFJldHVybnMgYSBuZXcgc2NhbGFyIGxvY2F0ZWQgZm9yIFwiYW1vdW50XCIgKGZsb2F0KSBvbiB0aGUgSGVybWl0ZSBzcGxpbmUgZGVmaW5lZCBieSB0aGUgc2NhbGFycyBcInZhbHVlMVwiLCBcInZhbHVlM1wiLCBcInRhbmdlbnQxXCIsIFwidGFuZ2VudDJcIi5cbiAqIHtAbGluayBodHRwOi8vbWF0aHdvcmxkLndvbGZyYW0uY29tL0hlcm1pdGVQb2x5bm9taWFsLmh0bWx9XG4gKiBAcGFyYW0gdmFsdWUxIC0gc3BsaW5lIHZhbHVlXG4gKiBAcGFyYW0gdGFuZ2VudDEgLSBzcGxpbmUgdmFsdWVcbiAqIEBwYXJhbSB2YWx1ZTIgLSBzcGxpbmUgdmFsdWVcbiAqIEBwYXJhbSB0YW5nZW50MiAtIHNwbGluZSB2YWx1ZVxuICogQHBhcmFtIGFtb3VudCAtIGlucHV0IHZhbHVlXG4gKiBAcmV0dXJucyBoZXJtaXRlIHJlc3VsdFxuICovXG5mdW5jdGlvbiBoZXJtaXRlKHZhbHVlMSwgdGFuZ2VudDEsIHZhbHVlMiwgdGFuZ2VudDIsIGFtb3VudCkge1xuICAgIGNvbnN0IHNxdWFyZWQgPSBhbW91bnQgKiBhbW91bnQ7XG4gICAgY29uc3QgY3ViZWQgPSBhbW91bnQgKiBzcXVhcmVkO1xuICAgIGNvbnN0IHBhcnQxID0gMi4wICogY3ViZWQgLSAzLjAgKiBzcXVhcmVkICsgMS4wO1xuICAgIGNvbnN0IHBhcnQyID0gLTIuMCAqIGN1YmVkICsgMy4wICogc3F1YXJlZDtcbiAgICBjb25zdCBwYXJ0MyA9IGN1YmVkIC0gMi4wICogc3F1YXJlZCArIGFtb3VudDtcbiAgICBjb25zdCBwYXJ0NCA9IGN1YmVkIC0gc3F1YXJlZDtcbiAgICByZXR1cm4gdmFsdWUxICogcGFydDEgKyB2YWx1ZTIgKiBwYXJ0MiArIHRhbmdlbnQxICogcGFydDMgKyB0YW5nZW50MiAqIHBhcnQ0O1xufVxuLyoqXG4gKiBSZXR1cm5zIGEgcmFuZG9tIGZsb2F0IG51bWJlciBiZXR3ZWVuIGFuZCBtaW4gYW5kIG1heCB2YWx1ZXNcbiAqIEBwYXJhbSBtaW4gLSBtaW4gdmFsdWUgb2YgcmFuZG9tXG4gKiBAcGFyYW0gbWF4IC0gbWF4IHZhbHVlIG9mIHJhbmRvbVxuICogQHJldHVybnMgcmFuZG9tIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIHJhbmRvbVJhbmdlKG1pbiwgbWF4KSB7XG4gICAgaWYgKG1pbiA9PT0gbWF4KSB7XG4gICAgICAgIHJldHVybiBtaW47XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikgKyBtaW47XG59XG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBwZXJjZW50YWdlIG9mIGEgbnVtYmVyIGluIGEgZ2l2ZW4gcmFuZ2UuXG4gKlxuICogUmFuZ2VUb1BlcmNlbnQoNDAsMjAsNjApIHdpbGwgcmV0dXJuIDAuNSAoNTAlKVxuICogUmFuZ2VUb1BlcmNlbnQoMzQsMCwxMDApIHdpbGwgcmV0dXJuIDAuMzQgKDM0JSlcbiAqIEBwYXJhbSBudW0gLSB0byBjb252ZXJ0IHRvIHBlcmNlbnRhZ2VcbiAqIEBwYXJhbSBtaW4gLSBtaW4gcmFuZ2VcbiAqIEBwYXJhbSBtYXggLSBtYXggcmFuZ2VcbiAqIEByZXR1cm5zIHRoZSBwZXJjZW50YWdlXG4gKi9cbmZ1bmN0aW9uIHJhbmdlVG9QZXJjZW50KG51bSwgbWluLCBtYXgpIHtcbiAgICByZXR1cm4gKG51bSAtIG1pbikgLyAobWF4IC0gbWluKTtcbn1cbi8qKlxuICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIG51bWJlciB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBwZXJjZW50YWdlIGluIGEgZ2l2ZW4gcmFuZ2UuXG4gKlxuICogUGVyY2VudFRvUmFuZ2UoMC4zNCwwLDEwMCkgd2lsbCByZXR1cm4gMzQuXG4gKiBAcGFyYW0gcGVyY2VudCAtIHRvIGNvbnZlcnQgdG8gbnVtYmVyXG4gKiBAcGFyYW0gbWluIC0gbWluIHJhbmdlXG4gKiBAcGFyYW0gbWF4IC0gbWF4IHJhbmdlXG4gKiBAcmV0dXJucyB0aGUgbnVtYmVyXG4gKi9cbmZ1bmN0aW9uIHBlcmNlbnRUb1JhbmdlKHBlcmNlbnQsIG1pbiwgbWF4KSB7XG4gICAgcmV0dXJuIChtYXggLSBtaW4pICogcGVyY2VudCArIG1pbjtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgYW5nbGUgY29udmVydGVkIHRvIGVxdWl2YWxlbnQgdmFsdWUgYmV0d2VlbiAtTWF0aC5QSSBhbmQgTWF0aC5QSSByYWRpYW5zLlxuICogQHBhcmFtIGFuZ2xlIC0gVGhlIGFuZ2xlIHRvIG5vcm1hbGl6ZSBpbiByYWRpYW4uXG4gKiBAcmV0dXJucyBUaGUgY29udmVydGVkIGFuZ2xlLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVSYWRpYW5zKGFuZ2xlKSB7XG4gICAgLy8gTW9yZSBwcmVjaXNlIGJ1dCBzbG93ZXIgdmVyc2lvbiBrZXB0IGZvciByZWZlcmVuY2UuXG4gICAgLy8gdHNsaW50OmRpc2FibGU6bm8tY29tbWVudGVkLW91dC1jb2RlXG4gICAgLypcbiAgICAgIC8vIGFuZ2xlID0gYW5nbGUgJSBUb29scy5Ud29QaTtcbiAgICAgIC8vIGFuZ2xlID0gKGFuZ2xlICsgVG9vbHMuVHdvUGkpICUgVG9vbHMuVHdvUGk7XG4gIFxuICAgICAgLy9pZiAoYW5nbGUgPiBNYXRoLlBJKSB7XG4gICAgICAvL1x0YW5nbGUgLT0gVG9vbHMuVHdvUGk7XG4gICAgICAvL31cbiAgICAgICAgKi9cbiAgICByZXR1cm4gYW5nbGUgLSBUd29QaSAqIE1hdGguZmxvb3IoKGFuZ2xlICsgTWF0aC5QSSkgLyBUd29QaSk7XG59XG4vKipcbiAqIFNjYWxhciBjb21wdXRhdGlvbiBsaWJyYXJ5XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydHMuU2NhbGFyID0ge1xuICAgIHdpdGhpbkVwc2lsb24sXG4gICAgdG9IZXgsXG4gICAgc2lnbixcbiAgICBjbGFtcCxcbiAgICBsb2cyLFxuICAgIHJlcGVhdCxcbiAgICBub3JtYWxpemUsXG4gICAgZGVub3JtYWxpemUsXG4gICAgZGVsdGFBbmdsZSxcbiAgICBwaW5nUG9uZyxcbiAgICBzbW9vdGhTdGVwLFxuICAgIG1vdmVUb3dhcmRzLFxuICAgIG1vdmVUb3dhcmRzQW5nbGUsXG4gICAgbGVycCxcbiAgICBsZXJwQW5nbGUsXG4gICAgaW52ZXJzZUxlcnAsXG4gICAgaGVybWl0ZSxcbiAgICByYW5kb21SYW5nZSxcbiAgICByYW5nZVRvUGVyY2VudCxcbiAgICBwZXJjZW50VG9SYW5nZSxcbiAgICBub3JtYWxpemVSYWRpYW5zLFxuICAgIFR3b1BpXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2NhbGFyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5SQUQyREVHID0gZXhwb3J0cy5ERUcyUkFEID0gZXhwb3J0cy5FcHNpbG9uID0gZXhwb3J0cy5Ub0xpbmVhclNwYWNlID0gZXhwb3J0cy5Ub0dhbW1hU3BhY2UgPSBleHBvcnRzLlNwYWNlID0gZXhwb3J0cy5PcmllbnRhdGlvbiA9IHZvaWQgMDtcbi8qKlxuICogRGVmaW5lcyBwb3RlbnRpYWwgb3JpZW50YXRpb24gZm9yIGJhY2sgZmFjZSBjdWxsaW5nXG4gKiBAcHVibGljXG4gKi9cbnZhciBPcmllbnRhdGlvbjtcbihmdW5jdGlvbiAoT3JpZW50YXRpb24pIHtcbiAgICAvKipcbiAgICAgKiBDbG9ja3dpc2VcbiAgICAgKi9cbiAgICBPcmllbnRhdGlvbltPcmllbnRhdGlvbltcIkNXXCJdID0gMF0gPSBcIkNXXCI7XG4gICAgLyoqIENvdW50ZXIgY2xvY2t3aXNlICovXG4gICAgT3JpZW50YXRpb25bT3JpZW50YXRpb25bXCJDQ1dcIl0gPSAxXSA9IFwiQ0NXXCI7XG59KShPcmllbnRhdGlvbiA9IGV4cG9ydHMuT3JpZW50YXRpb24gfHwgKGV4cG9ydHMuT3JpZW50YXRpb24gPSB7fSkpO1xuLyoqXG4gKiBEZWZpbmVzIHN1cHBvcnRlZCBzcGFjZXNcbiAqIEBwdWJsaWNcbiAqL1xudmFyIFNwYWNlO1xuKGZ1bmN0aW9uIChTcGFjZSkge1xuICAgIC8qKiBMb2NhbCAob2JqZWN0KSBzcGFjZSAqL1xuICAgIFNwYWNlW1NwYWNlW1wiTE9DQUxcIl0gPSAwXSA9IFwiTE9DQUxcIjtcbiAgICAvKiogV29ybGQgc3BhY2UgKi9cbiAgICBTcGFjZVtTcGFjZVtcIldPUkxEXCJdID0gMV0gPSBcIldPUkxEXCI7XG4gICAgLyoqIEJvbmUgc3BhY2UgKi9cbiAgICBTcGFjZVtTcGFjZVtcIkJPTkVcIl0gPSAyXSA9IFwiQk9ORVwiO1xufSkoU3BhY2UgPSBleHBvcnRzLlNwYWNlIHx8IChleHBvcnRzLlNwYWNlID0ge30pKTtcbi8qKlxuICogQ29uc3RhbnQgdXNlZCB0byBjb252ZXJ0IGEgdmFsdWUgdG8gZ2FtbWEgc3BhY2VcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0cy5Ub0dhbW1hU3BhY2UgPSAxIC8gMi4yO1xuLyoqXG4gKiBDb25zdGFudCB1c2VkIHRvIGNvbnZlcnQgYSB2YWx1ZSB0byBsaW5lYXIgc3BhY2VcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0cy5Ub0xpbmVhclNwYWNlID0gMi4yO1xuLyoqXG4gKiBDb25zdGFudCB1c2VkIHRvIGRlZmluZSB0aGUgbWluaW1hbCBudW1iZXIgdmFsdWUgaW4gQmFieWxvbi5qc1xuICogQHB1YmxpY1xuICovXG5leHBvcnRzLkVwc2lsb24gPSAwLjAwMDAwMTtcbi8qKlxuICogQ29uc3RhbnQgdXNlZCB0byBjb252ZXJ0IGZyb20gRXVsZXIgZGVncmVlcyB0byByYWRpYW5zXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydHMuREVHMlJBRCA9IE1hdGguUEkgLyAxODA7XG4vKipcbiAqIENvbnN0YW50IHVzZWQgdG8gY29udmVydCBmcm9tIHJhZGlhbnMgdG8gRXVsZXIgZGVncmVlc1xuICogQHB1YmxpY1xuICovXG5leHBvcnRzLlJBRDJERUcgPSAzNjAgLyAoTWF0aC5QSSAqIDIpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dHlwZXMuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlF1YXRlcm5pb24gPSB2b2lkIDA7XG5jb25zdCBWZWN0b3IzXzEgPSByZXF1aXJlKFwiLi9WZWN0b3IzXCIpO1xuY29uc3QgU2NhbGFyXzEgPSByZXF1aXJlKFwiLi9TY2FsYXJcIik7XG5jb25zdCB0eXBlc18xID0gcmVxdWlyZShcIi4vdHlwZXNcIik7XG4vKipcbiAqIEBwdWJsaWNcbiAqL1xudmFyIFF1YXRlcm5pb247XG4oZnVuY3Rpb24gKFF1YXRlcm5pb24pIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IFF1YXRlcm5pb24gZnJvbSB0aGUgZ2l2ZW4gZmxvYXRzXG4gICAgICogQHBhcmFtIHggLSBkZWZpbmVzIHRoZSBmaXJzdCBjb21wb25lbnQgKDAgYnkgZGVmYXVsdClcbiAgICAgKiBAcGFyYW0geSAtIGRlZmluZXMgdGhlIHNlY29uZCBjb21wb25lbnQgKDAgYnkgZGVmYXVsdClcbiAgICAgKiBAcGFyYW0geiAtIGRlZmluZXMgdGhlIHRoaXJkIGNvbXBvbmVudCAoMCBieSBkZWZhdWx0KVxuICAgICAqIEBwYXJhbSB3IC0gZGVmaW5lcyB0aGUgZm91cnRoIGNvbXBvbmVudCAoMS4wIGJ5IGRlZmF1bHQpXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlKFxuICAgIC8qKiBkZWZpbmVzIHRoZSBmaXJzdCBjb21wb25lbnQgKDAgYnkgZGVmYXVsdCkgKi9cbiAgICB4ID0gMC4wLCBcbiAgICAvKiogZGVmaW5lcyB0aGUgc2Vjb25kIGNvbXBvbmVudCAoMCBieSBkZWZhdWx0KSAqL1xuICAgIHkgPSAwLjAsIFxuICAgIC8qKiBkZWZpbmVzIHRoZSB0aGlyZCBjb21wb25lbnQgKDAgYnkgZGVmYXVsdCkgKi9cbiAgICB6ID0gMC4wLCBcbiAgICAvKiogZGVmaW5lcyB0aGUgZm91cnRoIGNvbXBvbmVudCAoMS4wIGJ5IGRlZmF1bHQpICovXG4gICAgdyA9IDEuMCkge1xuICAgICAgICByZXR1cm4geyB4LCB5LCB6LCB3IH07XG4gICAgfVxuICAgIFF1YXRlcm5pb24uY3JlYXRlID0gY3JlYXRlO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgUXVhdGVybmlvbiBhcyB0aGUgcmVzdWx0IG9mIHRoZSBhZGRpdGlvbiBvZiB0aGUgdHdvIGdpdmVuIHF1YXRlcm5pb25zLlxuICAgICAqIEBwYXJhbSBxMSAtIHRoZSBmaXJzdCBxdWF0ZXJuaW9uXG4gICAgICogQHBhcmFtIHEyIC0gdGhlIHNlY29uZCBxdWF0ZXJuaW9uXG4gICAgICogQHJldHVybnMgdGhlIHJlc3VsdGluZyBxdWF0ZXJuaW9uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYWRkKHExLCBxMikge1xuICAgICAgICByZXR1cm4geyB4OiBxMS54ICsgcTIueCwgeTogcTEueSArIHEyLnksIHo6IHExLnogKyBxMi56LCB3OiBxMS53ICsgcTIudyB9O1xuICAgIH1cbiAgICBRdWF0ZXJuaW9uLmFkZCA9IGFkZDtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHJvdGF0aW9uIGZyb20gdGhlIGdpdmVuIEV1bGVyIGZsb2F0IGFuZ2xlcyAoeSwgeCwgeikgYW5kIHN0b3JlcyBpdCBpbiB0aGUgdGFyZ2V0IHF1YXRlcm5pb25cbiAgICAgKiBAcGFyYW0geWF3IC0gZGVmaW5lcyB0aGUgcm90YXRpb24gYXJvdW5kIFkgYXhpc1xuICAgICAqIEBwYXJhbSBwaXRjaCAtIGRlZmluZXMgdGhlIHJvdGF0aW9uIGFyb3VuZCBYIGF4aXNcbiAgICAgKiBAcGFyYW0gcm9sbCAtIGRlZmluZXMgdGhlIHJvdGF0aW9uIGFyb3VuZCBaIGF4aXNcbiAgICAgKiBAcGFyYW0gcmVzdWx0IC0gZGVmaW5lcyB0aGUgdGFyZ2V0IHF1YXRlcm5pb25cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByb3RhdGlvbllhd1BpdGNoUm9sbCh5YXcsIHBpdGNoLCByb2xsKSB7XG4gICAgICAgIC8vIEltcGxlbWVudGVkIHVuaXR5LWJhc2VkIGNhbGN1bGF0aW9ucyBmcm9tOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNTYwNTU4MTNcbiAgICAgICAgY29uc3QgaGFsZlBpdGNoID0gcGl0Y2ggKiAwLjU7XG4gICAgICAgIGNvbnN0IGhhbGZZYXcgPSB5YXcgKiAwLjU7XG4gICAgICAgIGNvbnN0IGhhbGZSb2xsID0gcm9sbCAqIDAuNTtcbiAgICAgICAgY29uc3QgYzEgPSBNYXRoLmNvcyhoYWxmUGl0Y2gpO1xuICAgICAgICBjb25zdCBjMiA9IE1hdGguY29zKGhhbGZZYXcpO1xuICAgICAgICBjb25zdCBjMyA9IE1hdGguY29zKGhhbGZSb2xsKTtcbiAgICAgICAgY29uc3QgczEgPSBNYXRoLnNpbihoYWxmUGl0Y2gpO1xuICAgICAgICBjb25zdCBzMiA9IE1hdGguc2luKGhhbGZZYXcpO1xuICAgICAgICBjb25zdCBzMyA9IE1hdGguc2luKGhhbGZSb2xsKTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZShjMiAqIHMxICogYzMgKyBzMiAqIGMxICogczMsIHMyICogYzEgKiBjMyAtIGMyICogczEgKiBzMywgYzIgKiBjMSAqIHMzIC0gczIgKiBzMSAqIGMzLCBjMiAqIGMxICogYzMgKyBzMiAqIHMxICogczMpO1xuICAgIH1cbiAgICBRdWF0ZXJuaW9uLnJvdGF0aW9uWWF3UGl0Y2hSb2xsID0gcm90YXRpb25ZYXdQaXRjaFJvbGw7XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHJvdGF0aW9uIHRoYXQgcm90YXRlcyB6IGRlZ3JlZXMgYXJvdW5kIHRoZSB6IGF4aXMsIHggZGVncmVlcyBhcm91bmQgdGhlIHggYXhpcywgYW5kIHkgZGVncmVlcyBhcm91bmQgdGhlIHkgYXhpcy5cbiAgICAgKiBAcGFyYW0geCAtIHRoZSByb3RhdGlvbiBvbiB0aGUgeCBheGlzIGluIGV1bGVyIGRlZ3JlZXNcbiAgICAgKiBAcGFyYW0geSAtIHRoZSByb3RhdGlvbiBvbiB0aGUgeSBheGlzIGluIGV1bGVyIGRlZ3JlZXNcbiAgICAgKiBAcGFyYW0geiAtIHRoZSByb3RhdGlvbiBvbiB0aGUgeiBheGlzIGluIGV1bGVyIGRlZ3JlZXNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBldWxlcih4LCB5LCB6KSB7XG4gICAgICAgIHJldHVybiByb3RhdGlvbllhd1BpdGNoUm9sbCh5ICogdHlwZXNfMS5ERUcyUkFELCB4ICogdHlwZXNfMS5ERUcyUkFELCB6ICogdHlwZXNfMS5ERUcyUkFEKTtcbiAgICB9XG4gICAgUXVhdGVybmlvbi5ldWxlciA9IGV1bGVyO1xuICAgIC8qKlxuICAgICAqIEdldHMgbGVuZ3RoIG9mIGN1cnJlbnQgcXVhdGVybmlvblxuICAgICAqIEByZXR1cm5zIHRoZSBxdWF0ZXJuaW9uIGxlbmd0aCAoZmxvYXQpXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGVuZ3RoKHEpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguc3FydChsZW5ndGhTcXVhcmVkKHEpKTtcbiAgICB9XG4gICAgUXVhdGVybmlvbi5sZW5ndGggPSBsZW5ndGg7XG4gICAgLyoqXG4gICAgICogR2V0cyBsZW5ndGggb2YgY3VycmVudCBxdWF0ZXJuaW9uXG4gICAgICogQHJldHVybnMgdGhlIHF1YXRlcm5pb24gbGVuZ3RoIChmbG9hdClcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsZW5ndGhTcXVhcmVkKHEpIHtcbiAgICAgICAgcmV0dXJuIHEueCAqIHEueCArIHEueSAqIHEueSArIHEueiAqIHEueiArIHEudyAqIHEudztcbiAgICB9XG4gICAgUXVhdGVybmlvbi5sZW5ndGhTcXVhcmVkID0gbGVuZ3RoU3F1YXJlZDtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBkb3QgcHJvZHVjdCAoZmxvYXQpIGJldHdlZW4gdGhlIHF1YXRlcm5pb25zIFwibGVmdFwiIGFuZCBcInJpZ2h0XCJcbiAgICAgKiBAcGFyYW0gbGVmdCAtIGRlZmluZXMgdGhlIGxlZnQgb3BlcmFuZFxuICAgICAqIEBwYXJhbSByaWdodCAtIGRlZmluZXMgdGhlIHJpZ2h0IG9wZXJhbmRcbiAgICAgKiBAcmV0dXJucyB0aGUgZG90IHByb2R1Y3RcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkb3QobGVmdCwgcmlnaHQpIHtcbiAgICAgICAgcmV0dXJuIChsZWZ0LnggKiByaWdodC54ICsgbGVmdC55ICogcmlnaHQueSArIGxlZnQueiAqIHJpZ2h0LnogKyBsZWZ0LncgKiByaWdodC53KTtcbiAgICB9XG4gICAgUXVhdGVybmlvbi5kb3QgPSBkb3Q7XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYW5nbGUgaW4gZGVncmVlcyBiZXR3ZWVuIHR3byByb3RhdGlvbnMgYSBhbmQgYi5cbiAgICAgKiBAcGFyYW0gcXVhdDEgLSBkZWZpbmVzIHRoZSBmaXJzdCBxdWF0ZXJuaW9uXG4gICAgICogQHBhcmFtIHF1YXQyIC0gZGVmaW5lcyB0aGUgc2Vjb25kIHF1YXRlcm5pb25cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhbmdsZShxdWF0MSwgcXVhdDIpIHtcbiAgICAgICAgY29uc3QgZG90VmFsID0gZG90KHF1YXQxLCBxdWF0Mik7XG4gICAgICAgIHJldHVybiBNYXRoLmFjb3MoTWF0aC5taW4oTWF0aC5hYnMoZG90VmFsKSwgMSkpICogMiAqIHR5cGVzXzEuUkFEMkRFRztcbiAgICB9XG4gICAgUXVhdGVybmlvbi5hbmdsZSA9IGFuZ2xlO1xuICAgIC8qKlxuICAgICAqIFRoZSBmcm9tIHF1YXRlcm5pb24gaXMgcm90YXRlZCB0b3dhcmRzIHRvIGJ5IGFuIGFuZ3VsYXIgc3RlcCBvZiBtYXhEZWdyZWVzRGVsdGEuXG4gICAgICogQHBhcmFtIGZyb20gLSBkZWZpbmVzIHRoZSBmaXJzdCBxdWF0ZXJuaW9uXG4gICAgICogQHBhcmFtIHRvIC0gZGVmaW5lcyB0aGUgc2Vjb25kIHF1YXRlcm5pb25cbiAgICAgKiBAcGFyYW0gbWF4RGVncmVlc0RlbHRhIC0gdGhlIGludGVydmFsIHN0ZXBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByb3RhdGVUb3dhcmRzKGZyb20sIHRvLCBtYXhEZWdyZWVzRGVsdGEpIHtcbiAgICAgICAgY29uc3QgbnVtID0gYW5nbGUoZnJvbSwgdG8pO1xuICAgICAgICBpZiAobnVtID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdG87XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdCA9IE1hdGgubWluKDEsIG1heERlZ3JlZXNEZWx0YSAvIG51bSk7XG4gICAgICAgIHJldHVybiBzbGVycChmcm9tLCB0bywgdCk7XG4gICAgfVxuICAgIFF1YXRlcm5pb24ucm90YXRlVG93YXJkcyA9IHJvdGF0ZVRvd2FyZHM7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHJvdGF0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBmb3J3YXJkIGFuZCB1cHdhcmRzIGRpcmVjdGlvbnMuXG4gICAgICogQHBhcmFtIGZvcndhcmQgLSB0aGUgZGlyZWN0aW9uIHRvIGxvb2sgaW5cbiAgICAgKiBAcGFyYW0gdXAgLSB0aGUgdmVjdG9yIHRoYXQgZGVmaW5lcyBpbiB3aGljaCBkaXJlY3Rpb24gdXAgaXNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsb29rUm90YXRpb24oZm9yd2FyZCwgdXAgPSB7IHg6IDAuMCwgeTogMS4wLCB6OiAwLjAgfSkge1xuICAgICAgICBjb25zdCBmb3J3YXJkTmV3ID0gVmVjdG9yM18xLlZlY3RvcjMubm9ybWFsaXplKGZvcndhcmQpO1xuICAgICAgICBjb25zdCByaWdodCA9IFZlY3RvcjNfMS5WZWN0b3IzLm5vcm1hbGl6ZShWZWN0b3IzXzEuVmVjdG9yMy5jcm9zcyh1cCwgZm9yd2FyZE5ldykpO1xuICAgICAgICBjb25zdCB1cE5ldyA9IFZlY3RvcjNfMS5WZWN0b3IzLmNyb3NzKGZvcndhcmROZXcsIHJpZ2h0KTtcbiAgICAgICAgY29uc3QgbTAwID0gcmlnaHQueDtcbiAgICAgICAgY29uc3QgbTAxID0gcmlnaHQueTtcbiAgICAgICAgY29uc3QgbTAyID0gcmlnaHQuejtcbiAgICAgICAgY29uc3QgbTEwID0gdXBOZXcueDtcbiAgICAgICAgY29uc3QgbTExID0gdXBOZXcueTtcbiAgICAgICAgY29uc3QgbTEyID0gdXBOZXcuejtcbiAgICAgICAgY29uc3QgbTIwID0gZm9yd2FyZE5ldy54O1xuICAgICAgICBjb25zdCBtMjEgPSBmb3J3YXJkTmV3Lnk7XG4gICAgICAgIGNvbnN0IG0yMiA9IGZvcndhcmROZXcuejtcbiAgICAgICAgY29uc3QgbnVtOCA9IG0wMCArIG0xMSArIG0yMjtcbiAgICAgICAgY29uc3QgcXVhdGVybmlvbiA9IGNyZWF0ZSgpO1xuICAgICAgICBpZiAobnVtOCA+IDApIHtcbiAgICAgICAgICAgIGxldCBudW0gPSBNYXRoLnNxcnQobnVtOCArIDEpO1xuICAgICAgICAgICAgcXVhdGVybmlvbi53ID0gbnVtICogMC41O1xuICAgICAgICAgICAgbnVtID0gMC41IC8gbnVtO1xuICAgICAgICAgICAgcXVhdGVybmlvbi54ID0gKG0xMiAtIG0yMSkgKiBudW07XG4gICAgICAgICAgICBxdWF0ZXJuaW9uLnkgPSAobTIwIC0gbTAyKSAqIG51bTtcbiAgICAgICAgICAgIHF1YXRlcm5pb24ueiA9IChtMDEgLSBtMTApICogbnVtO1xuICAgICAgICAgICAgcmV0dXJuIHF1YXRlcm5pb247XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG0wMCA+PSBtMTEgJiYgbTAwID49IG0yMikge1xuICAgICAgICAgICAgY29uc3QgbnVtNyA9IE1hdGguc3FydCgxICsgbTAwIC0gbTExIC0gbTIyKTtcbiAgICAgICAgICAgIGNvbnN0IG51bTQgPSAwLjUgLyBudW03O1xuICAgICAgICAgICAgcXVhdGVybmlvbi54ID0gMC41ICogbnVtNztcbiAgICAgICAgICAgIHF1YXRlcm5pb24ueSA9IChtMDEgKyBtMTApICogbnVtNDtcbiAgICAgICAgICAgIHF1YXRlcm5pb24ueiA9IChtMDIgKyBtMjApICogbnVtNDtcbiAgICAgICAgICAgIHF1YXRlcm5pb24udyA9IChtMTIgLSBtMjEpICogbnVtNDtcbiAgICAgICAgICAgIHJldHVybiBxdWF0ZXJuaW9uO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtMTEgPiBtMjIpIHtcbiAgICAgICAgICAgIGNvbnN0IG51bTYgPSBNYXRoLnNxcnQoMSArIG0xMSAtIG0wMCAtIG0yMik7XG4gICAgICAgICAgICBjb25zdCBudW0zID0gMC41IC8gbnVtNjtcbiAgICAgICAgICAgIHF1YXRlcm5pb24ueCA9IChtMTAgKyBtMDEpICogbnVtMztcbiAgICAgICAgICAgIHF1YXRlcm5pb24ueSA9IDAuNSAqIG51bTY7XG4gICAgICAgICAgICBxdWF0ZXJuaW9uLnogPSAobTIxICsgbTEyKSAqIG51bTM7XG4gICAgICAgICAgICBxdWF0ZXJuaW9uLncgPSAobTIwIC0gbTAyKSAqIG51bTM7XG4gICAgICAgICAgICByZXR1cm4gcXVhdGVybmlvbjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBudW01ID0gTWF0aC5zcXJ0KDEgKyBtMjIgLSBtMDAgLSBtMTEpO1xuICAgICAgICBjb25zdCBudW0yID0gMC41IC8gbnVtNTtcbiAgICAgICAgcXVhdGVybmlvbi54ID0gKG0yMCArIG0wMikgKiBudW0yO1xuICAgICAgICBxdWF0ZXJuaW9uLnkgPSAobTIxICsgbTEyKSAqIG51bTI7XG4gICAgICAgIHF1YXRlcm5pb24ueiA9IDAuNSAqIG51bTU7XG4gICAgICAgIHF1YXRlcm5pb24udyA9IChtMDEgLSBtMTApICogbnVtMjtcbiAgICAgICAgcmV0dXJuIHF1YXRlcm5pb247XG4gICAgfVxuICAgIFF1YXRlcm5pb24ubG9va1JvdGF0aW9uID0gbG9va1JvdGF0aW9uO1xuICAgIC8qKlxuICAgICAqIE5vcm1hbGl6ZSBpbiBwbGFjZSB0aGUgY3VycmVudCBxdWF0ZXJuaW9uXG4gICAgICogQHJldHVybnMgdGhlIGN1cnJlbnQgdXBkYXRlZCBxdWF0ZXJuaW9uXG4gICAgICovXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplKHEpIHtcbiAgICAgICAgY29uc3QgcUxlbmd0aCA9IDEuMCAvIGxlbmd0aChxKTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZShxLnggKiBxTGVuZ3RoLCBxLnkgKiBxTGVuZ3RoLCBxLnogKiBxTGVuZ3RoLCBxLncgKiBxTGVuZ3RoKTtcbiAgICB9XG4gICAgUXVhdGVybmlvbi5ub3JtYWxpemUgPSBub3JtYWxpemU7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHJvdGF0aW9uIHdoaWNoIHJvdGF0ZXMgZnJvbSBmcm9tRGlyZWN0aW9uIHRvIHRvRGlyZWN0aW9uLlxuICAgICAqIEBwYXJhbSBmcm9tIC0gZGVmaW5lcyB0aGUgZmlyc3QgZGlyZWN0aW9uIFZlY3RvclxuICAgICAqIEBwYXJhbSB0byAtIGRlZmluZXMgdGhlIHRhcmdldCBkaXJlY3Rpb24gVmVjdG9yXG4gICAgICovXG4gICAgZnVuY3Rpb24gZnJvbVRvUm90YXRpb24oZnJvbSwgdG8sIHVwID0gVmVjdG9yM18xLlZlY3RvcjMuVXAoKSkge1xuICAgICAgICAvLyBVbml0eS1iYXNlZCBjYWxjdWxhdGlvbnMgaW1wbGVtZW50ZWQgZnJvbSBodHRwczovL2ZvcnVtLnVuaXR5LmNvbS90aHJlYWRzL3F1YXRlcm5pb24tbG9va3JvdGF0aW9uLWFyb3VuZC1hbi1heGlzLjYwODQ3MC8jcG9zdC00MDY5ODg4XG4gICAgICAgIGNvbnN0IHYwID0gVmVjdG9yM18xLlZlY3RvcjMubm9ybWFsaXplKGZyb20pO1xuICAgICAgICBjb25zdCB2MSA9IFZlY3RvcjNfMS5WZWN0b3IzLm5vcm1hbGl6ZSh0byk7XG4gICAgICAgIGNvbnN0IGEgPSBWZWN0b3IzXzEuVmVjdG9yMy5jcm9zcyh2MCwgdjEpO1xuICAgICAgICBjb25zdCB3ID0gTWF0aC5zcXJ0KFZlY3RvcjNfMS5WZWN0b3IzLmxlbmd0aFNxdWFyZWQodjApICogVmVjdG9yM18xLlZlY3RvcjMubGVuZ3RoU3F1YXJlZCh2MSkpICtcbiAgICAgICAgICAgIFZlY3RvcjNfMS5WZWN0b3IzLmRvdCh2MCwgdjEpO1xuICAgICAgICBpZiAoVmVjdG9yM18xLlZlY3RvcjMubGVuZ3RoU3F1YXJlZChhKSA8IDAuMDAwMSkge1xuICAgICAgICAgICAgLy8gdGhlIHZlY3RvcnMgYXJlIHBhcmFsbGVsLCBjaGVjayB3IHRvIGZpbmQgZGlyZWN0aW9uXG4gICAgICAgICAgICAvLyBpZiB3IGlzIDAgdGhlbiB2YWx1ZXMgYXJlIG9wcG9zaXRlLCBhbmQgd2Ugc291bGQgcm90YXRlIDE4MCBkZWdyZWVzIGFyb3VuZCB0aGUgc3VwcGxpZWQgYXhpc1xuICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHRoZSB2ZWN0b3JzIGluIHRoZSBzYW1lIGRpcmVjdGlvbiBhbmQgbm8gcm90YXRpb24gc2hvdWxkIG9jY3VyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5hYnModykgPCAwLjAwMDFcbiAgICAgICAgICAgICAgICA/IG5vcm1hbGl6ZShjcmVhdGUodXAueCwgdXAueSwgdXAueiwgMCkpXG4gICAgICAgICAgICAgICAgOiBJZGVudGl0eSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZShjcmVhdGUoYS54LCBhLnksIGEueiwgdykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIFF1YXRlcm5pb24uZnJvbVRvUm90YXRpb24gPSBmcm9tVG9Sb3RhdGlvbjtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGlkZW50aXR5IHF1YXRlcm5pb25cbiAgICAgKiBAcmV0dXJucyAtIHRoZSBpZGVudGl0eSBxdWF0ZXJuaW9uXG4gICAgICovXG4gICAgZnVuY3Rpb24gSWRlbnRpdHkoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGUoMC4wLCAwLjAsIDAuMCwgMS4wKTtcbiAgICB9XG4gICAgUXVhdGVybmlvbi5JZGVudGl0eSA9IElkZW50aXR5O1xuICAgIC8qKlxuICAgICAqIEdldHMgb3Igc2V0cyB0aGUgZXVsZXIgYW5nbGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIHJvdGF0aW9uLlxuICAgICAqIEltcGxlbWVudGVkIHVuaXR5LWJhc2VkIGNhbGN1bGF0aW9ucyBmcm9tOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNTYwNTU4MTNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBldWxlckFuZ2xlcyhxKSB7XG4gICAgICAgIGNvbnN0IG91dCA9IFZlY3RvcjNfMS5WZWN0b3IzLmNyZWF0ZSgpO1xuICAgICAgICAvLyBpZiB0aGUgaW5wdXQgcXVhdGVybmlvbiBpcyBub3JtYWxpemVkLCB0aGlzIGlzIGV4YWN0bHkgb25lLiBPdGhlcndpc2UsIHRoaXMgYWN0cyBhcyBhIGNvcnJlY3Rpb24gZmFjdG9yIGZvciB0aGUgcXVhdGVybmlvbidzIG5vdC1ub3JtYWxpemVkbmVzc1xuICAgICAgICBjb25zdCB1bml0ID0gcS54ICogcS54ICsgcS55ICogcS55ICsgcS56ICogcS56ICsgcS53ICogcS53O1xuICAgICAgICAvLyBxIHdpbGwgaGF2ZSBhIG1hZ25pdHVkZSBvZiAwLjUgb3IgZ3JlYXRlciBpZiBhbmQgb25seSBpZiBxIGlzIGEgc2luZ3VsYXJpdHkgY2FzZVxuICAgICAgICBjb25zdCB0ZXN0ID0gcS54ICogcS53IC0gcS55ICogcS56O1xuICAgICAgICBpZiAodGVzdCA+IDAuNDk5NSAqIHVuaXQpIHtcbiAgICAgICAgICAgIC8vIHNpbmd1bGFyaXR5IGF0IG5vcnRoIHBvbGVcbiAgICAgICAgICAgIG91dC54ID0gTWF0aC5QSSAvIDI7XG4gICAgICAgICAgICBvdXQueSA9IDIgKiBNYXRoLmF0YW4yKHEueSwgcS54KTtcbiAgICAgICAgICAgIG91dC56ID0gMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0ZXN0IDwgLTAuNDk5NSAqIHVuaXQpIHtcbiAgICAgICAgICAgIC8vIHNpbmd1bGFyaXR5IGF0IHNvdXRoIHBvbGVcbiAgICAgICAgICAgIG91dC54ID0gLU1hdGguUEkgLyAyO1xuICAgICAgICAgICAgb3V0LnkgPSAtMiAqIE1hdGguYXRhbjIocS55LCBxLngpO1xuICAgICAgICAgICAgb3V0LnogPSAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gbm8gc2luZ3VsYXJpdHkgLSBxIGlzIHRoZSBtYWpvcml0eSBvZiBjYXNlc1xuICAgICAgICAgICAgb3V0LnggPSBNYXRoLmFzaW4oMiAqIChxLncgKiBxLnggLSBxLnkgKiBxLnopKTtcbiAgICAgICAgICAgIG91dC55ID0gTWF0aC5hdGFuMigyICogcS53ICogcS55ICsgMiAqIHEueiAqIHEueCwgMSAtIDIgKiAocS54ICogcS54ICsgcS55ICogcS55KSk7XG4gICAgICAgICAgICBvdXQueiA9IE1hdGguYXRhbjIoMiAqIHEudyAqIHEueiArIDIgKiBxLnggKiBxLnksIDEgLSAyICogKHEueiAqIHEueiArIHEueCAqIHEueCkpO1xuICAgICAgICB9XG4gICAgICAgIG91dC54ICo9IHR5cGVzXzEuUkFEMkRFRztcbiAgICAgICAgb3V0LnkgKj0gdHlwZXNfMS5SQUQyREVHO1xuICAgICAgICBvdXQueiAqPSB0eXBlc18xLlJBRDJERUc7XG4gICAgICAgIC8vIGVuc3VyZSB0aGUgZGVncmVlIHZhbHVlcyBhcmUgYmV0d2VlbiAwIGFuZCAzNjBcbiAgICAgICAgb3V0LnggPSBTY2FsYXJfMS5TY2FsYXIucmVwZWF0KG91dC54LCAzNjApO1xuICAgICAgICBvdXQueSA9IFNjYWxhcl8xLlNjYWxhci5yZXBlYXQob3V0LnksIDM2MCk7XG4gICAgICAgIG91dC56ID0gU2NhbGFyXzEuU2NhbGFyLnJlcGVhdChvdXQueiwgMzYwKTtcbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG4gICAgUXVhdGVybmlvbi5ldWxlckFuZ2xlcyA9IGV1bGVyQW5nbGVzO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcm90YXRpb24gZnJvbSB0aGUgZ2l2ZW4gRXVsZXIgZmxvYXQgYW5nbGVzICh5LCB4LCB6KSBhbmQgc3RvcmVzIGl0IGluIHRoZSB0YXJnZXQgcXVhdGVybmlvblxuICAgICAqIEBwYXJhbSB5YXcgLSBkZWZpbmVzIHRoZSByb3RhdGlvbiBhcm91bmQgWSBheGlzXG4gICAgICogQHBhcmFtIHBpdGNoIC0gZGVmaW5lcyB0aGUgcm90YXRpb24gYXJvdW5kIFggYXhpc1xuICAgICAqIEBwYXJhbSByb2xsIC0gZGVmaW5lcyB0aGUgcm90YXRpb24gYXJvdW5kIFogYXhpc1xuICAgICAqIEBwYXJhbSByZXN1bHQgLSBkZWZpbmVzIHRoZSB0YXJnZXQgcXVhdGVybmlvblxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJvdGF0aW9uWWF3UGl0Y2hSb2xsVG9SZWYoeWF3LCBwaXRjaCwgcm9sbCwgcmVzdWx0KSB7XG4gICAgICAgIC8vIEltcGxlbWVudGVkIHVuaXR5LWJhc2VkIGNhbGN1bGF0aW9ucyBmcm9tOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNTYwNTU4MTNcbiAgICAgICAgY29uc3QgaGFsZlBpdGNoID0gcGl0Y2ggKiAwLjU7XG4gICAgICAgIGNvbnN0IGhhbGZZYXcgPSB5YXcgKiAwLjU7XG4gICAgICAgIGNvbnN0IGhhbGZSb2xsID0gcm9sbCAqIDAuNTtcbiAgICAgICAgY29uc3QgYzEgPSBNYXRoLmNvcyhoYWxmUGl0Y2gpO1xuICAgICAgICBjb25zdCBjMiA9IE1hdGguY29zKGhhbGZZYXcpO1xuICAgICAgICBjb25zdCBjMyA9IE1hdGguY29zKGhhbGZSb2xsKTtcbiAgICAgICAgY29uc3QgczEgPSBNYXRoLnNpbihoYWxmUGl0Y2gpO1xuICAgICAgICBjb25zdCBzMiA9IE1hdGguc2luKGhhbGZZYXcpO1xuICAgICAgICBjb25zdCBzMyA9IE1hdGguc2luKGhhbGZSb2xsKTtcbiAgICAgICAgcmVzdWx0LnggPSBjMiAqIHMxICogYzMgKyBzMiAqIGMxICogczM7XG4gICAgICAgIHJlc3VsdC55ID0gczIgKiBjMSAqIGMzIC0gYzIgKiBzMSAqIHMzO1xuICAgICAgICByZXN1bHQueiA9IGMyICogYzEgKiBzMyAtIHMyICogczEgKiBjMztcbiAgICAgICAgcmVzdWx0LncgPSBjMiAqIGMxICogYzMgKyBzMiAqIHMxICogczM7XG4gICAgfVxuICAgIFF1YXRlcm5pb24ucm90YXRpb25ZYXdQaXRjaFJvbGxUb1JlZiA9IHJvdGF0aW9uWWF3UGl0Y2hSb2xsVG9SZWY7XG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgZ2l2ZW4gcXVhdGVybmlvbiB3aXRoIHRoZSBnaXZlbiByb3RhdGlvbiBtYXRyaXggdmFsdWVzXG4gICAgICogQHBhcmFtIG1hdHJpeCAtIGRlZmluZXMgdGhlIHNvdXJjZSBtYXRyaXhcbiAgICAgKiBAcGFyYW0gcmVzdWx0IC0gZGVmaW5lcyB0aGUgdGFyZ2V0IHF1YXRlcm5pb25cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmcm9tUm90YXRpb25NYXRyaXhUb1JlZihtYXRyaXgsIHJlc3VsdCkge1xuICAgICAgICBjb25zdCBkYXRhID0gbWF0cml4Ll9tO1xuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZTpvbmUtdmFyaWFibGUtcGVyLWRlY2xhcmF0aW9uXG4gICAgICAgIGNvbnN0IG0xMSA9IGRhdGFbMF0sIG0xMiA9IGRhdGFbNF0sIG0xMyA9IGRhdGFbOF07XG4gICAgICAgIGNvbnN0IG0yMSA9IGRhdGFbMV0sIG0yMiA9IGRhdGFbNV0sIG0yMyA9IGRhdGFbOV07XG4gICAgICAgIGNvbnN0IG0zMSA9IGRhdGFbMl0sIG0zMiA9IGRhdGFbNl0sIG0zMyA9IGRhdGFbMTBdO1xuICAgICAgICAvLyB0c2xpbnQ6ZW5hYmxlOm9uZS12YXJpYWJsZS1wZXItZGVjbGFyYXRpb25cbiAgICAgICAgY29uc3QgdHJhY2UgPSBtMTEgKyBtMjIgKyBtMzM7XG4gICAgICAgIGxldCBzO1xuICAgICAgICBpZiAodHJhY2UgPiAwKSB7XG4gICAgICAgICAgICBzID0gMC41IC8gTWF0aC5zcXJ0KHRyYWNlICsgMS4wKTtcbiAgICAgICAgICAgIHJlc3VsdC53ID0gMC4yNSAvIHM7XG4gICAgICAgICAgICByZXN1bHQueCA9IChtMzIgLSBtMjMpICogcztcbiAgICAgICAgICAgIHJlc3VsdC55ID0gKG0xMyAtIG0zMSkgKiBzO1xuICAgICAgICAgICAgcmVzdWx0LnogPSAobTIxIC0gbTEyKSAqIHM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobTExID4gbTIyICYmIG0xMSA+IG0zMykge1xuICAgICAgICAgICAgcyA9IDIuMCAqIE1hdGguc3FydCgxLjAgKyBtMTEgLSBtMjIgLSBtMzMpO1xuICAgICAgICAgICAgcmVzdWx0LncgPSAobTMyIC0gbTIzKSAvIHM7XG4gICAgICAgICAgICByZXN1bHQueCA9IDAuMjUgKiBzO1xuICAgICAgICAgICAgcmVzdWx0LnkgPSAobTEyICsgbTIxKSAvIHM7XG4gICAgICAgICAgICByZXN1bHQueiA9IChtMTMgKyBtMzEpIC8gcztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtMjIgPiBtMzMpIHtcbiAgICAgICAgICAgIHMgPSAyLjAgKiBNYXRoLnNxcnQoMS4wICsgbTIyIC0gbTExIC0gbTMzKTtcbiAgICAgICAgICAgIHJlc3VsdC53ID0gKG0xMyAtIG0zMSkgLyBzO1xuICAgICAgICAgICAgcmVzdWx0LnggPSAobTEyICsgbTIxKSAvIHM7XG4gICAgICAgICAgICByZXN1bHQueSA9IDAuMjUgKiBzO1xuICAgICAgICAgICAgcmVzdWx0LnogPSAobTIzICsgbTMyKSAvIHM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzID0gMi4wICogTWF0aC5zcXJ0KDEuMCArIG0zMyAtIG0xMSAtIG0yMik7XG4gICAgICAgICAgICByZXN1bHQudyA9IChtMjEgLSBtMTIpIC8gcztcbiAgICAgICAgICAgIHJlc3VsdC54ID0gKG0xMyArIG0zMSkgLyBzO1xuICAgICAgICAgICAgcmVzdWx0LnkgPSAobTIzICsgbTMyKSAvIHM7XG4gICAgICAgICAgICByZXN1bHQueiA9IDAuMjUgKiBzO1xuICAgICAgICB9XG4gICAgfVxuICAgIFF1YXRlcm5pb24uZnJvbVJvdGF0aW9uTWF0cml4VG9SZWYgPSBmcm9tUm90YXRpb25NYXRyaXhUb1JlZjtcbiAgICAvKipcbiAgICAgKiBJbnRlcnBvbGF0ZXMgYmV0d2VlbiB0d28gcXVhdGVybmlvbnNcbiAgICAgKiBAcGFyYW0gbGVmdCAtIGRlZmluZXMgZmlyc3QgcXVhdGVybmlvblxuICAgICAqIEBwYXJhbSByaWdodCAtIGRlZmluZXMgc2Vjb25kIHF1YXRlcm5pb25cbiAgICAgKiBAcGFyYW0gYW1vdW50IC0gZGVmaW5lcyB0aGUgZ3JhZGllbnQgdG8gdXNlXG4gICAgICogQHJldHVybnMgdGhlIG5ldyBpbnRlcnBvbGF0ZWQgcXVhdGVybmlvblxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNsZXJwKGxlZnQsIHJpZ2h0LCBhbW91bnQpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gUXVhdGVybmlvbi5JZGVudGl0eSgpO1xuICAgICAgICBRdWF0ZXJuaW9uLnNsZXJwVG9SZWYobGVmdCwgcmlnaHQsIGFtb3VudCwgcmVzdWx0KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgUXVhdGVybmlvbi5zbGVycCA9IHNsZXJwO1xuICAgIC8qKlxuICAgICAqIEludGVycG9sYXRlcyBiZXR3ZWVuIHR3byBxdWF0ZXJuaW9ucyBhbmQgc3RvcmVzIGl0IGludG8gYSB0YXJnZXQgcXVhdGVybmlvblxuICAgICAqIEBwYXJhbSBsZWZ0IC0gZGVmaW5lcyBmaXJzdCBxdWF0ZXJuaW9uXG4gICAgICogQHBhcmFtIHJpZ2h0IC0gZGVmaW5lcyBzZWNvbmQgcXVhdGVybmlvblxuICAgICAqIEBwYXJhbSBhbW91bnQgLSBkZWZpbmVzIHRoZSBncmFkaWVudCB0byB1c2VcbiAgICAgKiBAcGFyYW0gcmVzdWx0IC0gZGVmaW5lcyB0aGUgdGFyZ2V0IHF1YXRlcm5pb25cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzbGVycFRvUmVmKGxlZnQsIHJpZ2h0LCBhbW91bnQsIHJlc3VsdCkge1xuICAgICAgICBsZXQgbnVtMjtcbiAgICAgICAgbGV0IG51bTM7XG4gICAgICAgIGxldCBudW00ID0gbGVmdC54ICogcmlnaHQueCArIGxlZnQueSAqIHJpZ2h0LnkgKyBsZWZ0LnogKiByaWdodC56ICsgbGVmdC53ICogcmlnaHQudztcbiAgICAgICAgbGV0IGZsYWcgPSBmYWxzZTtcbiAgICAgICAgaWYgKG51bTQgPCAwKSB7XG4gICAgICAgICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgICAgICAgIG51bTQgPSAtbnVtNDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobnVtNCA+IDAuOTk5OTk5KSB7XG4gICAgICAgICAgICBudW0zID0gMSAtIGFtb3VudDtcbiAgICAgICAgICAgIG51bTIgPSBmbGFnID8gLWFtb3VudCA6IGFtb3VudDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG51bTUgPSBNYXRoLmFjb3MobnVtNCk7XG4gICAgICAgICAgICBjb25zdCBudW02ID0gMS4wIC8gTWF0aC5zaW4obnVtNSk7XG4gICAgICAgICAgICBudW0zID0gTWF0aC5zaW4oKDEuMCAtIGFtb3VudCkgKiBudW01KSAqIG51bTY7XG4gICAgICAgICAgICBudW0yID0gZmxhZ1xuICAgICAgICAgICAgICAgID8gLU1hdGguc2luKGFtb3VudCAqIG51bTUpICogbnVtNlxuICAgICAgICAgICAgICAgIDogTWF0aC5zaW4oYW1vdW50ICogbnVtNSkgKiBudW02O1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdC54ID0gbnVtMyAqIGxlZnQueCArIG51bTIgKiByaWdodC54O1xuICAgICAgICByZXN1bHQueSA9IG51bTMgKiBsZWZ0LnkgKyBudW0yICogcmlnaHQueTtcbiAgICAgICAgcmVzdWx0LnogPSBudW0zICogbGVmdC56ICsgbnVtMiAqIHJpZ2h0Lno7XG4gICAgICAgIHJlc3VsdC53ID0gbnVtMyAqIGxlZnQudyArIG51bTIgKiByaWdodC53O1xuICAgIH1cbiAgICBRdWF0ZXJuaW9uLnNsZXJwVG9SZWYgPSBzbGVycFRvUmVmO1xuICAgIC8qKlxuICAgICAqIE11bHRpcGxpZXMgdHdvIHF1YXRlcm5pb25zXG4gICAgICogQHBhcmFtIHNlbGYgLSBkZWZpbmVzIHRoZSBmaXJzdCBvcGVyYW5kXG4gICAgICogQHBhcmFtIHExIC0gZGVmaW5lcyB0aGUgc2Vjb25kIG9wZXJhbmRcbiAgICAgKiBAcmV0dXJucyBhIG5ldyBxdWF0ZXJuaW9uIHNldCBhcyB0aGUgbXVsdGlwbGljYXRpb24gcmVzdWx0IG9mIHRoZSBzZWxmIG9uZSB3aXRoIHRoZSBnaXZlbiBvbmUgXCJxMVwiXG4gICAgICovXG4gICAgZnVuY3Rpb24gbXVsdGlwbHkoc2VsZiwgcTEpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY3JlYXRlKDAsIDAsIDAsIDEuMCk7XG4gICAgICAgIG11bHRpcGx5VG9SZWYoc2VsZiwgcTEsIHJlc3VsdCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIFF1YXRlcm5pb24ubXVsdGlwbHkgPSBtdWx0aXBseTtcbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBnaXZlbiBcInJlc3VsdFwiIGFzIHRoZSB0aGUgbXVsdGlwbGljYXRpb24gcmVzdWx0IG9mIHRoZSBzZWxmIG9uZSB3aXRoIHRoZSBnaXZlbiBvbmUgXCJxMVwiXG4gICAgICogQHBhcmFtIHNlbGYgLSBkZWZpbmVzIHRoZSBmaXJzdCBvcGVyYW5kXG4gICAgICogQHBhcmFtIHExIC0gZGVmaW5lcyB0aGUgc2Vjb25kIG9wZXJhbmRcbiAgICAgKiBAcGFyYW0gcmVzdWx0IC0gZGVmaW5lcyB0aGUgdGFyZ2V0IHF1YXRlcm5pb25cbiAgICAgKiBAcmV0dXJucyB0aGUgY3VycmVudCBxdWF0ZXJuaW9uXG4gICAgICovXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlUb1JlZihzZWxmLCBxMSwgcmVzdWx0KSB7XG4gICAgICAgIHJlc3VsdC54ID0gc2VsZi54ICogcTEudyArIHNlbGYueSAqIHExLnogLSBzZWxmLnogKiBxMS55ICsgc2VsZi53ICogcTEueDtcbiAgICAgICAgcmVzdWx0LnkgPSAtc2VsZi54ICogcTEueiArIHNlbGYueSAqIHExLncgKyBzZWxmLnogKiBxMS54ICsgc2VsZi53ICogcTEueTtcbiAgICAgICAgcmVzdWx0LnogPSBzZWxmLnggKiBxMS55IC0gc2VsZi55ICogcTEueCArIHNlbGYueiAqIHExLncgKyBzZWxmLncgKiBxMS56O1xuICAgICAgICByZXN1bHQudyA9IC1zZWxmLnggKiBxMS54IC0gc2VsZi55ICogcTEueSAtIHNlbGYueiAqIHExLnogKyBzZWxmLncgKiBxMS53O1xuICAgIH1cbiAgICBRdWF0ZXJuaW9uLm11bHRpcGx5VG9SZWYgPSBtdWx0aXBseVRvUmVmO1xuICAgIGZ1bmN0aW9uIGFuZ2xlQXhpcyhkZWdyZXNzLCBheGlzKSB7XG4gICAgICAgIGlmIChWZWN0b3IzXzEuVmVjdG9yMy5sZW5ndGhTcXVhcmVkKGF4aXMpID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gUXVhdGVybmlvbi5JZGVudGl0eSgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IElkZW50aXR5KCk7XG4gICAgICAgIGxldCByYWRpYW5zID0gZGVncmVzcyAqIHR5cGVzXzEuREVHMlJBRDtcbiAgICAgICAgcmFkaWFucyAqPSAwLjU7XG4gICAgICAgIGNvbnN0IGEyID0gVmVjdG9yM18xLlZlY3RvcjMubm9ybWFsaXplKGF4aXMpO1xuICAgICAgICBWZWN0b3IzXzEuVmVjdG9yMy5zY2FsZVRvUmVmKGEyLCBNYXRoLnNpbihyYWRpYW5zKSwgYTIpO1xuICAgICAgICByZXN1bHQueCA9IGEyLng7XG4gICAgICAgIHJlc3VsdC55ID0gYTIueTtcbiAgICAgICAgcmVzdWx0LnogPSBhMi56O1xuICAgICAgICByZXN1bHQudyA9IE1hdGguY29zKHJhZGlhbnMpO1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplKHJlc3VsdCk7XG4gICAgfVxuICAgIFF1YXRlcm5pb24uYW5nbGVBeGlzID0gYW5nbGVBeGlzO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSB6ZXJvIGZpbGxlZCBxdWF0ZXJuaW9uXG4gICAgICovXG4gICAgZnVuY3Rpb24gWmVybygpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZSgwLjAsIDAuMCwgMC4wLCAwLjApO1xuICAgIH1cbiAgICBRdWF0ZXJuaW9uLlplcm8gPSBaZXJvO1xufSkoUXVhdGVybmlvbiA9IGV4cG9ydHMuUXVhdGVybmlvbiB8fCAoZXhwb3J0cy5RdWF0ZXJuaW9uID0ge30pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVF1YXRlcm5pb24uanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19jcmVhdGVCaW5kaW5nID0gKHRoaXMgJiYgdGhpcy5fX2NyZWF0ZUJpbmRpbmcpIHx8IChPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfSk7XG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgb1trMl0gPSBtW2tdO1xufSkpO1xudmFyIF9fZXhwb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19leHBvcnRTdGFyKSB8fCBmdW5jdGlvbihtLCBleHBvcnRzKSB7XG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChleHBvcnRzLCBwKSkgX19jcmVhdGVCaW5kaW5nKGV4cG9ydHMsIG0sIHApO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9RdWF0ZXJuaW9uXCIpLCBleHBvcnRzKTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9WZWN0b3IzXCIpLCBleHBvcnRzKTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi90eXBlc1wiKSwgZXhwb3J0cyk7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vaW5kZXhcIiksIGV4cG9ydHMpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbm1vZHVsZS5leHBvcnRzID0gYXNQcm9taXNlO1xyXG5cclxuLyoqXHJcbiAqIENhbGxiYWNrIGFzIHVzZWQgYnkge0BsaW5rIHV0aWwuYXNQcm9taXNlfS5cclxuICogQHR5cGVkZWYgYXNQcm9taXNlQ2FsbGJhY2tcclxuICogQHR5cGUge2Z1bmN0aW9ufVxyXG4gKiBAcGFyYW0ge0Vycm9yfG51bGx9IGVycm9yIEVycm9yLCBpZiBhbnlcclxuICogQHBhcmFtIHsuLi4qfSBwYXJhbXMgQWRkaXRpb25hbCBhcmd1bWVudHNcclxuICogQHJldHVybnMge3VuZGVmaW5lZH1cclxuICovXHJcblxyXG4vKipcclxuICogUmV0dXJucyBhIHByb21pc2UgZnJvbSBhIG5vZGUtc3R5bGUgY2FsbGJhY2sgZnVuY3Rpb24uXHJcbiAqIEBtZW1iZXJvZiB1dGlsXHJcbiAqIEBwYXJhbSB7YXNQcm9taXNlQ2FsbGJhY2t9IGZuIEZ1bmN0aW9uIHRvIGNhbGxcclxuICogQHBhcmFtIHsqfSBjdHggRnVuY3Rpb24gY29udGV4dFxyXG4gKiBAcGFyYW0gey4uLip9IHBhcmFtcyBGdW5jdGlvbiBhcmd1bWVudHNcclxuICogQHJldHVybnMge1Byb21pc2U8Kj59IFByb21pc2lmaWVkIGZ1bmN0aW9uXHJcbiAqL1xyXG5mdW5jdGlvbiBhc1Byb21pc2UoZm4sIGN0eC8qLCB2YXJhcmdzICovKSB7XHJcbiAgICB2YXIgcGFyYW1zICA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSksXHJcbiAgICAgICAgb2Zmc2V0ICA9IDAsXHJcbiAgICAgICAgaW5kZXggICA9IDIsXHJcbiAgICAgICAgcGVuZGluZyA9IHRydWU7XHJcbiAgICB3aGlsZSAoaW5kZXggPCBhcmd1bWVudHMubGVuZ3RoKVxyXG4gICAgICAgIHBhcmFtc1tvZmZzZXQrK10gPSBhcmd1bWVudHNbaW5kZXgrK107XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gZXhlY3V0b3IocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgcGFyYW1zW29mZnNldF0gPSBmdW5jdGlvbiBjYWxsYmFjayhlcnIvKiwgdmFyYXJncyAqLykge1xyXG4gICAgICAgICAgICBpZiAocGVuZGluZykge1xyXG4gICAgICAgICAgICAgICAgcGVuZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycilcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBwYXJhbXMgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChvZmZzZXQgPCBwYXJhbXMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbb2Zmc2V0KytdID0gYXJndW1lbnRzW29mZnNldF07XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZS5hcHBseShudWxsLCBwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBmbi5hcHBseShjdHggfHwgbnVsbCwgcGFyYW1zKTtcclxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgaWYgKHBlbmRpbmcpIHtcclxuICAgICAgICAgICAgICAgIHBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG4vKipcclxuICogQSBtaW5pbWFsIGJhc2U2NCBpbXBsZW1lbnRhdGlvbiBmb3IgbnVtYmVyIGFycmF5cy5cclxuICogQG1lbWJlcm9mIHV0aWxcclxuICogQG5hbWVzcGFjZVxyXG4gKi9cclxudmFyIGJhc2U2NCA9IGV4cG9ydHM7XHJcblxyXG4vKipcclxuICogQ2FsY3VsYXRlcyB0aGUgYnl0ZSBsZW5ndGggb2YgYSBiYXNlNjQgZW5jb2RlZCBzdHJpbmcuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgQmFzZTY0IGVuY29kZWQgc3RyaW5nXHJcbiAqIEByZXR1cm5zIHtudW1iZXJ9IEJ5dGUgbGVuZ3RoXHJcbiAqL1xyXG5iYXNlNjQubGVuZ3RoID0gZnVuY3Rpb24gbGVuZ3RoKHN0cmluZykge1xyXG4gICAgdmFyIHAgPSBzdHJpbmcubGVuZ3RoO1xyXG4gICAgaWYgKCFwKVxyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgdmFyIG4gPSAwO1xyXG4gICAgd2hpbGUgKC0tcCAlIDQgPiAxICYmIHN0cmluZy5jaGFyQXQocCkgPT09IFwiPVwiKVxyXG4gICAgICAgICsrbjtcclxuICAgIHJldHVybiBNYXRoLmNlaWwoc3RyaW5nLmxlbmd0aCAqIDMpIC8gNCAtIG47XHJcbn07XHJcblxyXG4vLyBCYXNlNjQgZW5jb2RpbmcgdGFibGVcclxudmFyIGI2NCA9IG5ldyBBcnJheSg2NCk7XHJcblxyXG4vLyBCYXNlNjQgZGVjb2RpbmcgdGFibGVcclxudmFyIHM2NCA9IG5ldyBBcnJheSgxMjMpO1xyXG5cclxuLy8gNjUuLjkwLCA5Ny4uMTIyLCA0OC4uNTcsIDQzLCA0N1xyXG5mb3IgKHZhciBpID0gMDsgaSA8IDY0OylcclxuICAgIHM2NFtiNjRbaV0gPSBpIDwgMjYgPyBpICsgNjUgOiBpIDwgNTIgPyBpICsgNzEgOiBpIDwgNjIgPyBpIC0gNCA6IGkgLSA1OSB8IDQzXSA9IGkrKztcclxuXHJcbi8qKlxyXG4gKiBFbmNvZGVzIGEgYnVmZmVyIHRvIGEgYmFzZTY0IGVuY29kZWQgc3RyaW5nLlxyXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ1ZmZlciBTb3VyY2UgYnVmZmVyXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBTb3VyY2Ugc3RhcnRcclxuICogQHBhcmFtIHtudW1iZXJ9IGVuZCBTb3VyY2UgZW5kXHJcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEJhc2U2NCBlbmNvZGVkIHN0cmluZ1xyXG4gKi9cclxuYmFzZTY0LmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShidWZmZXIsIHN0YXJ0LCBlbmQpIHtcclxuICAgIHZhciBwYXJ0cyA9IG51bGwsXHJcbiAgICAgICAgY2h1bmsgPSBbXTtcclxuICAgIHZhciBpID0gMCwgLy8gb3V0cHV0IGluZGV4XHJcbiAgICAgICAgaiA9IDAsIC8vIGdvdG8gaW5kZXhcclxuICAgICAgICB0OyAgICAgLy8gdGVtcG9yYXJ5XHJcbiAgICB3aGlsZSAoc3RhcnQgPCBlbmQpIHtcclxuICAgICAgICB2YXIgYiA9IGJ1ZmZlcltzdGFydCsrXTtcclxuICAgICAgICBzd2l0Y2ggKGopIHtcclxuICAgICAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgICAgICAgY2h1bmtbaSsrXSA9IGI2NFtiID4+IDJdO1xyXG4gICAgICAgICAgICAgICAgdCA9IChiICYgMykgPDwgNDtcclxuICAgICAgICAgICAgICAgIGogPSAxO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICAgIGNodW5rW2krK10gPSBiNjRbdCB8IGIgPj4gNF07XHJcbiAgICAgICAgICAgICAgICB0ID0gKGIgJiAxNSkgPDwgMjtcclxuICAgICAgICAgICAgICAgIGogPSAyO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICAgIGNodW5rW2krK10gPSBiNjRbdCB8IGIgPj4gNl07XHJcbiAgICAgICAgICAgICAgICBjaHVua1tpKytdID0gYjY0W2IgJiA2M107XHJcbiAgICAgICAgICAgICAgICBqID0gMDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaSA+IDgxOTEpIHtcclxuICAgICAgICAgICAgKHBhcnRzIHx8IChwYXJ0cyA9IFtdKSkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZywgY2h1bmspKTtcclxuICAgICAgICAgICAgaSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGopIHtcclxuICAgICAgICBjaHVua1tpKytdID0gYjY0W3RdO1xyXG4gICAgICAgIGNodW5rW2krK10gPSA2MTtcclxuICAgICAgICBpZiAoaiA9PT0gMSlcclxuICAgICAgICAgICAgY2h1bmtbaSsrXSA9IDYxO1xyXG4gICAgfVxyXG4gICAgaWYgKHBhcnRzKSB7XHJcbiAgICAgICAgaWYgKGkpXHJcbiAgICAgICAgICAgIHBhcnRzLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNodW5rLnNsaWNlKDAsIGkpKSk7XHJcbiAgICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oXCJcIik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNodW5rLnNsaWNlKDAsIGkpKTtcclxufTtcclxuXHJcbnZhciBpbnZhbGlkRW5jb2RpbmcgPSBcImludmFsaWQgZW5jb2RpbmdcIjtcclxuXHJcbi8qKlxyXG4gKiBEZWNvZGVzIGEgYmFzZTY0IGVuY29kZWQgc3RyaW5nIHRvIGEgYnVmZmVyLlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFNvdXJjZSBzdHJpbmdcclxuICogQHBhcmFtIHtVaW50OEFycmF5fSBidWZmZXIgRGVzdGluYXRpb24gYnVmZmVyXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQgRGVzdGluYXRpb24gb2Zmc2V0XHJcbiAqIEByZXR1cm5zIHtudW1iZXJ9IE51bWJlciBvZiBieXRlcyB3cml0dGVuXHJcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBlbmNvZGluZyBpcyBpbnZhbGlkXHJcbiAqL1xyXG5iYXNlNjQuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKHN0cmluZywgYnVmZmVyLCBvZmZzZXQpIHtcclxuICAgIHZhciBzdGFydCA9IG9mZnNldDtcclxuICAgIHZhciBqID0gMCwgLy8gZ290byBpbmRleFxyXG4gICAgICAgIHQ7ICAgICAvLyB0ZW1wb3JhcnlcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aDspIHtcclxuICAgICAgICB2YXIgYyA9IHN0cmluZy5jaGFyQ29kZUF0KGkrKyk7XHJcbiAgICAgICAgaWYgKGMgPT09IDYxICYmIGogPiAxKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBpZiAoKGMgPSBzNjRbY10pID09PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKGludmFsaWRFbmNvZGluZyk7XHJcbiAgICAgICAgc3dpdGNoIChqKSB7XHJcbiAgICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAgICAgIHQgPSBjO1xyXG4gICAgICAgICAgICAgICAgaiA9IDE7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICAgICAgYnVmZmVyW29mZnNldCsrXSA9IHQgPDwgMiB8IChjICYgNDgpID4+IDQ7XHJcbiAgICAgICAgICAgICAgICB0ID0gYztcclxuICAgICAgICAgICAgICAgIGogPSAyO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICAgIGJ1ZmZlcltvZmZzZXQrK10gPSAodCAmIDE1KSA8PCA0IHwgKGMgJiA2MCkgPj4gMjtcclxuICAgICAgICAgICAgICAgIHQgPSBjO1xyXG4gICAgICAgICAgICAgICAgaiA9IDM7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICAgICAgYnVmZmVyW29mZnNldCsrXSA9ICh0ICYgMykgPDwgNiB8IGM7XHJcbiAgICAgICAgICAgICAgICBqID0gMDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChqID09PSAxKVxyXG4gICAgICAgIHRocm93IEVycm9yKGludmFsaWRFbmNvZGluZyk7XHJcbiAgICByZXR1cm4gb2Zmc2V0IC0gc3RhcnQ7XHJcbn07XHJcblxyXG4vKipcclxuICogVGVzdHMgaWYgdGhlIHNwZWNpZmllZCBzdHJpbmcgYXBwZWFycyB0byBiZSBiYXNlNjQgZW5jb2RlZC5cclxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBTdHJpbmcgdG8gdGVzdFxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHByb2JhYmx5IGJhc2U2NCBlbmNvZGVkLCBvdGhlcndpc2UgZmFsc2VcclxuICovXHJcbmJhc2U2NC50ZXN0ID0gZnVuY3Rpb24gdGVzdChzdHJpbmcpIHtcclxuICAgIHJldHVybiAvXig/OltBLVphLXowLTkrL117NH0pKig/OltBLVphLXowLTkrL117Mn09PXxbQS1aYS16MC05Ky9dezN9PSk/JC8udGVzdChzdHJpbmcpO1xyXG59O1xyXG4iLCJcInVzZSBzdHJpY3RcIjtcclxubW9kdWxlLmV4cG9ydHMgPSBFdmVudEVtaXR0ZXI7XHJcblxyXG4vKipcclxuICogQ29uc3RydWN0cyBhIG5ldyBldmVudCBlbWl0dGVyIGluc3RhbmNlLlxyXG4gKiBAY2xhc3NkZXNjIEEgbWluaW1hbCBldmVudCBlbWl0dGVyLlxyXG4gKiBAbWVtYmVyb2YgdXRpbFxyXG4gKiBAY29uc3RydWN0b3JcclxuICovXHJcbmZ1bmN0aW9uIEV2ZW50RW1pdHRlcigpIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlZ2lzdGVyZWQgbGlzdGVuZXJzLlxyXG4gICAgICogQHR5cGUge09iamVjdC48c3RyaW5nLCo+fVxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqL1xyXG4gICAgdGhpcy5fbGlzdGVuZXJzID0ge307XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZWdpc3RlcnMgYW4gZXZlbnQgbGlzdGVuZXIuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBldnQgRXZlbnQgbmFtZVxyXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBmbiBMaXN0ZW5lclxyXG4gKiBAcGFyYW0geyp9IFtjdHhdIExpc3RlbmVyIGNvbnRleHRcclxuICogQHJldHVybnMge3V0aWwuRXZlbnRFbWl0dGVyfSBgdGhpc2BcclxuICovXHJcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBmdW5jdGlvbiBvbihldnQsIGZuLCBjdHgpIHtcclxuICAgICh0aGlzLl9saXN0ZW5lcnNbZXZ0XSB8fCAodGhpcy5fbGlzdGVuZXJzW2V2dF0gPSBbXSkpLnB1c2goe1xyXG4gICAgICAgIGZuICA6IGZuLFxyXG4gICAgICAgIGN0eCA6IGN0eCB8fCB0aGlzXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFJlbW92ZXMgYW4gZXZlbnQgbGlzdGVuZXIgb3IgYW55IG1hdGNoaW5nIGxpc3RlbmVycyBpZiBhcmd1bWVudHMgYXJlIG9taXR0ZWQuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbZXZ0XSBFdmVudCBuYW1lLiBSZW1vdmVzIGFsbCBsaXN0ZW5lcnMgaWYgb21pdHRlZC5cclxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2ZuXSBMaXN0ZW5lciB0byByZW1vdmUuIFJlbW92ZXMgYWxsIGxpc3RlbmVycyBvZiBgZXZ0YCBpZiBvbWl0dGVkLlxyXG4gKiBAcmV0dXJucyB7dXRpbC5FdmVudEVtaXR0ZXJ9IGB0aGlzYFxyXG4gKi9cclxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vZmYgPSBmdW5jdGlvbiBvZmYoZXZ0LCBmbikge1xyXG4gICAgaWYgKGV2dCA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICAgIHRoaXMuX2xpc3RlbmVycyA9IHt9O1xyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKGZuID09PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHRoaXMuX2xpc3RlbmVyc1tldnRdID0gW107XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnNbZXZ0XTtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOylcclxuICAgICAgICAgICAgICAgIGlmIChsaXN0ZW5lcnNbaV0uZm4gPT09IGZuKVxyXG4gICAgICAgICAgICAgICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgKytpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEVtaXRzIGFuIGV2ZW50IGJ5IGNhbGxpbmcgaXRzIGxpc3RlbmVycyB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gZXZ0IEV2ZW50IG5hbWVcclxuICogQHBhcmFtIHsuLi4qfSBhcmdzIEFyZ3VtZW50c1xyXG4gKiBAcmV0dXJucyB7dXRpbC5FdmVudEVtaXR0ZXJ9IGB0aGlzYFxyXG4gKi9cclxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24gZW1pdChldnQpIHtcclxuICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnNbZXZ0XTtcclxuICAgIGlmIChsaXN0ZW5lcnMpIHtcclxuICAgICAgICB2YXIgYXJncyA9IFtdLFxyXG4gICAgICAgICAgICBpID0gMTtcclxuICAgICAgICBmb3IgKDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7KVxyXG4gICAgICAgICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2krK10pO1xyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOylcclxuICAgICAgICAgICAgbGlzdGVuZXJzW2ldLmZuLmFwcGx5KGxpc3RlbmVyc1tpKytdLmN0eCwgYXJncyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcztcclxufTtcclxuIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoZmFjdG9yeSk7XHJcblxyXG4vKipcclxuICogUmVhZHMgLyB3cml0ZXMgZmxvYXRzIC8gZG91YmxlcyBmcm9tIC8gdG8gYnVmZmVycy5cclxuICogQG5hbWUgdXRpbC5mbG9hdFxyXG4gKiBAbmFtZXNwYWNlXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIFdyaXRlcyBhIDMyIGJpdCBmbG9hdCB0byBhIGJ1ZmZlciB1c2luZyBsaXR0bGUgZW5kaWFuIGJ5dGUgb3JkZXIuXHJcbiAqIEBuYW1lIHV0aWwuZmxvYXQud3JpdGVGbG9hdExFXHJcbiAqIEBmdW5jdGlvblxyXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsIFZhbHVlIHRvIHdyaXRlXHJcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gYnVmIFRhcmdldCBidWZmZXJcclxuICogQHBhcmFtIHtudW1iZXJ9IHBvcyBUYXJnZXQgYnVmZmVyIG9mZnNldFxyXG4gKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBXcml0ZXMgYSAzMiBiaXQgZmxvYXQgdG8gYSBidWZmZXIgdXNpbmcgYmlnIGVuZGlhbiBieXRlIG9yZGVyLlxyXG4gKiBAbmFtZSB1dGlsLmZsb2F0LndyaXRlRmxvYXRCRVxyXG4gKiBAZnVuY3Rpb25cclxuICogQHBhcmFtIHtudW1iZXJ9IHZhbCBWYWx1ZSB0byB3cml0ZVxyXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ1ZiBUYXJnZXQgYnVmZmVyXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBwb3MgVGFyZ2V0IGJ1ZmZlciBvZmZzZXRcclxuICogQHJldHVybnMge3VuZGVmaW5lZH1cclxuICovXHJcblxyXG4vKipcclxuICogUmVhZHMgYSAzMiBiaXQgZmxvYXQgZnJvbSBhIGJ1ZmZlciB1c2luZyBsaXR0bGUgZW5kaWFuIGJ5dGUgb3JkZXIuXHJcbiAqIEBuYW1lIHV0aWwuZmxvYXQucmVhZEZsb2F0TEVcclxuICogQGZ1bmN0aW9uXHJcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gYnVmIFNvdXJjZSBidWZmZXJcclxuICogQHBhcmFtIHtudW1iZXJ9IHBvcyBTb3VyY2UgYnVmZmVyIG9mZnNldFxyXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBWYWx1ZSByZWFkXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIFJlYWRzIGEgMzIgYml0IGZsb2F0IGZyb20gYSBidWZmZXIgdXNpbmcgYmlnIGVuZGlhbiBieXRlIG9yZGVyLlxyXG4gKiBAbmFtZSB1dGlsLmZsb2F0LnJlYWRGbG9hdEJFXHJcbiAqIEBmdW5jdGlvblxyXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ1ZiBTb3VyY2UgYnVmZmVyXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBwb3MgU291cmNlIGJ1ZmZlciBvZmZzZXRcclxuICogQHJldHVybnMge251bWJlcn0gVmFsdWUgcmVhZFxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBXcml0ZXMgYSA2NCBiaXQgZG91YmxlIHRvIGEgYnVmZmVyIHVzaW5nIGxpdHRsZSBlbmRpYW4gYnl0ZSBvcmRlci5cclxuICogQG5hbWUgdXRpbC5mbG9hdC53cml0ZURvdWJsZUxFXHJcbiAqIEBmdW5jdGlvblxyXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsIFZhbHVlIHRvIHdyaXRlXHJcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gYnVmIFRhcmdldCBidWZmZXJcclxuICogQHBhcmFtIHtudW1iZXJ9IHBvcyBUYXJnZXQgYnVmZmVyIG9mZnNldFxyXG4gKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBXcml0ZXMgYSA2NCBiaXQgZG91YmxlIHRvIGEgYnVmZmVyIHVzaW5nIGJpZyBlbmRpYW4gYnl0ZSBvcmRlci5cclxuICogQG5hbWUgdXRpbC5mbG9hdC53cml0ZURvdWJsZUJFXHJcbiAqIEBmdW5jdGlvblxyXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsIFZhbHVlIHRvIHdyaXRlXHJcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gYnVmIFRhcmdldCBidWZmZXJcclxuICogQHBhcmFtIHtudW1iZXJ9IHBvcyBUYXJnZXQgYnVmZmVyIG9mZnNldFxyXG4gKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBSZWFkcyBhIDY0IGJpdCBkb3VibGUgZnJvbSBhIGJ1ZmZlciB1c2luZyBsaXR0bGUgZW5kaWFuIGJ5dGUgb3JkZXIuXHJcbiAqIEBuYW1lIHV0aWwuZmxvYXQucmVhZERvdWJsZUxFXHJcbiAqIEBmdW5jdGlvblxyXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ1ZiBTb3VyY2UgYnVmZmVyXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBwb3MgU291cmNlIGJ1ZmZlciBvZmZzZXRcclxuICogQHJldHVybnMge251bWJlcn0gVmFsdWUgcmVhZFxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBSZWFkcyBhIDY0IGJpdCBkb3VibGUgZnJvbSBhIGJ1ZmZlciB1c2luZyBiaWcgZW5kaWFuIGJ5dGUgb3JkZXIuXHJcbiAqIEBuYW1lIHV0aWwuZmxvYXQucmVhZERvdWJsZUJFXHJcbiAqIEBmdW5jdGlvblxyXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ1ZiBTb3VyY2UgYnVmZmVyXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBwb3MgU291cmNlIGJ1ZmZlciBvZmZzZXRcclxuICogQHJldHVybnMge251bWJlcn0gVmFsdWUgcmVhZFxyXG4gKi9cclxuXHJcbi8vIEZhY3RvcnkgZnVuY3Rpb24gZm9yIHRoZSBwdXJwb3NlIG9mIG5vZGUtYmFzZWQgdGVzdGluZyBpbiBtb2RpZmllZCBnbG9iYWwgZW52aXJvbm1lbnRzXHJcbmZ1bmN0aW9uIGZhY3RvcnkoZXhwb3J0cykge1xyXG5cclxuICAgIC8vIGZsb2F0OiB0eXBlZCBhcnJheVxyXG4gICAgaWYgKHR5cGVvZiBGbG9hdDMyQXJyYXkgIT09IFwidW5kZWZpbmVkXCIpIChmdW5jdGlvbigpIHtcclxuXHJcbiAgICAgICAgdmFyIGYzMiA9IG5ldyBGbG9hdDMyQXJyYXkoWyAtMCBdKSxcclxuICAgICAgICAgICAgZjhiID0gbmV3IFVpbnQ4QXJyYXkoZjMyLmJ1ZmZlciksXHJcbiAgICAgICAgICAgIGxlICA9IGY4YlszXSA9PT0gMTI4O1xyXG5cclxuICAgICAgICBmdW5jdGlvbiB3cml0ZUZsb2F0X2YzMl9jcHkodmFsLCBidWYsIHBvcykge1xyXG4gICAgICAgICAgICBmMzJbMF0gPSB2YWw7XHJcbiAgICAgICAgICAgIGJ1Zltwb3MgICAgXSA9IGY4YlswXTtcclxuICAgICAgICAgICAgYnVmW3BvcyArIDFdID0gZjhiWzFdO1xyXG4gICAgICAgICAgICBidWZbcG9zICsgMl0gPSBmOGJbMl07XHJcbiAgICAgICAgICAgIGJ1Zltwb3MgKyAzXSA9IGY4YlszXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIHdyaXRlRmxvYXRfZjMyX3Jldih2YWwsIGJ1ZiwgcG9zKSB7XHJcbiAgICAgICAgICAgIGYzMlswXSA9IHZhbDtcclxuICAgICAgICAgICAgYnVmW3BvcyAgICBdID0gZjhiWzNdO1xyXG4gICAgICAgICAgICBidWZbcG9zICsgMV0gPSBmOGJbMl07XHJcbiAgICAgICAgICAgIGJ1Zltwb3MgKyAyXSA9IGY4YlsxXTtcclxuICAgICAgICAgICAgYnVmW3BvcyArIDNdID0gZjhiWzBdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICAgICAgICBleHBvcnRzLndyaXRlRmxvYXRMRSA9IGxlID8gd3JpdGVGbG9hdF9mMzJfY3B5IDogd3JpdGVGbG9hdF9mMzJfcmV2O1xyXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXHJcbiAgICAgICAgZXhwb3J0cy53cml0ZUZsb2F0QkUgPSBsZSA/IHdyaXRlRmxvYXRfZjMyX3JldiA6IHdyaXRlRmxvYXRfZjMyX2NweTtcclxuXHJcbiAgICAgICAgZnVuY3Rpb24gcmVhZEZsb2F0X2YzMl9jcHkoYnVmLCBwb3MpIHtcclxuICAgICAgICAgICAgZjhiWzBdID0gYnVmW3BvcyAgICBdO1xyXG4gICAgICAgICAgICBmOGJbMV0gPSBidWZbcG9zICsgMV07XHJcbiAgICAgICAgICAgIGY4YlsyXSA9IGJ1Zltwb3MgKyAyXTtcclxuICAgICAgICAgICAgZjhiWzNdID0gYnVmW3BvcyArIDNdO1xyXG4gICAgICAgICAgICByZXR1cm4gZjMyWzBdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZnVuY3Rpb24gcmVhZEZsb2F0X2YzMl9yZXYoYnVmLCBwb3MpIHtcclxuICAgICAgICAgICAgZjhiWzNdID0gYnVmW3BvcyAgICBdO1xyXG4gICAgICAgICAgICBmOGJbMl0gPSBidWZbcG9zICsgMV07XHJcbiAgICAgICAgICAgIGY4YlsxXSA9IGJ1Zltwb3MgKyAyXTtcclxuICAgICAgICAgICAgZjhiWzBdID0gYnVmW3BvcyArIDNdO1xyXG4gICAgICAgICAgICByZXR1cm4gZjMyWzBdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICAgICAgICBleHBvcnRzLnJlYWRGbG9hdExFID0gbGUgPyByZWFkRmxvYXRfZjMyX2NweSA6IHJlYWRGbG9hdF9mMzJfcmV2O1xyXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXHJcbiAgICAgICAgZXhwb3J0cy5yZWFkRmxvYXRCRSA9IGxlID8gcmVhZEZsb2F0X2YzMl9yZXYgOiByZWFkRmxvYXRfZjMyX2NweTtcclxuXHJcbiAgICAvLyBmbG9hdDogaWVlZTc1NFxyXG4gICAgfSkoKTsgZWxzZSAoZnVuY3Rpb24oKSB7XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIHdyaXRlRmxvYXRfaWVlZTc1NCh3cml0ZVVpbnQsIHZhbCwgYnVmLCBwb3MpIHtcclxuICAgICAgICAgICAgdmFyIHNpZ24gPSB2YWwgPCAwID8gMSA6IDA7XHJcbiAgICAgICAgICAgIGlmIChzaWduKVxyXG4gICAgICAgICAgICAgICAgdmFsID0gLXZhbDtcclxuICAgICAgICAgICAgaWYgKHZhbCA9PT0gMClcclxuICAgICAgICAgICAgICAgIHdyaXRlVWludCgxIC8gdmFsID4gMCA/IC8qIHBvc2l0aXZlICovIDAgOiAvKiBuZWdhdGl2ZSAwICovIDIxNDc0ODM2NDgsIGJ1ZiwgcG9zKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNOYU4odmFsKSlcclxuICAgICAgICAgICAgICAgIHdyaXRlVWludCgyMTQzMjg5MzQ0LCBidWYsIHBvcyk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbCA+IDMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgpIC8vICstSW5maW5pdHlcclxuICAgICAgICAgICAgICAgIHdyaXRlVWludCgoc2lnbiA8PCAzMSB8IDIxMzkwOTUwNDApID4+PiAwLCBidWYsIHBvcyk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbCA8IDEuMTc1NDk0MzUwODIyMjg3NWUtMzgpIC8vIGRlbm9ybWFsXHJcbiAgICAgICAgICAgICAgICB3cml0ZVVpbnQoKHNpZ24gPDwgMzEgfCBNYXRoLnJvdW5kKHZhbCAvIDEuNDAxMjk4NDY0MzI0ODE3ZS00NSkpID4+PiAwLCBidWYsIHBvcyk7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIGV4cG9uZW50ID0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWwpIC8gTWF0aC5MTjIpLFxyXG4gICAgICAgICAgICAgICAgICAgIG1hbnRpc3NhID0gTWF0aC5yb3VuZCh2YWwgKiBNYXRoLnBvdygyLCAtZXhwb25lbnQpICogODM4ODYwOCkgJiA4Mzg4NjA3O1xyXG4gICAgICAgICAgICAgICAgd3JpdGVVaW50KChzaWduIDw8IDMxIHwgZXhwb25lbnQgKyAxMjcgPDwgMjMgfCBtYW50aXNzYSkgPj4+IDAsIGJ1ZiwgcG9zKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZXhwb3J0cy53cml0ZUZsb2F0TEUgPSB3cml0ZUZsb2F0X2llZWU3NTQuYmluZChudWxsLCB3cml0ZVVpbnRMRSk7XHJcbiAgICAgICAgZXhwb3J0cy53cml0ZUZsb2F0QkUgPSB3cml0ZUZsb2F0X2llZWU3NTQuYmluZChudWxsLCB3cml0ZVVpbnRCRSk7XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIHJlYWRGbG9hdF9pZWVlNzU0KHJlYWRVaW50LCBidWYsIHBvcykge1xyXG4gICAgICAgICAgICB2YXIgdWludCA9IHJlYWRVaW50KGJ1ZiwgcG9zKSxcclxuICAgICAgICAgICAgICAgIHNpZ24gPSAodWludCA+PiAzMSkgKiAyICsgMSxcclxuICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gdWludCA+Pj4gMjMgJiAyNTUsXHJcbiAgICAgICAgICAgICAgICBtYW50aXNzYSA9IHVpbnQgJiA4Mzg4NjA3O1xyXG4gICAgICAgICAgICByZXR1cm4gZXhwb25lbnQgPT09IDI1NVxyXG4gICAgICAgICAgICAgICAgPyBtYW50aXNzYVxyXG4gICAgICAgICAgICAgICAgPyBOYU5cclxuICAgICAgICAgICAgICAgIDogc2lnbiAqIEluZmluaXR5XHJcbiAgICAgICAgICAgICAgICA6IGV4cG9uZW50ID09PSAwIC8vIGRlbm9ybWFsXHJcbiAgICAgICAgICAgICAgICA/IHNpZ24gKiAxLjQwMTI5ODQ2NDMyNDgxN2UtNDUgKiBtYW50aXNzYVxyXG4gICAgICAgICAgICAgICAgOiBzaWduICogTWF0aC5wb3coMiwgZXhwb25lbnQgLSAxNTApICogKG1hbnRpc3NhICsgODM4ODYwOCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBleHBvcnRzLnJlYWRGbG9hdExFID0gcmVhZEZsb2F0X2llZWU3NTQuYmluZChudWxsLCByZWFkVWludExFKTtcclxuICAgICAgICBleHBvcnRzLnJlYWRGbG9hdEJFID0gcmVhZEZsb2F0X2llZWU3NTQuYmluZChudWxsLCByZWFkVWludEJFKTtcclxuXHJcbiAgICB9KSgpO1xyXG5cclxuICAgIC8vIGRvdWJsZTogdHlwZWQgYXJyYXlcclxuICAgIGlmICh0eXBlb2YgRmxvYXQ2NEFycmF5ICE9PSBcInVuZGVmaW5lZFwiKSAoZnVuY3Rpb24oKSB7XHJcblxyXG4gICAgICAgIHZhciBmNjQgPSBuZXcgRmxvYXQ2NEFycmF5KFstMF0pLFxyXG4gICAgICAgICAgICBmOGIgPSBuZXcgVWludDhBcnJheShmNjQuYnVmZmVyKSxcclxuICAgICAgICAgICAgbGUgID0gZjhiWzddID09PSAxMjg7XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIHdyaXRlRG91YmxlX2Y2NF9jcHkodmFsLCBidWYsIHBvcykge1xyXG4gICAgICAgICAgICBmNjRbMF0gPSB2YWw7XHJcbiAgICAgICAgICAgIGJ1Zltwb3MgICAgXSA9IGY4YlswXTtcclxuICAgICAgICAgICAgYnVmW3BvcyArIDFdID0gZjhiWzFdO1xyXG4gICAgICAgICAgICBidWZbcG9zICsgMl0gPSBmOGJbMl07XHJcbiAgICAgICAgICAgIGJ1Zltwb3MgKyAzXSA9IGY4YlszXTtcclxuICAgICAgICAgICAgYnVmW3BvcyArIDRdID0gZjhiWzRdO1xyXG4gICAgICAgICAgICBidWZbcG9zICsgNV0gPSBmOGJbNV07XHJcbiAgICAgICAgICAgIGJ1Zltwb3MgKyA2XSA9IGY4Yls2XTtcclxuICAgICAgICAgICAgYnVmW3BvcyArIDddID0gZjhiWzddO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZnVuY3Rpb24gd3JpdGVEb3VibGVfZjY0X3Jldih2YWwsIGJ1ZiwgcG9zKSB7XHJcbiAgICAgICAgICAgIGY2NFswXSA9IHZhbDtcclxuICAgICAgICAgICAgYnVmW3BvcyAgICBdID0gZjhiWzddO1xyXG4gICAgICAgICAgICBidWZbcG9zICsgMV0gPSBmOGJbNl07XHJcbiAgICAgICAgICAgIGJ1Zltwb3MgKyAyXSA9IGY4Yls1XTtcclxuICAgICAgICAgICAgYnVmW3BvcyArIDNdID0gZjhiWzRdO1xyXG4gICAgICAgICAgICBidWZbcG9zICsgNF0gPSBmOGJbM107XHJcbiAgICAgICAgICAgIGJ1Zltwb3MgKyA1XSA9IGY4YlsyXTtcclxuICAgICAgICAgICAgYnVmW3BvcyArIDZdID0gZjhiWzFdO1xyXG4gICAgICAgICAgICBidWZbcG9zICsgN10gPSBmOGJbMF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG4gICAgICAgIGV4cG9ydHMud3JpdGVEb3VibGVMRSA9IGxlID8gd3JpdGVEb3VibGVfZjY0X2NweSA6IHdyaXRlRG91YmxlX2Y2NF9yZXY7XHJcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICAgICAgICBleHBvcnRzLndyaXRlRG91YmxlQkUgPSBsZSA/IHdyaXRlRG91YmxlX2Y2NF9yZXYgOiB3cml0ZURvdWJsZV9mNjRfY3B5O1xyXG5cclxuICAgICAgICBmdW5jdGlvbiByZWFkRG91YmxlX2Y2NF9jcHkoYnVmLCBwb3MpIHtcclxuICAgICAgICAgICAgZjhiWzBdID0gYnVmW3BvcyAgICBdO1xyXG4gICAgICAgICAgICBmOGJbMV0gPSBidWZbcG9zICsgMV07XHJcbiAgICAgICAgICAgIGY4YlsyXSA9IGJ1Zltwb3MgKyAyXTtcclxuICAgICAgICAgICAgZjhiWzNdID0gYnVmW3BvcyArIDNdO1xyXG4gICAgICAgICAgICBmOGJbNF0gPSBidWZbcG9zICsgNF07XHJcbiAgICAgICAgICAgIGY4Yls1XSA9IGJ1Zltwb3MgKyA1XTtcclxuICAgICAgICAgICAgZjhiWzZdID0gYnVmW3BvcyArIDZdO1xyXG4gICAgICAgICAgICBmOGJbN10gPSBidWZbcG9zICsgN107XHJcbiAgICAgICAgICAgIHJldHVybiBmNjRbMF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmdW5jdGlvbiByZWFkRG91YmxlX2Y2NF9yZXYoYnVmLCBwb3MpIHtcclxuICAgICAgICAgICAgZjhiWzddID0gYnVmW3BvcyAgICBdO1xyXG4gICAgICAgICAgICBmOGJbNl0gPSBidWZbcG9zICsgMV07XHJcbiAgICAgICAgICAgIGY4Yls1XSA9IGJ1Zltwb3MgKyAyXTtcclxuICAgICAgICAgICAgZjhiWzRdID0gYnVmW3BvcyArIDNdO1xyXG4gICAgICAgICAgICBmOGJbM10gPSBidWZbcG9zICsgNF07XHJcbiAgICAgICAgICAgIGY4YlsyXSA9IGJ1Zltwb3MgKyA1XTtcclxuICAgICAgICAgICAgZjhiWzFdID0gYnVmW3BvcyArIDZdO1xyXG4gICAgICAgICAgICBmOGJbMF0gPSBidWZbcG9zICsgN107XHJcbiAgICAgICAgICAgIHJldHVybiBmNjRbMF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG4gICAgICAgIGV4cG9ydHMucmVhZERvdWJsZUxFID0gbGUgPyByZWFkRG91YmxlX2Y2NF9jcHkgOiByZWFkRG91YmxlX2Y2NF9yZXY7XHJcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICAgICAgICBleHBvcnRzLnJlYWREb3VibGVCRSA9IGxlID8gcmVhZERvdWJsZV9mNjRfcmV2IDogcmVhZERvdWJsZV9mNjRfY3B5O1xyXG5cclxuICAgIC8vIGRvdWJsZTogaWVlZTc1NFxyXG4gICAgfSkoKTsgZWxzZSAoZnVuY3Rpb24oKSB7XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIHdyaXRlRG91YmxlX2llZWU3NTQod3JpdGVVaW50LCBvZmYwLCBvZmYxLCB2YWwsIGJ1ZiwgcG9zKSB7XHJcbiAgICAgICAgICAgIHZhciBzaWduID0gdmFsIDwgMCA/IDEgOiAwO1xyXG4gICAgICAgICAgICBpZiAoc2lnbilcclxuICAgICAgICAgICAgICAgIHZhbCA9IC12YWw7XHJcbiAgICAgICAgICAgIGlmICh2YWwgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHdyaXRlVWludCgwLCBidWYsIHBvcyArIG9mZjApO1xyXG4gICAgICAgICAgICAgICAgd3JpdGVVaW50KDEgLyB2YWwgPiAwID8gLyogcG9zaXRpdmUgKi8gMCA6IC8qIG5lZ2F0aXZlIDAgKi8gMjE0NzQ4MzY0OCwgYnVmLCBwb3MgKyBvZmYxKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc05hTih2YWwpKSB7XHJcbiAgICAgICAgICAgICAgICB3cml0ZVVpbnQoMCwgYnVmLCBwb3MgKyBvZmYwKTtcclxuICAgICAgICAgICAgICAgIHdyaXRlVWludCgyMTQ2OTU5MzYwLCBidWYsIHBvcyArIG9mZjEpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbCA+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4KSB7IC8vICstSW5maW5pdHlcclxuICAgICAgICAgICAgICAgIHdyaXRlVWludCgwLCBidWYsIHBvcyArIG9mZjApO1xyXG4gICAgICAgICAgICAgICAgd3JpdGVVaW50KChzaWduIDw8IDMxIHwgMjE0NjQzNTA3MikgPj4+IDAsIGJ1ZiwgcG9zICsgb2ZmMSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbWFudGlzc2E7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsIDwgMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgpIHsgLy8gZGVub3JtYWxcclxuICAgICAgICAgICAgICAgICAgICBtYW50aXNzYSA9IHZhbCAvIDVlLTMyNDtcclxuICAgICAgICAgICAgICAgICAgICB3cml0ZVVpbnQobWFudGlzc2EgPj4+IDAsIGJ1ZiwgcG9zICsgb2ZmMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVVaW50KChzaWduIDw8IDMxIHwgbWFudGlzc2EgLyA0Mjk0OTY3Mjk2KSA+Pj4gMCwgYnVmLCBwb3MgKyBvZmYxKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGV4cG9uZW50ID0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWwpIC8gTWF0aC5MTjIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChleHBvbmVudCA9PT0gMTAyNClcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwb25lbnQgPSAxMDIzO1xyXG4gICAgICAgICAgICAgICAgICAgIG1hbnRpc3NhID0gdmFsICogTWF0aC5wb3coMiwgLWV4cG9uZW50KTtcclxuICAgICAgICAgICAgICAgICAgICB3cml0ZVVpbnQobWFudGlzc2EgKiA0NTAzNTk5NjI3MzcwNDk2ID4+PiAwLCBidWYsIHBvcyArIG9mZjApO1xyXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlVWludCgoc2lnbiA8PCAzMSB8IGV4cG9uZW50ICsgMTAyMyA8PCAyMCB8IG1hbnRpc3NhICogMTA0ODU3NiAmIDEwNDg1NzUpID4+PiAwLCBidWYsIHBvcyArIG9mZjEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBleHBvcnRzLndyaXRlRG91YmxlTEUgPSB3cml0ZURvdWJsZV9pZWVlNzU0LmJpbmQobnVsbCwgd3JpdGVVaW50TEUsIDAsIDQpO1xyXG4gICAgICAgIGV4cG9ydHMud3JpdGVEb3VibGVCRSA9IHdyaXRlRG91YmxlX2llZWU3NTQuYmluZChudWxsLCB3cml0ZVVpbnRCRSwgNCwgMCk7XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIHJlYWREb3VibGVfaWVlZTc1NChyZWFkVWludCwgb2ZmMCwgb2ZmMSwgYnVmLCBwb3MpIHtcclxuICAgICAgICAgICAgdmFyIGxvID0gcmVhZFVpbnQoYnVmLCBwb3MgKyBvZmYwKSxcclxuICAgICAgICAgICAgICAgIGhpID0gcmVhZFVpbnQoYnVmLCBwb3MgKyBvZmYxKTtcclxuICAgICAgICAgICAgdmFyIHNpZ24gPSAoaGkgPj4gMzEpICogMiArIDEsXHJcbiAgICAgICAgICAgICAgICBleHBvbmVudCA9IGhpID4+PiAyMCAmIDIwNDcsXHJcbiAgICAgICAgICAgICAgICBtYW50aXNzYSA9IDQyOTQ5NjcyOTYgKiAoaGkgJiAxMDQ4NTc1KSArIGxvO1xyXG4gICAgICAgICAgICByZXR1cm4gZXhwb25lbnQgPT09IDIwNDdcclxuICAgICAgICAgICAgICAgID8gbWFudGlzc2FcclxuICAgICAgICAgICAgICAgID8gTmFOXHJcbiAgICAgICAgICAgICAgICA6IHNpZ24gKiBJbmZpbml0eVxyXG4gICAgICAgICAgICAgICAgOiBleHBvbmVudCA9PT0gMCAvLyBkZW5vcm1hbFxyXG4gICAgICAgICAgICAgICAgPyBzaWduICogNWUtMzI0ICogbWFudGlzc2FcclxuICAgICAgICAgICAgICAgIDogc2lnbiAqIE1hdGgucG93KDIsIGV4cG9uZW50IC0gMTA3NSkgKiAobWFudGlzc2EgKyA0NTAzNTk5NjI3MzcwNDk2KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGV4cG9ydHMucmVhZERvdWJsZUxFID0gcmVhZERvdWJsZV9pZWVlNzU0LmJpbmQobnVsbCwgcmVhZFVpbnRMRSwgMCwgNCk7XHJcbiAgICAgICAgZXhwb3J0cy5yZWFkRG91YmxlQkUgPSByZWFkRG91YmxlX2llZWU3NTQuYmluZChudWxsLCByZWFkVWludEJFLCA0LCAwKTtcclxuXHJcbiAgICB9KSgpO1xyXG5cclxuICAgIHJldHVybiBleHBvcnRzO1xyXG59XHJcblxyXG4vLyB1aW50IGhlbHBlcnNcclxuXHJcbmZ1bmN0aW9uIHdyaXRlVWludExFKHZhbCwgYnVmLCBwb3MpIHtcclxuICAgIGJ1Zltwb3MgICAgXSA9ICB2YWwgICAgICAgICYgMjU1O1xyXG4gICAgYnVmW3BvcyArIDFdID0gIHZhbCA+Pj4gOCAgJiAyNTU7XHJcbiAgICBidWZbcG9zICsgMl0gPSAgdmFsID4+PiAxNiAmIDI1NTtcclxuICAgIGJ1Zltwb3MgKyAzXSA9ICB2YWwgPj4+IDI0O1xyXG59XHJcblxyXG5mdW5jdGlvbiB3cml0ZVVpbnRCRSh2YWwsIGJ1ZiwgcG9zKSB7XHJcbiAgICBidWZbcG9zICAgIF0gPSAgdmFsID4+PiAyNDtcclxuICAgIGJ1Zltwb3MgKyAxXSA9ICB2YWwgPj4+IDE2ICYgMjU1O1xyXG4gICAgYnVmW3BvcyArIDJdID0gIHZhbCA+Pj4gOCAgJiAyNTU7XHJcbiAgICBidWZbcG9zICsgM10gPSAgdmFsICAgICAgICAmIDI1NTtcclxufVxyXG5cclxuZnVuY3Rpb24gcmVhZFVpbnRMRShidWYsIHBvcykge1xyXG4gICAgcmV0dXJuIChidWZbcG9zICAgIF1cclxuICAgICAgICAgIHwgYnVmW3BvcyArIDFdIDw8IDhcclxuICAgICAgICAgIHwgYnVmW3BvcyArIDJdIDw8IDE2XHJcbiAgICAgICAgICB8IGJ1Zltwb3MgKyAzXSA8PCAyNCkgPj4+IDA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlYWRVaW50QkUoYnVmLCBwb3MpIHtcclxuICAgIHJldHVybiAoYnVmW3BvcyAgICBdIDw8IDI0XHJcbiAgICAgICAgICB8IGJ1Zltwb3MgKyAxXSA8PCAxNlxyXG4gICAgICAgICAgfCBidWZbcG9zICsgMl0gPDwgOFxyXG4gICAgICAgICAgfCBidWZbcG9zICsgM10pID4+PiAwO1xyXG59XHJcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5tb2R1bGUuZXhwb3J0cyA9IGlucXVpcmU7XHJcblxyXG4vKipcclxuICogUmVxdWlyZXMgYSBtb2R1bGUgb25seSBpZiBhdmFpbGFibGUuXHJcbiAqIEBtZW1iZXJvZiB1dGlsXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBtb2R1bGVOYW1lIE1vZHVsZSB0byByZXF1aXJlXHJcbiAqIEByZXR1cm5zIHs/T2JqZWN0fSBSZXF1aXJlZCBtb2R1bGUgaWYgYXZhaWxhYmxlIGFuZCBub3QgZW1wdHksIG90aGVyd2lzZSBgbnVsbGBcclxuICovXHJcbmZ1bmN0aW9uIGlucXVpcmUobW9kdWxlTmFtZSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB2YXIgbW9kID0gZXZhbChcInF1aXJlXCIucmVwbGFjZSgvXi8sXCJyZVwiKSkobW9kdWxlTmFtZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZXZhbFxyXG4gICAgICAgIGlmIChtb2QgJiYgKG1vZC5sZW5ndGggfHwgT2JqZWN0LmtleXMobW9kKS5sZW5ndGgpKVxyXG4gICAgICAgICAgICByZXR1cm4gbW9kO1xyXG4gICAgfSBjYXRjaCAoZSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG4vKipcclxuICogQSBtaW5pbWFsIFVURjggaW1wbGVtZW50YXRpb24gZm9yIG51bWJlciBhcnJheXMuXHJcbiAqIEBtZW1iZXJvZiB1dGlsXHJcbiAqIEBuYW1lc3BhY2VcclxuICovXHJcbnZhciB1dGY4ID0gZXhwb3J0cztcclxuXHJcbi8qKlxyXG4gKiBDYWxjdWxhdGVzIHRoZSBVVEY4IGJ5dGUgbGVuZ3RoIG9mIGEgc3RyaW5nLlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFN0cmluZ1xyXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBCeXRlIGxlbmd0aFxyXG4gKi9cclxudXRmOC5sZW5ndGggPSBmdW5jdGlvbiB1dGY4X2xlbmd0aChzdHJpbmcpIHtcclxuICAgIHZhciBsZW4gPSAwLFxyXG4gICAgICAgIGMgPSAwO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICBjID0gc3RyaW5nLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgaWYgKGMgPCAxMjgpXHJcbiAgICAgICAgICAgIGxlbiArPSAxO1xyXG4gICAgICAgIGVsc2UgaWYgKGMgPCAyMDQ4KVxyXG4gICAgICAgICAgICBsZW4gKz0gMjtcclxuICAgICAgICBlbHNlIGlmICgoYyAmIDB4RkMwMCkgPT09IDB4RDgwMCAmJiAoc3RyaW5nLmNoYXJDb2RlQXQoaSArIDEpICYgMHhGQzAwKSA9PT0gMHhEQzAwKSB7XHJcbiAgICAgICAgICAgICsraTtcclxuICAgICAgICAgICAgbGVuICs9IDQ7XHJcbiAgICAgICAgfSBlbHNlXHJcbiAgICAgICAgICAgIGxlbiArPSAzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxlbjtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZWFkcyBVVEY4IGJ5dGVzIGFzIGEgc3RyaW5nLlxyXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ1ZmZlciBTb3VyY2UgYnVmZmVyXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBTb3VyY2Ugc3RhcnRcclxuICogQHBhcmFtIHtudW1iZXJ9IGVuZCBTb3VyY2UgZW5kXHJcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyByZWFkXHJcbiAqL1xyXG51dGY4LnJlYWQgPSBmdW5jdGlvbiB1dGY4X3JlYWQoYnVmZmVyLCBzdGFydCwgZW5kKSB7XHJcbiAgICB2YXIgbGVuID0gZW5kIC0gc3RhcnQ7XHJcbiAgICBpZiAobGVuIDwgMSlcclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgIHZhciBwYXJ0cyA9IG51bGwsXHJcbiAgICAgICAgY2h1bmsgPSBbXSxcclxuICAgICAgICBpID0gMCwgLy8gY2hhciBvZmZzZXRcclxuICAgICAgICB0OyAgICAgLy8gdGVtcG9yYXJ5XHJcbiAgICB3aGlsZSAoc3RhcnQgPCBlbmQpIHtcclxuICAgICAgICB0ID0gYnVmZmVyW3N0YXJ0KytdO1xyXG4gICAgICAgIGlmICh0IDwgMTI4KVxyXG4gICAgICAgICAgICBjaHVua1tpKytdID0gdDtcclxuICAgICAgICBlbHNlIGlmICh0ID4gMTkxICYmIHQgPCAyMjQpXHJcbiAgICAgICAgICAgIGNodW5rW2krK10gPSAodCAmIDMxKSA8PCA2IHwgYnVmZmVyW3N0YXJ0KytdICYgNjM7XHJcbiAgICAgICAgZWxzZSBpZiAodCA+IDIzOSAmJiB0IDwgMzY1KSB7XHJcbiAgICAgICAgICAgIHQgPSAoKHQgJiA3KSA8PCAxOCB8IChidWZmZXJbc3RhcnQrK10gJiA2MykgPDwgMTIgfCAoYnVmZmVyW3N0YXJ0KytdICYgNjMpIDw8IDYgfCBidWZmZXJbc3RhcnQrK10gJiA2MykgLSAweDEwMDAwO1xyXG4gICAgICAgICAgICBjaHVua1tpKytdID0gMHhEODAwICsgKHQgPj4gMTApO1xyXG4gICAgICAgICAgICBjaHVua1tpKytdID0gMHhEQzAwICsgKHQgJiAxMDIzKTtcclxuICAgICAgICB9IGVsc2VcclxuICAgICAgICAgICAgY2h1bmtbaSsrXSA9ICh0ICYgMTUpIDw8IDEyIHwgKGJ1ZmZlcltzdGFydCsrXSAmIDYzKSA8PCA2IHwgYnVmZmVyW3N0YXJ0KytdICYgNjM7XHJcbiAgICAgICAgaWYgKGkgPiA4MTkxKSB7XHJcbiAgICAgICAgICAgIChwYXJ0cyB8fCAocGFydHMgPSBbXSkpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNodW5rKSk7XHJcbiAgICAgICAgICAgIGkgPSAwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChwYXJ0cykge1xyXG4gICAgICAgIGlmIChpKVxyXG4gICAgICAgICAgICBwYXJ0cy5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBjaHVuay5zbGljZSgwLCBpKSkpO1xyXG4gICAgICAgIHJldHVybiBwYXJ0cy5qb2luKFwiXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBjaHVuay5zbGljZSgwLCBpKSk7XHJcbn07XHJcblxyXG4vKipcclxuICogV3JpdGVzIGEgc3RyaW5nIGFzIFVURjggYnl0ZXMuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgU291cmNlIHN0cmluZ1xyXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ1ZmZlciBEZXN0aW5hdGlvbiBidWZmZXJcclxuICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldCBEZXN0aW5hdGlvbiBvZmZzZXRcclxuICogQHJldHVybnMge251bWJlcn0gQnl0ZXMgd3JpdHRlblxyXG4gKi9cclxudXRmOC53cml0ZSA9IGZ1bmN0aW9uIHV0Zjhfd3JpdGUoc3RyaW5nLCBidWZmZXIsIG9mZnNldCkge1xyXG4gICAgdmFyIHN0YXJ0ID0gb2Zmc2V0LFxyXG4gICAgICAgIGMxLCAvLyBjaGFyYWN0ZXIgMVxyXG4gICAgICAgIGMyOyAvLyBjaGFyYWN0ZXIgMlxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICBjMSA9IHN0cmluZy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgIGlmIChjMSA8IDEyOCkge1xyXG4gICAgICAgICAgICBidWZmZXJbb2Zmc2V0KytdID0gYzE7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjMSA8IDIwNDgpIHtcclxuICAgICAgICAgICAgYnVmZmVyW29mZnNldCsrXSA9IGMxID4+IDYgICAgICAgfCAxOTI7XHJcbiAgICAgICAgICAgIGJ1ZmZlcltvZmZzZXQrK10gPSBjMSAgICAgICAmIDYzIHwgMTI4O1xyXG4gICAgICAgIH0gZWxzZSBpZiAoKGMxICYgMHhGQzAwKSA9PT0gMHhEODAwICYmICgoYzIgPSBzdHJpbmcuY2hhckNvZGVBdChpICsgMSkpICYgMHhGQzAwKSA9PT0gMHhEQzAwKSB7XHJcbiAgICAgICAgICAgIGMxID0gMHgxMDAwMCArICgoYzEgJiAweDAzRkYpIDw8IDEwKSArIChjMiAmIDB4MDNGRik7XHJcbiAgICAgICAgICAgICsraTtcclxuICAgICAgICAgICAgYnVmZmVyW29mZnNldCsrXSA9IGMxID4+IDE4ICAgICAgfCAyNDA7XHJcbiAgICAgICAgICAgIGJ1ZmZlcltvZmZzZXQrK10gPSBjMSA+PiAxMiAmIDYzIHwgMTI4O1xyXG4gICAgICAgICAgICBidWZmZXJbb2Zmc2V0KytdID0gYzEgPj4gNiAgJiA2MyB8IDEyODtcclxuICAgICAgICAgICAgYnVmZmVyW29mZnNldCsrXSA9IGMxICAgICAgICYgNjMgfCAxMjg7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgYnVmZmVyW29mZnNldCsrXSA9IGMxID4+IDEyICAgICAgfCAyMjQ7XHJcbiAgICAgICAgICAgIGJ1ZmZlcltvZmZzZXQrK10gPSBjMSA+PiA2ICAmIDYzIHwgMTI4O1xyXG4gICAgICAgICAgICBidWZmZXJbb2Zmc2V0KytdID0gYzEgICAgICAgJiA2MyB8IDEyODtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2Zmc2V0IC0gc3RhcnQ7XHJcbn07XHJcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5tb2R1bGUuZXhwb3J0cyA9IHBvb2w7XHJcblxyXG4vKipcclxuICogQW4gYWxsb2NhdG9yIGFzIHVzZWQgYnkge0BsaW5rIHV0aWwucG9vbH0uXHJcbiAqIEB0eXBlZGVmIFBvb2xBbGxvY2F0b3JcclxuICogQHR5cGUge2Z1bmN0aW9ufVxyXG4gKiBAcGFyYW0ge251bWJlcn0gc2l6ZSBCdWZmZXIgc2l6ZVxyXG4gKiBAcmV0dXJucyB7VWludDhBcnJheX0gQnVmZmVyXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEEgc2xpY2VyIGFzIHVzZWQgYnkge0BsaW5rIHV0aWwucG9vbH0uXHJcbiAqIEB0eXBlZGVmIFBvb2xTbGljZXJcclxuICogQHR5cGUge2Z1bmN0aW9ufVxyXG4gKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgU3RhcnQgb2Zmc2V0XHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgRW5kIG9mZnNldFxyXG4gKiBAcmV0dXJucyB7VWludDhBcnJheX0gQnVmZmVyIHNsaWNlXHJcbiAqIEB0aGlzIHtVaW50OEFycmF5fVxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBBIGdlbmVyYWwgcHVycG9zZSBidWZmZXIgcG9vbC5cclxuICogQG1lbWJlcm9mIHV0aWxcclxuICogQGZ1bmN0aW9uXHJcbiAqIEBwYXJhbSB7UG9vbEFsbG9jYXRvcn0gYWxsb2MgQWxsb2NhdG9yXHJcbiAqIEBwYXJhbSB7UG9vbFNsaWNlcn0gc2xpY2UgU2xpY2VyXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBbc2l6ZT04MTkyXSBTbGFiIHNpemVcclxuICogQHJldHVybnMge1Bvb2xBbGxvY2F0b3J9IFBvb2xlZCBhbGxvY2F0b3JcclxuICovXHJcbmZ1bmN0aW9uIHBvb2woYWxsb2MsIHNsaWNlLCBzaXplKSB7XHJcbiAgICB2YXIgU0laRSAgID0gc2l6ZSB8fCA4MTkyO1xyXG4gICAgdmFyIE1BWCAgICA9IFNJWkUgPj4+IDE7XHJcbiAgICB2YXIgc2xhYiAgID0gbnVsbDtcclxuICAgIHZhciBvZmZzZXQgPSBTSVpFO1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIHBvb2xfYWxsb2Moc2l6ZSkge1xyXG4gICAgICAgIGlmIChzaXplIDwgMSB8fCBzaXplID4gTUFYKVxyXG4gICAgICAgICAgICByZXR1cm4gYWxsb2Moc2l6ZSk7XHJcbiAgICAgICAgaWYgKG9mZnNldCArIHNpemUgPiBTSVpFKSB7XHJcbiAgICAgICAgICAgIHNsYWIgPSBhbGxvYyhTSVpFKTtcclxuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGJ1ZiA9IHNsaWNlLmNhbGwoc2xhYiwgb2Zmc2V0LCBvZmZzZXQgKz0gc2l6ZSk7XHJcbiAgICAgICAgaWYgKG9mZnNldCAmIDcpIC8vIGFsaWduIHRvIDMyIGJpdFxyXG4gICAgICAgICAgICBvZmZzZXQgPSAob2Zmc2V0IHwgNykgKyAxO1xyXG4gICAgICAgIHJldHVybiBidWY7XHJcbiAgICB9O1xyXG59XHJcbiIsIlwidXNlIHN0cmljdFwiO1xubW9kdWxlLmV4cG9ydHMgPSBMb25nQml0cztcblxudmFyIHV0aWwgPSByZXF1aXJlKFwiLi4vdXRpbC9taW5pbWFsXCIpO1xuXG4vKipcbiAqIENvbnN0cnVjdHMgbmV3IGxvbmcgYml0cy5cbiAqIEBjbGFzc2Rlc2MgSGVscGVyIGNsYXNzIGZvciB3b3JraW5nIHdpdGggdGhlIGxvdyBhbmQgaGlnaCBiaXRzIG9mIGEgNjQgYml0IHZhbHVlLlxuICogQG1lbWJlcm9mIHV0aWxcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtudW1iZXJ9IGxvIExvdyAzMiBiaXRzLCB1bnNpZ25lZFxuICogQHBhcmFtIHtudW1iZXJ9IGhpIEhpZ2ggMzIgYml0cywgdW5zaWduZWRcbiAqL1xuZnVuY3Rpb24gTG9uZ0JpdHMobG8sIGhpKSB7XG5cbiAgICAvLyBub3RlIHRoYXQgdGhlIGNhc3RzIGJlbG93IGFyZSB0aGVvcmV0aWNhbGx5IHVubmVjZXNzYXJ5IGFzIG9mIHRvZGF5LCBidXQgb2xkZXIgc3RhdGljYWxseVxuICAgIC8vIGdlbmVyYXRlZCBjb252ZXJ0ZXIgY29kZSBtaWdodCBzdGlsbCBjYWxsIHRoZSBjdG9yIHdpdGggc2lnbmVkIDMyYml0cy4ga2VwdCBmb3IgY29tcGF0LlxuXG4gICAgLyoqXG4gICAgICogTG93IGJpdHMuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmxvID0gbG8gPj4+IDA7XG5cbiAgICAvKipcbiAgICAgKiBIaWdoIGJpdHMuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmhpID0gaGkgPj4+IDA7XG59XG5cbi8qKlxuICogWmVybyBiaXRzLlxuICogQG1lbWJlcm9mIHV0aWwuTG9uZ0JpdHNcbiAqIEB0eXBlIHt1dGlsLkxvbmdCaXRzfVxuICovXG52YXIgemVybyA9IExvbmdCaXRzLnplcm8gPSBuZXcgTG9uZ0JpdHMoMCwgMCk7XG5cbnplcm8udG9OdW1iZXIgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG56ZXJvLnp6RW5jb2RlID0gemVyby56ekRlY29kZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfTtcbnplcm8ubGVuZ3RoID0gZnVuY3Rpb24oKSB7IHJldHVybiAxOyB9O1xuXG4vKipcbiAqIFplcm8gaGFzaC5cbiAqIEBtZW1iZXJvZiB1dGlsLkxvbmdCaXRzXG4gKiBAdHlwZSB7c3RyaW5nfVxuICovXG52YXIgemVyb0hhc2ggPSBMb25nQml0cy56ZXJvSGFzaCA9IFwiXFwwXFwwXFwwXFwwXFwwXFwwXFwwXFwwXCI7XG5cbi8qKlxuICogQ29uc3RydWN0cyBuZXcgbG9uZyBiaXRzIGZyb20gdGhlIHNwZWNpZmllZCBudW1iZXIuXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgVmFsdWVcbiAqIEByZXR1cm5zIHt1dGlsLkxvbmdCaXRzfSBJbnN0YW5jZVxuICovXG5Mb25nQml0cy5mcm9tTnVtYmVyID0gZnVuY3Rpb24gZnJvbU51bWJlcih2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gMClcbiAgICAgICAgcmV0dXJuIHplcm87XG4gICAgdmFyIHNpZ24gPSB2YWx1ZSA8IDA7XG4gICAgaWYgKHNpZ24pXG4gICAgICAgIHZhbHVlID0gLXZhbHVlO1xuICAgIHZhciBsbyA9IHZhbHVlID4+PiAwLFxuICAgICAgICBoaSA9ICh2YWx1ZSAtIGxvKSAvIDQyOTQ5NjcyOTYgPj4+IDA7XG4gICAgaWYgKHNpZ24pIHtcbiAgICAgICAgaGkgPSB+aGkgPj4+IDA7XG4gICAgICAgIGxvID0gfmxvID4+PiAwO1xuICAgICAgICBpZiAoKytsbyA+IDQyOTQ5NjcyOTUpIHtcbiAgICAgICAgICAgIGxvID0gMDtcbiAgICAgICAgICAgIGlmICgrK2hpID4gNDI5NDk2NzI5NSlcbiAgICAgICAgICAgICAgICBoaSA9IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBMb25nQml0cyhsbywgaGkpO1xufTtcblxuLyoqXG4gKiBDb25zdHJ1Y3RzIG5ldyBsb25nIGJpdHMgZnJvbSBhIG51bWJlciwgbG9uZyBvciBzdHJpbmcuXG4gKiBAcGFyYW0ge0xvbmd8bnVtYmVyfHN0cmluZ30gdmFsdWUgVmFsdWVcbiAqIEByZXR1cm5zIHt1dGlsLkxvbmdCaXRzfSBJbnN0YW5jZVxuICovXG5Mb25nQml0cy5mcm9tID0gZnVuY3Rpb24gZnJvbSh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpXG4gICAgICAgIHJldHVybiBMb25nQml0cy5mcm9tTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAodXRpbC5pc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKHV0aWwuTG9uZylcbiAgICAgICAgICAgIHZhbHVlID0gdXRpbC5Mb25nLmZyb21TdHJpbmcodmFsdWUpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gTG9uZ0JpdHMuZnJvbU51bWJlcihwYXJzZUludCh2YWx1ZSwgMTApKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlLmxvdyB8fCB2YWx1ZS5oaWdoID8gbmV3IExvbmdCaXRzKHZhbHVlLmxvdyA+Pj4gMCwgdmFsdWUuaGlnaCA+Pj4gMCkgOiB6ZXJvO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyB0aGlzIGxvbmcgYml0cyB0byBhIHBvc3NpYmx5IHVuc2FmZSBKYXZhU2NyaXB0IG51bWJlci5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3Vuc2lnbmVkPWZhbHNlXSBXaGV0aGVyIHVuc2lnbmVkIG9yIG5vdFxuICogQHJldHVybnMge251bWJlcn0gUG9zc2libHkgdW5zYWZlIG51bWJlclxuICovXG5Mb25nQml0cy5wcm90b3R5cGUudG9OdW1iZXIgPSBmdW5jdGlvbiB0b051bWJlcih1bnNpZ25lZCkge1xuICAgIGlmICghdW5zaWduZWQgJiYgdGhpcy5oaSA+Pj4gMzEpIHtcbiAgICAgICAgdmFyIGxvID0gfnRoaXMubG8gKyAxID4+PiAwLFxuICAgICAgICAgICAgaGkgPSB+dGhpcy5oaSAgICAgPj4+IDA7XG4gICAgICAgIGlmICghbG8pXG4gICAgICAgICAgICBoaSA9IGhpICsgMSA+Pj4gMDtcbiAgICAgICAgcmV0dXJuIC0obG8gKyBoaSAqIDQyOTQ5NjcyOTYpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sbyArIHRoaXMuaGkgKiA0Mjk0OTY3Mjk2O1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyB0aGlzIGxvbmcgYml0cyB0byBhIGxvbmcuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFt1bnNpZ25lZD1mYWxzZV0gV2hldGhlciB1bnNpZ25lZCBvciBub3RcbiAqIEByZXR1cm5zIHtMb25nfSBMb25nXG4gKi9cbkxvbmdCaXRzLnByb3RvdHlwZS50b0xvbmcgPSBmdW5jdGlvbiB0b0xvbmcodW5zaWduZWQpIHtcbiAgICByZXR1cm4gdXRpbC5Mb25nXG4gICAgICAgID8gbmV3IHV0aWwuTG9uZyh0aGlzLmxvIHwgMCwgdGhpcy5oaSB8IDAsIEJvb2xlYW4odW5zaWduZWQpKVxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICA6IHsgbG93OiB0aGlzLmxvIHwgMCwgaGlnaDogdGhpcy5oaSB8IDAsIHVuc2lnbmVkOiBCb29sZWFuKHVuc2lnbmVkKSB9O1xufTtcblxudmFyIGNoYXJDb2RlQXQgPSBTdHJpbmcucHJvdG90eXBlLmNoYXJDb2RlQXQ7XG5cbi8qKlxuICogQ29uc3RydWN0cyBuZXcgbG9uZyBiaXRzIGZyb20gdGhlIHNwZWNpZmllZCA4IGNoYXJhY3RlcnMgbG9uZyBoYXNoLlxuICogQHBhcmFtIHtzdHJpbmd9IGhhc2ggSGFzaFxuICogQHJldHVybnMge3V0aWwuTG9uZ0JpdHN9IEJpdHNcbiAqL1xuTG9uZ0JpdHMuZnJvbUhhc2ggPSBmdW5jdGlvbiBmcm9tSGFzaChoYXNoKSB7XG4gICAgaWYgKGhhc2ggPT09IHplcm9IYXNoKVxuICAgICAgICByZXR1cm4gemVybztcbiAgICByZXR1cm4gbmV3IExvbmdCaXRzKFxuICAgICAgICAoIGNoYXJDb2RlQXQuY2FsbChoYXNoLCAwKVxuICAgICAgICB8IGNoYXJDb2RlQXQuY2FsbChoYXNoLCAxKSA8PCA4XG4gICAgICAgIHwgY2hhckNvZGVBdC5jYWxsKGhhc2gsIDIpIDw8IDE2XG4gICAgICAgIHwgY2hhckNvZGVBdC5jYWxsKGhhc2gsIDMpIDw8IDI0KSA+Pj4gMFxuICAgICxcbiAgICAgICAgKCBjaGFyQ29kZUF0LmNhbGwoaGFzaCwgNClcbiAgICAgICAgfCBjaGFyQ29kZUF0LmNhbGwoaGFzaCwgNSkgPDwgOFxuICAgICAgICB8IGNoYXJDb2RlQXQuY2FsbChoYXNoLCA2KSA8PCAxNlxuICAgICAgICB8IGNoYXJDb2RlQXQuY2FsbChoYXNoLCA3KSA8PCAyNCkgPj4+IDBcbiAgICApO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyB0aGlzIGxvbmcgYml0cyB0byBhIDggY2hhcmFjdGVycyBsb25nIGhhc2guXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBIYXNoXG4gKi9cbkxvbmdCaXRzLnByb3RvdHlwZS50b0hhc2ggPSBmdW5jdGlvbiB0b0hhc2goKSB7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoXG4gICAgICAgIHRoaXMubG8gICAgICAgICYgMjU1LFxuICAgICAgICB0aGlzLmxvID4+PiA4ICAmIDI1NSxcbiAgICAgICAgdGhpcy5sbyA+Pj4gMTYgJiAyNTUsXG4gICAgICAgIHRoaXMubG8gPj4+IDI0ICAgICAgLFxuICAgICAgICB0aGlzLmhpICAgICAgICAmIDI1NSxcbiAgICAgICAgdGhpcy5oaSA+Pj4gOCAgJiAyNTUsXG4gICAgICAgIHRoaXMuaGkgPj4+IDE2ICYgMjU1LFxuICAgICAgICB0aGlzLmhpID4+PiAyNFxuICAgICk7XG59O1xuXG4vKipcbiAqIFppZy16YWcgZW5jb2RlcyB0aGlzIGxvbmcgYml0cy5cbiAqIEByZXR1cm5zIHt1dGlsLkxvbmdCaXRzfSBgdGhpc2BcbiAqL1xuTG9uZ0JpdHMucHJvdG90eXBlLnp6RW5jb2RlID0gZnVuY3Rpb24genpFbmNvZGUoKSB7XG4gICAgdmFyIG1hc2sgPSAgIHRoaXMuaGkgPj4gMzE7XG4gICAgdGhpcy5oaSAgPSAoKHRoaXMuaGkgPDwgMSB8IHRoaXMubG8gPj4+IDMxKSBeIG1hc2spID4+PiAwO1xuICAgIHRoaXMubG8gID0gKCB0aGlzLmxvIDw8IDEgICAgICAgICAgICAgICAgICAgXiBtYXNrKSA+Pj4gMDtcbiAgICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogWmlnLXphZyBkZWNvZGVzIHRoaXMgbG9uZyBiaXRzLlxuICogQHJldHVybnMge3V0aWwuTG9uZ0JpdHN9IGB0aGlzYFxuICovXG5Mb25nQml0cy5wcm90b3R5cGUuenpEZWNvZGUgPSBmdW5jdGlvbiB6ekRlY29kZSgpIHtcbiAgICB2YXIgbWFzayA9IC0odGhpcy5sbyAmIDEpO1xuICAgIHRoaXMubG8gID0gKCh0aGlzLmxvID4+PiAxIHwgdGhpcy5oaSA8PCAzMSkgXiBtYXNrKSA+Pj4gMDtcbiAgICB0aGlzLmhpICA9ICggdGhpcy5oaSA+Pj4gMSAgICAgICAgICAgICAgICAgIF4gbWFzaykgPj4+IDA7XG4gICAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGxlbmd0aCBvZiB0aGlzIGxvbmdiaXRzIHdoZW4gZW5jb2RlZCBhcyBhIHZhcmludC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IExlbmd0aFxuICovXG5Mb25nQml0cy5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gbGVuZ3RoKCkge1xuICAgIHZhciBwYXJ0MCA9ICB0aGlzLmxvLFxuICAgICAgICBwYXJ0MSA9ICh0aGlzLmxvID4+PiAyOCB8IHRoaXMuaGkgPDwgNCkgPj4+IDAsXG4gICAgICAgIHBhcnQyID0gIHRoaXMuaGkgPj4+IDI0O1xuICAgIHJldHVybiBwYXJ0MiA9PT0gMFxuICAgICAgICAgPyBwYXJ0MSA9PT0gMFxuICAgICAgICAgICA/IHBhcnQwIDwgMTYzODRcbiAgICAgICAgICAgICA/IHBhcnQwIDwgMTI4ID8gMSA6IDJcbiAgICAgICAgICAgICA6IHBhcnQwIDwgMjA5NzE1MiA/IDMgOiA0XG4gICAgICAgICAgIDogcGFydDEgPCAxNjM4NFxuICAgICAgICAgICAgID8gcGFydDEgPCAxMjggPyA1IDogNlxuICAgICAgICAgICAgIDogcGFydDEgPCAyMDk3MTUyID8gNyA6IDhcbiAgICAgICAgIDogcGFydDIgPCAxMjggPyA5IDogMTA7XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgdXRpbCA9IGV4cG9ydHM7XG5cbi8vIHVzZWQgdG8gcmV0dXJuIGEgUHJvbWlzZSB3aGVyZSBjYWxsYmFjayBpcyBvbWl0dGVkXG51dGlsLmFzUHJvbWlzZSA9IHJlcXVpcmUoXCJAcHJvdG9idWZqcy9hc3Byb21pc2VcIik7XG5cbi8vIGNvbnZlcnRzIHRvIC8gZnJvbSBiYXNlNjQgZW5jb2RlZCBzdHJpbmdzXG51dGlsLmJhc2U2NCA9IHJlcXVpcmUoXCJAcHJvdG9idWZqcy9iYXNlNjRcIik7XG5cbi8vIGJhc2UgY2xhc3Mgb2YgcnBjLlNlcnZpY2VcbnV0aWwuRXZlbnRFbWl0dGVyID0gcmVxdWlyZShcIkBwcm90b2J1ZmpzL2V2ZW50ZW1pdHRlclwiKTtcblxuLy8gZmxvYXQgaGFuZGxpbmcgYWNjcm9zcyBicm93c2Vyc1xudXRpbC5mbG9hdCA9IHJlcXVpcmUoXCJAcHJvdG9idWZqcy9mbG9hdFwiKTtcblxuLy8gcmVxdWlyZXMgbW9kdWxlcyBvcHRpb25hbGx5IGFuZCBoaWRlcyB0aGUgY2FsbCBmcm9tIGJ1bmRsZXJzXG51dGlsLmlucXVpcmUgPSByZXF1aXJlKFwiQHByb3RvYnVmanMvaW5xdWlyZVwiKTtcblxuLy8gY29udmVydHMgdG8gLyBmcm9tIHV0ZjggZW5jb2RlZCBzdHJpbmdzXG51dGlsLnV0ZjggPSByZXF1aXJlKFwiQHByb3RvYnVmanMvdXRmOFwiKTtcblxuLy8gcHJvdmlkZXMgYSBub2RlLWxpa2UgYnVmZmVyIHBvb2wgaW4gdGhlIGJyb3dzZXJcbnV0aWwucG9vbCA9IHJlcXVpcmUoXCJAcHJvdG9idWZqcy9wb29sXCIpO1xuXG4vLyB1dGlsaXR5IHRvIHdvcmsgd2l0aCB0aGUgbG93IGFuZCBoaWdoIGJpdHMgb2YgYSA2NCBiaXQgdmFsdWVcbnV0aWwuTG9uZ0JpdHMgPSByZXF1aXJlKFwiLi9sb25nYml0c1wiKTtcblxuLyoqXG4gKiBXaGV0aGVyIHJ1bm5pbmcgd2l0aGluIG5vZGUgb3Igbm90LlxuICogQG1lbWJlcm9mIHV0aWxcbiAqIEB0eXBlIHtib29sZWFufVxuICovXG51dGlsLmlzTm9kZSA9IEJvb2xlYW4odHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgICYmIGdsb2JhbFxuICAgICAgICAgICAgICAgICAgICYmIGdsb2JhbC5wcm9jZXNzXG4gICAgICAgICAgICAgICAgICAgJiYgZ2xvYmFsLnByb2Nlc3MudmVyc2lvbnNcbiAgICAgICAgICAgICAgICAgICAmJiBnbG9iYWwucHJvY2Vzcy52ZXJzaW9ucy5ub2RlKTtcblxuLyoqXG4gKiBHbG9iYWwgb2JqZWN0IHJlZmVyZW5jZS5cbiAqIEBtZW1iZXJvZiB1dGlsXG4gKiBAdHlwZSB7T2JqZWN0fVxuICovXG51dGlsLmdsb2JhbCA9IHV0aWwuaXNOb2RlICYmIGdsb2JhbFxuICAgICAgICAgICB8fCB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHdpbmRvd1xuICAgICAgICAgICB8fCB0eXBlb2Ygc2VsZiAgICE9PSBcInVuZGVmaW5lZFwiICYmIHNlbGZcbiAgICAgICAgICAgfHwgdGhpczsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1pbnZhbGlkLXRoaXNcblxuLyoqXG4gKiBBbiBpbW11YWJsZSBlbXB0eSBhcnJheS5cbiAqIEBtZW1iZXJvZiB1dGlsXG4gKiBAdHlwZSB7QXJyYXkuPCo+fVxuICogQGNvbnN0XG4gKi9cbnV0aWwuZW1wdHlBcnJheSA9IE9iamVjdC5mcmVlemUgPyBPYmplY3QuZnJlZXplKFtdKSA6IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIFtdOyAvLyB1c2VkIG9uIHByb3RvdHlwZXNcblxuLyoqXG4gKiBBbiBpbW11dGFibGUgZW1wdHkgb2JqZWN0LlxuICogQHR5cGUge09iamVjdH1cbiAqIEBjb25zdFxuICovXG51dGlsLmVtcHR5T2JqZWN0ID0gT2JqZWN0LmZyZWV6ZSA/IE9iamVjdC5mcmVlemUoe30pIDogLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8ge307IC8vIHVzZWQgb24gcHJvdG90eXBlc1xuXG4vKipcbiAqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgYW4gaW50ZWdlci5cbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHsqfSB2YWx1ZSBWYWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSB2YWx1ZSBpcyBhbiBpbnRlZ2VyXG4gKi9cbnV0aWwuaXNJbnRlZ2VyID0gTnVtYmVyLmlzSW50ZWdlciB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBmdW5jdGlvbiBpc0ludGVnZXIodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiICYmIGlzRmluaXRlKHZhbHVlKSAmJiBNYXRoLmZsb29yKHZhbHVlKSA9PT0gdmFsdWU7XG59O1xuXG4vKipcbiAqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgYSBzdHJpbmcuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIHZhbHVlIGlzIGEgc3RyaW5nXG4gKi9cbnV0aWwuaXNTdHJpbmcgPSBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgdmFsdWUgaW5zdGFuY2VvZiBTdHJpbmc7XG59O1xuXG4vKipcbiAqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgYSBub24tbnVsbCBvYmplY3QuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIHZhbHVlIGlzIGEgbm9uLW51bGwgb2JqZWN0XG4gKi9cbnV0aWwuaXNPYmplY3QgPSBmdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCI7XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIHByb3BlcnR5IG9uIGEgbWVzc2FnZSBpcyBjb25zaWRlcmVkIHRvIGJlIHByZXNlbnQuXG4gKiBUaGlzIGlzIGFuIGFsaWFzIG9mIHtAbGluayB1dGlsLmlzU2V0fS5cbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtPYmplY3R9IG9iaiBQbGFpbiBvYmplY3Qgb3IgbWVzc2FnZSBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmd9IHByb3AgUHJvcGVydHkgbmFtZVxuICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiBjb25zaWRlcmVkIHRvIGJlIHByZXNlbnQsIG90aGVyd2lzZSBgZmFsc2VgXG4gKi9cbnV0aWwuaXNzZXQgPVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHByb3BlcnR5IG9uIGEgbWVzc2FnZSBpcyBjb25zaWRlcmVkIHRvIGJlIHByZXNlbnQuXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqIFBsYWluIG9iamVjdCBvciBtZXNzYWdlIGluc3RhbmNlXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcCBQcm9wZXJ0eSBuYW1lXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIGNvbnNpZGVyZWQgdG8gYmUgcHJlc2VudCwgb3RoZXJ3aXNlIGBmYWxzZWBcbiAqL1xudXRpbC5pc1NldCA9IGZ1bmN0aW9uIGlzU2V0KG9iaiwgcHJvcCkge1xuICAgIHZhciB2YWx1ZSA9IG9ialtwcm9wXTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiBvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZXFlcWVxLCBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5sZW5ndGggOiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoKSA+IDA7XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuLyoqXG4gKiBBbnkgY29tcGF0aWJsZSBCdWZmZXIgaW5zdGFuY2UuXG4gKiBUaGlzIGlzIGEgbWluaW1hbCBzdGFuZC1hbG9uZSBkZWZpbml0aW9uIG9mIGEgQnVmZmVyIGluc3RhbmNlLiBUaGUgYWN0dWFsIHR5cGUgaXMgdGhhdCBleHBvcnRlZCBieSBub2RlJ3MgdHlwaW5ncy5cbiAqIEBpbnRlcmZhY2UgQnVmZmVyXG4gKiBAZXh0ZW5kcyBVaW50OEFycmF5XG4gKi9cblxuLyoqXG4gKiBOb2RlJ3MgQnVmZmVyIGNsYXNzIGlmIGF2YWlsYWJsZS5cbiAqIEB0eXBlIHtDb25zdHJ1Y3RvcjxCdWZmZXI+fVxuICovXG51dGlsLkJ1ZmZlciA9IChmdW5jdGlvbigpIHtcbiAgICB0cnkge1xuICAgICAgICB2YXIgQnVmZmVyID0gdXRpbC5pbnF1aXJlKFwiYnVmZmVyXCIpLkJ1ZmZlcjtcbiAgICAgICAgLy8gcmVmdXNlIHRvIHVzZSBub24tbm9kZSBidWZmZXJzIGlmIG5vdCBleHBsaWNpdGx5IGFzc2lnbmVkIChwZXJmIHJlYXNvbnMpOlxuICAgICAgICByZXR1cm4gQnVmZmVyLnByb3RvdHlwZS51dGY4V3JpdGUgPyBCdWZmZXIgOiAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBudWxsO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufSkoKTtcblxuLy8gSW50ZXJuYWwgYWxpYXMgb2Ygb3IgcG9seWZ1bGwgZm9yIEJ1ZmZlci5mcm9tLlxudXRpbC5fQnVmZmVyX2Zyb20gPSBudWxsO1xuXG4vLyBJbnRlcm5hbCBhbGlhcyBvZiBvciBwb2x5ZmlsbCBmb3IgQnVmZmVyLmFsbG9jVW5zYWZlLlxudXRpbC5fQnVmZmVyX2FsbG9jVW5zYWZlID0gbnVsbDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGJ1ZmZlciBvZiB3aGF0ZXZlciB0eXBlIHN1cHBvcnRlZCBieSB0aGUgZW52aXJvbm1lbnQuXG4gKiBAcGFyYW0ge251bWJlcnxudW1iZXJbXX0gW3NpemVPckFycmF5PTBdIEJ1ZmZlciBzaXplIG9yIG51bWJlciBhcnJheVxuICogQHJldHVybnMge1VpbnQ4QXJyYXl8QnVmZmVyfSBCdWZmZXJcbiAqL1xudXRpbC5uZXdCdWZmZXIgPSBmdW5jdGlvbiBuZXdCdWZmZXIoc2l6ZU9yQXJyYXkpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiB0eXBlb2Ygc2l6ZU9yQXJyYXkgPT09IFwibnVtYmVyXCJcbiAgICAgICAgPyB1dGlsLkJ1ZmZlclxuICAgICAgICAgICAgPyB1dGlsLl9CdWZmZXJfYWxsb2NVbnNhZmUoc2l6ZU9yQXJyYXkpXG4gICAgICAgICAgICA6IG5ldyB1dGlsLkFycmF5KHNpemVPckFycmF5KVxuICAgICAgICA6IHV0aWwuQnVmZmVyXG4gICAgICAgICAgICA/IHV0aWwuX0J1ZmZlcl9mcm9tKHNpemVPckFycmF5KVxuICAgICAgICAgICAgOiB0eXBlb2YgVWludDhBcnJheSA9PT0gXCJ1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgID8gc2l6ZU9yQXJyYXlcbiAgICAgICAgICAgICAgICA6IG5ldyBVaW50OEFycmF5KHNpemVPckFycmF5KTtcbn07XG5cbi8qKlxuICogQXJyYXkgaW1wbGVtZW50YXRpb24gdXNlZCBpbiB0aGUgYnJvd3Nlci4gYFVpbnQ4QXJyYXlgIGlmIHN1cHBvcnRlZCwgb3RoZXJ3aXNlIGBBcnJheWAuXG4gKiBAdHlwZSB7Q29uc3RydWN0b3I8VWludDhBcnJheT59XG4gKi9cbnV0aWwuQXJyYXkgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gXCJ1bmRlZmluZWRcIiA/IFVpbnQ4QXJyYXkgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gOiBBcnJheTtcblxuLyoqXG4gKiBBbnkgY29tcGF0aWJsZSBMb25nIGluc3RhbmNlLlxuICogVGhpcyBpcyBhIG1pbmltYWwgc3RhbmQtYWxvbmUgZGVmaW5pdGlvbiBvZiBhIExvbmcgaW5zdGFuY2UuIFRoZSBhY3R1YWwgdHlwZSBpcyB0aGF0IGV4cG9ydGVkIGJ5IGxvbmcuanMuXG4gKiBAaW50ZXJmYWNlIExvbmdcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsb3cgTG93IGJpdHNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBoaWdoIEhpZ2ggYml0c1xuICogQHByb3BlcnR5IHtib29sZWFufSB1bnNpZ25lZCBXaGV0aGVyIHVuc2lnbmVkIG9yIG5vdFxuICovXG5cbi8qKlxuICogTG9uZy5qcydzIExvbmcgY2xhc3MgaWYgYXZhaWxhYmxlLlxuICogQHR5cGUge0NvbnN0cnVjdG9yPExvbmc+fVxuICovXG51dGlsLkxvbmcgPSAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyB1dGlsLmdsb2JhbC5kY29kZUlPICYmIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIHV0aWwuZ2xvYmFsLmRjb2RlSU8uTG9uZ1xuICAgICAgICAgfHwgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gdXRpbC5nbG9iYWwuTG9uZ1xuICAgICAgICAgfHwgdXRpbC5pbnF1aXJlKFwibG9uZ1wiKTtcblxuLyoqXG4gKiBSZWd1bGFyIGV4cHJlc3Npb24gdXNlZCB0byB2ZXJpZnkgMiBiaXQgKGBib29sYCkgbWFwIGtleXMuXG4gKiBAdHlwZSB7UmVnRXhwfVxuICogQGNvbnN0XG4gKi9cbnV0aWwua2V5MlJlID0gL150cnVlfGZhbHNlfDB8MSQvO1xuXG4vKipcbiAqIFJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIHRvIHZlcmlmeSAzMiBiaXQgKGBpbnQzMmAgZXRjLikgbWFwIGtleXMuXG4gKiBAdHlwZSB7UmVnRXhwfVxuICogQGNvbnN0XG4gKi9cbnV0aWwua2V5MzJSZSA9IC9eLT8oPzowfFsxLTldWzAtOV0qKSQvO1xuXG4vKipcbiAqIFJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIHRvIHZlcmlmeSA2NCBiaXQgKGBpbnQ2NGAgZXRjLikgbWFwIGtleXMuXG4gKiBAdHlwZSB7UmVnRXhwfVxuICogQGNvbnN0XG4gKi9cbnV0aWwua2V5NjRSZSA9IC9eKD86W1xcXFx4MDAtXFxcXHhmZl17OH18LT8oPzowfFsxLTldWzAtOV0qKSkkLztcblxuLyoqXG4gKiBDb252ZXJ0cyBhIG51bWJlciBvciBsb25nIHRvIGFuIDggY2hhcmFjdGVycyBsb25nIGhhc2ggc3RyaW5nLlxuICogQHBhcmFtIHtMb25nfG51bWJlcn0gdmFsdWUgVmFsdWUgdG8gY29udmVydFxuICogQHJldHVybnMge3N0cmluZ30gSGFzaFxuICovXG51dGlsLmxvbmdUb0hhc2ggPSBmdW5jdGlvbiBsb25nVG9IYXNoKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gICAgICAgID8gdXRpbC5Mb25nQml0cy5mcm9tKHZhbHVlKS50b0hhc2goKVxuICAgICAgICA6IHV0aWwuTG9uZ0JpdHMuemVyb0hhc2g7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGFuIDggY2hhcmFjdGVycyBsb25nIGhhc2ggc3RyaW5nIHRvIGEgbG9uZyBvciBudW1iZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gaGFzaCBIYXNoXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFt1bnNpZ25lZD1mYWxzZV0gV2hldGhlciB1bnNpZ25lZCBvciBub3RcbiAqIEByZXR1cm5zIHtMb25nfG51bWJlcn0gT3JpZ2luYWwgdmFsdWVcbiAqL1xudXRpbC5sb25nRnJvbUhhc2ggPSBmdW5jdGlvbiBsb25nRnJvbUhhc2goaGFzaCwgdW5zaWduZWQpIHtcbiAgICB2YXIgYml0cyA9IHV0aWwuTG9uZ0JpdHMuZnJvbUhhc2goaGFzaCk7XG4gICAgaWYgKHV0aWwuTG9uZylcbiAgICAgICAgcmV0dXJuIHV0aWwuTG9uZy5mcm9tQml0cyhiaXRzLmxvLCBiaXRzLmhpLCB1bnNpZ25lZCk7XG4gICAgcmV0dXJuIGJpdHMudG9OdW1iZXIoQm9vbGVhbih1bnNpZ25lZCkpO1xufTtcblxuLyoqXG4gKiBNZXJnZXMgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHNvdXJjZSBvYmplY3QgaW50byB0aGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQG1lbWJlcm9mIHV0aWxcbiAqIEBwYXJhbSB7T2JqZWN0LjxzdHJpbmcsKj59IGRzdCBEZXN0aW5hdGlvbiBvYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0LjxzdHJpbmcsKj59IHNyYyBTb3VyY2Ugb2JqZWN0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpZk5vdFNldD1mYWxzZV0gTWVyZ2VzIG9ubHkgaWYgdGhlIGtleSBpcyBub3QgYWxyZWFkeSBzZXRcbiAqIEByZXR1cm5zIHtPYmplY3QuPHN0cmluZywqPn0gRGVzdGluYXRpb24gb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIG1lcmdlKGRzdCwgc3JjLCBpZk5vdFNldCkgeyAvLyB1c2VkIGJ5IGNvbnZlcnRlcnNcbiAgICBmb3IgKHZhciBrZXlzID0gT2JqZWN0LmtleXMoc3JjKSwgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKVxuICAgICAgICBpZiAoZHN0W2tleXNbaV1dID09PSB1bmRlZmluZWQgfHwgIWlmTm90U2V0KVxuICAgICAgICAgICAgZHN0W2tleXNbaV1dID0gc3JjW2tleXNbaV1dO1xuICAgIHJldHVybiBkc3Q7XG59XG5cbnV0aWwubWVyZ2UgPSBtZXJnZTtcblxuLyoqXG4gKiBDb252ZXJ0cyB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGEgc3RyaW5nIHRvIGxvd2VyIGNhc2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyIFN0cmluZyB0byBjb252ZXJ0XG4gKiBAcmV0dXJucyB7c3RyaW5nfSBDb252ZXJ0ZWQgc3RyaW5nXG4gKi9cbnV0aWwubGNGaXJzdCA9IGZ1bmN0aW9uIGxjRmlyc3Qoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIHN0ci5zdWJzdHJpbmcoMSk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjdXN0b20gZXJyb3IgY29uc3RydWN0b3IuXG4gKiBAbWVtYmVyb2YgdXRpbFxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgRXJyb3IgbmFtZVxuICogQHJldHVybnMge0NvbnN0cnVjdG9yPEVycm9yPn0gQ3VzdG9tIGVycm9yIGNvbnN0cnVjdG9yXG4gKi9cbmZ1bmN0aW9uIG5ld0Vycm9yKG5hbWUpIHtcblxuICAgIGZ1bmN0aW9uIEN1c3RvbUVycm9yKG1lc3NhZ2UsIHByb3BlcnRpZXMpIHtcblxuICAgICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQ3VzdG9tRXJyb3IpKVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDdXN0b21FcnJvcihtZXNzYWdlLCBwcm9wZXJ0aWVzKTtcblxuICAgICAgICAvLyBFcnJvci5jYWxsKHRoaXMsIG1lc3NhZ2UpO1xuICAgICAgICAvLyBeIGp1c3QgcmV0dXJucyBhIG5ldyBlcnJvciBpbnN0YW5jZSBiZWNhdXNlIHRoZSBjdG9yIGNhbiBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvblxuXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcIm1lc3NhZ2VcIiwgeyBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbWVzc2FnZTsgfSB9KTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIC8vIG5vZGVcbiAgICAgICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIEN1c3RvbUVycm9yKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIFwic3RhY2tcIiwgeyB2YWx1ZTogbmV3IEVycm9yKCkuc3RhY2sgfHwgXCJcIiB9KTtcblxuICAgICAgICBpZiAocHJvcGVydGllcylcbiAgICAgICAgICAgIG1lcmdlKHRoaXMsIHByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIChDdXN0b21FcnJvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yID0gQ3VzdG9tRXJyb3I7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ3VzdG9tRXJyb3IucHJvdG90eXBlLCBcIm5hbWVcIiwgeyBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbmFtZTsgfSB9KTtcblxuICAgIEN1c3RvbUVycm9yLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5uYW1lICsgXCI6IFwiICsgdGhpcy5tZXNzYWdlO1xuICAgIH07XG5cbiAgICByZXR1cm4gQ3VzdG9tRXJyb3I7XG59XG5cbnV0aWwubmV3RXJyb3IgPSBuZXdFcnJvcjtcblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGEgbmV3IHByb3RvY29sIGVycm9yLlxuICogQGNsYXNzZGVzYyBFcnJvciBzdWJjbGFzcyBpbmRpY2F0aW5nIGEgcHJvdG9jb2wgc3BlY2lmYyBlcnJvci5cbiAqIEBtZW1iZXJvZiB1dGlsXG4gKiBAZXh0ZW5kcyBFcnJvclxuICogQHRlbXBsYXRlIFQgZXh0ZW5kcyBNZXNzYWdlPFQ+XG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIEVycm9yIG1lc3NhZ2VcbiAqIEBwYXJhbSB7T2JqZWN0LjxzdHJpbmcsKj59IFtwcm9wZXJ0aWVzXSBBZGRpdGlvbmFsIHByb3BlcnRpZXNcbiAqIEBleGFtcGxlXG4gKiB0cnkge1xuICogICAgIE15TWVzc2FnZS5kZWNvZGUoc29tZUJ1ZmZlcik7IC8vIHRocm93cyBpZiByZXF1aXJlZCBmaWVsZHMgYXJlIG1pc3NpbmdcbiAqIH0gY2F0Y2ggKGUpIHtcbiAqICAgICBpZiAoZSBpbnN0YW5jZW9mIFByb3RvY29sRXJyb3IgJiYgZS5pbnN0YW5jZSlcbiAqICAgICAgICAgY29uc29sZS5sb2coXCJkZWNvZGVkIHNvIGZhcjogXCIgKyBKU09OLnN0cmluZ2lmeShlLmluc3RhbmNlKSk7XG4gKiB9XG4gKi9cbnV0aWwuUHJvdG9jb2xFcnJvciA9IG5ld0Vycm9yKFwiUHJvdG9jb2xFcnJvclwiKTtcblxuLyoqXG4gKiBTbyBmYXIgZGVjb2RlZCBtZXNzYWdlIGluc3RhbmNlLlxuICogQG5hbWUgdXRpbC5Qcm90b2NvbEVycm9yI2luc3RhbmNlXG4gKiBAdHlwZSB7TWVzc2FnZTxUPn1cbiAqL1xuXG4vKipcbiAqIEEgT25lT2YgZ2V0dGVyIGFzIHJldHVybmVkIGJ5IHtAbGluayB1dGlsLm9uZU9mR2V0dGVyfS5cbiAqIEB0eXBlZGVmIE9uZU9mR2V0dGVyXG4gKiBAdHlwZSB7ZnVuY3Rpb259XG4gKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH0gU2V0IGZpZWxkIG5hbWUsIGlmIGFueVxuICovXG5cbi8qKlxuICogQnVpbGRzIGEgZ2V0dGVyIGZvciBhIG9uZW9mJ3MgcHJlc2VudCBmaWVsZCBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmdbXX0gZmllbGROYW1lcyBGaWVsZCBuYW1lc1xuICogQHJldHVybnMge09uZU9mR2V0dGVyfSBVbmJvdW5kIGdldHRlclxuICovXG51dGlsLm9uZU9mR2V0dGVyID0gZnVuY3Rpb24gZ2V0T25lT2YoZmllbGROYW1lcykge1xuICAgIHZhciBmaWVsZE1hcCA9IHt9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmllbGROYW1lcy5sZW5ndGg7ICsraSlcbiAgICAgICAgZmllbGRNYXBbZmllbGROYW1lc1tpXV0gPSAxO1xuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMge3N0cmluZ3x1bmRlZmluZWR9IFNldCBmaWVsZCBuYW1lLCBpZiBhbnlcbiAgICAgKiBAdGhpcyBPYmplY3RcbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gICAgICAgIGZvciAodmFyIGtleXMgPSBPYmplY3Qua2V5cyh0aGlzKSwgaSA9IGtleXMubGVuZ3RoIC0gMTsgaSA+IC0xOyAtLWkpXG4gICAgICAgICAgICBpZiAoZmllbGRNYXBba2V5c1tpXV0gPT09IDEgJiYgdGhpc1trZXlzW2ldXSAhPT0gdW5kZWZpbmVkICYmIHRoaXNba2V5c1tpXV0gIT09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleXNbaV07XG4gICAgfTtcbn07XG5cbi8qKlxuICogQSBPbmVPZiBzZXR0ZXIgYXMgcmV0dXJuZWQgYnkge0BsaW5rIHV0aWwub25lT2ZTZXR0ZXJ9LlxuICogQHR5cGVkZWYgT25lT2ZTZXR0ZXJcbiAqIEB0eXBlIHtmdW5jdGlvbn1cbiAqIEBwYXJhbSB7c3RyaW5nfHVuZGVmaW5lZH0gdmFsdWUgRmllbGQgbmFtZVxuICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAqL1xuXG4vKipcbiAqIEJ1aWxkcyBhIHNldHRlciBmb3IgYSBvbmVvZidzIHByZXNlbnQgZmllbGQgbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nW119IGZpZWxkTmFtZXMgRmllbGQgbmFtZXNcbiAqIEByZXR1cm5zIHtPbmVPZlNldHRlcn0gVW5ib3VuZCBzZXR0ZXJcbiAqL1xudXRpbC5vbmVPZlNldHRlciA9IGZ1bmN0aW9uIHNldE9uZU9mKGZpZWxkTmFtZXMpIHtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIEZpZWxkIG5hbWVcbiAgICAgKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICAgICAqIEB0aGlzIE9iamVjdFxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICByZXR1cm4gZnVuY3Rpb24obmFtZSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpZWxkTmFtZXMubGVuZ3RoOyArK2kpXG4gICAgICAgICAgICBpZiAoZmllbGROYW1lc1tpXSAhPT0gbmFtZSlcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpc1tmaWVsZE5hbWVzW2ldXTtcbiAgICB9O1xufTtcblxuLyoqXG4gKiBEZWZhdWx0IGNvbnZlcnNpb24gb3B0aW9ucyB1c2VkIGZvciB7QGxpbmsgTWVzc2FnZSN0b0pTT059IGltcGxlbWVudGF0aW9ucy5cbiAqXG4gKiBUaGVzZSBvcHRpb25zIGFyZSBjbG9zZSB0byBwcm90bzMncyBKU09OIG1hcHBpbmcgd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgaW50ZXJuYWwgdHlwZXMgbGlrZSBBbnkgYXJlIGhhbmRsZWQganVzdCBsaWtlIG1lc3NhZ2VzLiBNb3JlIHByZWNpc2VseTpcbiAqXG4gKiAtIExvbmdzIGJlY29tZSBzdHJpbmdzXG4gKiAtIEVudW1zIGJlY29tZSBzdHJpbmcga2V5c1xuICogLSBCeXRlcyBiZWNvbWUgYmFzZTY0IGVuY29kZWQgc3RyaW5nc1xuICogLSAoU3ViLSlNZXNzYWdlcyBiZWNvbWUgcGxhaW4gb2JqZWN0c1xuICogLSBNYXBzIGJlY29tZSBwbGFpbiBvYmplY3RzIHdpdGggYWxsIHN0cmluZyBrZXlzXG4gKiAtIFJlcGVhdGVkIGZpZWxkcyBiZWNvbWUgYXJyYXlzXG4gKiAtIE5hTiBhbmQgSW5maW5pdHkgZm9yIGZsb2F0IGFuZCBkb3VibGUgZmllbGRzIGJlY29tZSBzdHJpbmdzXG4gKlxuICogQHR5cGUge0lDb252ZXJzaW9uT3B0aW9uc31cbiAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vcHJvdG9jb2wtYnVmZmVycy9kb2NzL3Byb3RvMz9obD1lbiNqc29uXG4gKi9cbnV0aWwudG9KU09OT3B0aW9ucyA9IHtcbiAgICBsb25nczogU3RyaW5nLFxuICAgIGVudW1zOiBTdHJpbmcsXG4gICAgYnl0ZXM6IFN0cmluZyxcbiAgICBqc29uOiB0cnVlXG59O1xuXG4vLyBTZXRzIHVwIGJ1ZmZlciB1dGlsaXR5IGFjY29yZGluZyB0byB0aGUgZW52aXJvbm1lbnQgKGNhbGxlZCBpbiBpbmRleC1taW5pbWFsKVxudXRpbC5fY29uZmlndXJlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIEJ1ZmZlciA9IHV0aWwuQnVmZmVyO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghQnVmZmVyKSB7XG4gICAgICAgIHV0aWwuX0J1ZmZlcl9mcm9tID0gdXRpbC5fQnVmZmVyX2FsbG9jVW5zYWZlID0gbnVsbDtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBiZWNhdXNlIG5vZGUgNC54IGJ1ZmZlcnMgYXJlIGluY29tcGF0aWJsZSAmIGltbXV0YWJsZVxuICAgIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2Rjb2RlSU8vcHJvdG9idWYuanMvcHVsbC82NjVcbiAgICB1dGlsLl9CdWZmZXJfZnJvbSA9IEJ1ZmZlci5mcm9tICE9PSBVaW50OEFycmF5LmZyb20gJiYgQnVmZmVyLmZyb20gfHxcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZnVuY3Rpb24gQnVmZmVyX2Zyb20odmFsdWUsIGVuY29kaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEJ1ZmZlcih2YWx1ZSwgZW5jb2RpbmcpO1xuICAgICAgICB9O1xuICAgIHV0aWwuX0J1ZmZlcl9hbGxvY1Vuc2FmZSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSB8fFxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBmdW5jdGlvbiBCdWZmZXJfYWxsb2NVbnNhZmUoc2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBCdWZmZXIoc2l6ZSk7XG4gICAgICAgIH07XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5tb2R1bGUuZXhwb3J0cyA9IFdyaXRlcjtcblxudmFyIHV0aWwgICAgICA9IHJlcXVpcmUoXCIuL3V0aWwvbWluaW1hbFwiKTtcblxudmFyIEJ1ZmZlcldyaXRlcjsgLy8gY3ljbGljXG5cbnZhciBMb25nQml0cyAgPSB1dGlsLkxvbmdCaXRzLFxuICAgIGJhc2U2NCAgICA9IHV0aWwuYmFzZTY0LFxuICAgIHV0ZjggICAgICA9IHV0aWwudXRmODtcblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGEgbmV3IHdyaXRlciBvcGVyYXRpb24gaW5zdGFuY2UuXG4gKiBAY2xhc3NkZXNjIFNjaGVkdWxlZCB3cml0ZXIgb3BlcmF0aW9uLlxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge2Z1bmN0aW9uKCosIFVpbnQ4QXJyYXksIG51bWJlcil9IGZuIEZ1bmN0aW9uIHRvIGNhbGxcbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW4gVmFsdWUgYnl0ZSBsZW5ndGhcbiAqIEBwYXJhbSB7Kn0gdmFsIFZhbHVlIHRvIHdyaXRlXG4gKiBAaWdub3JlXG4gKi9cbmZ1bmN0aW9uIE9wKGZuLCBsZW4sIHZhbCkge1xuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgKiBAdHlwZSB7ZnVuY3Rpb24oVWludDhBcnJheSwgbnVtYmVyLCAqKX1cbiAgICAgKi9cbiAgICB0aGlzLmZuID0gZm47XG5cbiAgICAvKipcbiAgICAgKiBWYWx1ZSBieXRlIGxlbmd0aC5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMubGVuID0gbGVuO1xuXG4gICAgLyoqXG4gICAgICogTmV4dCBvcGVyYXRpb24uXG4gICAgICogQHR5cGUge1dyaXRlci5PcHx1bmRlZmluZWR9XG4gICAgICovXG4gICAgdGhpcy5uZXh0ID0gdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogVmFsdWUgdG8gd3JpdGUuXG4gICAgICogQHR5cGUgeyp9XG4gICAgICovXG4gICAgdGhpcy52YWwgPSB2YWw7IC8vIHR5cGUgdmFyaWVzXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBub29wKCkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eS1mdW5jdGlvblxuXG4vKipcbiAqIENvbnN0cnVjdHMgYSBuZXcgd3JpdGVyIHN0YXRlIGluc3RhbmNlLlxuICogQGNsYXNzZGVzYyBDb3BpZWQgd3JpdGVyIHN0YXRlLlxuICogQG1lbWJlcm9mIFdyaXRlclxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge1dyaXRlcn0gd3JpdGVyIFdyaXRlciB0byBjb3B5IHN0YXRlIGZyb21cbiAqIEBpZ25vcmVcbiAqL1xuZnVuY3Rpb24gU3RhdGUod3JpdGVyKSB7XG5cbiAgICAvKipcbiAgICAgKiBDdXJyZW50IGhlYWQuXG4gICAgICogQHR5cGUge1dyaXRlci5PcH1cbiAgICAgKi9cbiAgICB0aGlzLmhlYWQgPSB3cml0ZXIuaGVhZDtcblxuICAgIC8qKlxuICAgICAqIEN1cnJlbnQgdGFpbC5cbiAgICAgKiBAdHlwZSB7V3JpdGVyLk9wfVxuICAgICAqL1xuICAgIHRoaXMudGFpbCA9IHdyaXRlci50YWlsO1xuXG4gICAgLyoqXG4gICAgICogQ3VycmVudCBidWZmZXIgbGVuZ3RoLlxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgdGhpcy5sZW4gPSB3cml0ZXIubGVuO1xuXG4gICAgLyoqXG4gICAgICogTmV4dCBzdGF0ZS5cbiAgICAgKiBAdHlwZSB7U3RhdGV8bnVsbH1cbiAgICAgKi9cbiAgICB0aGlzLm5leHQgPSB3cml0ZXIuc3RhdGVzO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdHMgYSBuZXcgd3JpdGVyIGluc3RhbmNlLlxuICogQGNsYXNzZGVzYyBXaXJlIGZvcm1hdCB3cml0ZXIgdXNpbmcgYFVpbnQ4QXJyYXlgIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGBBcnJheWAuXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gV3JpdGVyKCkge1xuXG4gICAgLyoqXG4gICAgICogQ3VycmVudCBsZW5ndGguXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLmxlbiA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBPcGVyYXRpb25zIGhlYWQuXG4gICAgICogQHR5cGUge09iamVjdH1cbiAgICAgKi9cbiAgICB0aGlzLmhlYWQgPSBuZXcgT3Aobm9vcCwgMCwgMCk7XG5cbiAgICAvKipcbiAgICAgKiBPcGVyYXRpb25zIHRhaWxcbiAgICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgICAqL1xuICAgIHRoaXMudGFpbCA9IHRoaXMuaGVhZDtcblxuICAgIC8qKlxuICAgICAqIExpbmtlZCBmb3JrZWQgc3RhdGVzLlxuICAgICAqIEB0eXBlIHtPYmplY3R8bnVsbH1cbiAgICAgKi9cbiAgICB0aGlzLnN0YXRlcyA9IG51bGw7XG5cbiAgICAvLyBXaGVuIGEgdmFsdWUgaXMgd3JpdHRlbiwgdGhlIHdyaXRlciBjYWxjdWxhdGVzIGl0cyBieXRlIGxlbmd0aCBhbmQgcHV0cyBpdCBpbnRvIGEgbGlua2VkXG4gICAgLy8gbGlzdCBvZiBvcGVyYXRpb25zIHRvIHBlcmZvcm0gd2hlbiBmaW5pc2goKSBpcyBjYWxsZWQuIFRoaXMgYm90aCBhbGxvd3MgdXMgdG8gYWxsb2NhdGVcbiAgICAvLyBidWZmZXJzIG9mIHRoZSBleGFjdCByZXF1aXJlZCBzaXplIGFuZCByZWR1Y2VzIHRoZSBhbW91bnQgb2Ygd29yayB3ZSBoYXZlIHRvIGRvIGNvbXBhcmVkXG4gICAgLy8gdG8gZmlyc3QgY2FsY3VsYXRpbmcgb3ZlciBvYmplY3RzIGFuZCB0aGVuIGVuY29kaW5nIG92ZXIgb2JqZWN0cy4gSW4gb3VyIGNhc2UsIHRoZSBlbmNvZGluZ1xuICAgIC8vIHBhcnQgaXMganVzdCBhIGxpbmtlZCBsaXN0IHdhbGsgY2FsbGluZyBvcGVyYXRpb25zIHdpdGggYWxyZWFkeSBwcmVwYXJlZCB2YWx1ZXMuXG59XG5cbnZhciBjcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoKSB7XG4gICAgcmV0dXJuIHV0aWwuQnVmZmVyXG4gICAgICAgID8gZnVuY3Rpb24gY3JlYXRlX2J1ZmZlcl9zZXR1cCgpIHtcbiAgICAgICAgICAgIHJldHVybiAoV3JpdGVyLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZV9idWZmZXIoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBCdWZmZXJXcml0ZXIoKTtcbiAgICAgICAgICAgIH0pKCk7XG4gICAgICAgIH1cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgOiBmdW5jdGlvbiBjcmVhdGVfYXJyYXkoKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFdyaXRlcigpO1xuICAgICAgICB9O1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHdyaXRlci5cbiAqIEBmdW5jdGlvblxuICogQHJldHVybnMge0J1ZmZlcldyaXRlcnxXcml0ZXJ9IEEge0BsaW5rIEJ1ZmZlcldyaXRlcn0gd2hlbiBCdWZmZXJzIGFyZSBzdXBwb3J0ZWQsIG90aGVyd2lzZSBhIHtAbGluayBXcml0ZXJ9XG4gKi9cbldyaXRlci5jcmVhdGUgPSBjcmVhdGUoKTtcblxuLyoqXG4gKiBBbGxvY2F0ZXMgYSBidWZmZXIgb2YgdGhlIHNwZWNpZmllZCBzaXplLlxuICogQHBhcmFtIHtudW1iZXJ9IHNpemUgQnVmZmVyIHNpemVcbiAqIEByZXR1cm5zIHtVaW50OEFycmF5fSBCdWZmZXJcbiAqL1xuV3JpdGVyLmFsbG9jID0gZnVuY3Rpb24gYWxsb2Moc2l6ZSkge1xuICAgIHJldHVybiBuZXcgdXRpbC5BcnJheShzaXplKTtcbn07XG5cbi8vIFVzZSBVaW50OEFycmF5IGJ1ZmZlciBwb29sIGluIHRoZSBicm93c2VyLCBqdXN0IGxpa2Ugbm9kZSBkb2VzIHdpdGggYnVmZmVyc1xuLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbmlmICh1dGlsLkFycmF5ICE9PSBBcnJheSlcbiAgICBXcml0ZXIuYWxsb2MgPSB1dGlsLnBvb2woV3JpdGVyLmFsbG9jLCB1dGlsLkFycmF5LnByb3RvdHlwZS5zdWJhcnJheSk7XG5cbi8qKlxuICogUHVzaGVzIGEgbmV3IG9wZXJhdGlvbiB0byB0aGUgcXVldWUuXG4gKiBAcGFyYW0ge2Z1bmN0aW9uKFVpbnQ4QXJyYXksIG51bWJlciwgKil9IGZuIEZ1bmN0aW9uIHRvIGNhbGxcbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW4gVmFsdWUgYnl0ZSBsZW5ndGhcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWwgVmFsdWUgdG8gd3JpdGVcbiAqIEByZXR1cm5zIHtXcml0ZXJ9IGB0aGlzYFxuICogQHByaXZhdGVcbiAqL1xuV3JpdGVyLnByb3RvdHlwZS5fcHVzaCA9IGZ1bmN0aW9uIHB1c2goZm4sIGxlbiwgdmFsKSB7XG4gICAgdGhpcy50YWlsID0gdGhpcy50YWlsLm5leHQgPSBuZXcgT3AoZm4sIGxlbiwgdmFsKTtcbiAgICB0aGlzLmxlbiArPSBsZW47XG4gICAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiB3cml0ZUJ5dGUodmFsLCBidWYsIHBvcykge1xuICAgIGJ1Zltwb3NdID0gdmFsICYgMjU1O1xufVxuXG5mdW5jdGlvbiB3cml0ZVZhcmludDMyKHZhbCwgYnVmLCBwb3MpIHtcbiAgICB3aGlsZSAodmFsID4gMTI3KSB7XG4gICAgICAgIGJ1Zltwb3MrK10gPSB2YWwgJiAxMjcgfCAxMjg7XG4gICAgICAgIHZhbCA+Pj49IDc7XG4gICAgfVxuICAgIGJ1Zltwb3NdID0gdmFsO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdHMgYSBuZXcgdmFyaW50IHdyaXRlciBvcGVyYXRpb24gaW5zdGFuY2UuXG4gKiBAY2xhc3NkZXNjIFNjaGVkdWxlZCB2YXJpbnQgd3JpdGVyIG9wZXJhdGlvbi5cbiAqIEBleHRlbmRzIE9wXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW4gVmFsdWUgYnl0ZSBsZW5ndGhcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWwgVmFsdWUgdG8gd3JpdGVcbiAqIEBpZ25vcmVcbiAqL1xuZnVuY3Rpb24gVmFyaW50T3AobGVuLCB2YWwpIHtcbiAgICB0aGlzLmxlbiA9IGxlbjtcbiAgICB0aGlzLm5leHQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy52YWwgPSB2YWw7XG59XG5cblZhcmludE9wLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoT3AucHJvdG90eXBlKTtcblZhcmludE9wLnByb3RvdHlwZS5mbiA9IHdyaXRlVmFyaW50MzI7XG5cbi8qKlxuICogV3JpdGVzIGFuIHVuc2lnbmVkIDMyIGJpdCB2YWx1ZSBhcyBhIHZhcmludC5cbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBWYWx1ZSB0byB3cml0ZVxuICogQHJldHVybnMge1dyaXRlcn0gYHRoaXNgXG4gKi9cbldyaXRlci5wcm90b3R5cGUudWludDMyID0gZnVuY3Rpb24gd3JpdGVfdWludDMyKHZhbHVlKSB7XG4gICAgLy8gaGVyZSwgdGhlIGNhbGwgdG8gdGhpcy5wdXNoIGhhcyBiZWVuIGlubGluZWQgYW5kIGEgdmFyaW50IHNwZWNpZmljIE9wIHN1YmNsYXNzIGlzIHVzZWQuXG4gICAgLy8gdWludDMyIGlzIGJ5IGZhciB0aGUgbW9zdCBmcmVxdWVudGx5IHVzZWQgb3BlcmF0aW9uIGFuZCBiZW5lZml0cyBzaWduaWZpY2FudGx5IGZyb20gdGhpcy5cbiAgICB0aGlzLmxlbiArPSAodGhpcy50YWlsID0gdGhpcy50YWlsLm5leHQgPSBuZXcgVmFyaW50T3AoXG4gICAgICAgICh2YWx1ZSA9IHZhbHVlID4+PiAwKVxuICAgICAgICAgICAgICAgIDwgMTI4ICAgICAgID8gMVxuICAgICAgICA6IHZhbHVlIDwgMTYzODQgICAgID8gMlxuICAgICAgICA6IHZhbHVlIDwgMjA5NzE1MiAgID8gM1xuICAgICAgICA6IHZhbHVlIDwgMjY4NDM1NDU2ID8gNFxuICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgNSxcbiAgICB2YWx1ZSkpLmxlbjtcbiAgICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogV3JpdGVzIGEgc2lnbmVkIDMyIGJpdCB2YWx1ZSBhcyBhIHZhcmludC5cbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIFZhbHVlIHRvIHdyaXRlXG4gKiBAcmV0dXJucyB7V3JpdGVyfSBgdGhpc2BcbiAqL1xuV3JpdGVyLnByb3RvdHlwZS5pbnQzMiA9IGZ1bmN0aW9uIHdyaXRlX2ludDMyKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIDwgMFxuICAgICAgICA/IHRoaXMuX3B1c2god3JpdGVWYXJpbnQ2NCwgMTAsIExvbmdCaXRzLmZyb21OdW1iZXIodmFsdWUpKSAvLyAxMCBieXRlcyBwZXIgc3BlY1xuICAgICAgICA6IHRoaXMudWludDMyKHZhbHVlKTtcbn07XG5cbi8qKlxuICogV3JpdGVzIGEgMzIgYml0IHZhbHVlIGFzIGEgdmFyaW50LCB6aWctemFnIGVuY29kZWQuXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgVmFsdWUgdG8gd3JpdGVcbiAqIEByZXR1cm5zIHtXcml0ZXJ9IGB0aGlzYFxuICovXG5Xcml0ZXIucHJvdG90eXBlLnNpbnQzMiA9IGZ1bmN0aW9uIHdyaXRlX3NpbnQzMih2YWx1ZSkge1xuICAgIHJldHVybiB0aGlzLnVpbnQzMigodmFsdWUgPDwgMSBeIHZhbHVlID4+IDMxKSA+Pj4gMCk7XG59O1xuXG5mdW5jdGlvbiB3cml0ZVZhcmludDY0KHZhbCwgYnVmLCBwb3MpIHtcbiAgICB3aGlsZSAodmFsLmhpKSB7XG4gICAgICAgIGJ1Zltwb3MrK10gPSB2YWwubG8gJiAxMjcgfCAxMjg7XG4gICAgICAgIHZhbC5sbyA9ICh2YWwubG8gPj4+IDcgfCB2YWwuaGkgPDwgMjUpID4+PiAwO1xuICAgICAgICB2YWwuaGkgPj4+PSA3O1xuICAgIH1cbiAgICB3aGlsZSAodmFsLmxvID4gMTI3KSB7XG4gICAgICAgIGJ1Zltwb3MrK10gPSB2YWwubG8gJiAxMjcgfCAxMjg7XG4gICAgICAgIHZhbC5sbyA9IHZhbC5sbyA+Pj4gNztcbiAgICB9XG4gICAgYnVmW3BvcysrXSA9IHZhbC5sbztcbn1cblxuLyoqXG4gKiBXcml0ZXMgYW4gdW5zaWduZWQgNjQgYml0IHZhbHVlIGFzIGEgdmFyaW50LlxuICogQHBhcmFtIHtMb25nfG51bWJlcnxzdHJpbmd9IHZhbHVlIFZhbHVlIHRvIHdyaXRlXG4gKiBAcmV0dXJucyB7V3JpdGVyfSBgdGhpc2BcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgYHZhbHVlYCBpcyBhIHN0cmluZyBhbmQgbm8gbG9uZyBsaWJyYXJ5IGlzIHByZXNlbnQuXG4gKi9cbldyaXRlci5wcm90b3R5cGUudWludDY0ID0gZnVuY3Rpb24gd3JpdGVfdWludDY0KHZhbHVlKSB7XG4gICAgdmFyIGJpdHMgPSBMb25nQml0cy5mcm9tKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5fcHVzaCh3cml0ZVZhcmludDY0LCBiaXRzLmxlbmd0aCgpLCBiaXRzKTtcbn07XG5cbi8qKlxuICogV3JpdGVzIGEgc2lnbmVkIDY0IGJpdCB2YWx1ZSBhcyBhIHZhcmludC5cbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtMb25nfG51bWJlcnxzdHJpbmd9IHZhbHVlIFZhbHVlIHRvIHdyaXRlXG4gKiBAcmV0dXJucyB7V3JpdGVyfSBgdGhpc2BcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgYHZhbHVlYCBpcyBhIHN0cmluZyBhbmQgbm8gbG9uZyBsaWJyYXJ5IGlzIHByZXNlbnQuXG4gKi9cbldyaXRlci5wcm90b3R5cGUuaW50NjQgPSBXcml0ZXIucHJvdG90eXBlLnVpbnQ2NDtcblxuLyoqXG4gKiBXcml0ZXMgYSBzaWduZWQgNjQgYml0IHZhbHVlIGFzIGEgdmFyaW50LCB6aWctemFnIGVuY29kZWQuXG4gKiBAcGFyYW0ge0xvbmd8bnVtYmVyfHN0cmluZ30gdmFsdWUgVmFsdWUgdG8gd3JpdGVcbiAqIEByZXR1cm5zIHtXcml0ZXJ9IGB0aGlzYFxuICogQHRocm93cyB7VHlwZUVycm9yfSBJZiBgdmFsdWVgIGlzIGEgc3RyaW5nIGFuZCBubyBsb25nIGxpYnJhcnkgaXMgcHJlc2VudC5cbiAqL1xuV3JpdGVyLnByb3RvdHlwZS5zaW50NjQgPSBmdW5jdGlvbiB3cml0ZV9zaW50NjQodmFsdWUpIHtcbiAgICB2YXIgYml0cyA9IExvbmdCaXRzLmZyb20odmFsdWUpLnp6RW5jb2RlKCk7XG4gICAgcmV0dXJuIHRoaXMuX3B1c2god3JpdGVWYXJpbnQ2NCwgYml0cy5sZW5ndGgoKSwgYml0cyk7XG59O1xuXG4vKipcbiAqIFdyaXRlcyBhIGJvb2xpc2ggdmFsdWUgYXMgYSB2YXJpbnQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHZhbHVlIFZhbHVlIHRvIHdyaXRlXG4gKiBAcmV0dXJucyB7V3JpdGVyfSBgdGhpc2BcbiAqL1xuV3JpdGVyLnByb3RvdHlwZS5ib29sID0gZnVuY3Rpb24gd3JpdGVfYm9vbCh2YWx1ZSkge1xuICAgIHJldHVybiB0aGlzLl9wdXNoKHdyaXRlQnl0ZSwgMSwgdmFsdWUgPyAxIDogMCk7XG59O1xuXG5mdW5jdGlvbiB3cml0ZUZpeGVkMzIodmFsLCBidWYsIHBvcykge1xuICAgIGJ1Zltwb3MgICAgXSA9ICB2YWwgICAgICAgICAmIDI1NTtcbiAgICBidWZbcG9zICsgMV0gPSAgdmFsID4+PiA4ICAgJiAyNTU7XG4gICAgYnVmW3BvcyArIDJdID0gIHZhbCA+Pj4gMTYgICYgMjU1O1xuICAgIGJ1Zltwb3MgKyAzXSA9ICB2YWwgPj4+IDI0O1xufVxuXG4vKipcbiAqIFdyaXRlcyBhbiB1bnNpZ25lZCAzMiBiaXQgdmFsdWUgYXMgZml4ZWQgMzIgYml0cy5cbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBWYWx1ZSB0byB3cml0ZVxuICogQHJldHVybnMge1dyaXRlcn0gYHRoaXNgXG4gKi9cbldyaXRlci5wcm90b3R5cGUuZml4ZWQzMiA9IGZ1bmN0aW9uIHdyaXRlX2ZpeGVkMzIodmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5fcHVzaCh3cml0ZUZpeGVkMzIsIDQsIHZhbHVlID4+PiAwKTtcbn07XG5cbi8qKlxuICogV3JpdGVzIGEgc2lnbmVkIDMyIGJpdCB2YWx1ZSBhcyBmaXhlZCAzMiBiaXRzLlxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgVmFsdWUgdG8gd3JpdGVcbiAqIEByZXR1cm5zIHtXcml0ZXJ9IGB0aGlzYFxuICovXG5Xcml0ZXIucHJvdG90eXBlLnNmaXhlZDMyID0gV3JpdGVyLnByb3RvdHlwZS5maXhlZDMyO1xuXG4vKipcbiAqIFdyaXRlcyBhbiB1bnNpZ25lZCA2NCBiaXQgdmFsdWUgYXMgZml4ZWQgNjQgYml0cy5cbiAqIEBwYXJhbSB7TG9uZ3xudW1iZXJ8c3RyaW5nfSB2YWx1ZSBWYWx1ZSB0byB3cml0ZVxuICogQHJldHVybnMge1dyaXRlcn0gYHRoaXNgXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IElmIGB2YWx1ZWAgaXMgYSBzdHJpbmcgYW5kIG5vIGxvbmcgbGlicmFyeSBpcyBwcmVzZW50LlxuICovXG5Xcml0ZXIucHJvdG90eXBlLmZpeGVkNjQgPSBmdW5jdGlvbiB3cml0ZV9maXhlZDY0KHZhbHVlKSB7XG4gICAgdmFyIGJpdHMgPSBMb25nQml0cy5mcm9tKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5fcHVzaCh3cml0ZUZpeGVkMzIsIDQsIGJpdHMubG8pLl9wdXNoKHdyaXRlRml4ZWQzMiwgNCwgYml0cy5oaSk7XG59O1xuXG4vKipcbiAqIFdyaXRlcyBhIHNpZ25lZCA2NCBiaXQgdmFsdWUgYXMgZml4ZWQgNjQgYml0cy5cbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtMb25nfG51bWJlcnxzdHJpbmd9IHZhbHVlIFZhbHVlIHRvIHdyaXRlXG4gKiBAcmV0dXJucyB7V3JpdGVyfSBgdGhpc2BcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgYHZhbHVlYCBpcyBhIHN0cmluZyBhbmQgbm8gbG9uZyBsaWJyYXJ5IGlzIHByZXNlbnQuXG4gKi9cbldyaXRlci5wcm90b3R5cGUuc2ZpeGVkNjQgPSBXcml0ZXIucHJvdG90eXBlLmZpeGVkNjQ7XG5cbi8qKlxuICogV3JpdGVzIGEgZmxvYXQgKDMyIGJpdCkuXG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBWYWx1ZSB0byB3cml0ZVxuICogQHJldHVybnMge1dyaXRlcn0gYHRoaXNgXG4gKi9cbldyaXRlci5wcm90b3R5cGUuZmxvYXQgPSBmdW5jdGlvbiB3cml0ZV9mbG9hdCh2YWx1ZSkge1xuICAgIHJldHVybiB0aGlzLl9wdXNoKHV0aWwuZmxvYXQud3JpdGVGbG9hdExFLCA0LCB2YWx1ZSk7XG59O1xuXG4vKipcbiAqIFdyaXRlcyBhIGRvdWJsZSAoNjQgYml0IGZsb2F0KS5cbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIFZhbHVlIHRvIHdyaXRlXG4gKiBAcmV0dXJucyB7V3JpdGVyfSBgdGhpc2BcbiAqL1xuV3JpdGVyLnByb3RvdHlwZS5kb3VibGUgPSBmdW5jdGlvbiB3cml0ZV9kb3VibGUodmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5fcHVzaCh1dGlsLmZsb2F0LndyaXRlRG91YmxlTEUsIDgsIHZhbHVlKTtcbn07XG5cbnZhciB3cml0ZUJ5dGVzID0gdXRpbC5BcnJheS5wcm90b3R5cGUuc2V0XG4gICAgPyBmdW5jdGlvbiB3cml0ZUJ5dGVzX3NldCh2YWwsIGJ1ZiwgcG9zKSB7XG4gICAgICAgIGJ1Zi5zZXQodmFsLCBwb3MpOyAvLyBhbHNvIHdvcmtzIGZvciBwbGFpbiBhcnJheSB2YWx1ZXNcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICA6IGZ1bmN0aW9uIHdyaXRlQnl0ZXNfZm9yKHZhbCwgYnVmLCBwb3MpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWwubGVuZ3RoOyArK2kpXG4gICAgICAgICAgICBidWZbcG9zICsgaV0gPSB2YWxbaV07XG4gICAgfTtcblxuLyoqXG4gKiBXcml0ZXMgYSBzZXF1ZW5jZSBvZiBieXRlcy5cbiAqIEBwYXJhbSB7VWludDhBcnJheXxzdHJpbmd9IHZhbHVlIEJ1ZmZlciBvciBiYXNlNjQgZW5jb2RlZCBzdHJpbmcgdG8gd3JpdGVcbiAqIEByZXR1cm5zIHtXcml0ZXJ9IGB0aGlzYFxuICovXG5Xcml0ZXIucHJvdG90eXBlLmJ5dGVzID0gZnVuY3Rpb24gd3JpdGVfYnl0ZXModmFsdWUpIHtcbiAgICB2YXIgbGVuID0gdmFsdWUubGVuZ3RoID4+PiAwO1xuICAgIGlmICghbGVuKVxuICAgICAgICByZXR1cm4gdGhpcy5fcHVzaCh3cml0ZUJ5dGUsIDEsIDApO1xuICAgIGlmICh1dGlsLmlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICB2YXIgYnVmID0gV3JpdGVyLmFsbG9jKGxlbiA9IGJhc2U2NC5sZW5ndGgodmFsdWUpKTtcbiAgICAgICAgYmFzZTY0LmRlY29kZSh2YWx1ZSwgYnVmLCAwKTtcbiAgICAgICAgdmFsdWUgPSBidWY7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVpbnQzMihsZW4pLl9wdXNoKHdyaXRlQnl0ZXMsIGxlbiwgdmFsdWUpO1xufTtcblxuLyoqXG4gKiBXcml0ZXMgYSBzdHJpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgVmFsdWUgdG8gd3JpdGVcbiAqIEByZXR1cm5zIHtXcml0ZXJ9IGB0aGlzYFxuICovXG5Xcml0ZXIucHJvdG90eXBlLnN0cmluZyA9IGZ1bmN0aW9uIHdyaXRlX3N0cmluZyh2YWx1ZSkge1xuICAgIHZhciBsZW4gPSB1dGY4Lmxlbmd0aCh2YWx1ZSk7XG4gICAgcmV0dXJuIGxlblxuICAgICAgICA/IHRoaXMudWludDMyKGxlbikuX3B1c2godXRmOC53cml0ZSwgbGVuLCB2YWx1ZSlcbiAgICAgICAgOiB0aGlzLl9wdXNoKHdyaXRlQnl0ZSwgMSwgMCk7XG59O1xuXG4vKipcbiAqIEZvcmtzIHRoaXMgd3JpdGVyJ3Mgc3RhdGUgYnkgcHVzaGluZyBpdCB0byBhIHN0YWNrLlxuICogQ2FsbGluZyB7QGxpbmsgV3JpdGVyI3Jlc2V0fHJlc2V0fSBvciB7QGxpbmsgV3JpdGVyI2xkZWxpbXxsZGVsaW19IHJlc2V0cyB0aGUgd3JpdGVyIHRvIHRoZSBwcmV2aW91cyBzdGF0ZS5cbiAqIEByZXR1cm5zIHtXcml0ZXJ9IGB0aGlzYFxuICovXG5Xcml0ZXIucHJvdG90eXBlLmZvcmsgPSBmdW5jdGlvbiBmb3JrKCkge1xuICAgIHRoaXMuc3RhdGVzID0gbmV3IFN0YXRlKHRoaXMpO1xuICAgIHRoaXMuaGVhZCA9IHRoaXMudGFpbCA9IG5ldyBPcChub29wLCAwLCAwKTtcbiAgICB0aGlzLmxlbiA9IDA7XG4gICAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFJlc2V0cyB0aGlzIGluc3RhbmNlIHRvIHRoZSBsYXN0IHN0YXRlLlxuICogQHJldHVybnMge1dyaXRlcn0gYHRoaXNgXG4gKi9cbldyaXRlci5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiByZXNldCgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZXMpIHtcbiAgICAgICAgdGhpcy5oZWFkICAgPSB0aGlzLnN0YXRlcy5oZWFkO1xuICAgICAgICB0aGlzLnRhaWwgICA9IHRoaXMuc3RhdGVzLnRhaWw7XG4gICAgICAgIHRoaXMubGVuICAgID0gdGhpcy5zdGF0ZXMubGVuO1xuICAgICAgICB0aGlzLnN0YXRlcyA9IHRoaXMuc3RhdGVzLm5leHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbmV3IE9wKG5vb3AsIDAsIDApO1xuICAgICAgICB0aGlzLmxlbiAgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogUmVzZXRzIHRvIHRoZSBsYXN0IHN0YXRlIGFuZCBhcHBlbmRzIHRoZSBmb3JrIHN0YXRlJ3MgY3VycmVudCB3cml0ZSBsZW5ndGggYXMgYSB2YXJpbnQgZm9sbG93ZWQgYnkgaXRzIG9wZXJhdGlvbnMuXG4gKiBAcmV0dXJucyB7V3JpdGVyfSBgdGhpc2BcbiAqL1xuV3JpdGVyLnByb3RvdHlwZS5sZGVsaW0gPSBmdW5jdGlvbiBsZGVsaW0oKSB7XG4gICAgdmFyIGhlYWQgPSB0aGlzLmhlYWQsXG4gICAgICAgIHRhaWwgPSB0aGlzLnRhaWwsXG4gICAgICAgIGxlbiAgPSB0aGlzLmxlbjtcbiAgICB0aGlzLnJlc2V0KCkudWludDMyKGxlbik7XG4gICAgaWYgKGxlbikge1xuICAgICAgICB0aGlzLnRhaWwubmV4dCA9IGhlYWQubmV4dDsgLy8gc2tpcCBub29wXG4gICAgICAgIHRoaXMudGFpbCA9IHRhaWw7XG4gICAgICAgIHRoaXMubGVuICs9IGxlbjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIEZpbmlzaGVzIHRoZSB3cml0ZSBvcGVyYXRpb24uXG4gKiBAcmV0dXJucyB7VWludDhBcnJheX0gRmluaXNoZWQgYnVmZmVyXG4gKi9cbldyaXRlci5wcm90b3R5cGUuZmluaXNoID0gZnVuY3Rpb24gZmluaXNoKCkge1xuICAgIHZhciBoZWFkID0gdGhpcy5oZWFkLm5leHQsIC8vIHNraXAgbm9vcFxuICAgICAgICBidWYgID0gdGhpcy5jb25zdHJ1Y3Rvci5hbGxvYyh0aGlzLmxlbiksXG4gICAgICAgIHBvcyAgPSAwO1xuICAgIHdoaWxlIChoZWFkKSB7XG4gICAgICAgIGhlYWQuZm4oaGVhZC52YWwsIGJ1ZiwgcG9zKTtcbiAgICAgICAgcG9zICs9IGhlYWQubGVuO1xuICAgICAgICBoZWFkID0gaGVhZC5uZXh0O1xuICAgIH1cbiAgICAvLyB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO1xuICAgIHJldHVybiBidWY7XG59O1xuXG5Xcml0ZXIuX2NvbmZpZ3VyZSA9IGZ1bmN0aW9uKEJ1ZmZlcldyaXRlcl8pIHtcbiAgICBCdWZmZXJXcml0ZXIgPSBCdWZmZXJXcml0ZXJfO1xuICAgIFdyaXRlci5jcmVhdGUgPSBjcmVhdGUoKTtcbiAgICBCdWZmZXJXcml0ZXIuX2NvbmZpZ3VyZSgpO1xufTtcbiIsIlwidXNlIHN0cmljdFwiO1xubW9kdWxlLmV4cG9ydHMgPSBCdWZmZXJXcml0ZXI7XG5cbi8vIGV4dGVuZHMgV3JpdGVyXG52YXIgV3JpdGVyID0gcmVxdWlyZShcIi4vd3JpdGVyXCIpO1xuKEJ1ZmZlcldyaXRlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFdyaXRlci5wcm90b3R5cGUpKS5jb25zdHJ1Y3RvciA9IEJ1ZmZlcldyaXRlcjtcblxudmFyIHV0aWwgPSByZXF1aXJlKFwiLi91dGlsL21pbmltYWxcIik7XG5cbi8qKlxuICogQ29uc3RydWN0cyBhIG5ldyBidWZmZXIgd3JpdGVyIGluc3RhbmNlLlxuICogQGNsYXNzZGVzYyBXaXJlIGZvcm1hdCB3cml0ZXIgdXNpbmcgbm9kZSBidWZmZXJzLlxuICogQGV4dGVuZHMgV3JpdGVyXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gQnVmZmVyV3JpdGVyKCkge1xuICAgIFdyaXRlci5jYWxsKHRoaXMpO1xufVxuXG5CdWZmZXJXcml0ZXIuX2NvbmZpZ3VyZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAvKipcbiAgICAgKiBBbGxvY2F0ZXMgYSBidWZmZXIgb2YgdGhlIHNwZWNpZmllZCBzaXplLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzaXplIEJ1ZmZlciBzaXplXG4gICAgICogQHJldHVybnMge0J1ZmZlcn0gQnVmZmVyXG4gICAgICovXG4gICAgQnVmZmVyV3JpdGVyLmFsbG9jID0gdXRpbC5fQnVmZmVyX2FsbG9jVW5zYWZlO1xuXG4gICAgQnVmZmVyV3JpdGVyLndyaXRlQnl0ZXNCdWZmZXIgPSB1dGlsLkJ1ZmZlciAmJiB1dGlsLkJ1ZmZlci5wcm90b3R5cGUgaW5zdGFuY2VvZiBVaW50OEFycmF5ICYmIHV0aWwuQnVmZmVyLnByb3RvdHlwZS5zZXQubmFtZSA9PT0gXCJzZXRcIlxuICAgICAgICA/IGZ1bmN0aW9uIHdyaXRlQnl0ZXNCdWZmZXJfc2V0KHZhbCwgYnVmLCBwb3MpIHtcbiAgICAgICAgICBidWYuc2V0KHZhbCwgcG9zKTsgLy8gZmFzdGVyIHRoYW4gY29weSAocmVxdWlyZXMgbm9kZSA+PSA0IHdoZXJlIEJ1ZmZlcnMgZXh0ZW5kIFVpbnQ4QXJyYXkgYW5kIHNldCBpcyBwcm9wZXJseSBpbmhlcml0ZWQpXG4gICAgICAgICAgLy8gYWxzbyB3b3JrcyBmb3IgcGxhaW4gYXJyYXkgdmFsdWVzXG4gICAgICAgIH1cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgOiBmdW5jdGlvbiB3cml0ZUJ5dGVzQnVmZmVyX2NvcHkodmFsLCBidWYsIHBvcykge1xuICAgICAgICAgIGlmICh2YWwuY29weSkgLy8gQnVmZmVyIHZhbHVlc1xuICAgICAgICAgICAgdmFsLmNvcHkoYnVmLCBwb3MsIDAsIHZhbC5sZW5ndGgpO1xuICAgICAgICAgIGVsc2UgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWwubGVuZ3RoOykgLy8gcGxhaW4gYXJyYXkgdmFsdWVzXG4gICAgICAgICAgICBidWZbcG9zKytdID0gdmFsW2krK107XG4gICAgICAgIH07XG59O1xuXG5cbi8qKlxuICogQG92ZXJyaWRlXG4gKi9cbkJ1ZmZlcldyaXRlci5wcm90b3R5cGUuYnl0ZXMgPSBmdW5jdGlvbiB3cml0ZV9ieXRlc19idWZmZXIodmFsdWUpIHtcbiAgICBpZiAodXRpbC5pc1N0cmluZyh2YWx1ZSkpXG4gICAgICAgIHZhbHVlID0gdXRpbC5fQnVmZmVyX2Zyb20odmFsdWUsIFwiYmFzZTY0XCIpO1xuICAgIHZhciBsZW4gPSB2YWx1ZS5sZW5ndGggPj4+IDA7XG4gICAgdGhpcy51aW50MzIobGVuKTtcbiAgICBpZiAobGVuKVxuICAgICAgICB0aGlzLl9wdXNoKEJ1ZmZlcldyaXRlci53cml0ZUJ5dGVzQnVmZmVyLCBsZW4sIHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIHdyaXRlU3RyaW5nQnVmZmVyKHZhbCwgYnVmLCBwb3MpIHtcbiAgICBpZiAodmFsLmxlbmd0aCA8IDQwKSAvLyBwbGFpbiBqcyBpcyBmYXN0ZXIgZm9yIHNob3J0IHN0cmluZ3MgKHByb2JhYmx5IGR1ZSB0byByZWR1bmRhbnQgYXNzZXJ0aW9ucylcbiAgICAgICAgdXRpbC51dGY4LndyaXRlKHZhbCwgYnVmLCBwb3MpO1xuICAgIGVsc2UgaWYgKGJ1Zi51dGY4V3JpdGUpXG4gICAgICAgIGJ1Zi51dGY4V3JpdGUodmFsLCBwb3MpO1xuICAgIGVsc2VcbiAgICAgICAgYnVmLndyaXRlKHZhbCwgcG9zKTtcbn1cblxuLyoqXG4gKiBAb3ZlcnJpZGVcbiAqL1xuQnVmZmVyV3JpdGVyLnByb3RvdHlwZS5zdHJpbmcgPSBmdW5jdGlvbiB3cml0ZV9zdHJpbmdfYnVmZmVyKHZhbHVlKSB7XG4gICAgdmFyIGxlbiA9IHV0aWwuQnVmZmVyLmJ5dGVMZW5ndGgodmFsdWUpO1xuICAgIHRoaXMudWludDMyKGxlbik7XG4gICAgaWYgKGxlbilcbiAgICAgICAgdGhpcy5fcHVzaCh3cml0ZVN0cmluZ0J1ZmZlciwgbGVuLCB2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG59O1xuXG5cbi8qKlxuICogRmluaXNoZXMgdGhlIHdyaXRlIG9wZXJhdGlvbi5cbiAqIEBuYW1lIEJ1ZmZlcldyaXRlciNmaW5pc2hcbiAqIEBmdW5jdGlvblxuICogQHJldHVybnMge0J1ZmZlcn0gRmluaXNoZWQgYnVmZmVyXG4gKi9cblxuQnVmZmVyV3JpdGVyLl9jb25maWd1cmUoKTtcbiIsIlwidXNlIHN0cmljdFwiO1xubW9kdWxlLmV4cG9ydHMgPSBSZWFkZXI7XG5cbnZhciB1dGlsICAgICAgPSByZXF1aXJlKFwiLi91dGlsL21pbmltYWxcIik7XG5cbnZhciBCdWZmZXJSZWFkZXI7IC8vIGN5Y2xpY1xuXG52YXIgTG9uZ0JpdHMgID0gdXRpbC5Mb25nQml0cyxcbiAgICB1dGY4ICAgICAgPSB1dGlsLnV0Zjg7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBpbmRleE91dE9mUmFuZ2UocmVhZGVyLCB3cml0ZUxlbmd0aCkge1xuICAgIHJldHVybiBSYW5nZUVycm9yKFwiaW5kZXggb3V0IG9mIHJhbmdlOiBcIiArIHJlYWRlci5wb3MgKyBcIiArIFwiICsgKHdyaXRlTGVuZ3RoIHx8IDEpICsgXCIgPiBcIiArIHJlYWRlci5sZW4pO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdHMgYSBuZXcgcmVhZGVyIGluc3RhbmNlIHVzaW5nIHRoZSBzcGVjaWZpZWQgYnVmZmVyLlxuICogQGNsYXNzZGVzYyBXaXJlIGZvcm1hdCByZWFkZXIgdXNpbmcgYFVpbnQ4QXJyYXlgIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGBBcnJheWAuXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gYnVmZmVyIEJ1ZmZlciB0byByZWFkIGZyb21cbiAqL1xuZnVuY3Rpb24gUmVhZGVyKGJ1ZmZlcikge1xuXG4gICAgLyoqXG4gICAgICogUmVhZCBidWZmZXIuXG4gICAgICogQHR5cGUge1VpbnQ4QXJyYXl9XG4gICAgICovXG4gICAgdGhpcy5idWYgPSBidWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGJ1ZmZlciBwb3NpdGlvbi5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMucG9zID0gMDtcblxuICAgIC8qKlxuICAgICAqIFJlYWQgYnVmZmVyIGxlbmd0aC5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMubGVuID0gYnVmZmVyLmxlbmd0aDtcbn1cblxudmFyIGNyZWF0ZV9hcnJheSA9IHR5cGVvZiBVaW50OEFycmF5ICE9PSBcInVuZGVmaW5lZFwiXG4gICAgPyBmdW5jdGlvbiBjcmVhdGVfdHlwZWRfYXJyYXkoYnVmZmVyKSB7XG4gICAgICAgIGlmIChidWZmZXIgaW5zdGFuY2VvZiBVaW50OEFycmF5IHx8IEFycmF5LmlzQXJyYXkoYnVmZmVyKSlcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVhZGVyKGJ1ZmZlcik7XG4gICAgICAgIHRocm93IEVycm9yKFwiaWxsZWdhbCBidWZmZXJcIik7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgOiBmdW5jdGlvbiBjcmVhdGVfYXJyYXkoYnVmZmVyKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGJ1ZmZlcikpXG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlYWRlcihidWZmZXIpO1xuICAgICAgICB0aHJvdyBFcnJvcihcImlsbGVnYWwgYnVmZmVyXCIpO1xuICAgIH07XG5cbnZhciBjcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoKSB7XG4gICAgcmV0dXJuIHV0aWwuQnVmZmVyXG4gICAgICAgID8gZnVuY3Rpb24gY3JlYXRlX2J1ZmZlcl9zZXR1cChidWZmZXIpIHtcbiAgICAgICAgICAgIHJldHVybiAoUmVhZGVyLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZV9idWZmZXIoYnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHV0aWwuQnVmZmVyLmlzQnVmZmVyKGJ1ZmZlcilcbiAgICAgICAgICAgICAgICAgICAgPyBuZXcgQnVmZmVyUmVhZGVyKGJ1ZmZlcilcbiAgICAgICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgICAgICAgICAgOiBjcmVhdGVfYXJyYXkoYnVmZmVyKTtcbiAgICAgICAgICAgIH0pKGJ1ZmZlcik7XG4gICAgICAgIH1cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgOiBjcmVhdGVfYXJyYXk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgcmVhZGVyIHVzaW5nIHRoZSBzcGVjaWZpZWQgYnVmZmVyLlxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl8QnVmZmVyfSBidWZmZXIgQnVmZmVyIHRvIHJlYWQgZnJvbVxuICogQHJldHVybnMge1JlYWRlcnxCdWZmZXJSZWFkZXJ9IEEge0BsaW5rIEJ1ZmZlclJlYWRlcn0gaWYgYGJ1ZmZlcmAgaXMgYSBCdWZmZXIsIG90aGVyd2lzZSBhIHtAbGluayBSZWFkZXJ9XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgYGJ1ZmZlcmAgaXMgbm90IGEgdmFsaWQgYnVmZmVyXG4gKi9cblJlYWRlci5jcmVhdGUgPSBjcmVhdGUoKTtcblxuUmVhZGVyLnByb3RvdHlwZS5fc2xpY2UgPSB1dGlsLkFycmF5LnByb3RvdHlwZS5zdWJhcnJheSB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyB1dGlsLkFycmF5LnByb3RvdHlwZS5zbGljZTtcblxuLyoqXG4gKiBSZWFkcyBhIHZhcmludCBhcyBhbiB1bnNpZ25lZCAzMiBiaXQgdmFsdWUuXG4gKiBAZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFZhbHVlIHJlYWRcbiAqL1xuUmVhZGVyLnByb3RvdHlwZS51aW50MzIgPSAoZnVuY3Rpb24gcmVhZF91aW50MzJfc2V0dXAoKSB7XG4gICAgdmFyIHZhbHVlID0gNDI5NDk2NzI5NTsgLy8gb3B0aW1pemVyIHR5cGUtaGludCwgdGVuZHMgdG8gZGVvcHQgb3RoZXJ3aXNlICg/ISlcbiAgICByZXR1cm4gZnVuY3Rpb24gcmVhZF91aW50MzIoKSB7XG4gICAgICAgIHZhbHVlID0gKCAgICAgICAgIHRoaXMuYnVmW3RoaXMucG9zXSAmIDEyNyAgICAgICApID4+PiAwOyBpZiAodGhpcy5idWZbdGhpcy5wb3MrK10gPCAxMjgpIHJldHVybiB2YWx1ZTtcbiAgICAgICAgdmFsdWUgPSAodmFsdWUgfCAodGhpcy5idWZbdGhpcy5wb3NdICYgMTI3KSA8PCAgNykgPj4+IDA7IGlmICh0aGlzLmJ1Zlt0aGlzLnBvcysrXSA8IDEyOCkgcmV0dXJuIHZhbHVlO1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSB8ICh0aGlzLmJ1Zlt0aGlzLnBvc10gJiAxMjcpIDw8IDE0KSA+Pj4gMDsgaWYgKHRoaXMuYnVmW3RoaXMucG9zKytdIDwgMTI4KSByZXR1cm4gdmFsdWU7XG4gICAgICAgIHZhbHVlID0gKHZhbHVlIHwgKHRoaXMuYnVmW3RoaXMucG9zXSAmIDEyNykgPDwgMjEpID4+PiAwOyBpZiAodGhpcy5idWZbdGhpcy5wb3MrK10gPCAxMjgpIHJldHVybiB2YWx1ZTtcbiAgICAgICAgdmFsdWUgPSAodmFsdWUgfCAodGhpcy5idWZbdGhpcy5wb3NdICYgIDE1KSA8PCAyOCkgPj4+IDA7IGlmICh0aGlzLmJ1Zlt0aGlzLnBvcysrXSA8IDEyOCkgcmV0dXJuIHZhbHVlO1xuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAoKHRoaXMucG9zICs9IDUpID4gdGhpcy5sZW4pIHtcbiAgICAgICAgICAgIHRoaXMucG9zID0gdGhpcy5sZW47XG4gICAgICAgICAgICB0aHJvdyBpbmRleE91dE9mUmFuZ2UodGhpcywgMTApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9O1xufSkoKTtcblxuLyoqXG4gKiBSZWFkcyBhIHZhcmludCBhcyBhIHNpZ25lZCAzMiBiaXQgdmFsdWUuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBWYWx1ZSByZWFkXG4gKi9cblJlYWRlci5wcm90b3R5cGUuaW50MzIgPSBmdW5jdGlvbiByZWFkX2ludDMyKCkge1xuICAgIHJldHVybiB0aGlzLnVpbnQzMigpIHwgMDtcbn07XG5cbi8qKlxuICogUmVhZHMgYSB6aWctemFnIGVuY29kZWQgdmFyaW50IGFzIGEgc2lnbmVkIDMyIGJpdCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFZhbHVlIHJlYWRcbiAqL1xuUmVhZGVyLnByb3RvdHlwZS5zaW50MzIgPSBmdW5jdGlvbiByZWFkX3NpbnQzMigpIHtcbiAgICB2YXIgdmFsdWUgPSB0aGlzLnVpbnQzMigpO1xuICAgIHJldHVybiB2YWx1ZSA+Pj4gMSBeIC0odmFsdWUgJiAxKSB8IDA7XG59O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1pbnZhbGlkLXRoaXMgKi9cblxuZnVuY3Rpb24gcmVhZExvbmdWYXJpbnQoKSB7XG4gICAgLy8gdGVuZHMgdG8gZGVvcHQgd2l0aCBsb2NhbCB2YXJzIGZvciBvY3RldCBldGMuXG4gICAgdmFyIGJpdHMgPSBuZXcgTG9uZ0JpdHMoMCwgMCk7XG4gICAgdmFyIGkgPSAwO1xuICAgIGlmICh0aGlzLmxlbiAtIHRoaXMucG9zID4gNCkgeyAvLyBmYXN0IHJvdXRlIChsbylcbiAgICAgICAgZm9yICg7IGkgPCA0OyArK2kpIHtcbiAgICAgICAgICAgIC8vIDFzdC4uNHRoXG4gICAgICAgICAgICBiaXRzLmxvID0gKGJpdHMubG8gfCAodGhpcy5idWZbdGhpcy5wb3NdICYgMTI3KSA8PCBpICogNykgPj4+IDA7XG4gICAgICAgICAgICBpZiAodGhpcy5idWZbdGhpcy5wb3MrK10gPCAxMjgpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGJpdHM7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNXRoXG4gICAgICAgIGJpdHMubG8gPSAoYml0cy5sbyB8ICh0aGlzLmJ1Zlt0aGlzLnBvc10gJiAxMjcpIDw8IDI4KSA+Pj4gMDtcbiAgICAgICAgYml0cy5oaSA9IChiaXRzLmhpIHwgKHRoaXMuYnVmW3RoaXMucG9zXSAmIDEyNykgPj4gIDQpID4+PiAwO1xuICAgICAgICBpZiAodGhpcy5idWZbdGhpcy5wb3MrK10gPCAxMjgpXG4gICAgICAgICAgICByZXR1cm4gYml0cztcbiAgICAgICAgaSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZm9yICg7IGkgPCAzOyArK2kpIHtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgICAgaWYgKHRoaXMucG9zID49IHRoaXMubGVuKVxuICAgICAgICAgICAgICAgIHRocm93IGluZGV4T3V0T2ZSYW5nZSh0aGlzKTtcbiAgICAgICAgICAgIC8vIDFzdC4uM3RoXG4gICAgICAgICAgICBiaXRzLmxvID0gKGJpdHMubG8gfCAodGhpcy5idWZbdGhpcy5wb3NdICYgMTI3KSA8PCBpICogNykgPj4+IDA7XG4gICAgICAgICAgICBpZiAodGhpcy5idWZbdGhpcy5wb3MrK10gPCAxMjgpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGJpdHM7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNHRoXG4gICAgICAgIGJpdHMubG8gPSAoYml0cy5sbyB8ICh0aGlzLmJ1Zlt0aGlzLnBvcysrXSAmIDEyNykgPDwgaSAqIDcpID4+PiAwO1xuICAgICAgICByZXR1cm4gYml0cztcbiAgICB9XG4gICAgaWYgKHRoaXMubGVuIC0gdGhpcy5wb3MgPiA0KSB7IC8vIGZhc3Qgcm91dGUgKGhpKVxuICAgICAgICBmb3IgKDsgaSA8IDU7ICsraSkge1xuICAgICAgICAgICAgLy8gNnRoLi4xMHRoXG4gICAgICAgICAgICBiaXRzLmhpID0gKGJpdHMuaGkgfCAodGhpcy5idWZbdGhpcy5wb3NdICYgMTI3KSA8PCBpICogNyArIDMpID4+PiAwO1xuICAgICAgICAgICAgaWYgKHRoaXMuYnVmW3RoaXMucG9zKytdIDwgMTI4KVxuICAgICAgICAgICAgICAgIHJldHVybiBiaXRzO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZm9yICg7IGkgPCA1OyArK2kpIHtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgICAgaWYgKHRoaXMucG9zID49IHRoaXMubGVuKVxuICAgICAgICAgICAgICAgIHRocm93IGluZGV4T3V0T2ZSYW5nZSh0aGlzKTtcbiAgICAgICAgICAgIC8vIDZ0aC4uMTB0aFxuICAgICAgICAgICAgYml0cy5oaSA9IChiaXRzLmhpIHwgKHRoaXMuYnVmW3RoaXMucG9zXSAmIDEyNykgPDwgaSAqIDcgKyAzKSA+Pj4gMDtcbiAgICAgICAgICAgIGlmICh0aGlzLmJ1Zlt0aGlzLnBvcysrXSA8IDEyOClcbiAgICAgICAgICAgICAgICByZXR1cm4gYml0cztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRocm93IEVycm9yKFwiaW52YWxpZCB2YXJpbnQgZW5jb2RpbmdcIik7XG59XG5cbi8qIGVzbGludC1lbmFibGUgbm8taW52YWxpZC10aGlzICovXG5cbi8qKlxuICogUmVhZHMgYSB2YXJpbnQgYXMgYSBzaWduZWQgNjQgYml0IHZhbHVlLlxuICogQG5hbWUgUmVhZGVyI2ludDY0XG4gKiBAZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtMb25nfSBWYWx1ZSByZWFkXG4gKi9cblxuLyoqXG4gKiBSZWFkcyBhIHZhcmludCBhcyBhbiB1bnNpZ25lZCA2NCBiaXQgdmFsdWUuXG4gKiBAbmFtZSBSZWFkZXIjdWludDY0XG4gKiBAZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtMb25nfSBWYWx1ZSByZWFkXG4gKi9cblxuLyoqXG4gKiBSZWFkcyBhIHppZy16YWcgZW5jb2RlZCB2YXJpbnQgYXMgYSBzaWduZWQgNjQgYml0IHZhbHVlLlxuICogQG5hbWUgUmVhZGVyI3NpbnQ2NFxuICogQGZ1bmN0aW9uXG4gKiBAcmV0dXJucyB7TG9uZ30gVmFsdWUgcmVhZFxuICovXG5cbi8qKlxuICogUmVhZHMgYSB2YXJpbnQgYXMgYSBib29sZWFuLlxuICogQHJldHVybnMge2Jvb2xlYW59IFZhbHVlIHJlYWRcbiAqL1xuUmVhZGVyLnByb3RvdHlwZS5ib29sID0gZnVuY3Rpb24gcmVhZF9ib29sKCkge1xuICAgIHJldHVybiB0aGlzLnVpbnQzMigpICE9PSAwO1xufTtcblxuZnVuY3Rpb24gcmVhZEZpeGVkMzJfZW5kKGJ1ZiwgZW5kKSB7IC8vIG5vdGUgdGhhdCB0aGlzIHVzZXMgYGVuZGAsIG5vdCBgcG9zYFxuICAgIHJldHVybiAoYnVmW2VuZCAtIDRdXG4gICAgICAgICAgfCBidWZbZW5kIC0gM10gPDwgOFxuICAgICAgICAgIHwgYnVmW2VuZCAtIDJdIDw8IDE2XG4gICAgICAgICAgfCBidWZbZW5kIC0gMV0gPDwgMjQpID4+PiAwO1xufVxuXG4vKipcbiAqIFJlYWRzIGZpeGVkIDMyIGJpdHMgYXMgYW4gdW5zaWduZWQgMzIgYml0IGludGVnZXIuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBWYWx1ZSByZWFkXG4gKi9cblJlYWRlci5wcm90b3R5cGUuZml4ZWQzMiA9IGZ1bmN0aW9uIHJlYWRfZml4ZWQzMigpIHtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICh0aGlzLnBvcyArIDQgPiB0aGlzLmxlbilcbiAgICAgICAgdGhyb3cgaW5kZXhPdXRPZlJhbmdlKHRoaXMsIDQpO1xuXG4gICAgcmV0dXJuIHJlYWRGaXhlZDMyX2VuZCh0aGlzLmJ1ZiwgdGhpcy5wb3MgKz0gNCk7XG59O1xuXG4vKipcbiAqIFJlYWRzIGZpeGVkIDMyIGJpdHMgYXMgYSBzaWduZWQgMzIgYml0IGludGVnZXIuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBWYWx1ZSByZWFkXG4gKi9cblJlYWRlci5wcm90b3R5cGUuc2ZpeGVkMzIgPSBmdW5jdGlvbiByZWFkX3NmaXhlZDMyKCkge1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHRoaXMucG9zICsgNCA+IHRoaXMubGVuKVxuICAgICAgICB0aHJvdyBpbmRleE91dE9mUmFuZ2UodGhpcywgNCk7XG5cbiAgICByZXR1cm4gcmVhZEZpeGVkMzJfZW5kKHRoaXMuYnVmLCB0aGlzLnBvcyArPSA0KSB8IDA7XG59O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1pbnZhbGlkLXRoaXMgKi9cblxuZnVuY3Rpb24gcmVhZEZpeGVkNjQoLyogdGhpczogUmVhZGVyICovKSB7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAodGhpcy5wb3MgKyA4ID4gdGhpcy5sZW4pXG4gICAgICAgIHRocm93IGluZGV4T3V0T2ZSYW5nZSh0aGlzLCA4KTtcblxuICAgIHJldHVybiBuZXcgTG9uZ0JpdHMocmVhZEZpeGVkMzJfZW5kKHRoaXMuYnVmLCB0aGlzLnBvcyArPSA0KSwgcmVhZEZpeGVkMzJfZW5kKHRoaXMuYnVmLCB0aGlzLnBvcyArPSA0KSk7XG59XG5cbi8qIGVzbGludC1lbmFibGUgbm8taW52YWxpZC10aGlzICovXG5cbi8qKlxuICogUmVhZHMgZml4ZWQgNjQgYml0cy5cbiAqIEBuYW1lIFJlYWRlciNmaXhlZDY0XG4gKiBAZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtMb25nfSBWYWx1ZSByZWFkXG4gKi9cblxuLyoqXG4gKiBSZWFkcyB6aWctemFnIGVuY29kZWQgZml4ZWQgNjQgYml0cy5cbiAqIEBuYW1lIFJlYWRlciNzZml4ZWQ2NFxuICogQGZ1bmN0aW9uXG4gKiBAcmV0dXJucyB7TG9uZ30gVmFsdWUgcmVhZFxuICovXG5cbi8qKlxuICogUmVhZHMgYSBmbG9hdCAoMzIgYml0KSBhcyBhIG51bWJlci5cbiAqIEBmdW5jdGlvblxuICogQHJldHVybnMge251bWJlcn0gVmFsdWUgcmVhZFxuICovXG5SZWFkZXIucHJvdG90eXBlLmZsb2F0ID0gZnVuY3Rpb24gcmVhZF9mbG9hdCgpIHtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICh0aGlzLnBvcyArIDQgPiB0aGlzLmxlbilcbiAgICAgICAgdGhyb3cgaW5kZXhPdXRPZlJhbmdlKHRoaXMsIDQpO1xuXG4gICAgdmFyIHZhbHVlID0gdXRpbC5mbG9hdC5yZWFkRmxvYXRMRSh0aGlzLmJ1ZiwgdGhpcy5wb3MpO1xuICAgIHRoaXMucG9zICs9IDQ7XG4gICAgcmV0dXJuIHZhbHVlO1xufTtcblxuLyoqXG4gKiBSZWFkcyBhIGRvdWJsZSAoNjQgYml0IGZsb2F0KSBhcyBhIG51bWJlci5cbiAqIEBmdW5jdGlvblxuICogQHJldHVybnMge251bWJlcn0gVmFsdWUgcmVhZFxuICovXG5SZWFkZXIucHJvdG90eXBlLmRvdWJsZSA9IGZ1bmN0aW9uIHJlYWRfZG91YmxlKCkge1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHRoaXMucG9zICsgOCA+IHRoaXMubGVuKVxuICAgICAgICB0aHJvdyBpbmRleE91dE9mUmFuZ2UodGhpcywgNCk7XG5cbiAgICB2YXIgdmFsdWUgPSB1dGlsLmZsb2F0LnJlYWREb3VibGVMRSh0aGlzLmJ1ZiwgdGhpcy5wb3MpO1xuICAgIHRoaXMucG9zICs9IDg7XG4gICAgcmV0dXJuIHZhbHVlO1xufTtcblxuLyoqXG4gKiBSZWFkcyBhIHNlcXVlbmNlIG9mIGJ5dGVzIHByZWNlZWRlZCBieSBpdHMgbGVuZ3RoIGFzIGEgdmFyaW50LlxuICogQHJldHVybnMge1VpbnQ4QXJyYXl9IFZhbHVlIHJlYWRcbiAqL1xuUmVhZGVyLnByb3RvdHlwZS5ieXRlcyA9IGZ1bmN0aW9uIHJlYWRfYnl0ZXMoKSB7XG4gICAgdmFyIGxlbmd0aCA9IHRoaXMudWludDMyKCksXG4gICAgICAgIHN0YXJ0ICA9IHRoaXMucG9zLFxuICAgICAgICBlbmQgICAgPSB0aGlzLnBvcyArIGxlbmd0aDtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChlbmQgPiB0aGlzLmxlbilcbiAgICAgICAgdGhyb3cgaW5kZXhPdXRPZlJhbmdlKHRoaXMsIGxlbmd0aCk7XG5cbiAgICB0aGlzLnBvcyArPSBsZW5ndGg7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5idWYpKSAvLyBwbGFpbiBhcnJheVxuICAgICAgICByZXR1cm4gdGhpcy5idWYuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgcmV0dXJuIHN0YXJ0ID09PSBlbmQgLy8gZml4IGZvciBJRSAxMC9XaW44IGFuZCBvdGhlcnMnIHN1YmFycmF5IHJldHVybmluZyBhcnJheSBvZiBzaXplIDFcbiAgICAgICAgPyBuZXcgdGhpcy5idWYuY29uc3RydWN0b3IoMClcbiAgICAgICAgOiB0aGlzLl9zbGljZS5jYWxsKHRoaXMuYnVmLCBzdGFydCwgZW5kKTtcbn07XG5cbi8qKlxuICogUmVhZHMgYSBzdHJpbmcgcHJlY2VlZGVkIGJ5IGl0cyBieXRlIGxlbmd0aCBhcyBhIHZhcmludC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFZhbHVlIHJlYWRcbiAqL1xuUmVhZGVyLnByb3RvdHlwZS5zdHJpbmcgPSBmdW5jdGlvbiByZWFkX3N0cmluZygpIHtcbiAgICB2YXIgYnl0ZXMgPSB0aGlzLmJ5dGVzKCk7XG4gICAgcmV0dXJuIHV0ZjgucmVhZChieXRlcywgMCwgYnl0ZXMubGVuZ3RoKTtcbn07XG5cbi8qKlxuICogU2tpcHMgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYnl0ZXMgaWYgc3BlY2lmaWVkLCBvdGhlcndpc2Ugc2tpcHMgYSB2YXJpbnQuXG4gKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aF0gTGVuZ3RoIGlmIGtub3duLCBvdGhlcndpc2UgYSB2YXJpbnQgaXMgYXNzdW1lZFxuICogQHJldHVybnMge1JlYWRlcn0gYHRoaXNgXG4gKi9cblJlYWRlci5wcm90b3R5cGUuc2tpcCA9IGZ1bmN0aW9uIHNraXAobGVuZ3RoKSB7XG4gICAgaWYgKHR5cGVvZiBsZW5ndGggPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgIGlmICh0aGlzLnBvcyArIGxlbmd0aCA+IHRoaXMubGVuKVxuICAgICAgICAgICAgdGhyb3cgaW5kZXhPdXRPZlJhbmdlKHRoaXMsIGxlbmd0aCk7XG4gICAgICAgIHRoaXMucG9zICs9IGxlbmd0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICAgIGlmICh0aGlzLnBvcyA+PSB0aGlzLmxlbilcbiAgICAgICAgICAgICAgICB0aHJvdyBpbmRleE91dE9mUmFuZ2UodGhpcyk7XG4gICAgICAgIH0gd2hpbGUgKHRoaXMuYnVmW3RoaXMucG9zKytdICYgMTI4KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNraXBzIHRoZSBuZXh0IGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCB3aXJlIHR5cGUuXG4gKiBAcGFyYW0ge251bWJlcn0gd2lyZVR5cGUgV2lyZSB0eXBlIHJlY2VpdmVkXG4gKiBAcmV0dXJucyB7UmVhZGVyfSBgdGhpc2BcbiAqL1xuUmVhZGVyLnByb3RvdHlwZS5za2lwVHlwZSA9IGZ1bmN0aW9uKHdpcmVUeXBlKSB7XG4gICAgc3dpdGNoICh3aXJlVHlwZSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICB0aGlzLnNraXAoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICB0aGlzLnNraXAoOCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgdGhpcy5za2lwKHRoaXMudWludDMyKCkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHdoaWxlICgod2lyZVR5cGUgPSB0aGlzLnVpbnQzMigpICYgNykgIT09IDQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNraXBUeXBlKHdpcmVUeXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICB0aGlzLnNraXAoNCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJpbnZhbGlkIHdpcmUgdHlwZSBcIiArIHdpcmVUeXBlICsgXCIgYXQgb2Zmc2V0IFwiICsgdGhpcy5wb3MpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbn07XG5cblJlYWRlci5fY29uZmlndXJlID0gZnVuY3Rpb24oQnVmZmVyUmVhZGVyXykge1xuICAgIEJ1ZmZlclJlYWRlciA9IEJ1ZmZlclJlYWRlcl87XG4gICAgUmVhZGVyLmNyZWF0ZSA9IGNyZWF0ZSgpO1xuICAgIEJ1ZmZlclJlYWRlci5fY29uZmlndXJlKCk7XG5cbiAgICB2YXIgZm4gPSB1dGlsLkxvbmcgPyBcInRvTG9uZ1wiIDogLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gXCJ0b051bWJlclwiO1xuICAgIHV0aWwubWVyZ2UoUmVhZGVyLnByb3RvdHlwZSwge1xuXG4gICAgICAgIGludDY0OiBmdW5jdGlvbiByZWFkX2ludDY0KCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlYWRMb25nVmFyaW50LmNhbGwodGhpcylbZm5dKGZhbHNlKTtcbiAgICAgICAgfSxcblxuICAgICAgICB1aW50NjQ6IGZ1bmN0aW9uIHJlYWRfdWludDY0KCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlYWRMb25nVmFyaW50LmNhbGwodGhpcylbZm5dKHRydWUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHNpbnQ2NDogZnVuY3Rpb24gcmVhZF9zaW50NjQoKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVhZExvbmdWYXJpbnQuY2FsbCh0aGlzKS56ekRlY29kZSgpW2ZuXShmYWxzZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZml4ZWQ2NDogZnVuY3Rpb24gcmVhZF9maXhlZDY0KCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlYWRGaXhlZDY0LmNhbGwodGhpcylbZm5dKHRydWUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHNmaXhlZDY0OiBmdW5jdGlvbiByZWFkX3NmaXhlZDY0KCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlYWRGaXhlZDY0LmNhbGwodGhpcylbZm5dKGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgfSk7XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5tb2R1bGUuZXhwb3J0cyA9IEJ1ZmZlclJlYWRlcjtcblxuLy8gZXh0ZW5kcyBSZWFkZXJcbnZhciBSZWFkZXIgPSByZXF1aXJlKFwiLi9yZWFkZXJcIik7XG4oQnVmZmVyUmVhZGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUmVhZGVyLnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yID0gQnVmZmVyUmVhZGVyO1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWwvbWluaW1hbFwiKTtcblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGEgbmV3IGJ1ZmZlciByZWFkZXIgaW5zdGFuY2UuXG4gKiBAY2xhc3NkZXNjIFdpcmUgZm9ybWF0IHJlYWRlciB1c2luZyBub2RlIGJ1ZmZlcnMuXG4gKiBAZXh0ZW5kcyBSZWFkZXJcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZmZlciBCdWZmZXIgdG8gcmVhZCBmcm9tXG4gKi9cbmZ1bmN0aW9uIEJ1ZmZlclJlYWRlcihidWZmZXIpIHtcbiAgICBSZWFkZXIuY2FsbCh0aGlzLCBidWZmZXIpO1xuXG4gICAgLyoqXG4gICAgICogUmVhZCBidWZmZXIuXG4gICAgICogQG5hbWUgQnVmZmVyUmVhZGVyI2J1ZlxuICAgICAqIEB0eXBlIHtCdWZmZXJ9XG4gICAgICovXG59XG5cbkJ1ZmZlclJlYWRlci5fY29uZmlndXJlID0gZnVuY3Rpb24gKCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHV0aWwuQnVmZmVyKVxuICAgICAgICBCdWZmZXJSZWFkZXIucHJvdG90eXBlLl9zbGljZSA9IHV0aWwuQnVmZmVyLnByb3RvdHlwZS5zbGljZTtcbn07XG5cblxuLyoqXG4gKiBAb3ZlcnJpZGVcbiAqL1xuQnVmZmVyUmVhZGVyLnByb3RvdHlwZS5zdHJpbmcgPSBmdW5jdGlvbiByZWFkX3N0cmluZ19idWZmZXIoKSB7XG4gICAgdmFyIGxlbiA9IHRoaXMudWludDMyKCk7IC8vIG1vZGlmaWVzIHBvc1xuICAgIHJldHVybiB0aGlzLmJ1Zi51dGY4U2xpY2VcbiAgICAgICAgPyB0aGlzLmJ1Zi51dGY4U2xpY2UodGhpcy5wb3MsIHRoaXMucG9zID0gTWF0aC5taW4odGhpcy5wb3MgKyBsZW4sIHRoaXMubGVuKSlcbiAgICAgICAgOiB0aGlzLmJ1Zi50b1N0cmluZyhcInV0Zi04XCIsIHRoaXMucG9zLCB0aGlzLnBvcyA9IE1hdGgubWluKHRoaXMucG9zICsgbGVuLCB0aGlzLmxlbikpO1xufTtcblxuLyoqXG4gKiBSZWFkcyBhIHNlcXVlbmNlIG9mIGJ5dGVzIHByZWNlZWRlZCBieSBpdHMgbGVuZ3RoIGFzIGEgdmFyaW50LlxuICogQG5hbWUgQnVmZmVyUmVhZGVyI2J5dGVzXG4gKiBAZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtCdWZmZXJ9IFZhbHVlIHJlYWRcbiAqL1xuXG5CdWZmZXJSZWFkZXIuX2NvbmZpZ3VyZSgpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5tb2R1bGUuZXhwb3J0cyA9IFNlcnZpY2U7XG5cbnZhciB1dGlsID0gcmVxdWlyZShcIi4uL3V0aWwvbWluaW1hbFwiKTtcblxuLy8gRXh0ZW5kcyBFdmVudEVtaXR0ZXJcbihTZXJ2aWNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodXRpbC5FdmVudEVtaXR0ZXIucHJvdG90eXBlKSkuY29uc3RydWN0b3IgPSBTZXJ2aWNlO1xuXG4vKipcbiAqIEEgc2VydmljZSBtZXRob2QgY2FsbGJhY2sgYXMgdXNlZCBieSB7QGxpbmsgcnBjLlNlcnZpY2VNZXRob2R8U2VydmljZU1ldGhvZH0uXG4gKlxuICogRGlmZmVycyBmcm9tIHtAbGluayBSUENJbXBsQ2FsbGJhY2t9IGluIHRoYXQgaXQgaXMgYW4gYWN0dWFsIGNhbGxiYWNrIG9mIGEgc2VydmljZSBtZXRob2Qgd2hpY2ggbWF5IG5vdCByZXR1cm4gYHJlc3BvbnNlID0gbnVsbGAuXG4gKiBAdHlwZWRlZiBycGMuU2VydmljZU1ldGhvZENhbGxiYWNrXG4gKiBAdGVtcGxhdGUgVFJlcyBleHRlbmRzIE1lc3NhZ2U8VFJlcz5cbiAqIEB0eXBlIHtmdW5jdGlvbn1cbiAqIEBwYXJhbSB7RXJyb3J8bnVsbH0gZXJyb3IgRXJyb3IsIGlmIGFueVxuICogQHBhcmFtIHtUUmVzfSBbcmVzcG9uc2VdIFJlc3BvbnNlIG1lc3NhZ2VcbiAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gKi9cblxuLyoqXG4gKiBBIHNlcnZpY2UgbWV0aG9kIHBhcnQgb2YgYSB7QGxpbmsgcnBjLlNlcnZpY2V9IGFzIGNyZWF0ZWQgYnkge0BsaW5rIFNlcnZpY2UuY3JlYXRlfS5cbiAqIEB0eXBlZGVmIHJwYy5TZXJ2aWNlTWV0aG9kXG4gKiBAdGVtcGxhdGUgVFJlcSBleHRlbmRzIE1lc3NhZ2U8VFJlcT5cbiAqIEB0ZW1wbGF0ZSBUUmVzIGV4dGVuZHMgTWVzc2FnZTxUUmVzPlxuICogQHR5cGUge2Z1bmN0aW9ufVxuICogQHBhcmFtIHtUUmVxfFByb3BlcnRpZXM8VFJlcT59IHJlcXVlc3QgUmVxdWVzdCBtZXNzYWdlIG9yIHBsYWluIG9iamVjdFxuICogQHBhcmFtIHtycGMuU2VydmljZU1ldGhvZENhbGxiYWNrPFRSZXM+fSBbY2FsbGJhY2tdIE5vZGUtc3R5bGUgY2FsbGJhY2sgY2FsbGVkIHdpdGggdGhlIGVycm9yLCBpZiBhbnksIGFuZCB0aGUgcmVzcG9uc2UgbWVzc2FnZVxuICogQHJldHVybnMge1Byb21pc2U8TWVzc2FnZTxUUmVzPj59IFByb21pc2UgaWYgYGNhbGxiYWNrYCBoYXMgYmVlbiBvbWl0dGVkLCBvdGhlcndpc2UgYHVuZGVmaW5lZGBcbiAqL1xuXG4vKipcbiAqIENvbnN0cnVjdHMgYSBuZXcgUlBDIHNlcnZpY2UgaW5zdGFuY2UuXG4gKiBAY2xhc3NkZXNjIEFuIFJQQyBzZXJ2aWNlIGFzIHJldHVybmVkIGJ5IHtAbGluayBTZXJ2aWNlI2NyZWF0ZX0uXG4gKiBAZXhwb3J0cyBycGMuU2VydmljZVxuICogQGV4dGVuZHMgdXRpbC5FdmVudEVtaXR0ZXJcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtSUENJbXBsfSBycGNJbXBsIFJQQyBpbXBsZW1lbnRhdGlvblxuICogQHBhcmFtIHtib29sZWFufSBbcmVxdWVzdERlbGltaXRlZD1mYWxzZV0gV2hldGhlciByZXF1ZXN0cyBhcmUgbGVuZ3RoLWRlbGltaXRlZFxuICogQHBhcmFtIHtib29sZWFufSBbcmVzcG9uc2VEZWxpbWl0ZWQ9ZmFsc2VdIFdoZXRoZXIgcmVzcG9uc2VzIGFyZSBsZW5ndGgtZGVsaW1pdGVkXG4gKi9cbmZ1bmN0aW9uIFNlcnZpY2UocnBjSW1wbCwgcmVxdWVzdERlbGltaXRlZCwgcmVzcG9uc2VEZWxpbWl0ZWQpIHtcblxuICAgIGlmICh0eXBlb2YgcnBjSW1wbCAhPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJycGNJbXBsIG11c3QgYmUgYSBmdW5jdGlvblwiKTtcblxuICAgIHV0aWwuRXZlbnRFbWl0dGVyLmNhbGwodGhpcyk7XG5cbiAgICAvKipcbiAgICAgKiBSUEMgaW1wbGVtZW50YXRpb24uIEJlY29tZXMgYG51bGxgIG9uY2UgdGhlIHNlcnZpY2UgaXMgZW5kZWQuXG4gICAgICogQHR5cGUge1JQQ0ltcGx8bnVsbH1cbiAgICAgKi9cbiAgICB0aGlzLnJwY0ltcGwgPSBycGNJbXBsO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciByZXF1ZXN0cyBhcmUgbGVuZ3RoLWRlbGltaXRlZC5cbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLnJlcXVlc3REZWxpbWl0ZWQgPSBCb29sZWFuKHJlcXVlc3REZWxpbWl0ZWQpO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciByZXNwb25zZXMgYXJlIGxlbmd0aC1kZWxpbWl0ZWQuXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgdGhpcy5yZXNwb25zZURlbGltaXRlZCA9IEJvb2xlYW4ocmVzcG9uc2VEZWxpbWl0ZWQpO1xufVxuXG4vKipcbiAqIENhbGxzIGEgc2VydmljZSBtZXRob2QgdGhyb3VnaCB7QGxpbmsgcnBjLlNlcnZpY2UjcnBjSW1wbHxycGNJbXBsfS5cbiAqIEBwYXJhbSB7TWV0aG9kfHJwYy5TZXJ2aWNlTWV0aG9kPFRSZXEsVFJlcz59IG1ldGhvZCBSZWZsZWN0ZWQgb3Igc3RhdGljIG1ldGhvZFxuICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxUUmVxPn0gcmVxdWVzdEN0b3IgUmVxdWVzdCBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxUUmVzPn0gcmVzcG9uc2VDdG9yIFJlc3BvbnNlIGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge1RSZXF8UHJvcGVydGllczxUUmVxPn0gcmVxdWVzdCBSZXF1ZXN0IG1lc3NhZ2Ugb3IgcGxhaW4gb2JqZWN0XG4gKiBAcGFyYW0ge3JwYy5TZXJ2aWNlTWV0aG9kQ2FsbGJhY2s8VFJlcz59IGNhbGxiYWNrIFNlcnZpY2UgY2FsbGJhY2tcbiAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gKiBAdGVtcGxhdGUgVFJlcSBleHRlbmRzIE1lc3NhZ2U8VFJlcT5cbiAqIEB0ZW1wbGF0ZSBUUmVzIGV4dGVuZHMgTWVzc2FnZTxUUmVzPlxuICovXG5TZXJ2aWNlLnByb3RvdHlwZS5ycGNDYWxsID0gZnVuY3Rpb24gcnBjQ2FsbChtZXRob2QsIHJlcXVlc3RDdG9yLCByZXNwb25zZUN0b3IsIHJlcXVlc3QsIGNhbGxiYWNrKSB7XG5cbiAgICBpZiAoIXJlcXVlc3QpXG4gICAgICAgIHRocm93IFR5cGVFcnJvcihcInJlcXVlc3QgbXVzdCBiZSBzcGVjaWZpZWRcIik7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgaWYgKCFjYWxsYmFjaylcbiAgICAgICAgcmV0dXJuIHV0aWwuYXNQcm9taXNlKHJwY0NhbGwsIHNlbGYsIG1ldGhvZCwgcmVxdWVzdEN0b3IsIHJlc3BvbnNlQ3RvciwgcmVxdWVzdCk7XG5cbiAgICBpZiAoIXNlbGYucnBjSW1wbCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjYWxsYmFjayhFcnJvcihcImFscmVhZHkgZW5kZWRcIikpOyB9LCAwKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gc2VsZi5ycGNJbXBsKFxuICAgICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgICAgcmVxdWVzdEN0b3Jbc2VsZi5yZXF1ZXN0RGVsaW1pdGVkID8gXCJlbmNvZGVEZWxpbWl0ZWRcIiA6IFwiZW5jb2RlXCJdKHJlcXVlc3QpLmZpbmlzaCgpLFxuICAgICAgICAgICAgZnVuY3Rpb24gcnBjQ2FsbGJhY2soZXJyLCByZXNwb25zZSkge1xuXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmVtaXQoXCJlcnJvclwiLCBlcnIsIG1ldGhvZCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmVuZCgvKiBlbmRlZEJ5UlBDICovIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghKHJlc3BvbnNlIGluc3RhbmNlb2YgcmVzcG9uc2VDdG9yKSkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNwb25zZUN0b3Jbc2VsZi5yZXNwb25zZURlbGltaXRlZCA/IFwiZGVjb2RlRGVsaW1pdGVkXCIgOiBcImRlY29kZVwiXShyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KFwiZXJyb3JcIiwgZXJyLCBtZXRob2QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzZWxmLmVtaXQoXCJkYXRhXCIsIHJlc3BvbnNlLCBtZXRob2QpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCByZXNwb25zZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHNlbGYuZW1pdChcImVycm9yXCIsIGVyciwgbWV0aG9kKTtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgY2FsbGJhY2soZXJyKTsgfSwgMCk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufTtcblxuLyoqXG4gKiBFbmRzIHRoaXMgc2VydmljZSBhbmQgZW1pdHMgdGhlIGBlbmRgIGV2ZW50LlxuICogQHBhcmFtIHtib29sZWFufSBbZW5kZWRCeVJQQz1mYWxzZV0gV2hldGhlciB0aGUgc2VydmljZSBoYXMgYmVlbiBlbmRlZCBieSB0aGUgUlBDIGltcGxlbWVudGF0aW9uLlxuICogQHJldHVybnMge3JwYy5TZXJ2aWNlfSBgdGhpc2BcbiAqL1xuU2VydmljZS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24gZW5kKGVuZGVkQnlSUEMpIHtcbiAgICBpZiAodGhpcy5ycGNJbXBsKSB7XG4gICAgICAgIGlmICghZW5kZWRCeVJQQykgLy8gc2lnbmFsIGVuZCB0byBycGNJbXBsXG4gICAgICAgICAgICB0aGlzLnJwY0ltcGwobnVsbCwgbnVsbCwgbnVsbCk7XG4gICAgICAgIHRoaXMucnBjSW1wbCA9IG51bGw7XG4gICAgICAgIHRoaXMuZW1pdChcImVuZFwiKS5vZmYoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qKlxuICogU3RyZWFtaW5nIFJQQyBoZWxwZXJzLlxuICogQG5hbWVzcGFjZVxuICovXG52YXIgcnBjID0gZXhwb3J0cztcblxuLyoqXG4gKiBSUEMgaW1wbGVtZW50YXRpb24gcGFzc2VkIHRvIHtAbGluayBTZXJ2aWNlI2NyZWF0ZX0gcGVyZm9ybWluZyBhIHNlcnZpY2UgcmVxdWVzdCBvbiBuZXR3b3JrIGxldmVsLCBpLmUuIGJ5IHV0aWxpemluZyBodHRwIHJlcXVlc3RzIG9yIHdlYnNvY2tldHMuXG4gKiBAdHlwZWRlZiBSUENJbXBsXG4gKiBAdHlwZSB7ZnVuY3Rpb259XG4gKiBAcGFyYW0ge01ldGhvZHxycGMuU2VydmljZU1ldGhvZDxNZXNzYWdlPHt9PixNZXNzYWdlPHt9Pj59IG1ldGhvZCBSZWZsZWN0ZWQgb3Igc3RhdGljIG1ldGhvZCBiZWluZyBjYWxsZWRcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gcmVxdWVzdERhdGEgUmVxdWVzdCBkYXRhXG4gKiBAcGFyYW0ge1JQQ0ltcGxDYWxsYmFja30gY2FsbGJhY2sgQ2FsbGJhY2sgZnVuY3Rpb25cbiAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gKiBAZXhhbXBsZVxuICogZnVuY3Rpb24gcnBjSW1wbChtZXRob2QsIHJlcXVlc3REYXRhLCBjYWxsYmFjaykge1xuICogICAgIGlmIChwcm90b2J1Zi51dGlsLmxjRmlyc3QobWV0aG9kLm5hbWUpICE9PSBcIm15TWV0aG9kXCIpIC8vIGNvbXBhdGlibGUgd2l0aCBzdGF0aWMgY29kZVxuICogICAgICAgICB0aHJvdyBFcnJvcihcIm5vIHN1Y2ggbWV0aG9kXCIpO1xuICogICAgIGFzeW5jaHJvbm91c2x5T2J0YWluQVJlc3BvbnNlKHJlcXVlc3REYXRhLCBmdW5jdGlvbihlcnIsIHJlc3BvbnNlRGF0YSkge1xuICogICAgICAgICBjYWxsYmFjayhlcnIsIHJlc3BvbnNlRGF0YSk7XG4gKiAgICAgfSk7XG4gKiB9XG4gKi9cblxuLyoqXG4gKiBOb2RlLXN0eWxlIGNhbGxiYWNrIGFzIHVzZWQgYnkge0BsaW5rIFJQQ0ltcGx9LlxuICogQHR5cGVkZWYgUlBDSW1wbENhbGxiYWNrXG4gKiBAdHlwZSB7ZnVuY3Rpb259XG4gKiBAcGFyYW0ge0Vycm9yfG51bGx9IGVycm9yIEVycm9yLCBpZiBhbnksIG90aGVyd2lzZSBgbnVsbGBcbiAqIEBwYXJhbSB7VWludDhBcnJheXxudWxsfSBbcmVzcG9uc2VdIFJlc3BvbnNlIGRhdGEgb3IgYG51bGxgIHRvIHNpZ25hbCBlbmQgb2Ygc3RyZWFtLCBpZiB0aGVyZSBoYXNuJ3QgYmVlbiBhbiBlcnJvclxuICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAqL1xuXG5ycGMuU2VydmljZSA9IHJlcXVpcmUoXCIuL3JwYy9zZXJ2aWNlXCIpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5tb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vKipcbiAqIE5hbWVkIHJvb3RzLlxuICogVGhpcyBpcyB3aGVyZSBwYmpzIHN0b3JlcyBnZW5lcmF0ZWQgc3RydWN0dXJlcyAodGhlIG9wdGlvbiBgLXIsIC0tcm9vdGAgc3BlY2lmaWVzIGEgbmFtZSkuXG4gKiBDYW4gYWxzbyBiZSB1c2VkIG1hbnVhbGx5IHRvIG1ha2Ugcm9vdHMgYXZhaWxhYmxlIGFjY3Jvc3MgbW9kdWxlcy5cbiAqIEBuYW1lIHJvb3RzXG4gKiBAdHlwZSB7T2JqZWN0LjxzdHJpbmcsUm9vdD59XG4gKiBAZXhhbXBsZVxuICogLy8gcGJqcyAtciBteXJvb3QgLW8gY29tcGlsZWQuanMgLi4uXG4gKlxuICogLy8gaW4gYW5vdGhlciBtb2R1bGU6XG4gKiByZXF1aXJlKFwiLi9jb21waWxlZC5qc1wiKTtcbiAqXG4gKiAvLyBpbiBhbnkgc3Vic2VxdWVudCBtb2R1bGU6XG4gKiB2YXIgcm9vdCA9IHByb3RvYnVmLnJvb3RzW1wibXlyb290XCJdO1xuICovXG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBwcm90b2J1ZiA9IGV4cG9ydHM7XG5cbi8qKlxuICogQnVpbGQgdHlwZSwgb25lIG9mIGBcImZ1bGxcImAsIGBcImxpZ2h0XCJgIG9yIGBcIm1pbmltYWxcImAuXG4gKiBAbmFtZSBidWlsZFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBjb25zdFxuICovXG5wcm90b2J1Zi5idWlsZCA9IFwibWluaW1hbFwiO1xuXG4vLyBTZXJpYWxpemF0aW9uXG5wcm90b2J1Zi5Xcml0ZXIgICAgICAgPSByZXF1aXJlKFwiLi93cml0ZXJcIik7XG5wcm90b2J1Zi5CdWZmZXJXcml0ZXIgPSByZXF1aXJlKFwiLi93cml0ZXJfYnVmZmVyXCIpO1xucHJvdG9idWYuUmVhZGVyICAgICAgID0gcmVxdWlyZShcIi4vcmVhZGVyXCIpO1xucHJvdG9idWYuQnVmZmVyUmVhZGVyID0gcmVxdWlyZShcIi4vcmVhZGVyX2J1ZmZlclwiKTtcblxuLy8gVXRpbGl0eVxucHJvdG9idWYudXRpbCAgICAgICAgID0gcmVxdWlyZShcIi4vdXRpbC9taW5pbWFsXCIpO1xucHJvdG9idWYucnBjICAgICAgICAgID0gcmVxdWlyZShcIi4vcnBjXCIpO1xucHJvdG9idWYucm9vdHMgICAgICAgID0gcmVxdWlyZShcIi4vcm9vdHNcIik7XG5wcm90b2J1Zi5jb25maWd1cmUgICAgPSBjb25maWd1cmU7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4vKipcbiAqIFJlY29uZmlndXJlcyB0aGUgbGlicmFyeSBhY2NvcmRpbmcgdG8gdGhlIGVudmlyb25tZW50LlxuICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAqL1xuZnVuY3Rpb24gY29uZmlndXJlKCkge1xuICAgIHByb3RvYnVmLnV0aWwuX2NvbmZpZ3VyZSgpO1xuICAgIHByb3RvYnVmLldyaXRlci5fY29uZmlndXJlKHByb3RvYnVmLkJ1ZmZlcldyaXRlcik7XG4gICAgcHJvdG9idWYuUmVhZGVyLl9jb25maWd1cmUocHJvdG9idWYuQnVmZmVyUmVhZGVyKTtcbn1cblxuLy8gU2V0IHVwIGJ1ZmZlciB1dGlsaXR5IGFjY29yZGluZyB0byB0aGUgZW52aXJvbm1lbnRcbmNvbmZpZ3VyZSgpO1xuIiwiLy8gbWluaW1hbCBsaWJyYXJ5IGVudHJ5IHBvaW50LlxuXG5cInVzZSBzdHJpY3RcIjtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4vc3JjL2luZGV4LW1pbmltYWxcIik7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0ICogYXMgX20wIGZyb20gJ3Byb3RvYnVmanMvbWluaW1hbCdcblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgcHJvdG9idWZQYWNrYWdlID0gJydcblxuZXhwb3J0IGludGVyZmFjZSBQQkFuaW1hdG9yIHtcbiAgc3RhdGVzOiBQQkFuaW1hdGlvblN0YXRlW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQQkFuaW1hdGlvblN0YXRlIHtcbiAgbmFtZTogc3RyaW5nXG4gIGNsaXA6IHN0cmluZ1xuICBwbGF5aW5nOiBib29sZWFuXG4gIHdlaWdodDogbnVtYmVyXG4gIHNwZWVkOiBudW1iZXJcbiAgbG9vcDogYm9vbGVhblxuICBzaG91bGRSZXNldDogYm9vbGVhblxufVxuXG5mdW5jdGlvbiBjcmVhdGVCYXNlUEJBbmltYXRvcigpOiBQQkFuaW1hdG9yIHtcbiAgcmV0dXJuIHsgc3RhdGVzOiBbXSB9XG59XG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFBCQW5pbWF0b3IgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBQQkFuaW1hdG9yLCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgZm9yIChjb25zdCB2IG9mIG1lc3NhZ2Uuc3RhdGVzKSB7XG4gICAgICBQQkFuaW1hdGlvblN0YXRlLmVuY29kZSh2ISwgd3JpdGVyLnVpbnQzMigxMCkuZm9yaygpKS5sZGVsaW0oKVxuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyXG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogUEJBbmltYXRvciB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBuZXcgX20wLlJlYWRlcihpbnB1dClcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlUEJBbmltYXRvcigpXG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKVxuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIG1lc3NhZ2Uuc3RhdGVzLnB1c2goUEJBbmltYXRpb25TdGF0ZS5kZWNvZGUocmVhZGVyLCByZWFkZXIudWludDMyKCkpKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpXG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2VcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVCYXNlUEJBbmltYXRpb25TdGF0ZSgpOiBQQkFuaW1hdGlvblN0YXRlIHtcbiAgcmV0dXJuIHsgbmFtZTogJycsIGNsaXA6ICcnLCBwbGF5aW5nOiBmYWxzZSwgd2VpZ2h0OiAwLCBzcGVlZDogMCwgbG9vcDogZmFsc2UsIHNob3VsZFJlc2V0OiBmYWxzZSB9XG59XG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFBCQW5pbWF0aW9uU3RhdGUgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBQQkFuaW1hdGlvblN0YXRlLCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgaWYgKG1lc3NhZ2UubmFtZSAhPT0gJycpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTApLnN0cmluZyhtZXNzYWdlLm5hbWUpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmNsaXAgIT09ICcnKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE4KS5zdHJpbmcobWVzc2FnZS5jbGlwKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5wbGF5aW5nID09PSB0cnVlKSB7XG4gICAgICB3cml0ZXIudWludDMyKDI0KS5ib29sKG1lc3NhZ2UucGxheWluZylcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uud2VpZ2h0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDM3KS5mbG9hdChtZXNzYWdlLndlaWdodClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uuc3BlZWQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDUpLmZsb2F0KG1lc3NhZ2Uuc3BlZWQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmxvb3AgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDgpLmJvb2wobWVzc2FnZS5sb29wKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5zaG91bGRSZXNldCA9PT0gdHJ1ZSkge1xuICAgICAgd3JpdGVyLnVpbnQzMig1NikuYm9vbChtZXNzYWdlLnNob3VsZFJlc2V0KVxuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyXG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogUEJBbmltYXRpb25TdGF0ZSB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBuZXcgX20wLlJlYWRlcihpbnB1dClcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlUEJBbmltYXRpb25TdGF0ZSgpXG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKVxuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIG1lc3NhZ2UubmFtZSA9IHJlYWRlci5zdHJpbmcoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBtZXNzYWdlLmNsaXAgPSByZWFkZXIuc3RyaW5nKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgbWVzc2FnZS5wbGF5aW5nID0gcmVhZGVyLmJvb2woKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBtZXNzYWdlLndlaWdodCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIG1lc3NhZ2Uuc3BlZWQgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICBtZXNzYWdlLmxvb3AgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIG1lc3NhZ2Uuc2hvdWxkUmVzZXQgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNylcbiAgICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZVxuICB9XG59XG4iLCJpbXBvcnQgeyBFY3NUeXBlIH0gZnJvbSAnLi4vLi4vYnVpbHQtaW4tdHlwZXMvRWNzVHlwZSdcbmltcG9ydCB7IEJ5dGVCdWZmZXIgfSBmcm9tICcuLi8uLi9zZXJpYWxpemF0aW9uL0J5dGVCdWZmZXInXG5pbXBvcnQgeyBQQkFuaW1hdG9yIH0gZnJvbSAnLi9wYi9BbmltYXRvci5nZW4nXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QT05FTlRfSUQgPSAxMDQyXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBBbmltYXRvcjogRWNzVHlwZTxQQkFuaW1hdG9yPiA9IHtcbiAgc2VyaWFsaXplKHZhbHVlOiBQQkFuaW1hdG9yLCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgY29uc3Qgd3JpdGVyID0gUEJBbmltYXRvci5lbmNvZGUodmFsdWUpXG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkod3JpdGVyLmZpbmlzaCgpLCAwLCB3cml0ZXIubGVuKVxuICAgIGJ1aWxkZXIud3JpdGVCdWZmZXIoYnVmZmVyLCBmYWxzZSlcbiAgfSxcbiAgZGVzZXJpYWxpemUocmVhZGVyOiBCeXRlQnVmZmVyKTogUEJBbmltYXRvciB7XG4gICAgcmV0dXJuIFBCQW5pbWF0b3IuZGVjb2RlKHJlYWRlci5idWZmZXIoKSwgcmVhZGVyLnJlbWFpbmluZ0J5dGVzKCkpXG4gIH0sXG4gIGNyZWF0ZSgpOiBQQkFuaW1hdG9yIHtcbiAgICAvLyBUT0RPOiB0aGlzIGlzIGEgaGFjay5cbiAgICByZXR1cm4gUEJBbmltYXRvci5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoKSlcbiAgfVxufVxuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCAqIGFzIF9tMCBmcm9tICdwcm90b2J1ZmpzL21pbmltYWwnXG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9ICcnXG5cbmV4cG9ydCBpbnRlcmZhY2UgUEJBdWRpb1NvdXJjZSB7XG4gIHBsYXlpbmc6IGJvb2xlYW5cbiAgdm9sdW1lOiBudW1iZXJcbiAgbG9vcDogYm9vbGVhblxuICBwaXRjaDogbnVtYmVyXG4gIHBsYXllZEF0VGltZXN0YW1wOiBudW1iZXJcbiAgYXVkaW9DbGlwVXJsOiBzdHJpbmdcbn1cblxuZnVuY3Rpb24gY3JlYXRlQmFzZVBCQXVkaW9Tb3VyY2UoKTogUEJBdWRpb1NvdXJjZSB7XG4gIHJldHVybiB7IHBsYXlpbmc6IGZhbHNlLCB2b2x1bWU6IDAsIGxvb3A6IGZhbHNlLCBwaXRjaDogMCwgcGxheWVkQXRUaW1lc3RhbXA6IDAsIGF1ZGlvQ2xpcFVybDogJycgfVxufVxuXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBQQkF1ZGlvU291cmNlID0ge1xuICBlbmNvZGUobWVzc2FnZTogUEJBdWRpb1NvdXJjZSwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLnBsYXlpbmcgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoOCkuYm9vbChtZXNzYWdlLnBsYXlpbmcpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnZvbHVtZSAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigyMSkuZmxvYXQobWVzc2FnZS52b2x1bWUpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmxvb3AgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjQpLmJvb2wobWVzc2FnZS5sb29wKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5waXRjaCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigzNykuZmxvYXQobWVzc2FnZS5waXRjaClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucGxheWVkQXRUaW1lc3RhbXAgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDApLmludDMyKG1lc3NhZ2UucGxheWVkQXRUaW1lc3RhbXApXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmF1ZGlvQ2xpcFVybCAhPT0gJycpIHtcbiAgICAgIHdyaXRlci51aW50MzIoNTApLnN0cmluZyhtZXNzYWdlLmF1ZGlvQ2xpcFVybClcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlclxuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IFBCQXVkaW9Tb3VyY2Uge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogbmV3IF9tMC5SZWFkZXIoaW5wdXQpXG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGhcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVBCQXVkaW9Tb3VyY2UoKVxuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKClcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBtZXNzYWdlLnBsYXlpbmcgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIG1lc3NhZ2Uudm9sdW1lID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgbWVzc2FnZS5sb29wID0gcmVhZGVyLmJvb2woKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBtZXNzYWdlLnBpdGNoID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgbWVzc2FnZS5wbGF5ZWRBdFRpbWVzdGFtcCA9IHJlYWRlci5pbnQzMigpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIG1lc3NhZ2UuYXVkaW9DbGlwVXJsID0gcmVhZGVyLnN0cmluZygpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNylcbiAgICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZVxuICB9XG59XG4iLCJpbXBvcnQgeyBFY3NUeXBlIH0gZnJvbSAnLi4vLi4vYnVpbHQtaW4tdHlwZXMvRWNzVHlwZSdcbmltcG9ydCB7IEJ5dGVCdWZmZXIgfSBmcm9tICcuLi8uLi9zZXJpYWxpemF0aW9uL0J5dGVCdWZmZXInXG5pbXBvcnQgeyBQQkF1ZGlvU291cmNlIH0gZnJvbSAnLi9wYi9BdWRpb1NvdXJjZS5nZW4nXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QT05FTlRfSUQgPSAxMDIwXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBBdWRpb1NvdXJjZTogRWNzVHlwZTxQQkF1ZGlvU291cmNlPiA9IHtcbiAgc2VyaWFsaXplKHZhbHVlOiBQQkF1ZGlvU291cmNlLCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgY29uc3Qgd3JpdGVyID0gUEJBdWRpb1NvdXJjZS5lbmNvZGUodmFsdWUpXG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkod3JpdGVyLmZpbmlzaCgpLCAwLCB3cml0ZXIubGVuKVxuICAgIGJ1aWxkZXIud3JpdGVCdWZmZXIoYnVmZmVyLCBmYWxzZSlcbiAgfSxcbiAgZGVzZXJpYWxpemUocmVhZGVyOiBCeXRlQnVmZmVyKTogUEJBdWRpb1NvdXJjZSB7XG4gICAgcmV0dXJuIFBCQXVkaW9Tb3VyY2UuZGVjb2RlKHJlYWRlci5idWZmZXIoKSwgcmVhZGVyLnJlbWFpbmluZ0J5dGVzKCkpXG4gIH0sXG4gIGNyZWF0ZSgpOiBQQkF1ZGlvU291cmNlIHtcbiAgICAvLyBUT0RPOiB0aGlzIGlzIGEgaGFjay5cbiAgICByZXR1cm4gUEJBdWRpb1NvdXJjZS5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoKSlcbiAgfVxufVxuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCAqIGFzIF9tMCBmcm9tICdwcm90b2J1ZmpzL21pbmltYWwnXG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9ICcnXG5cbmV4cG9ydCBpbnRlcmZhY2UgUEJBdWRpb1N0cmVhbSB7XG4gIHBsYXlpbmc6IGJvb2xlYW5cbiAgdm9sdW1lOiBudW1iZXJcbiAgdXJsOiBzdHJpbmdcbn1cblxuZnVuY3Rpb24gY3JlYXRlQmFzZVBCQXVkaW9TdHJlYW0oKTogUEJBdWRpb1N0cmVhbSB7XG4gIHJldHVybiB7IHBsYXlpbmc6IGZhbHNlLCB2b2x1bWU6IDAsIHVybDogJycgfVxufVxuXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBQQkF1ZGlvU3RyZWFtID0ge1xuICBlbmNvZGUobWVzc2FnZTogUEJBdWRpb1N0cmVhbSwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLnBsYXlpbmcgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoOCkuYm9vbChtZXNzYWdlLnBsYXlpbmcpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnZvbHVtZSAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigyMSkuZmxvYXQobWVzc2FnZS52b2x1bWUpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnVybCAhPT0gJycpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjYpLnN0cmluZyhtZXNzYWdlLnVybClcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlclxuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IFBCQXVkaW9TdHJlYW0ge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogbmV3IF9tMC5SZWFkZXIoaW5wdXQpXG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGhcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVBCQXVkaW9TdHJlYW0oKVxuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKClcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBtZXNzYWdlLnBsYXlpbmcgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIG1lc3NhZ2Uudm9sdW1lID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgbWVzc2FnZS51cmwgPSByZWFkZXIuc3RyaW5nKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlXG4gIH1cbn1cbiIsImltcG9ydCB7IEVjc1R5cGUgfSBmcm9tICcuLi8uLi9idWlsdC1pbi10eXBlcy9FY3NUeXBlJ1xuaW1wb3J0IHsgQnl0ZUJ1ZmZlciB9IGZyb20gJy4uLy4uL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IFBCQXVkaW9TdHJlYW0gfSBmcm9tICcuL3BiL0F1ZGlvU3RyZWFtLmdlbidcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IENPTVBPTkVOVF9JRCA9IDEwMjFcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IEF1ZGlvU3RyZWFtOiBFY3NUeXBlPFBCQXVkaW9TdHJlYW0+ID0ge1xuICBzZXJpYWxpemUodmFsdWU6IFBCQXVkaW9TdHJlYW0sIGJ1aWxkZXI6IEJ5dGVCdWZmZXIpOiB2b2lkIHtcbiAgICBjb25zdCB3cml0ZXIgPSBQQkF1ZGlvU3RyZWFtLmVuY29kZSh2YWx1ZSlcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhBcnJheSh3cml0ZXIuZmluaXNoKCksIDAsIHdyaXRlci5sZW4pXG4gICAgYnVpbGRlci53cml0ZUJ1ZmZlcihidWZmZXIsIGZhbHNlKVxuICB9LFxuICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBQQkF1ZGlvU3RyZWFtIHtcbiAgICByZXR1cm4gUEJBdWRpb1N0cmVhbS5kZWNvZGUocmVhZGVyLmJ1ZmZlcigpLCByZWFkZXIucmVtYWluaW5nQnl0ZXMoKSlcbiAgfSxcbiAgY3JlYXRlKCk6IFBCQXVkaW9TdHJlYW0ge1xuICAgIC8vIFRPRE86IHRoaXMgaXMgYSBoYWNrLlxuICAgIHJldHVybiBQQkF1ZGlvU3RyZWFtLmRlY29kZShuZXcgVWludDhBcnJheSgpKVxuICB9XG59XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0ICogYXMgX20wIGZyb20gJ3Byb3RvYnVmanMvbWluaW1hbCdcblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgcHJvdG9idWZQYWNrYWdlID0gJydcblxuZXhwb3J0IGludGVyZmFjZSBQQkJveFNoYXBlIHtcbiAgd2l0aENvbGxpc2lvbnM6IGJvb2xlYW5cbiAgaXNQb2ludGVyQmxvY2tlcjogYm9vbGVhblxuICB2aXNpYmxlOiBib29sZWFuXG4gIHV2czogbnVtYmVyW11cbn1cblxuZnVuY3Rpb24gY3JlYXRlQmFzZVBCQm94U2hhcGUoKTogUEJCb3hTaGFwZSB7XG4gIHJldHVybiB7IHdpdGhDb2xsaXNpb25zOiBmYWxzZSwgaXNQb2ludGVyQmxvY2tlcjogZmFsc2UsIHZpc2libGU6IGZhbHNlLCB1dnM6IFtdIH1cbn1cblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgUEJCb3hTaGFwZSA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IFBCQm94U2hhcGUsIHdyaXRlcjogX20wLldyaXRlciA9IF9tMC5Xcml0ZXIuY3JlYXRlKCkpOiBfbTAuV3JpdGVyIHtcbiAgICBpZiAobWVzc2FnZS53aXRoQ29sbGlzaW9ucyA9PT0gdHJ1ZSkge1xuICAgICAgd3JpdGVyLnVpbnQzMig4KS5ib29sKG1lc3NhZ2Uud2l0aENvbGxpc2lvbnMpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmlzUG9pbnRlckJsb2NrZXIgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTYpLmJvb2wobWVzc2FnZS5pc1BvaW50ZXJCbG9ja2VyKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS52aXNpYmxlID09PSB0cnVlKSB7XG4gICAgICB3cml0ZXIudWludDMyKDI0KS5ib29sKG1lc3NhZ2UudmlzaWJsZSlcbiAgICB9XG4gICAgd3JpdGVyLnVpbnQzMigzNCkuZm9yaygpXG4gICAgZm9yIChjb25zdCB2IG9mIG1lc3NhZ2UudXZzKSB7XG4gICAgICB3cml0ZXIuZmxvYXQodilcbiAgICB9XG4gICAgd3JpdGVyLmxkZWxpbSgpXG4gICAgcmV0dXJuIHdyaXRlclxuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IFBCQm94U2hhcGUge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogbmV3IF9tMC5SZWFkZXIoaW5wdXQpXG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGhcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVBCQm94U2hhcGUoKVxuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKClcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBtZXNzYWdlLndpdGhDb2xsaXNpb25zID0gcmVhZGVyLmJvb2woKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBtZXNzYWdlLmlzUG9pbnRlckJsb2NrZXIgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIG1lc3NhZ2UudmlzaWJsZSA9IHJlYWRlci5ib29sKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgaWYgKCh0YWcgJiA3KSA9PT0gMikge1xuICAgICAgICAgICAgY29uc3QgZW5kMiA9IHJlYWRlci51aW50MzIoKSArIHJlYWRlci5wb3NcbiAgICAgICAgICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kMikge1xuICAgICAgICAgICAgICBtZXNzYWdlLnV2cy5wdXNoKHJlYWRlci5mbG9hdCgpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtZXNzYWdlLnV2cy5wdXNoKHJlYWRlci5mbG9hdCgpKVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlXG4gIH1cbn1cbiIsImltcG9ydCB7IEVjc1R5cGUgfSBmcm9tICcuLi8uLi9idWlsdC1pbi10eXBlcy9FY3NUeXBlJ1xuaW1wb3J0IHsgQnl0ZUJ1ZmZlciB9IGZyb20gJy4uLy4uL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IFBCQm94U2hhcGUgfSBmcm9tICcuL3BiL0JveFNoYXBlLmdlbidcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IENPTVBPTkVOVF9JRCA9IDEwMTNcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IEJveFNoYXBlOiBFY3NUeXBlPFBCQm94U2hhcGU+ID0ge1xuICBzZXJpYWxpemUodmFsdWU6IFBCQm94U2hhcGUsIGJ1aWxkZXI6IEJ5dGVCdWZmZXIpOiB2b2lkIHtcbiAgICBjb25zdCB3cml0ZXIgPSBQQkJveFNoYXBlLmVuY29kZSh2YWx1ZSlcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhBcnJheSh3cml0ZXIuZmluaXNoKCksIDAsIHdyaXRlci5sZW4pXG4gICAgYnVpbGRlci53cml0ZUJ1ZmZlcihidWZmZXIsIGZhbHNlKVxuICB9LFxuICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBQQkJveFNoYXBlIHtcbiAgICByZXR1cm4gUEJCb3hTaGFwZS5kZWNvZGUocmVhZGVyLmJ1ZmZlcigpLCByZWFkZXIucmVtYWluaW5nQnl0ZXMoKSlcbiAgfSxcbiAgY3JlYXRlKCk6IFBCQm94U2hhcGUge1xuICAgIC8vIFRPRE86IHRoaXMgaXMgYSBoYWNrLlxuICAgIHJldHVybiBQQkJveFNoYXBlLmRlY29kZShuZXcgVWludDhBcnJheSgpKVxuICB9XG59XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0ICogYXMgX20wIGZyb20gJ3Byb3RvYnVmanMvbWluaW1hbCdcblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgcHJvdG9idWZQYWNrYWdlID0gJydcblxuZXhwb3J0IGludGVyZmFjZSBQQkN5bGluZGVyU2hhcGUge1xuICB3aXRoQ29sbGlzaW9uczogYm9vbGVhblxuICBpc1BvaW50ZXJCbG9ja2VyOiBib29sZWFuXG4gIHZpc2libGU6IGJvb2xlYW5cbiAgcmFkaXVzVG9wOiBudW1iZXJcbiAgcmFkaXVzQm90dG9tOiBudW1iZXJcbn1cblxuZnVuY3Rpb24gY3JlYXRlQmFzZVBCQ3lsaW5kZXJTaGFwZSgpOiBQQkN5bGluZGVyU2hhcGUge1xuICByZXR1cm4geyB3aXRoQ29sbGlzaW9uczogZmFsc2UsIGlzUG9pbnRlckJsb2NrZXI6IGZhbHNlLCB2aXNpYmxlOiBmYWxzZSwgcmFkaXVzVG9wOiAwLCByYWRpdXNCb3R0b206IDAgfVxufVxuXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBQQkN5bGluZGVyU2hhcGUgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBQQkN5bGluZGVyU2hhcGUsIHdyaXRlcjogX20wLldyaXRlciA9IF9tMC5Xcml0ZXIuY3JlYXRlKCkpOiBfbTAuV3JpdGVyIHtcbiAgICBpZiAobWVzc2FnZS53aXRoQ29sbGlzaW9ucyA9PT0gdHJ1ZSkge1xuICAgICAgd3JpdGVyLnVpbnQzMig4KS5ib29sKG1lc3NhZ2Uud2l0aENvbGxpc2lvbnMpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmlzUG9pbnRlckJsb2NrZXIgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTYpLmJvb2wobWVzc2FnZS5pc1BvaW50ZXJCbG9ja2VyKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS52aXNpYmxlID09PSB0cnVlKSB7XG4gICAgICB3cml0ZXIudWludDMyKDI0KS5ib29sKG1lc3NhZ2UudmlzaWJsZSlcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucmFkaXVzVG9wICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDM3KS5mbG9hdChtZXNzYWdlLnJhZGl1c1RvcClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucmFkaXVzQm90dG9tICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDQ1KS5mbG9hdChtZXNzYWdlLnJhZGl1c0JvdHRvbSlcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlclxuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IFBCQ3lsaW5kZXJTaGFwZSB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBuZXcgX20wLlJlYWRlcihpbnB1dClcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlUEJDeWxpbmRlclNoYXBlKClcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpXG4gICAgICBzd2l0Y2ggKHRhZyA+Pj4gMykge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgbWVzc2FnZS53aXRoQ29sbGlzaW9ucyA9IHJlYWRlci5ib29sKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgbWVzc2FnZS5pc1BvaW50ZXJCbG9ja2VyID0gcmVhZGVyLmJvb2woKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBtZXNzYWdlLnZpc2libGUgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIG1lc3NhZ2UucmFkaXVzVG9wID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgbWVzc2FnZS5yYWRpdXNCb3R0b20gPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpXG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2VcbiAgfVxufVxuIiwiaW1wb3J0IHsgRWNzVHlwZSB9IGZyb20gJy4uLy4uL2J1aWx0LWluLXR5cGVzL0Vjc1R5cGUnXG5pbXBvcnQgeyBCeXRlQnVmZmVyIH0gZnJvbSAnLi4vLi4vc2VyaWFsaXphdGlvbi9CeXRlQnVmZmVyJ1xuaW1wb3J0IHsgUEJDeWxpbmRlclNoYXBlIH0gZnJvbSAnLi9wYi9DeWxpbmRlclNoYXBlLmdlbidcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IENPTVBPTkVOVF9JRCA9IDEwMTZcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IEN5bGluZGVyU2hhcGU6IEVjc1R5cGU8UEJDeWxpbmRlclNoYXBlPiA9IHtcbiAgc2VyaWFsaXplKHZhbHVlOiBQQkN5bGluZGVyU2hhcGUsIGJ1aWxkZXI6IEJ5dGVCdWZmZXIpOiB2b2lkIHtcbiAgICBjb25zdCB3cml0ZXIgPSBQQkN5bGluZGVyU2hhcGUuZW5jb2RlKHZhbHVlKVxuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KHdyaXRlci5maW5pc2goKSwgMCwgd3JpdGVyLmxlbilcbiAgICBidWlsZGVyLndyaXRlQnVmZmVyKGJ1ZmZlciwgZmFsc2UpXG4gIH0sXG4gIGRlc2VyaWFsaXplKHJlYWRlcjogQnl0ZUJ1ZmZlcik6IFBCQ3lsaW5kZXJTaGFwZSB7XG4gICAgcmV0dXJuIFBCQ3lsaW5kZXJTaGFwZS5kZWNvZGUocmVhZGVyLmJ1ZmZlcigpLCByZWFkZXIucmVtYWluaW5nQnl0ZXMoKSlcbiAgfSxcbiAgY3JlYXRlKCk6IFBCQ3lsaW5kZXJTaGFwZSB7XG4gICAgLy8gVE9ETzogdGhpcyBpcyBhIGhhY2suXG4gICAgcmV0dXJuIFBCQ3lsaW5kZXJTaGFwZS5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoKSlcbiAgfVxufVxuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCAqIGFzIF9tMCBmcm9tICdwcm90b2J1ZmpzL21pbmltYWwnXG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9ICcnXG5cbmV4cG9ydCBpbnRlcmZhY2UgUEJHTFRGU2hhcGUge1xuICB3aXRoQ29sbGlzaW9uczogYm9vbGVhblxuICBpc1BvaW50ZXJCbG9ja2VyOiBib29sZWFuXG4gIHZpc2libGU6IGJvb2xlYW5cbiAgc3JjOiBzdHJpbmdcbn1cblxuZnVuY3Rpb24gY3JlYXRlQmFzZVBCR0xURlNoYXBlKCk6IFBCR0xURlNoYXBlIHtcbiAgcmV0dXJuIHsgd2l0aENvbGxpc2lvbnM6IGZhbHNlLCBpc1BvaW50ZXJCbG9ja2VyOiBmYWxzZSwgdmlzaWJsZTogZmFsc2UsIHNyYzogJycgfVxufVxuXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBQQkdMVEZTaGFwZSA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IFBCR0xURlNoYXBlLCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgaWYgKG1lc3NhZ2Uud2l0aENvbGxpc2lvbnMgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoOCkuYm9vbChtZXNzYWdlLndpdGhDb2xsaXNpb25zKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5pc1BvaW50ZXJCbG9ja2VyID09PSB0cnVlKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE2KS5ib29sKG1lc3NhZ2UuaXNQb2ludGVyQmxvY2tlcilcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UudmlzaWJsZSA9PT0gdHJ1ZSkge1xuICAgICAgd3JpdGVyLnVpbnQzMigyNCkuYm9vbChtZXNzYWdlLnZpc2libGUpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnNyYyAhPT0gJycpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMzQpLnN0cmluZyhtZXNzYWdlLnNyYylcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlclxuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IFBCR0xURlNoYXBlIHtcbiAgICBjb25zdCByZWFkZXIgPSBpbnB1dCBpbnN0YW5jZW9mIF9tMC5SZWFkZXIgPyBpbnB1dCA6IG5ldyBfbTAuUmVhZGVyKGlucHV0KVxuICAgIGxldCBlbmQgPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/IHJlYWRlci5sZW4gOiByZWFkZXIucG9zICsgbGVuZ3RoXG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VQQkdMVEZTaGFwZSgpXG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKVxuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIG1lc3NhZ2Uud2l0aENvbGxpc2lvbnMgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIG1lc3NhZ2UuaXNQb2ludGVyQmxvY2tlciA9IHJlYWRlci5ib29sKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgbWVzc2FnZS52aXNpYmxlID0gcmVhZGVyLmJvb2woKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBtZXNzYWdlLnNyYyA9IHJlYWRlci5zdHJpbmcoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpXG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2VcbiAgfVxufVxuIiwiaW1wb3J0IHsgRWNzVHlwZSB9IGZyb20gJy4uLy4uL2J1aWx0LWluLXR5cGVzL0Vjc1R5cGUnXG5pbXBvcnQgeyBCeXRlQnVmZmVyIH0gZnJvbSAnLi4vLi4vc2VyaWFsaXphdGlvbi9CeXRlQnVmZmVyJ1xuaW1wb3J0IHsgUEJHTFRGU2hhcGUgfSBmcm9tICcuL3BiL0dMVEZTaGFwZS5nZW4nXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QT05FTlRfSUQgPSAxMDQxXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBHTFRGU2hhcGU6IEVjc1R5cGU8UEJHTFRGU2hhcGU+ID0ge1xuICBzZXJpYWxpemUodmFsdWU6IFBCR0xURlNoYXBlLCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgY29uc3Qgd3JpdGVyID0gUEJHTFRGU2hhcGUuZW5jb2RlKHZhbHVlKVxuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KHdyaXRlci5maW5pc2goKSwgMCwgd3JpdGVyLmxlbilcbiAgICBidWlsZGVyLndyaXRlQnVmZmVyKGJ1ZmZlciwgZmFsc2UpXG4gIH0sXG4gIGRlc2VyaWFsaXplKHJlYWRlcjogQnl0ZUJ1ZmZlcik6IFBCR0xURlNoYXBlIHtcbiAgICByZXR1cm4gUEJHTFRGU2hhcGUuZGVjb2RlKHJlYWRlci5idWZmZXIoKSwgcmVhZGVyLnJlbWFpbmluZ0J5dGVzKCkpXG4gIH0sXG4gIGNyZWF0ZSgpOiBQQkdMVEZTaGFwZSB7XG4gICAgLy8gVE9ETzogdGhpcyBpcyBhIGhhY2suXG4gICAgcmV0dXJuIFBCR0xURlNoYXBlLmRlY29kZShuZXcgVWludDhBcnJheSgpKVxuICB9XG59XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0ICogYXMgX20wIGZyb20gJ3Byb3RvYnVmanMvbWluaW1hbCdcblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgcHJvdG9idWZQYWNrYWdlID0gJydcblxuZXhwb3J0IGludGVyZmFjZSBDb2xvcjMge1xuICByOiBudW1iZXJcbiAgZzogbnVtYmVyXG4gIGI6IG51bWJlclxufVxuXG5mdW5jdGlvbiBjcmVhdGVCYXNlQ29sb3IzKCk6IENvbG9yMyB7XG4gIHJldHVybiB7IHI6IDAsIGc6IDAsIGI6IDAgfVxufVxuXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBDb2xvcjMgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBDb2xvcjMsIHdyaXRlcjogX20wLldyaXRlciA9IF9tMC5Xcml0ZXIuY3JlYXRlKCkpOiBfbTAuV3JpdGVyIHtcbiAgICBpZiAobWVzc2FnZS5yICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDEzKS5mbG9hdChtZXNzYWdlLnIpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmcgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjEpLmZsb2F0KG1lc3NhZ2UuZylcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuYiAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigyOSkuZmxvYXQobWVzc2FnZS5iKVxuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyXG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogQ29sb3IzIHtcbiAgICBjb25zdCByZWFkZXIgPSBpbnB1dCBpbnN0YW5jZW9mIF9tMC5SZWFkZXIgPyBpbnB1dCA6IG5ldyBfbTAuUmVhZGVyKGlucHV0KVxuICAgIGxldCBlbmQgPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/IHJlYWRlci5sZW4gOiByZWFkZXIucG9zICsgbGVuZ3RoXG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VDb2xvcjMoKVxuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKClcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBtZXNzYWdlLnIgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBtZXNzYWdlLmcgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBtZXNzYWdlLmIgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpXG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2VcbiAgfVxufVxuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7IENvbG9yMyB9IGZyb20gJy4vY29tbW9uL0NvbG9yMy5nZW4nXG5pbXBvcnQgKiBhcyBfbTAgZnJvbSAncHJvdG9idWZqcy9taW5pbWFsJ1xuXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBwcm90b2J1ZlBhY2thZ2UgPSAnJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFBCTkZUU2hhcGUge1xuICB3aXRoQ29sbGlzaW9uczogYm9vbGVhblxuICBpc1BvaW50ZXJCbG9ja2VyOiBib29sZWFuXG4gIHZpc2libGU6IGJvb2xlYW5cbiAgc3JjOiBzdHJpbmdcbiAgYXNzZXRJZDogc3RyaW5nXG4gIHN0eWxlOiBudW1iZXJcbiAgY29sb3I6IENvbG9yMyB8IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBjcmVhdGVCYXNlUEJORlRTaGFwZSgpOiBQQk5GVFNoYXBlIHtcbiAgcmV0dXJuIHtcbiAgICB3aXRoQ29sbGlzaW9uczogZmFsc2UsXG4gICAgaXNQb2ludGVyQmxvY2tlcjogZmFsc2UsXG4gICAgdmlzaWJsZTogZmFsc2UsXG4gICAgc3JjOiAnJyxcbiAgICBhc3NldElkOiAnJyxcbiAgICBzdHlsZTogMCxcbiAgICBjb2xvcjogdW5kZWZpbmVkXG4gIH1cbn1cblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgUEJORlRTaGFwZSA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IFBCTkZUU2hhcGUsIHdyaXRlcjogX20wLldyaXRlciA9IF9tMC5Xcml0ZXIuY3JlYXRlKCkpOiBfbTAuV3JpdGVyIHtcbiAgICBpZiAobWVzc2FnZS53aXRoQ29sbGlzaW9ucyA9PT0gdHJ1ZSkge1xuICAgICAgd3JpdGVyLnVpbnQzMig4KS5ib29sKG1lc3NhZ2Uud2l0aENvbGxpc2lvbnMpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmlzUG9pbnRlckJsb2NrZXIgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTYpLmJvb2wobWVzc2FnZS5pc1BvaW50ZXJCbG9ja2VyKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS52aXNpYmxlID09PSB0cnVlKSB7XG4gICAgICB3cml0ZXIudWludDMyKDI0KS5ib29sKG1lc3NhZ2UudmlzaWJsZSlcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uuc3JjICE9PSAnJykge1xuICAgICAgd3JpdGVyLnVpbnQzMigzNCkuc3RyaW5nKG1lc3NhZ2Uuc3JjKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5hc3NldElkICE9PSAnJykge1xuICAgICAgd3JpdGVyLnVpbnQzMig0Mikuc3RyaW5nKG1lc3NhZ2UuYXNzZXRJZClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uuc3R5bGUgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDgpLmludDMyKG1lc3NhZ2Uuc3R5bGUpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmNvbG9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIENvbG9yMy5lbmNvZGUobWVzc2FnZS5jb2xvciwgd3JpdGVyLnVpbnQzMig1OCkuZm9yaygpKS5sZGVsaW0oKVxuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyXG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogUEJORlRTaGFwZSB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBuZXcgX20wLlJlYWRlcihpbnB1dClcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlUEJORlRTaGFwZSgpXG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKVxuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIG1lc3NhZ2Uud2l0aENvbGxpc2lvbnMgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIG1lc3NhZ2UuaXNQb2ludGVyQmxvY2tlciA9IHJlYWRlci5ib29sKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgbWVzc2FnZS52aXNpYmxlID0gcmVhZGVyLmJvb2woKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBtZXNzYWdlLnNyYyA9IHJlYWRlci5zdHJpbmcoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICBtZXNzYWdlLmFzc2V0SWQgPSByZWFkZXIuc3RyaW5nKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgbWVzc2FnZS5zdHlsZSA9IHJlYWRlci5pbnQzMigpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIG1lc3NhZ2UuY29sb3IgPSBDb2xvcjMuZGVjb2RlKHJlYWRlciwgcmVhZGVyLnVpbnQzMigpKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpXG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2VcbiAgfVxufVxuIiwiaW1wb3J0IHsgRWNzVHlwZSB9IGZyb20gJy4uLy4uL2J1aWx0LWluLXR5cGVzL0Vjc1R5cGUnXG5pbXBvcnQgeyBCeXRlQnVmZmVyIH0gZnJvbSAnLi4vLi4vc2VyaWFsaXphdGlvbi9CeXRlQnVmZmVyJ1xuaW1wb3J0IHsgUEJORlRTaGFwZSB9IGZyb20gJy4vcGIvTkZUU2hhcGUuZ2VuJ1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgQ09NUE9ORU5UX0lEID0gMTA0MFxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgTkZUU2hhcGU6IEVjc1R5cGU8UEJORlRTaGFwZT4gPSB7XG4gIHNlcmlhbGl6ZSh2YWx1ZTogUEJORlRTaGFwZSwgYnVpbGRlcjogQnl0ZUJ1ZmZlcik6IHZvaWQge1xuICAgIGNvbnN0IHdyaXRlciA9IFBCTkZUU2hhcGUuZW5jb2RlKHZhbHVlKVxuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KHdyaXRlci5maW5pc2goKSwgMCwgd3JpdGVyLmxlbilcbiAgICBidWlsZGVyLndyaXRlQnVmZmVyKGJ1ZmZlciwgZmFsc2UpXG4gIH0sXG4gIGRlc2VyaWFsaXplKHJlYWRlcjogQnl0ZUJ1ZmZlcik6IFBCTkZUU2hhcGUge1xuICAgIHJldHVybiBQQk5GVFNoYXBlLmRlY29kZShyZWFkZXIuYnVmZmVyKCksIHJlYWRlci5yZW1haW5pbmdCeXRlcygpKVxuICB9LFxuICBjcmVhdGUoKTogUEJORlRTaGFwZSB7XG4gICAgLy8gVE9ETzogdGhpcyBpcyBhIGhhY2suXG4gICAgcmV0dXJuIFBCTkZUU2hhcGUuZGVjb2RlKG5ldyBVaW50OEFycmF5KCkpXG4gIH1cbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgKiBhcyBfbTAgZnJvbSAncHJvdG9idWZqcy9taW5pbWFsJ1xuXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBwcm90b2J1ZlBhY2thZ2UgPSAnJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFBCT25Qb2ludGVyRG93biB7XG4gIGJ1dHRvbjogbnVtYmVyXG4gIGhvdmVyVGV4dDogc3RyaW5nXG4gIGRpc3RhbmNlOiBudW1iZXJcbiAgc2hvd0ZlZWRiYWNrOiBib29sZWFuXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VQQk9uUG9pbnRlckRvd24oKTogUEJPblBvaW50ZXJEb3duIHtcbiAgcmV0dXJuIHsgYnV0dG9uOiAwLCBob3ZlclRleHQ6ICcnLCBkaXN0YW5jZTogMCwgc2hvd0ZlZWRiYWNrOiBmYWxzZSB9XG59XG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFBCT25Qb2ludGVyRG93biA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IFBCT25Qb2ludGVyRG93biwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLmJ1dHRvbiAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig4KS5pbnQzMihtZXNzYWdlLmJ1dHRvbilcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuaG92ZXJUZXh0ICE9PSAnJykge1xuICAgICAgd3JpdGVyLnVpbnQzMigxOCkuc3RyaW5nKG1lc3NhZ2UuaG92ZXJUZXh0KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5kaXN0YW5jZSAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigyOSkuZmxvYXQobWVzc2FnZS5kaXN0YW5jZSlcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uuc2hvd0ZlZWRiYWNrID09PSB0cnVlKSB7XG4gICAgICB3cml0ZXIudWludDMyKDMyKS5ib29sKG1lc3NhZ2Uuc2hvd0ZlZWRiYWNrKVxuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyXG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogUEJPblBvaW50ZXJEb3duIHtcbiAgICBjb25zdCByZWFkZXIgPSBpbnB1dCBpbnN0YW5jZW9mIF9tMC5SZWFkZXIgPyBpbnB1dCA6IG5ldyBfbTAuUmVhZGVyKGlucHV0KVxuICAgIGxldCBlbmQgPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/IHJlYWRlci5sZW4gOiByZWFkZXIucG9zICsgbGVuZ3RoXG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VQQk9uUG9pbnRlckRvd24oKVxuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKClcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBtZXNzYWdlLmJ1dHRvbiA9IHJlYWRlci5pbnQzMigpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIG1lc3NhZ2UuaG92ZXJUZXh0ID0gcmVhZGVyLnN0cmluZygpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIG1lc3NhZ2UuZGlzdGFuY2UgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBtZXNzYWdlLnNob3dGZWVkYmFjayA9IHJlYWRlci5ib29sKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlXG4gIH1cbn1cbiIsImltcG9ydCB7IEVjc1R5cGUgfSBmcm9tICcuLi8uLi9idWlsdC1pbi10eXBlcy9FY3NUeXBlJ1xuaW1wb3J0IHsgQnl0ZUJ1ZmZlciB9IGZyb20gJy4uLy4uL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IFBCT25Qb2ludGVyRG93biB9IGZyb20gJy4vcGIvT25Qb2ludGVyRG93bi5nZW4nXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QT05FTlRfSUQgPSAxMDYwXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBPblBvaW50ZXJEb3duOiBFY3NUeXBlPFBCT25Qb2ludGVyRG93bj4gPSB7XG4gIHNlcmlhbGl6ZSh2YWx1ZTogUEJPblBvaW50ZXJEb3duLCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgY29uc3Qgd3JpdGVyID0gUEJPblBvaW50ZXJEb3duLmVuY29kZSh2YWx1ZSlcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhBcnJheSh3cml0ZXIuZmluaXNoKCksIDAsIHdyaXRlci5sZW4pXG4gICAgYnVpbGRlci53cml0ZUJ1ZmZlcihidWZmZXIsIGZhbHNlKVxuICB9LFxuICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBQQk9uUG9pbnRlckRvd24ge1xuICAgIHJldHVybiBQQk9uUG9pbnRlckRvd24uZGVjb2RlKHJlYWRlci5idWZmZXIoKSwgcmVhZGVyLnJlbWFpbmluZ0J5dGVzKCkpXG4gIH0sXG4gIGNyZWF0ZSgpOiBQQk9uUG9pbnRlckRvd24ge1xuICAgIC8vIFRPRE86IHRoaXMgaXMgYSBoYWNrLlxuICAgIHJldHVybiBQQk9uUG9pbnRlckRvd24uZGVjb2RlKG5ldyBVaW50OEFycmF5KCkpXG4gIH1cbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgKiBhcyBfbTAgZnJvbSAncHJvdG9idWZqcy9taW5pbWFsJ1xuXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBwcm90b2J1ZlBhY2thZ2UgPSAnJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFZlY3RvcjMge1xuICB4OiBudW1iZXJcbiAgeTogbnVtYmVyXG4gIHo6IG51bWJlclxufVxuXG5mdW5jdGlvbiBjcmVhdGVCYXNlVmVjdG9yMygpOiBWZWN0b3IzIHtcbiAgcmV0dXJuIHsgeDogMCwgeTogMCwgejogMCB9XG59XG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFZlY3RvcjMgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBWZWN0b3IzLCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgaWYgKG1lc3NhZ2UueCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMykuZmxvYXQobWVzc2FnZS54KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS55ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDIxKS5mbG9hdChtZXNzYWdlLnkpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnogIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjkpLmZsb2F0KG1lc3NhZ2UueilcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlclxuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IFZlY3RvcjMge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogbmV3IF9tMC5SZWFkZXIoaW5wdXQpXG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGhcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVZlY3RvcjMoKVxuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKClcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBtZXNzYWdlLnggPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBtZXNzYWdlLnkgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBtZXNzYWdlLnogPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpXG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2VcbiAgfVxufVxuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7IFZlY3RvcjMgfSBmcm9tICcuL2NvbW1vbi9WZWN0b3IzLmdlbidcbmltcG9ydCAqIGFzIF9tMCBmcm9tICdwcm90b2J1ZmpzL21pbmltYWwnXG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9ICcnXG5cbmV4cG9ydCBpbnRlcmZhY2UgUEJPblBvaW50ZXJEb3duUmVzdWx0IHtcbiAgYnV0dG9uOiBudW1iZXJcbiAgbWVzaE5hbWU6IHN0cmluZ1xuICBvcmlnaW46IFZlY3RvcjMgfCB1bmRlZmluZWRcbiAgZGlyZWN0aW9uOiBWZWN0b3IzIHwgdW5kZWZpbmVkXG4gIHBvaW50OiBWZWN0b3IzIHwgdW5kZWZpbmVkXG4gIG5vcm1hbDogVmVjdG9yMyB8IHVuZGVmaW5lZFxuICBkaXN0YW5jZTogbnVtYmVyXG4gIHRpbWVzdGFtcDogbnVtYmVyXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VQQk9uUG9pbnRlckRvd25SZXN1bHQoKTogUEJPblBvaW50ZXJEb3duUmVzdWx0IHtcbiAgcmV0dXJuIHtcbiAgICBidXR0b246IDAsXG4gICAgbWVzaE5hbWU6ICcnLFxuICAgIG9yaWdpbjogdW5kZWZpbmVkLFxuICAgIGRpcmVjdGlvbjogdW5kZWZpbmVkLFxuICAgIHBvaW50OiB1bmRlZmluZWQsXG4gICAgbm9ybWFsOiB1bmRlZmluZWQsXG4gICAgZGlzdGFuY2U6IDAsXG4gICAgdGltZXN0YW1wOiAwXG4gIH1cbn1cblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgUEJPblBvaW50ZXJEb3duUmVzdWx0ID0ge1xuICBlbmNvZGUobWVzc2FnZTogUEJPblBvaW50ZXJEb3duUmVzdWx0LCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgaWYgKG1lc3NhZ2UuYnV0dG9uICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE2KS5pbnQzMihtZXNzYWdlLmJ1dHRvbilcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubWVzaE5hbWUgIT09ICcnKSB7XG4gICAgICB3cml0ZXIudWludDMyKDI2KS5zdHJpbmcobWVzc2FnZS5tZXNoTmFtZSlcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uub3JpZ2luICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIFZlY3RvcjMuZW5jb2RlKG1lc3NhZ2Uub3JpZ2luLCB3cml0ZXIudWludDMyKDM0KS5mb3JrKCkpLmxkZWxpbSgpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmRpcmVjdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBWZWN0b3IzLmVuY29kZShtZXNzYWdlLmRpcmVjdGlvbiwgd3JpdGVyLnVpbnQzMig0MikuZm9yaygpKS5sZGVsaW0oKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5wb2ludCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBWZWN0b3IzLmVuY29kZShtZXNzYWdlLnBvaW50LCB3cml0ZXIudWludDMyKDUwKS5mb3JrKCkpLmxkZWxpbSgpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm5vcm1hbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBWZWN0b3IzLmVuY29kZShtZXNzYWdlLm5vcm1hbCwgd3JpdGVyLnVpbnQzMig1OCkuZm9yaygpKS5sZGVsaW0oKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5kaXN0YW5jZSAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig2OSkuZmxvYXQobWVzc2FnZS5kaXN0YW5jZSlcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UudGltZXN0YW1wICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDcyKS5pbnQzMihtZXNzYWdlLnRpbWVzdGFtcClcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlclxuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IFBCT25Qb2ludGVyRG93blJlc3VsdCB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBuZXcgX20wLlJlYWRlcihpbnB1dClcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlUEJPblBvaW50ZXJEb3duUmVzdWx0KClcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpXG4gICAgICBzd2l0Y2ggKHRhZyA+Pj4gMykge1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgbWVzc2FnZS5idXR0b24gPSByZWFkZXIuaW50MzIoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBtZXNzYWdlLm1lc2hOYW1lID0gcmVhZGVyLnN0cmluZygpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIG1lc3NhZ2Uub3JpZ2luID0gVmVjdG9yMy5kZWNvZGUocmVhZGVyLCByZWFkZXIudWludDMyKCkpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIG1lc3NhZ2UuZGlyZWN0aW9uID0gVmVjdG9yMy5kZWNvZGUocmVhZGVyLCByZWFkZXIudWludDMyKCkpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIG1lc3NhZ2UucG9pbnQgPSBWZWN0b3IzLmRlY29kZShyZWFkZXIsIHJlYWRlci51aW50MzIoKSlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgbWVzc2FnZS5ub3JtYWwgPSBWZWN0b3IzLmRlY29kZShyZWFkZXIsIHJlYWRlci51aW50MzIoKSlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgbWVzc2FnZS5kaXN0YW5jZSA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA5OlxuICAgICAgICAgIG1lc3NhZ2UudGltZXN0YW1wID0gcmVhZGVyLmludDMyKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlXG4gIH1cbn1cbiIsImltcG9ydCB7IEVjc1R5cGUgfSBmcm9tICcuLi8uLi9idWlsdC1pbi10eXBlcy9FY3NUeXBlJ1xuaW1wb3J0IHsgQnl0ZUJ1ZmZlciB9IGZyb20gJy4uLy4uL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IFBCT25Qb2ludGVyRG93blJlc3VsdCB9IGZyb20gJy4vcGIvT25Qb2ludGVyRG93blJlc3VsdC5nZW4nXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QT05FTlRfSUQgPSAxMDY2XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBPblBvaW50ZXJEb3duUmVzdWx0OiBFY3NUeXBlPFBCT25Qb2ludGVyRG93blJlc3VsdD4gPSB7XG4gIHNlcmlhbGl6ZSh2YWx1ZTogUEJPblBvaW50ZXJEb3duUmVzdWx0LCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgY29uc3Qgd3JpdGVyID0gUEJPblBvaW50ZXJEb3duUmVzdWx0LmVuY29kZSh2YWx1ZSlcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhBcnJheSh3cml0ZXIuZmluaXNoKCksIDAsIHdyaXRlci5sZW4pXG4gICAgYnVpbGRlci53cml0ZUJ1ZmZlcihidWZmZXIsIGZhbHNlKVxuICB9LFxuICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBQQk9uUG9pbnRlckRvd25SZXN1bHQge1xuICAgIHJldHVybiBQQk9uUG9pbnRlckRvd25SZXN1bHQuZGVjb2RlKHJlYWRlci5idWZmZXIoKSwgcmVhZGVyLnJlbWFpbmluZ0J5dGVzKCkpXG4gIH0sXG4gIGNyZWF0ZSgpOiBQQk9uUG9pbnRlckRvd25SZXN1bHQge1xuICAgIC8vIFRPRE86IHRoaXMgaXMgYSBoYWNrLlxuICAgIHJldHVybiBQQk9uUG9pbnRlckRvd25SZXN1bHQuZGVjb2RlKG5ldyBVaW50OEFycmF5KCkpXG4gIH1cbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgKiBhcyBfbTAgZnJvbSAncHJvdG9idWZqcy9taW5pbWFsJ1xuXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBwcm90b2J1ZlBhY2thZ2UgPSAnJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFBCT25Qb2ludGVyVXAge1xuICBidXR0b246IG51bWJlclxuICBob3ZlclRleHQ6IHN0cmluZ1xuICBkaXN0YW5jZTogbnVtYmVyXG4gIHNob3dGZWVkYmFjazogYm9vbGVhblxufVxuXG5mdW5jdGlvbiBjcmVhdGVCYXNlUEJPblBvaW50ZXJVcCgpOiBQQk9uUG9pbnRlclVwIHtcbiAgcmV0dXJuIHsgYnV0dG9uOiAwLCBob3ZlclRleHQ6ICcnLCBkaXN0YW5jZTogMCwgc2hvd0ZlZWRiYWNrOiBmYWxzZSB9XG59XG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFBCT25Qb2ludGVyVXAgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBQQk9uUG9pbnRlclVwLCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgaWYgKG1lc3NhZ2UuYnV0dG9uICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDgpLmludDMyKG1lc3NhZ2UuYnV0dG9uKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5ob3ZlclRleHQgIT09ICcnKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE4KS5zdHJpbmcobWVzc2FnZS5ob3ZlclRleHQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmRpc3RhbmNlICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDI5KS5mbG9hdChtZXNzYWdlLmRpc3RhbmNlKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5zaG93RmVlZGJhY2sgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMzIpLmJvb2wobWVzc2FnZS5zaG93RmVlZGJhY2spXG4gICAgfVxuICAgIHJldHVybiB3cml0ZXJcbiAgfSxcblxuICBkZWNvZGUoaW5wdXQ6IF9tMC5SZWFkZXIgfCBVaW50OEFycmF5LCBsZW5ndGg/OiBudW1iZXIpOiBQQk9uUG9pbnRlclVwIHtcbiAgICBjb25zdCByZWFkZXIgPSBpbnB1dCBpbnN0YW5jZW9mIF9tMC5SZWFkZXIgPyBpbnB1dCA6IG5ldyBfbTAuUmVhZGVyKGlucHV0KVxuICAgIGxldCBlbmQgPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/IHJlYWRlci5sZW4gOiByZWFkZXIucG9zICsgbGVuZ3RoXG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VQQk9uUG9pbnRlclVwKClcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpXG4gICAgICBzd2l0Y2ggKHRhZyA+Pj4gMykge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgbWVzc2FnZS5idXR0b24gPSByZWFkZXIuaW50MzIoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBtZXNzYWdlLmhvdmVyVGV4dCA9IHJlYWRlci5zdHJpbmcoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBtZXNzYWdlLmRpc3RhbmNlID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgbWVzc2FnZS5zaG93RmVlZGJhY2sgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNylcbiAgICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZVxuICB9XG59XG4iLCJpbXBvcnQgeyBFY3NUeXBlIH0gZnJvbSAnLi4vLi4vYnVpbHQtaW4tdHlwZXMvRWNzVHlwZSdcbmltcG9ydCB7IEJ5dGVCdWZmZXIgfSBmcm9tICcuLi8uLi9zZXJpYWxpemF0aW9uL0J5dGVCdWZmZXInXG5pbXBvcnQgeyBQQk9uUG9pbnRlclVwIH0gZnJvbSAnLi9wYi9PblBvaW50ZXJVcC5nZW4nXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QT05FTlRfSUQgPSAxMDYxXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBPblBvaW50ZXJVcDogRWNzVHlwZTxQQk9uUG9pbnRlclVwPiA9IHtcbiAgc2VyaWFsaXplKHZhbHVlOiBQQk9uUG9pbnRlclVwLCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgY29uc3Qgd3JpdGVyID0gUEJPblBvaW50ZXJVcC5lbmNvZGUodmFsdWUpXG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkod3JpdGVyLmZpbmlzaCgpLCAwLCB3cml0ZXIubGVuKVxuICAgIGJ1aWxkZXIud3JpdGVCdWZmZXIoYnVmZmVyLCBmYWxzZSlcbiAgfSxcbiAgZGVzZXJpYWxpemUocmVhZGVyOiBCeXRlQnVmZmVyKTogUEJPblBvaW50ZXJVcCB7XG4gICAgcmV0dXJuIFBCT25Qb2ludGVyVXAuZGVjb2RlKHJlYWRlci5idWZmZXIoKSwgcmVhZGVyLnJlbWFpbmluZ0J5dGVzKCkpXG4gIH0sXG4gIGNyZWF0ZSgpOiBQQk9uUG9pbnRlclVwIHtcbiAgICAvLyBUT0RPOiB0aGlzIGlzIGEgaGFjay5cbiAgICByZXR1cm4gUEJPblBvaW50ZXJVcC5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoKSlcbiAgfVxufVxuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7IFZlY3RvcjMgfSBmcm9tICcuL2NvbW1vbi9WZWN0b3IzLmdlbidcbmltcG9ydCAqIGFzIF9tMCBmcm9tICdwcm90b2J1ZmpzL21pbmltYWwnXG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9ICcnXG5cbmV4cG9ydCBpbnRlcmZhY2UgUEJPblBvaW50ZXJVcFJlc3VsdCB7XG4gIGJ1dHRvbjogbnVtYmVyXG4gIG1lc2hOYW1lOiBzdHJpbmdcbiAgb3JpZ2luOiBWZWN0b3IzIHwgdW5kZWZpbmVkXG4gIGRpcmVjdGlvbjogVmVjdG9yMyB8IHVuZGVmaW5lZFxuICBwb2ludDogVmVjdG9yMyB8IHVuZGVmaW5lZFxuICBub3JtYWw6IFZlY3RvcjMgfCB1bmRlZmluZWRcbiAgZGlzdGFuY2U6IG51bWJlclxuICB0aW1lc3RhbXA6IG51bWJlclxufVxuXG5mdW5jdGlvbiBjcmVhdGVCYXNlUEJPblBvaW50ZXJVcFJlc3VsdCgpOiBQQk9uUG9pbnRlclVwUmVzdWx0IHtcbiAgcmV0dXJuIHtcbiAgICBidXR0b246IDAsXG4gICAgbWVzaE5hbWU6ICcnLFxuICAgIG9yaWdpbjogdW5kZWZpbmVkLFxuICAgIGRpcmVjdGlvbjogdW5kZWZpbmVkLFxuICAgIHBvaW50OiB1bmRlZmluZWQsXG4gICAgbm9ybWFsOiB1bmRlZmluZWQsXG4gICAgZGlzdGFuY2U6IDAsXG4gICAgdGltZXN0YW1wOiAwXG4gIH1cbn1cblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgUEJPblBvaW50ZXJVcFJlc3VsdCA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IFBCT25Qb2ludGVyVXBSZXN1bHQsIHdyaXRlcjogX20wLldyaXRlciA9IF9tMC5Xcml0ZXIuY3JlYXRlKCkpOiBfbTAuV3JpdGVyIHtcbiAgICBpZiAobWVzc2FnZS5idXR0b24gIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTYpLmludDMyKG1lc3NhZ2UuYnV0dG9uKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5tZXNoTmFtZSAhPT0gJycpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjYpLnN0cmluZyhtZXNzYWdlLm1lc2hOYW1lKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5vcmlnaW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgVmVjdG9yMy5lbmNvZGUobWVzc2FnZS5vcmlnaW4sIHdyaXRlci51aW50MzIoMzQpLmZvcmsoKSkubGRlbGltKClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuZGlyZWN0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIFZlY3RvcjMuZW5jb2RlKG1lc3NhZ2UuZGlyZWN0aW9uLCB3cml0ZXIudWludDMyKDQyKS5mb3JrKCkpLmxkZWxpbSgpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBvaW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIFZlY3RvcjMuZW5jb2RlKG1lc3NhZ2UucG9pbnQsIHdyaXRlci51aW50MzIoNTApLmZvcmsoKSkubGRlbGltKClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uubm9ybWFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIFZlY3RvcjMuZW5jb2RlKG1lc3NhZ2Uubm9ybWFsLCB3cml0ZXIudWludDMyKDU4KS5mb3JrKCkpLmxkZWxpbSgpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmRpc3RhbmNlICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDY5KS5mbG9hdChtZXNzYWdlLmRpc3RhbmNlKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS50aW1lc3RhbXAgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNzIpLmludDMyKG1lc3NhZ2UudGltZXN0YW1wKVxuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyXG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogUEJPblBvaW50ZXJVcFJlc3VsdCB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBuZXcgX20wLlJlYWRlcihpbnB1dClcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlUEJPblBvaW50ZXJVcFJlc3VsdCgpXG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKVxuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIG1lc3NhZ2UuYnV0dG9uID0gcmVhZGVyLmludDMyKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgbWVzc2FnZS5tZXNoTmFtZSA9IHJlYWRlci5zdHJpbmcoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBtZXNzYWdlLm9yaWdpbiA9IFZlY3RvcjMuZGVjb2RlKHJlYWRlciwgcmVhZGVyLnVpbnQzMigpKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICBtZXNzYWdlLmRpcmVjdGlvbiA9IFZlY3RvcjMuZGVjb2RlKHJlYWRlciwgcmVhZGVyLnVpbnQzMigpKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICBtZXNzYWdlLnBvaW50ID0gVmVjdG9yMy5kZWNvZGUocmVhZGVyLCByZWFkZXIudWludDMyKCkpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIG1lc3NhZ2Uubm9ybWFsID0gVmVjdG9yMy5kZWNvZGUocmVhZGVyLCByZWFkZXIudWludDMyKCkpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgIG1lc3NhZ2UuZGlzdGFuY2UgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICBtZXNzYWdlLnRpbWVzdGFtcCA9IHJlYWRlci5pbnQzMigpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNylcbiAgICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZVxuICB9XG59XG4iLCJpbXBvcnQgeyBFY3NUeXBlIH0gZnJvbSAnLi4vLi4vYnVpbHQtaW4tdHlwZXMvRWNzVHlwZSdcbmltcG9ydCB7IEJ5dGVCdWZmZXIgfSBmcm9tICcuLi8uLi9zZXJpYWxpemF0aW9uL0J5dGVCdWZmZXInXG5pbXBvcnQgeyBQQk9uUG9pbnRlclVwUmVzdWx0IH0gZnJvbSAnLi9wYi9PblBvaW50ZXJVcFJlc3VsdC5nZW4nXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QT05FTlRfSUQgPSAxMDY1XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBPblBvaW50ZXJVcFJlc3VsdDogRWNzVHlwZTxQQk9uUG9pbnRlclVwUmVzdWx0PiA9IHtcbiAgc2VyaWFsaXplKHZhbHVlOiBQQk9uUG9pbnRlclVwUmVzdWx0LCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgY29uc3Qgd3JpdGVyID0gUEJPblBvaW50ZXJVcFJlc3VsdC5lbmNvZGUodmFsdWUpXG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkod3JpdGVyLmZpbmlzaCgpLCAwLCB3cml0ZXIubGVuKVxuICAgIGJ1aWxkZXIud3JpdGVCdWZmZXIoYnVmZmVyLCBmYWxzZSlcbiAgfSxcbiAgZGVzZXJpYWxpemUocmVhZGVyOiBCeXRlQnVmZmVyKTogUEJPblBvaW50ZXJVcFJlc3VsdCB7XG4gICAgcmV0dXJuIFBCT25Qb2ludGVyVXBSZXN1bHQuZGVjb2RlKHJlYWRlci5idWZmZXIoKSwgcmVhZGVyLnJlbWFpbmluZ0J5dGVzKCkpXG4gIH0sXG4gIGNyZWF0ZSgpOiBQQk9uUG9pbnRlclVwUmVzdWx0IHtcbiAgICAvLyBUT0RPOiB0aGlzIGlzIGEgaGFjay5cbiAgICByZXR1cm4gUEJPblBvaW50ZXJVcFJlc3VsdC5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoKSlcbiAgfVxufVxuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCAqIGFzIF9tMCBmcm9tICdwcm90b2J1ZmpzL21pbmltYWwnXG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9ICcnXG5cbmV4cG9ydCBpbnRlcmZhY2UgUEJQbGFuZVNoYXBlIHtcbiAgd2l0aENvbGxpc2lvbnM6IGJvb2xlYW5cbiAgaXNQb2ludGVyQmxvY2tlcjogYm9vbGVhblxuICB2aXNpYmxlOiBib29sZWFuXG4gIHV2czogbnVtYmVyW11cbn1cblxuZnVuY3Rpb24gY3JlYXRlQmFzZVBCUGxhbmVTaGFwZSgpOiBQQlBsYW5lU2hhcGUge1xuICByZXR1cm4geyB3aXRoQ29sbGlzaW9uczogZmFsc2UsIGlzUG9pbnRlckJsb2NrZXI6IGZhbHNlLCB2aXNpYmxlOiBmYWxzZSwgdXZzOiBbXSB9XG59XG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFBCUGxhbmVTaGFwZSA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IFBCUGxhbmVTaGFwZSwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLndpdGhDb2xsaXNpb25zID09PSB0cnVlKSB7XG4gICAgICB3cml0ZXIudWludDMyKDgpLmJvb2wobWVzc2FnZS53aXRoQ29sbGlzaW9ucylcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuaXNQb2ludGVyQmxvY2tlciA9PT0gdHJ1ZSkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxNikuYm9vbChtZXNzYWdlLmlzUG9pbnRlckJsb2NrZXIpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnZpc2libGUgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjQpLmJvb2wobWVzc2FnZS52aXNpYmxlKVxuICAgIH1cbiAgICB3cml0ZXIudWludDMyKDM0KS5mb3JrKClcbiAgICBmb3IgKGNvbnN0IHYgb2YgbWVzc2FnZS51dnMpIHtcbiAgICAgIHdyaXRlci5mbG9hdCh2KVxuICAgIH1cbiAgICB3cml0ZXIubGRlbGltKClcbiAgICByZXR1cm4gd3JpdGVyXG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogUEJQbGFuZVNoYXBlIHtcbiAgICBjb25zdCByZWFkZXIgPSBpbnB1dCBpbnN0YW5jZW9mIF9tMC5SZWFkZXIgPyBpbnB1dCA6IG5ldyBfbTAuUmVhZGVyKGlucHV0KVxuICAgIGxldCBlbmQgPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/IHJlYWRlci5sZW4gOiByZWFkZXIucG9zICsgbGVuZ3RoXG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VQQlBsYW5lU2hhcGUoKVxuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKClcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBtZXNzYWdlLndpdGhDb2xsaXNpb25zID0gcmVhZGVyLmJvb2woKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBtZXNzYWdlLmlzUG9pbnRlckJsb2NrZXIgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIG1lc3NhZ2UudmlzaWJsZSA9IHJlYWRlci5ib29sKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgaWYgKCh0YWcgJiA3KSA9PT0gMikge1xuICAgICAgICAgICAgY29uc3QgZW5kMiA9IHJlYWRlci51aW50MzIoKSArIHJlYWRlci5wb3NcbiAgICAgICAgICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kMikge1xuICAgICAgICAgICAgICBtZXNzYWdlLnV2cy5wdXNoKHJlYWRlci5mbG9hdCgpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtZXNzYWdlLnV2cy5wdXNoKHJlYWRlci5mbG9hdCgpKVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlXG4gIH1cbn1cbiIsImltcG9ydCB7IEVjc1R5cGUgfSBmcm9tICcuLi8uLi9idWlsdC1pbi10eXBlcy9FY3NUeXBlJ1xuaW1wb3J0IHsgQnl0ZUJ1ZmZlciB9IGZyb20gJy4uLy4uL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IFBCUGxhbmVTaGFwZSB9IGZyb20gJy4vcGIvUGxhbmVTaGFwZS5nZW4nXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QT05FTlRfSUQgPSAxMDE0XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBQbGFuZVNoYXBlOiBFY3NUeXBlPFBCUGxhbmVTaGFwZT4gPSB7XG4gIHNlcmlhbGl6ZSh2YWx1ZTogUEJQbGFuZVNoYXBlLCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgY29uc3Qgd3JpdGVyID0gUEJQbGFuZVNoYXBlLmVuY29kZSh2YWx1ZSlcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhBcnJheSh3cml0ZXIuZmluaXNoKCksIDAsIHdyaXRlci5sZW4pXG4gICAgYnVpbGRlci53cml0ZUJ1ZmZlcihidWZmZXIsIGZhbHNlKVxuICB9LFxuICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBQQlBsYW5lU2hhcGUge1xuICAgIHJldHVybiBQQlBsYW5lU2hhcGUuZGVjb2RlKHJlYWRlci5idWZmZXIoKSwgcmVhZGVyLnJlbWFpbmluZ0J5dGVzKCkpXG4gIH0sXG4gIGNyZWF0ZSgpOiBQQlBsYW5lU2hhcGUge1xuICAgIC8vIFRPRE86IHRoaXMgaXMgYSBoYWNrLlxuICAgIHJldHVybiBQQlBsYW5lU2hhcGUuZGVjb2RlKG5ldyBVaW50OEFycmF5KCkpXG4gIH1cbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgKiBhcyBfbTAgZnJvbSAncHJvdG9idWZqcy9taW5pbWFsJ1xuXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBwcm90b2J1ZlBhY2thZ2UgPSAnJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFBCU3BoZXJlU2hhcGUge1xuICB3aXRoQ29sbGlzaW9uczogYm9vbGVhblxuICBpc1BvaW50ZXJCbG9ja2VyOiBib29sZWFuXG4gIHZpc2libGU6IGJvb2xlYW5cbn1cblxuZnVuY3Rpb24gY3JlYXRlQmFzZVBCU3BoZXJlU2hhcGUoKTogUEJTcGhlcmVTaGFwZSB7XG4gIHJldHVybiB7IHdpdGhDb2xsaXNpb25zOiBmYWxzZSwgaXNQb2ludGVyQmxvY2tlcjogZmFsc2UsIHZpc2libGU6IGZhbHNlIH1cbn1cblxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgUEJTcGhlcmVTaGFwZSA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IFBCU3BoZXJlU2hhcGUsIHdyaXRlcjogX20wLldyaXRlciA9IF9tMC5Xcml0ZXIuY3JlYXRlKCkpOiBfbTAuV3JpdGVyIHtcbiAgICBpZiAobWVzc2FnZS53aXRoQ29sbGlzaW9ucyA9PT0gdHJ1ZSkge1xuICAgICAgd3JpdGVyLnVpbnQzMig4KS5ib29sKG1lc3NhZ2Uud2l0aENvbGxpc2lvbnMpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmlzUG9pbnRlckJsb2NrZXIgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTYpLmJvb2wobWVzc2FnZS5pc1BvaW50ZXJCbG9ja2VyKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS52aXNpYmxlID09PSB0cnVlKSB7XG4gICAgICB3cml0ZXIudWludDMyKDI0KS5ib29sKG1lc3NhZ2UudmlzaWJsZSlcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlclxuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IFBCU3BoZXJlU2hhcGUge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogbmV3IF9tMC5SZWFkZXIoaW5wdXQpXG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGhcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVBCU3BoZXJlU2hhcGUoKVxuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKClcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBtZXNzYWdlLndpdGhDb2xsaXNpb25zID0gcmVhZGVyLmJvb2woKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBtZXNzYWdlLmlzUG9pbnRlckJsb2NrZXIgPSByZWFkZXIuYm9vbCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIG1lc3NhZ2UudmlzaWJsZSA9IHJlYWRlci5ib29sKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlXG4gIH1cbn1cbiIsImltcG9ydCB7IEVjc1R5cGUgfSBmcm9tICcuLi8uLi9idWlsdC1pbi10eXBlcy9FY3NUeXBlJ1xuaW1wb3J0IHsgQnl0ZUJ1ZmZlciB9IGZyb20gJy4uLy4uL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IFBCU3BoZXJlU2hhcGUgfSBmcm9tICcuL3BiL1NwaGVyZVNoYXBlLmdlbidcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IENPTVBPTkVOVF9JRCA9IDEwMTVcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFNwaGVyZVNoYXBlOiBFY3NUeXBlPFBCU3BoZXJlU2hhcGU+ID0ge1xuICBzZXJpYWxpemUodmFsdWU6IFBCU3BoZXJlU2hhcGUsIGJ1aWxkZXI6IEJ5dGVCdWZmZXIpOiB2b2lkIHtcbiAgICBjb25zdCB3cml0ZXIgPSBQQlNwaGVyZVNoYXBlLmVuY29kZSh2YWx1ZSlcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhBcnJheSh3cml0ZXIuZmluaXNoKCksIDAsIHdyaXRlci5sZW4pXG4gICAgYnVpbGRlci53cml0ZUJ1ZmZlcihidWZmZXIsIGZhbHNlKVxuICB9LFxuICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBQQlNwaGVyZVNoYXBlIHtcbiAgICByZXR1cm4gUEJTcGhlcmVTaGFwZS5kZWNvZGUocmVhZGVyLmJ1ZmZlcigpLCByZWFkZXIucmVtYWluaW5nQnl0ZXMoKSlcbiAgfSxcbiAgY3JlYXRlKCk6IFBCU3BoZXJlU2hhcGUge1xuICAgIC8vIFRPRE86IHRoaXMgaXMgYSBoYWNrLlxuICAgIHJldHVybiBQQlNwaGVyZVNoYXBlLmRlY29kZShuZXcgVWludDhBcnJheSgpKVxuICB9XG59XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0IHsgQ29sb3IzIH0gZnJvbSAnLi9jb21tb24vQ29sb3IzLmdlbidcbmltcG9ydCAqIGFzIF9tMCBmcm9tICdwcm90b2J1ZmpzL21pbmltYWwnXG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9ICcnXG5cbmV4cG9ydCBpbnRlcmZhY2UgUEJUZXh0U2hhcGUge1xuICB0ZXh0OiBzdHJpbmdcbiAgdmlzaWJsZTogYm9vbGVhblxuICBmb250OiBzdHJpbmdcbiAgb3BhY2l0eTogbnVtYmVyXG4gIGZvbnRTaXplOiBudW1iZXJcbiAgZm9udEF1dG9TaXplOiBib29sZWFuXG4gIGhUZXh0QWxpZ246IHN0cmluZ1xuICB2VGV4dEFsaWduOiBzdHJpbmdcbiAgd2lkdGg6IG51bWJlclxuICBoZWlnaHQ6IG51bWJlclxuICBwYWRkaW5nVG9wOiBudW1iZXJcbiAgcGFkZGluZ1JpZ2h0OiBudW1iZXJcbiAgcGFkZGluZ0JvdHRvbTogbnVtYmVyXG4gIHBhZGRpbmdMZWZ0OiBudW1iZXJcbiAgbGluZVNwYWNpbmc6IG51bWJlclxuICBsaW5lQ291bnQ6IG51bWJlclxuICB0ZXh0V3JhcHBpbmc6IGJvb2xlYW5cbiAgc2hhZG93Qmx1cjogbnVtYmVyXG4gIHNoYWRvd09mZnNldFg6IG51bWJlclxuICBzaGFkb3dPZmZzZXRZOiBudW1iZXJcbiAgb3V0bGluZVdpZHRoOiBudW1iZXJcbiAgc2hhZG93Q29sb3I6IENvbG9yMyB8IHVuZGVmaW5lZFxuICBvdXRsaW5lQ29sb3I6IENvbG9yMyB8IHVuZGVmaW5lZFxuICB0ZXh0Q29sb3I6IENvbG9yMyB8IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBjcmVhdGVCYXNlUEJUZXh0U2hhcGUoKTogUEJUZXh0U2hhcGUge1xuICByZXR1cm4ge1xuICAgIHRleHQ6ICcnLFxuICAgIHZpc2libGU6IGZhbHNlLFxuICAgIGZvbnQ6ICcnLFxuICAgIG9wYWNpdHk6IDAsXG4gICAgZm9udFNpemU6IDAsXG4gICAgZm9udEF1dG9TaXplOiBmYWxzZSxcbiAgICBoVGV4dEFsaWduOiAnJyxcbiAgICB2VGV4dEFsaWduOiAnJyxcbiAgICB3aWR0aDogMCxcbiAgICBoZWlnaHQ6IDAsXG4gICAgcGFkZGluZ1RvcDogMCxcbiAgICBwYWRkaW5nUmlnaHQ6IDAsXG4gICAgcGFkZGluZ0JvdHRvbTogMCxcbiAgICBwYWRkaW5nTGVmdDogMCxcbiAgICBsaW5lU3BhY2luZzogMCxcbiAgICBsaW5lQ291bnQ6IDAsXG4gICAgdGV4dFdyYXBwaW5nOiBmYWxzZSxcbiAgICBzaGFkb3dCbHVyOiAwLFxuICAgIHNoYWRvd09mZnNldFg6IDAsXG4gICAgc2hhZG93T2Zmc2V0WTogMCxcbiAgICBvdXRsaW5lV2lkdGg6IDAsXG4gICAgc2hhZG93Q29sb3I6IHVuZGVmaW5lZCxcbiAgICBvdXRsaW5lQ29sb3I6IHVuZGVmaW5lZCxcbiAgICB0ZXh0Q29sb3I6IHVuZGVmaW5lZFxuICB9XG59XG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFBCVGV4dFNoYXBlID0ge1xuICBlbmNvZGUobWVzc2FnZTogUEJUZXh0U2hhcGUsIHdyaXRlcjogX20wLldyaXRlciA9IF9tMC5Xcml0ZXIuY3JlYXRlKCkpOiBfbTAuV3JpdGVyIHtcbiAgICBpZiAobWVzc2FnZS50ZXh0ICE9PSAnJykge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMCkuc3RyaW5nKG1lc3NhZ2UudGV4dClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UudmlzaWJsZSA9PT0gdHJ1ZSkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxNikuYm9vbChtZXNzYWdlLnZpc2libGUpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmZvbnQgIT09ICcnKSB7XG4gICAgICB3cml0ZXIudWludDMyKDI2KS5zdHJpbmcobWVzc2FnZS5mb250KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5vcGFjaXR5ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDM3KS5mbG9hdChtZXNzYWdlLm9wYWNpdHkpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmZvbnRTaXplICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDQ1KS5mbG9hdChtZXNzYWdlLmZvbnRTaXplKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5mb250QXV0b1NpemUgPT09IHRydWUpIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDgpLmJvb2wobWVzc2FnZS5mb250QXV0b1NpemUpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmhUZXh0QWxpZ24gIT09ICcnKSB7XG4gICAgICB3cml0ZXIudWludDMyKDU4KS5zdHJpbmcobWVzc2FnZS5oVGV4dEFsaWduKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS52VGV4dEFsaWduICE9PSAnJykge1xuICAgICAgd3JpdGVyLnVpbnQzMig2Nikuc3RyaW5nKG1lc3NhZ2UudlRleHRBbGlnbilcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uud2lkdGggIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNzcpLmZsb2F0KG1lc3NhZ2Uud2lkdGgpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmhlaWdodCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig4NSkuZmxvYXQobWVzc2FnZS5oZWlnaHQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBhZGRpbmdUb3AgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoOTMpLmZsb2F0KG1lc3NhZ2UucGFkZGluZ1RvcClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucGFkZGluZ1JpZ2h0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDEwMSkuZmxvYXQobWVzc2FnZS5wYWRkaW5nUmlnaHQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBhZGRpbmdCb3R0b20gIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTA5KS5mbG9hdChtZXNzYWdlLnBhZGRpbmdCb3R0b20pXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBhZGRpbmdMZWZ0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDExNykuZmxvYXQobWVzc2FnZS5wYWRkaW5nTGVmdClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubGluZVNwYWNpbmcgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTI1KS5mbG9hdChtZXNzYWdlLmxpbmVTcGFjaW5nKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5saW5lQ291bnQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTI4KS5pbnQzMihtZXNzYWdlLmxpbmVDb3VudClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UudGV4dFdyYXBwaW5nID09PSB0cnVlKSB7XG4gICAgICB3cml0ZXIudWludDMyKDEzNikuYm9vbChtZXNzYWdlLnRleHRXcmFwcGluZylcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uuc2hhZG93Qmx1ciAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxNDkpLmZsb2F0KG1lc3NhZ2Uuc2hhZG93Qmx1cilcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uuc2hhZG93T2Zmc2V0WCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxNTcpLmZsb2F0KG1lc3NhZ2Uuc2hhZG93T2Zmc2V0WClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uuc2hhZG93T2Zmc2V0WSAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxNjUpLmZsb2F0KG1lc3NhZ2Uuc2hhZG93T2Zmc2V0WSlcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uub3V0bGluZVdpZHRoICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE3MykuZmxvYXQobWVzc2FnZS5vdXRsaW5lV2lkdGgpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnNoYWRvd0NvbG9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIENvbG9yMy5lbmNvZGUobWVzc2FnZS5zaGFkb3dDb2xvciwgd3JpdGVyLnVpbnQzMigxNzgpLmZvcmsoKSkubGRlbGltKClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uub3V0bGluZUNvbG9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIENvbG9yMy5lbmNvZGUobWVzc2FnZS5vdXRsaW5lQ29sb3IsIHdyaXRlci51aW50MzIoMTg2KS5mb3JrKCkpLmxkZWxpbSgpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnRleHRDb2xvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBDb2xvcjMuZW5jb2RlKG1lc3NhZ2UudGV4dENvbG9yLCB3cml0ZXIudWludDMyKDE5NCkuZm9yaygpKS5sZGVsaW0oKVxuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyXG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogUEJUZXh0U2hhcGUge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogbmV3IF9tMC5SZWFkZXIoaW5wdXQpXG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGhcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVBCVGV4dFNoYXBlKClcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpXG4gICAgICBzd2l0Y2ggKHRhZyA+Pj4gMykge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgbWVzc2FnZS50ZXh0ID0gcmVhZGVyLnN0cmluZygpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIG1lc3NhZ2UudmlzaWJsZSA9IHJlYWRlci5ib29sKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgbWVzc2FnZS5mb250ID0gcmVhZGVyLnN0cmluZygpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIG1lc3NhZ2Uub3BhY2l0eSA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIG1lc3NhZ2UuZm9udFNpemUgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICBtZXNzYWdlLmZvbnRBdXRvU2l6ZSA9IHJlYWRlci5ib29sKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgbWVzc2FnZS5oVGV4dEFsaWduID0gcmVhZGVyLnN0cmluZygpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgIG1lc3NhZ2UudlRleHRBbGlnbiA9IHJlYWRlci5zdHJpbmcoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICBtZXNzYWdlLndpZHRoID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgIG1lc3NhZ2UuaGVpZ2h0ID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDExOlxuICAgICAgICAgIG1lc3NhZ2UucGFkZGluZ1RvcCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICBtZXNzYWdlLnBhZGRpbmdSaWdodCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICBtZXNzYWdlLnBhZGRpbmdCb3R0b20gPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgbWVzc2FnZS5wYWRkaW5nTGVmdCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAxNTpcbiAgICAgICAgICBtZXNzYWdlLmxpbmVTcGFjaW5nID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgIG1lc3NhZ2UubGluZUNvdW50ID0gcmVhZGVyLmludDMyKClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDE3OlxuICAgICAgICAgIG1lc3NhZ2UudGV4dFdyYXBwaW5nID0gcmVhZGVyLmJvb2woKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMTg6XG4gICAgICAgICAgbWVzc2FnZS5zaGFkb3dCbHVyID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDE5OlxuICAgICAgICAgIG1lc3NhZ2Uuc2hhZG93T2Zmc2V0WCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyMDpcbiAgICAgICAgICBtZXNzYWdlLnNoYWRvd09mZnNldFkgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjE6XG4gICAgICAgICAgbWVzc2FnZS5vdXRsaW5lV2lkdGggPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjI6XG4gICAgICAgICAgbWVzc2FnZS5zaGFkb3dDb2xvciA9IENvbG9yMy5kZWNvZGUocmVhZGVyLCByZWFkZXIudWludDMyKCkpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyMzpcbiAgICAgICAgICBtZXNzYWdlLm91dGxpbmVDb2xvciA9IENvbG9yMy5kZWNvZGUocmVhZGVyLCByZWFkZXIudWludDMyKCkpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyNDpcbiAgICAgICAgICBtZXNzYWdlLnRleHRDb2xvciA9IENvbG9yMy5kZWNvZGUocmVhZGVyLCByZWFkZXIudWludDMyKCkpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNylcbiAgICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZVxuICB9XG59XG4iLCJpbXBvcnQgeyBFY3NUeXBlIH0gZnJvbSAnLi4vLi4vYnVpbHQtaW4tdHlwZXMvRWNzVHlwZSdcbmltcG9ydCB7IEJ5dGVCdWZmZXIgfSBmcm9tICcuLi8uLi9zZXJpYWxpemF0aW9uL0J5dGVCdWZmZXInXG5pbXBvcnQgeyBQQlRleHRTaGFwZSB9IGZyb20gJy4vcGIvVGV4dFNoYXBlLmdlbidcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IENPTVBPTkVOVF9JRCA9IDEwMzBcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFRleHRTaGFwZTogRWNzVHlwZTxQQlRleHRTaGFwZT4gPSB7XG4gIHNlcmlhbGl6ZSh2YWx1ZTogUEJUZXh0U2hhcGUsIGJ1aWxkZXI6IEJ5dGVCdWZmZXIpOiB2b2lkIHtcbiAgICBjb25zdCB3cml0ZXIgPSBQQlRleHRTaGFwZS5lbmNvZGUodmFsdWUpXG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkod3JpdGVyLmZpbmlzaCgpLCAwLCB3cml0ZXIubGVuKVxuICAgIGJ1aWxkZXIud3JpdGVCdWZmZXIoYnVmZmVyLCBmYWxzZSlcbiAgfSxcbiAgZGVzZXJpYWxpemUocmVhZGVyOiBCeXRlQnVmZmVyKTogUEJUZXh0U2hhcGUge1xuICAgIHJldHVybiBQQlRleHRTaGFwZS5kZWNvZGUocmVhZGVyLmJ1ZmZlcigpLCByZWFkZXIucmVtYWluaW5nQnl0ZXMoKSlcbiAgfSxcbiAgY3JlYXRlKCk6IFBCVGV4dFNoYXBlIHtcbiAgICAvLyBUT0RPOiB0aGlzIGlzIGEgaGFjay5cbiAgICByZXR1cm4gUEJUZXh0U2hhcGUuZGVjb2RlKG5ldyBVaW50OEFycmF5KCkpXG4gIH1cbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgKiBhcyBfbTAgZnJvbSAncHJvdG9idWZqcy9taW5pbWFsJ1xuXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBwcm90b2J1ZlBhY2thZ2UgPSAnJ1xuXG5leHBvcnQgZW51bSBZR1Bvc2l0aW9uVHlwZSB7XG4gIFlHUG9zaXRpb25UeXBlU3RhdGljID0gMCxcbiAgWUdQb3NpdGlvblR5cGVSZWxhdGl2ZSA9IDEsXG4gIFlHUG9zaXRpb25UeXBlQWJzb2x1dGUgPSAyLFxuICBVTlJFQ09HTklaRUQgPSAtMVxufVxuXG5leHBvcnQgZW51bSBZR0FsaWduIHtcbiAgWUdBbGlnbkF1dG8gPSAwLFxuICBZR0FsaWduRmxleFN0YXJ0ID0gMSxcbiAgWUdBbGlnbkNlbnRlciA9IDIsXG4gIFlHQWxpZ25GbGV4RW5kID0gMyxcbiAgWUdBbGlnblN0cmV0Y2ggPSA0LFxuICBZR0FsaWduQmFzZWxpbmUgPSA1LFxuICBZR0FsaWduU3BhY2VCZXR3ZWVuID0gNixcbiAgWUdBbGlnblNwYWNlQXJvdW5kID0gNyxcbiAgVU5SRUNPR05JWkVEID0gLTFcbn1cblxuZXhwb3J0IGVudW0gWUdVbml0IHtcbiAgWUdVbml0VW5kZWZpbmVkID0gMCxcbiAgWUdVbml0UG9pbnQgPSAxLFxuICBZR1VuaXRQZXJjZW50ID0gMixcbiAgWUdVbml0QXV0byA9IDMsXG4gIFVOUkVDT0dOSVpFRCA9IC0xXG59XG5cbmV4cG9ydCBlbnVtIFlHRGlyZWN0aW9uIHtcbiAgWUdEaXJlY3Rpb25Jbmhlcml0ID0gMCxcbiAgWUdEaXJlY3Rpb25MVFIgPSAxLFxuICBZR0RpcmVjdGlvblJUTCA9IDIsXG4gIFVOUkVDT0dOSVpFRCA9IC0xXG59XG5cbmV4cG9ydCBlbnVtIFlHRmxleERpcmVjdGlvbiB7XG4gIFlHRmxleERpcmVjdGlvbkNvbHVtbiA9IDAsXG4gIFlHRmxleERpcmVjdGlvbkNvbHVtblJldmVyc2UgPSAxLFxuICBZR0ZsZXhEaXJlY3Rpb25Sb3cgPSAyLFxuICBZR0ZsZXhEaXJlY3Rpb25Sb3dSZXZlcnNlID0gMyxcbiAgVU5SRUNPR05JWkVEID0gLTFcbn1cblxuZXhwb3J0IGVudW0gWUdXcmFwIHtcbiAgWUdXcmFwTm9XcmFwID0gMCxcbiAgWUdXcmFwV3JhcCA9IDEsXG4gIFlHV3JhcFdyYXBSZXZlcnNlID0gMixcbiAgVU5SRUNPR05JWkVEID0gLTFcbn1cblxuZXhwb3J0IGVudW0gWUdKdXN0aWZ5IHtcbiAgWUdKdXN0aWZ5RmxleFN0YXJ0ID0gMCxcbiAgWUdKdXN0aWZ5Q2VudGVyID0gMSxcbiAgWUdKdXN0aWZ5RmxleEVuZCA9IDIsXG4gIFlHSnVzdGlmeVNwYWNlQmV0d2VlbiA9IDMsXG4gIFlHSnVzdGlmeVNwYWNlQXJvdW5kID0gNCxcbiAgWUdKdXN0aWZ5U3BhY2VFdmVubHkgPSA1LFxuICBVTlJFQ09HTklaRUQgPSAtMVxufVxuXG5leHBvcnQgZW51bSBZR092ZXJmbG93IHtcbiAgWUdPdmVyZmxvd1Zpc2libGUgPSAwLFxuICBZR092ZXJmbG93SGlkZGVuID0gMSxcbiAgWUdPdmVyZmxvd1Njcm9sbCA9IDIsXG4gIFVOUkVDT0dOSVpFRCA9IC0xXG59XG5cbmV4cG9ydCBlbnVtIFlHRGlzcGxheSB7XG4gIFlHRGlzcGxheUZsZXggPSAwLFxuICBZR0Rpc3BsYXlOb25lID0gMSxcbiAgVU5SRUNPR05JWkVEID0gLTFcbn1cblxuZXhwb3J0IGVudW0gWUdFZGdlIHtcbiAgWUdFZGdlTGVmdCA9IDAsXG4gIFlHRWRnZVRvcCA9IDEsXG4gIFlHRWRnZVJpZ2h0ID0gMixcbiAgWUdFZGdlQm90dG9tID0gMyxcbiAgWUdFZGdlU3RhcnQgPSA0LFxuICBZR0VkZ2VFbmQgPSA1LFxuICBZR0VkZ2VIb3Jpem9udGFsID0gNixcbiAgWUdFZGdlVmVydGljYWwgPSA3LFxuICBZR0VkZ2VBbGwgPSA4LFxuICBVTlJFQ09HTklaRUQgPSAtMVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBCVWlUcmFuc2Zvcm0ge1xuICBwb3NpdGlvblR5cGU6IFlHUG9zaXRpb25UeXBlXG4gIGFsaWduQ29udGVudDogWUdBbGlnblxuICBhbGlnbkl0ZW1zOiBZR0FsaWduXG4gIGFsaWduU2VsZjogWUdBbGlnblxuICBmbGV4RGlyZWN0aW9uOiBZR0ZsZXhEaXJlY3Rpb25cbiAgZmxleFdyYXA6IFlHV3JhcFxuICBqdXN0aWZ5Q29udGVudDogWUdKdXN0aWZ5XG4gIG92ZXJmbG93OiBZR092ZXJmbG93XG4gIGRpc3BsYXk6IFlHRGlzcGxheVxuICBkaXJlY3Rpb246IFlHRGlyZWN0aW9uXG4gIGZsZXg6IG51bWJlclxuICBmbGV4QmFzaXNVbml0OiBZR1VuaXRcbiAgZmxleEJhc2lzOiBudW1iZXJcbiAgZmxleEdyb3c6IG51bWJlclxuICBmbGV4U2hyaW5rOiBudW1iZXJcbiAgd2lkdGhVbml0OiBZR1VuaXRcbiAgd2lkdGg6IG51bWJlclxuICBoZWlnaHRVbml0OiBZR1VuaXRcbiAgaGVpZ2h0OiBudW1iZXJcbiAgbWluV2lkdGhVbml0OiBZR1VuaXRcbiAgbWluV2lkdGg6IG51bWJlclxuICBtaW5IZWlnaHRVbml0OiBZR1VuaXRcbiAgbWluSGVpZ2h0OiBudW1iZXJcbiAgbWF4V2lkdGhVbml0OiBZR1VuaXRcbiAgbWF4V2lkdGg6IG51bWJlclxuICBtYXhIZWlnaHRVbml0OiBZR1VuaXRcbiAgbWF4SGVpZ2h0OiBudW1iZXJcbiAgcG9zaXRpb25MZWZ0VW5pdDogWUdVbml0XG4gIHBvc2l0aW9uTGVmdDogbnVtYmVyXG4gIHBvc2l0aW9uVG9wVW5pdDogWUdVbml0XG4gIHBvc2l0aW9uVG9wOiBudW1iZXJcbiAgcG9zaXRpb25SaWdodFVuaXQ6IFlHVW5pdFxuICBwb3NpdGlvblJpZ2h0OiBudW1iZXJcbiAgcG9zaXRpb25Cb3R0b21Vbml0OiBZR1VuaXRcbiAgcG9zaXRpb25Cb3R0b206IG51bWJlclxuICAvKiogbWFyZ2luICovXG4gIG1hcmdpbkxlZnRVbml0OiBZR1VuaXRcbiAgbWFyZ2luTGVmdDogbnVtYmVyXG4gIG1hcmdpblRvcFVuaXQ6IFlHVW5pdFxuICBtYXJnaW5Ub3A6IG51bWJlclxuICBtYXJnaW5SaWdodFVuaXQ6IFlHVW5pdFxuICBtYXJnaW5SaWdodDogbnVtYmVyXG4gIG1hcmdpbkJvdHRvbVVuaXQ6IFlHVW5pdFxuICBtYXJnaW5Cb3R0b206IG51bWJlclxuICBwYWRkaW5nTGVmdFVuaXQ6IFlHVW5pdFxuICBwYWRkaW5nTGVmdDogbnVtYmVyXG4gIHBhZGRpbmdUb3BVbml0OiBZR1VuaXRcbiAgcGFkZGluZ1RvcDogbnVtYmVyXG4gIHBhZGRpbmdSaWdodFVuaXQ6IFlHVW5pdFxuICBwYWRkaW5nUmlnaHQ6IG51bWJlclxuICBwYWRkaW5nQm90dG9tVW5pdDogWUdVbml0XG4gIHBhZGRpbmdCb3R0b206IG51bWJlclxuICBib3JkZXJMZWZ0OiBudW1iZXJcbiAgYm9yZGVyVG9wOiBudW1iZXJcbiAgYm9yZGVyUmlnaHQ6IG51bWJlclxuICBib3JkZXJCb3R0b206IG51bWJlclxufVxuXG5mdW5jdGlvbiBjcmVhdGVCYXNlUEJVaVRyYW5zZm9ybSgpOiBQQlVpVHJhbnNmb3JtIHtcbiAgcmV0dXJuIHtcbiAgICBwb3NpdGlvblR5cGU6IDAsXG4gICAgYWxpZ25Db250ZW50OiAwLFxuICAgIGFsaWduSXRlbXM6IDAsXG4gICAgYWxpZ25TZWxmOiAwLFxuICAgIGZsZXhEaXJlY3Rpb246IDAsXG4gICAgZmxleFdyYXA6IDAsXG4gICAganVzdGlmeUNvbnRlbnQ6IDAsXG4gICAgb3ZlcmZsb3c6IDAsXG4gICAgZGlzcGxheTogMCxcbiAgICBkaXJlY3Rpb246IDAsXG4gICAgZmxleDogMCxcbiAgICBmbGV4QmFzaXNVbml0OiAwLFxuICAgIGZsZXhCYXNpczogMCxcbiAgICBmbGV4R3JvdzogMCxcbiAgICBmbGV4U2hyaW5rOiAwLFxuICAgIHdpZHRoVW5pdDogMCxcbiAgICB3aWR0aDogMCxcbiAgICBoZWlnaHRVbml0OiAwLFxuICAgIGhlaWdodDogMCxcbiAgICBtaW5XaWR0aFVuaXQ6IDAsXG4gICAgbWluV2lkdGg6IDAsXG4gICAgbWluSGVpZ2h0VW5pdDogMCxcbiAgICBtaW5IZWlnaHQ6IDAsXG4gICAgbWF4V2lkdGhVbml0OiAwLFxuICAgIG1heFdpZHRoOiAwLFxuICAgIG1heEhlaWdodFVuaXQ6IDAsXG4gICAgbWF4SGVpZ2h0OiAwLFxuICAgIHBvc2l0aW9uTGVmdFVuaXQ6IDAsXG4gICAgcG9zaXRpb25MZWZ0OiAwLFxuICAgIHBvc2l0aW9uVG9wVW5pdDogMCxcbiAgICBwb3NpdGlvblRvcDogMCxcbiAgICBwb3NpdGlvblJpZ2h0VW5pdDogMCxcbiAgICBwb3NpdGlvblJpZ2h0OiAwLFxuICAgIHBvc2l0aW9uQm90dG9tVW5pdDogMCxcbiAgICBwb3NpdGlvbkJvdHRvbTogMCxcbiAgICBtYXJnaW5MZWZ0VW5pdDogMCxcbiAgICBtYXJnaW5MZWZ0OiAwLFxuICAgIG1hcmdpblRvcFVuaXQ6IDAsXG4gICAgbWFyZ2luVG9wOiAwLFxuICAgIG1hcmdpblJpZ2h0VW5pdDogMCxcbiAgICBtYXJnaW5SaWdodDogMCxcbiAgICBtYXJnaW5Cb3R0b21Vbml0OiAwLFxuICAgIG1hcmdpbkJvdHRvbTogMCxcbiAgICBwYWRkaW5nTGVmdFVuaXQ6IDAsXG4gICAgcGFkZGluZ0xlZnQ6IDAsXG4gICAgcGFkZGluZ1RvcFVuaXQ6IDAsXG4gICAgcGFkZGluZ1RvcDogMCxcbiAgICBwYWRkaW5nUmlnaHRVbml0OiAwLFxuICAgIHBhZGRpbmdSaWdodDogMCxcbiAgICBwYWRkaW5nQm90dG9tVW5pdDogMCxcbiAgICBwYWRkaW5nQm90dG9tOiAwLFxuICAgIGJvcmRlckxlZnQ6IDAsXG4gICAgYm9yZGVyVG9wOiAwLFxuICAgIGJvcmRlclJpZ2h0OiAwLFxuICAgIGJvcmRlckJvdHRvbTogMFxuICB9XG59XG5cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFBCVWlUcmFuc2Zvcm0gPSB7XG4gIGVuY29kZShtZXNzYWdlOiBQQlVpVHJhbnNmb3JtLCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgaWYgKG1lc3NhZ2UucG9zaXRpb25UeXBlICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDgpLmludDMyKG1lc3NhZ2UucG9zaXRpb25UeXBlKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5hbGlnbkNvbnRlbnQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTYpLmludDMyKG1lc3NhZ2UuYWxpZ25Db250ZW50KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5hbGlnbkl0ZW1zICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDI0KS5pbnQzMihtZXNzYWdlLmFsaWduSXRlbXMpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmFsaWduU2VsZiAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigzMikuaW50MzIobWVzc2FnZS5hbGlnblNlbGYpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmZsZXhEaXJlY3Rpb24gIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDApLmludDMyKG1lc3NhZ2UuZmxleERpcmVjdGlvbilcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuZmxleFdyYXAgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDgpLmludDMyKG1lc3NhZ2UuZmxleFdyYXApXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmp1c3RpZnlDb250ZW50ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDU2KS5pbnQzMihtZXNzYWdlLmp1c3RpZnlDb250ZW50KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5vdmVyZmxvdyAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig2NCkuaW50MzIobWVzc2FnZS5vdmVyZmxvdylcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuZGlzcGxheSAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig3MikuaW50MzIobWVzc2FnZS5kaXNwbGF5KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5kaXJlY3Rpb24gIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoODApLmludDMyKG1lc3NhZ2UuZGlyZWN0aW9uKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5mbGV4ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDkzKS5mbG9hdChtZXNzYWdlLmZsZXgpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmZsZXhCYXNpc1VuaXQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTA0KS5pbnQzMihtZXNzYWdlLmZsZXhCYXNpc1VuaXQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmZsZXhCYXNpcyAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMTcpLmZsb2F0KG1lc3NhZ2UuZmxleEJhc2lzKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5mbGV4R3JvdyAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMjUpLmZsb2F0KG1lc3NhZ2UuZmxleEdyb3cpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmZsZXhTaHJpbmsgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTMzKS5mbG9hdChtZXNzYWdlLmZsZXhTaHJpbmspXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLndpZHRoVW5pdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMzYpLmludDMyKG1lc3NhZ2Uud2lkdGhVbml0KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS53aWR0aCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxNDkpLmZsb2F0KG1lc3NhZ2Uud2lkdGgpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmhlaWdodFVuaXQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTUyKS5pbnQzMihtZXNzYWdlLmhlaWdodFVuaXQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmhlaWdodCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxNjUpLmZsb2F0KG1lc3NhZ2UuaGVpZ2h0KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5taW5XaWR0aFVuaXQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTY4KS5pbnQzMihtZXNzYWdlLm1pbldpZHRoVW5pdClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubWluV2lkdGggIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTgxKS5mbG9hdChtZXNzYWdlLm1pbldpZHRoKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5taW5IZWlnaHRVbml0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE4NCkuaW50MzIobWVzc2FnZS5taW5IZWlnaHRVbml0KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5taW5IZWlnaHQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTk3KS5mbG9hdChtZXNzYWdlLm1pbkhlaWdodClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubWF4V2lkdGhVbml0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDI0OCkuaW50MzIobWVzc2FnZS5tYXhXaWR0aFVuaXQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm1heFdpZHRoICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDI2MSkuZmxvYXQobWVzc2FnZS5tYXhXaWR0aClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubWF4SGVpZ2h0VW5pdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigyNjQpLmludDMyKG1lc3NhZ2UubWF4SGVpZ2h0VW5pdClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubWF4SGVpZ2h0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDI3NykuZmxvYXQobWVzc2FnZS5tYXhIZWlnaHQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBvc2l0aW9uTGVmdFVuaXQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMzI4KS5pbnQzMihtZXNzYWdlLnBvc2l0aW9uTGVmdFVuaXQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBvc2l0aW9uTGVmdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigzNDEpLmZsb2F0KG1lc3NhZ2UucG9zaXRpb25MZWZ0KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5wb3NpdGlvblRvcFVuaXQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMzQ0KS5pbnQzMihtZXNzYWdlLnBvc2l0aW9uVG9wVW5pdClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucG9zaXRpb25Ub3AgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMzU3KS5mbG9hdChtZXNzYWdlLnBvc2l0aW9uVG9wKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5wb3NpdGlvblJpZ2h0VW5pdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigzNjApLmludDMyKG1lc3NhZ2UucG9zaXRpb25SaWdodFVuaXQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBvc2l0aW9uUmlnaHQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMzczKS5mbG9hdChtZXNzYWdlLnBvc2l0aW9uUmlnaHQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBvc2l0aW9uQm90dG9tVW5pdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigzNzYpLmludDMyKG1lc3NhZ2UucG9zaXRpb25Cb3R0b21Vbml0KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5wb3NpdGlvbkJvdHRvbSAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigzODkpLmZsb2F0KG1lc3NhZ2UucG9zaXRpb25Cb3R0b20pXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm1hcmdpbkxlZnRVbml0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDQwOCkuaW50MzIobWVzc2FnZS5tYXJnaW5MZWZ0VW5pdClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubWFyZ2luTGVmdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig0MjEpLmZsb2F0KG1lc3NhZ2UubWFyZ2luTGVmdClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubWFyZ2luVG9wVW5pdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig0MjQpLmludDMyKG1lc3NhZ2UubWFyZ2luVG9wVW5pdClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubWFyZ2luVG9wICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDQzNykuZmxvYXQobWVzc2FnZS5tYXJnaW5Ub3ApXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm1hcmdpblJpZ2h0VW5pdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig0NDApLmludDMyKG1lc3NhZ2UubWFyZ2luUmlnaHRVbml0KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5tYXJnaW5SaWdodCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig0NTMpLmZsb2F0KG1lc3NhZ2UubWFyZ2luUmlnaHQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm1hcmdpbkJvdHRvbVVuaXQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDU2KS5pbnQzMihtZXNzYWdlLm1hcmdpbkJvdHRvbVVuaXQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm1hcmdpbkJvdHRvbSAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig0NjkpLmZsb2F0KG1lc3NhZ2UubWFyZ2luQm90dG9tKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5wYWRkaW5nTGVmdFVuaXQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDg4KS5pbnQzMihtZXNzYWdlLnBhZGRpbmdMZWZ0VW5pdClcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucGFkZGluZ0xlZnQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNTAxKS5mbG9hdChtZXNzYWdlLnBhZGRpbmdMZWZ0KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5wYWRkaW5nVG9wVW5pdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig1MDQpLmludDMyKG1lc3NhZ2UucGFkZGluZ1RvcFVuaXQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBhZGRpbmdUb3AgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNTE3KS5mbG9hdChtZXNzYWdlLnBhZGRpbmdUb3ApXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBhZGRpbmdSaWdodFVuaXQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNTIwKS5pbnQzMihtZXNzYWdlLnBhZGRpbmdSaWdodFVuaXQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBhZGRpbmdSaWdodCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig1MzMpLmZsb2F0KG1lc3NhZ2UucGFkZGluZ1JpZ2h0KVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5wYWRkaW5nQm90dG9tVW5pdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig1MzYpLmludDMyKG1lc3NhZ2UucGFkZGluZ0JvdHRvbVVuaXQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBhZGRpbmdCb3R0b20gIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNTQ5KS5mbG9hdChtZXNzYWdlLnBhZGRpbmdCb3R0b20pXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmJvcmRlckxlZnQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNTgxKS5mbG9hdChtZXNzYWdlLmJvcmRlckxlZnQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmJvcmRlclRvcCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig1OTcpLmZsb2F0KG1lc3NhZ2UuYm9yZGVyVG9wKVxuICAgIH1cbiAgICBpZiAobWVzc2FnZS5ib3JkZXJSaWdodCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig2MTMpLmZsb2F0KG1lc3NhZ2UuYm9yZGVyUmlnaHQpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmJvcmRlckJvdHRvbSAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig2MjkpLmZsb2F0KG1lc3NhZ2UuYm9yZGVyQm90dG9tKVxuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyXG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogUEJVaVRyYW5zZm9ybSB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBuZXcgX20wLlJlYWRlcihpbnB1dClcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlUEJVaVRyYW5zZm9ybSgpXG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKVxuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIG1lc3NhZ2UucG9zaXRpb25UeXBlID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIG1lc3NhZ2UuYWxpZ25Db250ZW50ID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIG1lc3NhZ2UuYWxpZ25JdGVtcyA9IHJlYWRlci5pbnQzMigpIGFzIGFueVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBtZXNzYWdlLmFsaWduU2VsZiA9IHJlYWRlci5pbnQzMigpIGFzIGFueVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICBtZXNzYWdlLmZsZXhEaXJlY3Rpb24gPSByZWFkZXIuaW50MzIoKSBhcyBhbnlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgbWVzc2FnZS5mbGV4V3JhcCA9IHJlYWRlci5pbnQzMigpIGFzIGFueVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICBtZXNzYWdlLmp1c3RpZnlDb250ZW50ID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgIG1lc3NhZ2Uub3ZlcmZsb3cgPSByZWFkZXIuaW50MzIoKSBhcyBhbnlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgbWVzc2FnZS5kaXNwbGF5ID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICBtZXNzYWdlLmRpcmVjdGlvbiA9IHJlYWRlci5pbnQzMigpIGFzIGFueVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgbWVzc2FnZS5mbGV4ID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgIG1lc3NhZ2UuZmxleEJhc2lzVW5pdCA9IHJlYWRlci5pbnQzMigpIGFzIGFueVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgbWVzc2FnZS5mbGV4QmFzaXMgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMTU6XG4gICAgICAgICAgbWVzc2FnZS5mbGV4R3JvdyA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAxNjpcbiAgICAgICAgICBtZXNzYWdlLmZsZXhTaHJpbmsgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMTc6XG4gICAgICAgICAgbWVzc2FnZS53aWR0aFVuaXQgPSByZWFkZXIuaW50MzIoKSBhcyBhbnlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgIG1lc3NhZ2Uud2lkdGggPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMTk6XG4gICAgICAgICAgbWVzc2FnZS5oZWlnaHRVbml0ID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyMDpcbiAgICAgICAgICBtZXNzYWdlLmhlaWdodCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyMTpcbiAgICAgICAgICBtZXNzYWdlLm1pbldpZHRoVW5pdCA9IHJlYWRlci5pbnQzMigpIGFzIGFueVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjI6XG4gICAgICAgICAgbWVzc2FnZS5taW5XaWR0aCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyMzpcbiAgICAgICAgICBtZXNzYWdlLm1pbkhlaWdodFVuaXQgPSByZWFkZXIuaW50MzIoKSBhcyBhbnlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDI0OlxuICAgICAgICAgIG1lc3NhZ2UubWluSGVpZ2h0ID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDMxOlxuICAgICAgICAgIG1lc3NhZ2UubWF4V2lkdGhVbml0ID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAzMjpcbiAgICAgICAgICBtZXNzYWdlLm1heFdpZHRoID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDMzOlxuICAgICAgICAgIG1lc3NhZ2UubWF4SGVpZ2h0VW5pdCA9IHJlYWRlci5pbnQzMigpIGFzIGFueVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzQ6XG4gICAgICAgICAgbWVzc2FnZS5tYXhIZWlnaHQgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDE6XG4gICAgICAgICAgbWVzc2FnZS5wb3NpdGlvbkxlZnRVbml0ID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0MjpcbiAgICAgICAgICBtZXNzYWdlLnBvc2l0aW9uTGVmdCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0MzpcbiAgICAgICAgICBtZXNzYWdlLnBvc2l0aW9uVG9wVW5pdCA9IHJlYWRlci5pbnQzMigpIGFzIGFueVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDQ6XG4gICAgICAgICAgbWVzc2FnZS5wb3NpdGlvblRvcCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0NTpcbiAgICAgICAgICBtZXNzYWdlLnBvc2l0aW9uUmlnaHRVbml0ID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0NjpcbiAgICAgICAgICBtZXNzYWdlLnBvc2l0aW9uUmlnaHQgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDc6XG4gICAgICAgICAgbWVzc2FnZS5wb3NpdGlvbkJvdHRvbVVuaXQgPSByZWFkZXIuaW50MzIoKSBhcyBhbnlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDQ4OlxuICAgICAgICAgIG1lc3NhZ2UucG9zaXRpb25Cb3R0b20gPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNTE6XG4gICAgICAgICAgbWVzc2FnZS5tYXJnaW5MZWZ0VW5pdCA9IHJlYWRlci5pbnQzMigpIGFzIGFueVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNTI6XG4gICAgICAgICAgbWVzc2FnZS5tYXJnaW5MZWZ0ID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDUzOlxuICAgICAgICAgIG1lc3NhZ2UubWFyZ2luVG9wVW5pdCA9IHJlYWRlci5pbnQzMigpIGFzIGFueVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNTQ6XG4gICAgICAgICAgbWVzc2FnZS5tYXJnaW5Ub3AgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNTU6XG4gICAgICAgICAgbWVzc2FnZS5tYXJnaW5SaWdodFVuaXQgPSByZWFkZXIuaW50MzIoKSBhcyBhbnlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDU2OlxuICAgICAgICAgIG1lc3NhZ2UubWFyZ2luUmlnaHQgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNTc6XG4gICAgICAgICAgbWVzc2FnZS5tYXJnaW5Cb3R0b21Vbml0ID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA1ODpcbiAgICAgICAgICBtZXNzYWdlLm1hcmdpbkJvdHRvbSA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA2MTpcbiAgICAgICAgICBtZXNzYWdlLnBhZGRpbmdMZWZ0VW5pdCA9IHJlYWRlci5pbnQzMigpIGFzIGFueVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNjI6XG4gICAgICAgICAgbWVzc2FnZS5wYWRkaW5nTGVmdCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA2MzpcbiAgICAgICAgICBtZXNzYWdlLnBhZGRpbmdUb3BVbml0ID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA2NDpcbiAgICAgICAgICBtZXNzYWdlLnBhZGRpbmdUb3AgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNjU6XG4gICAgICAgICAgbWVzc2FnZS5wYWRkaW5nUmlnaHRVbml0ID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA2NjpcbiAgICAgICAgICBtZXNzYWdlLnBhZGRpbmdSaWdodCA9IHJlYWRlci5mbG9hdCgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA2NzpcbiAgICAgICAgICBtZXNzYWdlLnBhZGRpbmdCb3R0b21Vbml0ID0gcmVhZGVyLmludDMyKCkgYXMgYW55XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA2ODpcbiAgICAgICAgICBtZXNzYWdlLnBhZGRpbmdCb3R0b20gPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNzI6XG4gICAgICAgICAgbWVzc2FnZS5ib3JkZXJMZWZ0ID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDc0OlxuICAgICAgICAgIG1lc3NhZ2UuYm9yZGVyVG9wID0gcmVhZGVyLmZsb2F0KClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDc2OlxuICAgICAgICAgIG1lc3NhZ2UuYm9yZGVyUmlnaHQgPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNzg6XG4gICAgICAgICAgbWVzc2FnZS5ib3JkZXJCb3R0b20gPSByZWFkZXIuZmxvYXQoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpXG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2VcbiAgfVxufVxuIiwiaW1wb3J0IHsgRWNzVHlwZSB9IGZyb20gJy4uLy4uL2J1aWx0LWluLXR5cGVzL0Vjc1R5cGUnXG5pbXBvcnQgeyBCeXRlQnVmZmVyIH0gZnJvbSAnLi4vLi4vc2VyaWFsaXphdGlvbi9CeXRlQnVmZmVyJ1xuaW1wb3J0IHsgUEJVaVRyYW5zZm9ybSB9IGZyb20gJy4vcGIvVWlUcmFuc2Zvcm0uZ2VuJ1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgQ09NUE9ORU5UX0lEID0gMTA1MFxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgVWlUcmFuc2Zvcm06IEVjc1R5cGU8UEJVaVRyYW5zZm9ybT4gPSB7XG4gIHNlcmlhbGl6ZSh2YWx1ZTogUEJVaVRyYW5zZm9ybSwgYnVpbGRlcjogQnl0ZUJ1ZmZlcik6IHZvaWQge1xuICAgIGNvbnN0IHdyaXRlciA9IFBCVWlUcmFuc2Zvcm0uZW5jb2RlKHZhbHVlKVxuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KHdyaXRlci5maW5pc2goKSwgMCwgd3JpdGVyLmxlbilcbiAgICBidWlsZGVyLndyaXRlQnVmZmVyKGJ1ZmZlciwgZmFsc2UpXG4gIH0sXG4gIGRlc2VyaWFsaXplKHJlYWRlcjogQnl0ZUJ1ZmZlcik6IFBCVWlUcmFuc2Zvcm0ge1xuICAgIHJldHVybiBQQlVpVHJhbnNmb3JtLmRlY29kZShyZWFkZXIuYnVmZmVyKCksIHJlYWRlci5yZW1haW5pbmdCeXRlcygpKVxuICB9LFxuICBjcmVhdGUoKTogUEJVaVRyYW5zZm9ybSB7XG4gICAgLy8gVE9ETzogdGhpcyBpcyBhIGhhY2suXG4gICAgcmV0dXJuIFBCVWlUcmFuc2Zvcm0uZGVjb2RlKG5ldyBVaW50OEFycmF5KCkpXG4gIH1cbn1cbiIsImltcG9ydCAqIGFzIEFuaW1hdG9yIGZyb20gJy4vQW5pbWF0b3IuZ2VuJ1xuaW1wb3J0ICogYXMgQXVkaW9Tb3VyY2UgZnJvbSAnLi9BdWRpb1NvdXJjZS5nZW4nXG5pbXBvcnQgKiBhcyBBdWRpb1N0cmVhbSBmcm9tICcuL0F1ZGlvU3RyZWFtLmdlbidcbmltcG9ydCAqIGFzIEJveFNoYXBlIGZyb20gJy4vQm94U2hhcGUuZ2VuJ1xuaW1wb3J0ICogYXMgQ3lsaW5kZXJTaGFwZSBmcm9tICcuL0N5bGluZGVyU2hhcGUuZ2VuJ1xuaW1wb3J0ICogYXMgR0xURlNoYXBlIGZyb20gJy4vR0xURlNoYXBlLmdlbidcbmltcG9ydCAqIGFzIE5GVFNoYXBlIGZyb20gJy4vTkZUU2hhcGUuZ2VuJ1xuaW1wb3J0ICogYXMgT25Qb2ludGVyRG93biBmcm9tICcuL09uUG9pbnRlckRvd24uZ2VuJ1xuaW1wb3J0ICogYXMgT25Qb2ludGVyRG93blJlc3VsdCBmcm9tICcuL09uUG9pbnRlckRvd25SZXN1bHQuZ2VuJ1xuaW1wb3J0ICogYXMgT25Qb2ludGVyVXAgZnJvbSAnLi9PblBvaW50ZXJVcC5nZW4nXG5pbXBvcnQgKiBhcyBPblBvaW50ZXJVcFJlc3VsdCBmcm9tICcuL09uUG9pbnRlclVwUmVzdWx0LmdlbidcbmltcG9ydCAqIGFzIFBsYW5lU2hhcGUgZnJvbSAnLi9QbGFuZVNoYXBlLmdlbidcbmltcG9ydCAqIGFzIFNwaGVyZVNoYXBlIGZyb20gJy4vU3BoZXJlU2hhcGUuZ2VuJ1xuaW1wb3J0ICogYXMgVGV4dFNoYXBlIGZyb20gJy4vVGV4dFNoYXBlLmdlbidcbmltcG9ydCAqIGFzIFVpVHJhbnNmb3JtIGZyb20gJy4vVWlUcmFuc2Zvcm0uZ2VuJ1xuaW1wb3J0IHR5cGUgeyBJRW5naW5lIH0gZnJvbSAnLi4vLi4vZW5naW5lL3R5cGVzJ1xuXG5leHBvcnQgZW51bSBDb21wb25lbnRJZHMge1xuICBBbmltYXRvciA9IDEwNDIsXG5BdWRpb1NvdXJjZSA9IDEwMjAsXG5BdWRpb1N0cmVhbSA9IDEwMjEsXG5Cb3hTaGFwZSA9IDEwMTMsXG5DeWxpbmRlclNoYXBlID0gMTAxNixcbkdMVEZTaGFwZSA9IDEwNDEsXG5ORlRTaGFwZSA9IDEwNDAsXG5PblBvaW50ZXJEb3duID0gMTA2MCxcbk9uUG9pbnRlckRvd25SZXN1bHQgPSAxMDY2LFxuT25Qb2ludGVyVXAgPSAxMDYxLFxuT25Qb2ludGVyVXBSZXN1bHQgPSAxMDY1LFxuUGxhbmVTaGFwZSA9IDEwMTQsXG5TcGhlcmVTaGFwZSA9IDEwMTUsXG5UZXh0U2hhcGUgPSAxMDMwLFxuVWlUcmFuc2Zvcm0gPSAxMDUwLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lUHJvdG9jb2xCdWZmZXJDb21wb25lbnRzKHtcbiAgZGVmaW5lQ29tcG9uZW50XG59OiBQaWNrPElFbmdpbmUsICdkZWZpbmVDb21wb25lbnQnPikge1xuXG4gIHJldHVybiB7XG5BbmltYXRvcjogZGVmaW5lQ29tcG9uZW50KEFuaW1hdG9yLkNPTVBPTkVOVF9JRCwgQW5pbWF0b3IuQW5pbWF0b3IpLFxuQXVkaW9Tb3VyY2U6IGRlZmluZUNvbXBvbmVudChBdWRpb1NvdXJjZS5DT01QT05FTlRfSUQsIEF1ZGlvU291cmNlLkF1ZGlvU291cmNlKSxcbkF1ZGlvU3RyZWFtOiBkZWZpbmVDb21wb25lbnQoQXVkaW9TdHJlYW0uQ09NUE9ORU5UX0lELCBBdWRpb1N0cmVhbS5BdWRpb1N0cmVhbSksXG5Cb3hTaGFwZTogZGVmaW5lQ29tcG9uZW50KEJveFNoYXBlLkNPTVBPTkVOVF9JRCwgQm94U2hhcGUuQm94U2hhcGUpLFxuQ3lsaW5kZXJTaGFwZTogZGVmaW5lQ29tcG9uZW50KEN5bGluZGVyU2hhcGUuQ09NUE9ORU5UX0lELCBDeWxpbmRlclNoYXBlLkN5bGluZGVyU2hhcGUpLFxuR0xURlNoYXBlOiBkZWZpbmVDb21wb25lbnQoR0xURlNoYXBlLkNPTVBPTkVOVF9JRCwgR0xURlNoYXBlLkdMVEZTaGFwZSksXG5ORlRTaGFwZTogZGVmaW5lQ29tcG9uZW50KE5GVFNoYXBlLkNPTVBPTkVOVF9JRCwgTkZUU2hhcGUuTkZUU2hhcGUpLFxuT25Qb2ludGVyRG93bjogZGVmaW5lQ29tcG9uZW50KE9uUG9pbnRlckRvd24uQ09NUE9ORU5UX0lELCBPblBvaW50ZXJEb3duLk9uUG9pbnRlckRvd24pLFxuT25Qb2ludGVyRG93blJlc3VsdDogZGVmaW5lQ29tcG9uZW50KE9uUG9pbnRlckRvd25SZXN1bHQuQ09NUE9ORU5UX0lELCBPblBvaW50ZXJEb3duUmVzdWx0Lk9uUG9pbnRlckRvd25SZXN1bHQpLFxuT25Qb2ludGVyVXA6IGRlZmluZUNvbXBvbmVudChPblBvaW50ZXJVcC5DT01QT05FTlRfSUQsIE9uUG9pbnRlclVwLk9uUG9pbnRlclVwKSxcbk9uUG9pbnRlclVwUmVzdWx0OiBkZWZpbmVDb21wb25lbnQoT25Qb2ludGVyVXBSZXN1bHQuQ09NUE9ORU5UX0lELCBPblBvaW50ZXJVcFJlc3VsdC5PblBvaW50ZXJVcFJlc3VsdCksXG5QbGFuZVNoYXBlOiBkZWZpbmVDb21wb25lbnQoUGxhbmVTaGFwZS5DT01QT05FTlRfSUQsIFBsYW5lU2hhcGUuUGxhbmVTaGFwZSksXG5TcGhlcmVTaGFwZTogZGVmaW5lQ29tcG9uZW50KFNwaGVyZVNoYXBlLkNPTVBPTkVOVF9JRCwgU3BoZXJlU2hhcGUuU3BoZXJlU2hhcGUpLFxuVGV4dFNoYXBlOiBkZWZpbmVDb21wb25lbnQoVGV4dFNoYXBlLkNPTVBPTkVOVF9JRCwgVGV4dFNoYXBlLlRleHRTaGFwZSksXG5VaVRyYW5zZm9ybTogZGVmaW5lQ29tcG9uZW50KFVpVHJhbnNmb3JtLkNPTVBPTkVOVF9JRCwgVWlUcmFuc2Zvcm0uVWlUcmFuc2Zvcm0pXG4gIH1cbn1cbiIsImltcG9ydCB7IFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tICcuLi8uLi9NYXRoJ1xuaW1wb3J0IHR5cGUgeyBFY3NUeXBlIH0gZnJvbSAnLi4vLi4vYnVpbHQtaW4tdHlwZXMvRWNzVHlwZSdcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4uLy4uL2VuZ2luZS9lbnRpdHknXG5pbXBvcnQgeyBCeXRlQnVmZmVyIH0gZnJvbSAnLi4vLi4vc2VyaWFsaXphdGlvbi9CeXRlQnVmZmVyJ1xuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgVHJhbnNmb3JtID0ge1xuICBwb3NpdGlvbjogVmVjdG9yMy5NdXRhYmxlVmVjdG9yM1xuICByb3RhdGlvbjogUXVhdGVybmlvbi5NdXRhYmxlUXVhdGVybmlvblxuICBzY2FsZTogVmVjdG9yMy5NdXRhYmxlVmVjdG9yM1xuICBwYXJlbnQ/OiBFbnRpdHlcbn1cblxuZXhwb3J0IGNvbnN0IFRSQU5TRk9STV9MRU5HVEggPSA0NFxuXG4vLyBUaGlzIHRyYW5zZm9ybSBjYW4gYmUgb3B0aW1pemVkIHdpdGggRmxvYXQzMkFycmF5IGZvciBleGFtcGxlXG5leHBvcnQgY29uc3QgVHJhbnNmb3JtOiBFY3NUeXBlPFRyYW5zZm9ybT4gPSB7XG4gIHNlcmlhbGl6ZSh2YWx1ZTogVHJhbnNmb3JtLCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgY29uc3QgcHRyID0gYnVpbGRlci5pbmNyZW1lbnRXcml0ZU9mZnNldChUUkFOU0ZPUk1fTEVOR1RIKVxuICAgIGJ1aWxkZXIuc2V0RmxvYXQzMihwdHIsIHZhbHVlLnBvc2l0aW9uLngpXG4gICAgYnVpbGRlci5zZXRGbG9hdDMyKHB0ciArIDQsIHZhbHVlLnBvc2l0aW9uLnkpXG4gICAgYnVpbGRlci5zZXRGbG9hdDMyKHB0ciArIDgsIHZhbHVlLnBvc2l0aW9uLnopXG4gICAgYnVpbGRlci5zZXRGbG9hdDMyKHB0ciArIDEyLCB2YWx1ZS5yb3RhdGlvbi54KVxuICAgIGJ1aWxkZXIuc2V0RmxvYXQzMihwdHIgKyAxNiwgdmFsdWUucm90YXRpb24ueSlcbiAgICBidWlsZGVyLnNldEZsb2F0MzIocHRyICsgMjAsIHZhbHVlLnJvdGF0aW9uLnopXG4gICAgYnVpbGRlci5zZXRGbG9hdDMyKHB0ciArIDI0LCB2YWx1ZS5yb3RhdGlvbi53KVxuICAgIGJ1aWxkZXIuc2V0RmxvYXQzMihwdHIgKyAyOCwgdmFsdWUuc2NhbGUueClcbiAgICBidWlsZGVyLnNldEZsb2F0MzIocHRyICsgMzIsIHZhbHVlLnNjYWxlLnkpXG4gICAgYnVpbGRlci5zZXRGbG9hdDMyKHB0ciArIDM2LCB2YWx1ZS5zY2FsZS56KVxuICAgIGJ1aWxkZXIuc2V0VWludDMyKHB0ciArIDQwLCB2YWx1ZS5wYXJlbnQgfHwgMClcbiAgfSxcbiAgZGVzZXJpYWxpemUocmVhZGVyOiBCeXRlQnVmZmVyKTogVHJhbnNmb3JtIHtcbiAgICBjb25zdCBwdHIgPSByZWFkZXIuaW5jcmVtZW50UmVhZE9mZnNldChUUkFOU0ZPUk1fTEVOR1RIKVxuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogVmVjdG9yMy5jcmVhdGUoXG4gICAgICAgIHJlYWRlci5nZXRGbG9hdDMyKHB0ciksXG4gICAgICAgIHJlYWRlci5nZXRGbG9hdDMyKHB0ciArIDQpLFxuICAgICAgICByZWFkZXIuZ2V0RmxvYXQzMihwdHIgKyA4KVxuICAgICAgKSxcbiAgICAgIHJvdGF0aW9uOiBRdWF0ZXJuaW9uLmNyZWF0ZShcbiAgICAgICAgcmVhZGVyLmdldEZsb2F0MzIocHRyICsgMTIpLFxuICAgICAgICByZWFkZXIuZ2V0RmxvYXQzMihwdHIgKyAxNiksXG4gICAgICAgIHJlYWRlci5nZXRGbG9hdDMyKHB0ciArIDIwKSxcbiAgICAgICAgcmVhZGVyLmdldEZsb2F0MzIocHRyICsgMjQpXG4gICAgICApLFxuICAgICAgc2NhbGU6IFZlY3RvcjMuY3JlYXRlKFxuICAgICAgICByZWFkZXIuZ2V0RmxvYXQzMihwdHIgKyAyOCksXG4gICAgICAgIHJlYWRlci5nZXRGbG9hdDMyKHB0ciArIDMyKSxcbiAgICAgICAgcmVhZGVyLmdldEZsb2F0MzIocHRyICsgMzYpXG4gICAgICApLFxuICAgICAgcGFyZW50OiByZWFkZXIuZ2V0VWludDMyKHB0ciArIDQwKSBhcyBFbnRpdHlcbiAgICB9XG4gIH0sXG4gIGNyZWF0ZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcG9zaXRpb246IHsgeDogMCwgeTogMCwgejogMCB9LFxuICAgICAgc2NhbGU6IHsgeDogMSwgeTogMSwgejogMSB9LFxuICAgICAgcm90YXRpb246IHsgeDogMCwgeTogMCwgejogMCwgdzogMSB9LFxuICAgICAgcGFyZW50OiB1bmRlZmluZWRcbiAgICB9XG4gIH1cbn1cbiIsIi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZW51bSBMRUdBQ1lfQ09NUE9ORU5UX0lEIHtcbiAgVFJBTlNGT1JNID0gMSxcbiAgVVVJRF9DQUxMQkFDSyA9IDgsXG4gIEJPWF9TSEFQRSA9IDE2LFxuICBTUEhFUkVfU0hBUEUgPSAxNyxcbiAgUExBTkVfU0hBUEUgPSAxOCxcbiAgQ09ORV9TSEFQRSA9IDE5LFxuICBDWUxJTkRFUl9TSEFQRSA9IDIwLFxuICBURVhUX1NIQVBFID0gMjEsXG5cbiAgTkZUX1NIQVBFID0gMjIsXG4gIFVJX1dPUkxEX1NQQUNFX1NIQVBFID0gMjMsXG4gIFVJX1NDUkVFTl9TUEFDRV9TSEFQRSA9IDI0LFxuICBVSV9DT05UQUlORVJfUkVDVCA9IDI1LFxuICBVSV9DT05UQUlORVJfU1RBQ0sgPSAyNixcbiAgVUlfVEVYVF9TSEFQRSA9IDI3LFxuICBVSV9JTlBVVF9URVhUX1NIQVBFID0gMjgsXG4gIFVJX0lNQUdFX1NIQVBFID0gMjksXG4gIFVJX1NMSURFUl9TSEFQRSA9IDMwLFxuICBDSVJDTEVfU0hBUEUgPSAzMSxcbiAgQklMTEJPQVJEID0gMzIsXG5cbiAgQU5JTUFUSU9OID0gMzMsXG4gIEZPTlQgPSAzNCxcblxuICBVSV9GVUxMU0NSRUVOX1NIQVBFID0gNDAsIC8vIGludGVybmFsIGZ1bGxzY3JlZW4gc2NlbmVzXG4gIFVJX0JVVFRPTl9TSEFQRSA9IDQxLFxuXG4gIEdMVEZfU0hBUEUgPSA1NCxcbiAgT0JKX1NIQVBFID0gNTUsXG4gIEFWQVRBUl9TSEFQRSA9IDU2LFxuXG4gIEJBU0lDX01BVEVSSUFMID0gNjQsXG4gIFBCUl9NQVRFUklBTCA9IDY1LFxuXG4gIEhJR0hMSUdIVF9FTlRJVFkgPSA2NixcblxuICAvKiogQGRlcHJlY2F0ZWQgU291bmQgaGFzIGJlZW4gZGVwcmVjYXRhZWQgKi9cbiAgU09VTkQgPSA2NyxcbiAgVEVYVFVSRSA9IDY4LFxuXG4gIFZJREVPX0NMSVAgPSA3MCxcbiAgVklERU9fVEVYVFVSRSA9IDcxLFxuXG4gIEFWQVRBUl9URVhUVVJFID0gNzIsXG5cbiAgQVVESU9fQ0xJUCA9IDIwMCxcbiAgQVVESU9fU09VUkNFID0gMjAxLFxuICBBVURJT19TVFJFQU0gPSAyMDIsXG4gIEdJWk1PUyA9IDIwMyxcbiAgU01BUlRfSVRFTSA9IDIwNCxcbiAgQVZBVEFSX01PRElGSUVSX0FSRUEgPSAyMDUsXG4gIEFWQVRBUl9BVFRBQ0ggPSAyMDYsXG4gIENBTUVSQV9NT0RFX0FSRUEgPSAyMDcsXG5cbiAgLy8gRm9yIHN0YXRlIHN5bmMgb25seVxuICBOQU1FID0gMzAwLFxuICBMT0NLRURfT05fRURJVCA9IDMwMSxcbiAgVklTSUJMRV9PTl9FRElUID0gMzAyXG59XG4iLCJpbXBvcnQgdHlwZSB7IElFbmdpbmUgfSBmcm9tICcuLi8uLi9lbmdpbmUvdHlwZXMnXG5pbXBvcnQgeyBkZWZpbmVQcm90b2NvbEJ1ZmZlckNvbXBvbmVudHMgfSBmcm9tICcuLi9nZW5lcmF0ZWQvaW5kZXguZ2VuJ1xuaW1wb3J0IHsgVHJhbnNmb3JtIGFzIExlZ2FjeVRyYW5zZm9ybSB9IGZyb20gJy4vVHJhbnNmb3JtJ1xuaW1wb3J0IHsgTEVHQUNZX0NPTVBPTkVOVF9JRCBhcyBJRCB9IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVMZWdhY3lDb21wb25lbnRzKHtcbiAgZGVmaW5lQ29tcG9uZW50XG59OiBQaWNrPElFbmdpbmUsICdkZWZpbmVDb21wb25lbnQnPikge1xuICByZXR1cm4ge1xuICAgIFRyYW5zZm9ybTogZGVmaW5lQ29tcG9uZW50KElELlRSQU5TRk9STSwgTGVnYWN5VHJhbnNmb3JtKSxcbiAgICAuLi5kZWZpbmVQcm90b2NvbEJ1ZmZlckNvbXBvbmVudHMoeyBkZWZpbmVDb21wb25lbnQgfSlcbiAgfVxufVxuIiwiZXhwb3J0IGVudW0gQ09NUE9ORU5UX0lEIHtcbiAgU1lOQyA9IDEwMDBcbn1cbiIsImltcG9ydCB7IGRlZmluZUxlZ2FjeUNvbXBvbmVudHMgfSBmcm9tICcuL2xlZ2FjeSdcbmltcG9ydCB0eXBlIHsgSUVuZ2luZSB9IGZyb20gJy4uL2VuZ2luZS90eXBlcydcblxuZXhwb3J0ICogZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZVNka0NvbXBvbmVudHMoZW5naW5lOiBQaWNrPElFbmdpbmUsICdkZWZpbmVDb21wb25lbnQnPikge1xuICByZXR1cm4ge1xuICAgIC4uLmRlZmluZUxlZ2FjeUNvbXBvbmVudHMoZW5naW5lKVxuICB9XG59XG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBTZGtDb21wb25lbnRzID0gUmV0dXJuVHlwZTx0eXBlb2YgZGVmaW5lU2RrQ29tcG9uZW50cz5cbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dHlwZXMuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19jcmVhdGVCaW5kaW5nID0gKHRoaXMgJiYgdGhpcy5fX2NyZWF0ZUJpbmRpbmcpIHx8IChPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfSk7XG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgb1trMl0gPSBtW2tdO1xufSkpO1xudmFyIF9fZXhwb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19leHBvcnRTdGFyKSB8fCBmdW5jdGlvbihtLCBleHBvcnRzKSB7XG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChleHBvcnRzLCBwKSkgX19jcmVhdGVCaW5kaW5nKGV4cG9ydHMsIG0sIHApO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuY3JkdFByb3RvY29sID0gZXhwb3J0cy5zYW1lRGF0YSA9IHZvaWQgMDtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi90eXBlc1wiKSwgZXhwb3J0cyk7XG4vKipcbiAqIENvbXBhcmUgcmF3IGRhdGEuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gc2FtZURhdGEoYSwgYikge1xuICAgIC8vIEF0IHJlZmVyZW5jZSBsZXZlbFxuICAgIGlmIChhID09PSBiKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkgJiYgYiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCAhPT0gYi5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmJ5dGVMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChnbG9iYWxUaGlzLkJ1ZmZlcikge1xuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIEJ1ZmZlciAmJiBiIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICAgICAgICAvLyBEZWVwIGxldmVsXG4gICAgICAgICAgICByZXR1cm4gYS5lcXVhbHMoYik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZXhwb3J0cy5zYW1lRGF0YSA9IHNhbWVEYXRhO1xuLyoqXG4gKiBAcHVibGljXG4gKiBDUkRUIHByb3RvY29sLlxuICogU3RvcmVzIHRoZSBsYXRlc3Qgc3RhdGUsIGFuZCBkZWNpZGVzIHdoZW5ldmVyIHdlIGhhdmVcbiAqIHRvIHByb2Nlc3MgYW5kIHN0b3JlIHRoZSBuZXcgZGF0YSBpbiBjYXNlIGl0cyBhbiB1cGRhdGUsIG9yXG4gKiB0byBkaXNjYXJkIGFuZCBzZW5kIG91ciBsb2NhbCB2YWx1ZSBjYXVzZSByZW1vdGUgaXQncyBvdXRkYXRlZC5cbiAqL1xuZnVuY3Rpb24gY3JkdFByb3RvY29sKCkge1xuICAgIC8qKlxuICAgICAqIExvY2FsIHN0YXRlIHdoZXJlIHdlIHN0b3JlIHRoZSBsYXRlc3QgbGFtcG9ydCB0aW1lc3RhbXBcbiAgICAgKiBhbmQgdGhlIHJhdyBkYXRhIHZhbHVlXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgY29uc3Qgc3RhdGUgPSB7fTtcbiAgICAvKipcbiAgICAgKiBXZSBzaG91bGQgY2FsbCB0aGlzIGZuIGluIG9yZGVyIHRvIHVwZGF0ZSB0aGUgc3RhdGVcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1cGRhdGVTdGF0ZShrZXksIGRhdGEsIHJlbW90ZVRpbWVzdGFtcCkge1xuICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBNYXRoLm1heChyZW1vdGVUaW1lc3RhbXAsIHN0YXRlW2tleV0/LnRpbWVzdGFtcCB8fCAwKTtcbiAgICAgICAgcmV0dXJuIChzdGF0ZVtrZXldID0geyB0aW1lc3RhbXAsIGRhdGEgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhbiBldmVudCBmb3IgdGhlIHNwZWNpZmllZCBrZXkgYW5kIHN0b3JlIHRoZSBuZXcgZGF0YSBhbmRcbiAgICAgKiBsYW1wb3J0IHRpbWVzdG1hcCBpbmNyZW1lbnRlZCBieSBvbmUgaW4gdGhlIHN0YXRlLlxuICAgICAqIEBwdWJsaWNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVFdmVudChrZXksIGRhdGEpIHtcbiAgICAgICAgLy8gSW5jcmVtZW50IHRoZSB0aW1lc3RhbXBcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gKHN0YXRlW2tleV0/LnRpbWVzdGFtcCB8fCAwKSArIDE7XG4gICAgICAgIHVwZGF0ZVN0YXRlKGtleSwgZGF0YSwgdGltZXN0YW1wKTtcbiAgICAgICAgcmV0dXJuIHsga2V5LCBkYXRhLCB0aW1lc3RhbXAgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUHJvY2VzcyB0aGUgcmVjZWl2ZWQgbWVzc2FnZSBvbmx5IGlmIHRoZSBsYW1wb3J0IG51bWJlciByZWNpZXZlZCBpcyBoaWdoZXJcbiAgICAgKiB0aGFuIHRoZSBzdG9yZWQgb25lLiBJZiBpdHMgbG93ZXIsIHdlIHNwcmVhZCBpdCB0byB0aGUgbmV0d29yayB0byBjb3JyZWN0IHRoZSBwZWVyLlxuICAgICAqIElmIHRoZXkgYXJlIGVxdWFsLCB0aGUgYmlnZ2VyIHJhdyBkYXRhIHdpbnMuXG4gIFxuICAgICAqIFJldHVybnMgdGhlIHJlY2lldmVkIGRhdGEgaWYgdGhlIGxhbXBvcnQgbnVtYmVyIHdhcyBiaWdnZXIgdGhhbiBvdXJzLlxuICAgICAqIElmIGl0IHdhcyBhbiBvdXRkYXRlZCBtZXNzYWdlLCB0aGVuIHdlIHJldHVybiB2b2lkXG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHByb2Nlc3NNZXNzYWdlKG1lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgeyBrZXksIGRhdGEsIHRpbWVzdGFtcCB9ID0gbWVzc2FnZTtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHN0YXRlW2tleV07XG4gICAgICAgIC8vIFRoZSByZWNlaXZlZCBtZXNzYWdlIGlzID4gdGhhbiBvdXIgY3VycmVudCB2YWx1ZSwgdXBkYXRlIG91ciBzdGF0ZS5cbiAgICAgICAgaWYgKCFjdXJyZW50IHx8IGN1cnJlbnQudGltZXN0YW1wIDwgdGltZXN0YW1wKSB7XG4gICAgICAgICAgICB1cGRhdGVTdGF0ZShrZXksIGRhdGEsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBPdXRkYXRlZCBNZXNzYWdlLiBSZXNlbmQgb3VyIHN0YXRlIG1lc3NhZ2UgdGhyb3VnaCB0aGUgd2lyZS5cbiAgICAgICAgaWYgKGN1cnJlbnQudGltZXN0YW1wID4gdGltZXN0YW1wKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICBkYXRhOiBjdXJyZW50LmRhdGEsXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBjdXJyZW50LnRpbWVzdGFtcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTYW1lIGRhdGEsIHNhbWUgdGltZXN0YW1wLiBXZWlyZG8gZWNobyBtZXNzYWdlLlxuICAgICAgICBpZiAoc2FtZURhdGEoY3VycmVudC5kYXRhLCBkYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmFjZSBjb25kaXRpb24sIHNhbWUgdGltZXN0YW1wIGRpZmYgZGF0YS5cbiAgICAgICAgZnVuY3Rpb24gY29tcGFyZURhdGEoY3VycmVudCwgZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQgPiBkYXRhO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wYXJlRGF0YShjdXJyZW50LmRhdGEsIGRhdGEpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICBkYXRhOiBjdXJyZW50LmRhdGEsXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBjdXJyZW50LnRpbWVzdGFtcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVTdGF0ZShrZXksIGRhdGEsIHRpbWVzdGFtcCkuZGF0YTtcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGVcbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0U3RhdGUoKSB7XG4gICAgICAgIHJldHVybiB7IC4uLnN0YXRlIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGNyZWF0ZUV2ZW50LFxuICAgICAgICBwcm9jZXNzTWVzc2FnZSxcbiAgICAgICAgZ2V0U3RhdGVcbiAgICB9O1xufVxuZXhwb3J0cy5jcmR0UHJvdG9jb2wgPSBjcmR0UHJvdG9jb2w7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCIvKipcbiAqIFRha2UgdGhlIG1heCBiZXR3ZWVuIGN1cnJlbnRTaXplIGFuZCBpbnRlbmRlZFNpemUgYW5kIHRoZW4gcGx1cyAxMDI0LiBUaGVuLFxuICogIGZpbmQgdGhlIG5leHQgbmVhcmVyIG11bHRpcGxlIG9mIDEwMjQuXG4gKiBAcGFyYW0gY3VycmVudFNpemUgLSBudW1iZXJcbiAqIEBwYXJhbSBpbnRlbmRlZFNpemUgLSBudW1iZXJcbiAqIEByZXR1cm5zIHRoZSBjYWxjdWxhdGVkIG51bWJlclxuICovXG5mdW5jdGlvbiBnZXROZXh0U2l6ZShjdXJyZW50U2l6ZTogbnVtYmVyLCBpbnRlbmRlZFNpemU6IG51bWJlcikge1xuICBjb25zdCBtaW5OZXdTaXplID0gTWF0aC5tYXgoY3VycmVudFNpemUsIGludGVuZGVkU2l6ZSkgKyAxMDI0XG4gIHJldHVybiBNYXRoLmNlaWwobWluTmV3U2l6ZSAvIDEwMjQpICogMTAyNFxufVxuXG4vKipcbiAqIEBwYXJhbSB3cml0aW5nIC0gd3JpdGluZyBvcHRpb24sIHNlZSBvYmplY3Qgc3BlY3MuXG4gKiBAcGFyYW0gcmVhZGluZyAtIHJlYWRpbmcgb3B0aW9uLCBzZWUgb2JqZWN0IHNwZWNzLlxuICogQHBhcmFtIGluaXRpYWxDYXBhY2l0eSAtIEluaXRpYWwgY2FwYWNpdHkgb2YgYnVmZmVyIHRvIGFsbG9jYXRlLCBpZ25vcmVkIGlmIHlvdSB1c2Ugd3JpdGluZyBvciByZWFkaW5nIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVCeXRlQnVmZmVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBAcGFyYW0gYnVmZmVyIC0gYSBidWZmZXIgYWxyZWFkeSBhbGxvY2F0ZWQgdG8gcmVhZCBmcm9tIHRoZXJlLlxuICAgKiBAcGFyYW0gY3VycmVudE9mZnNldCAtIHNldCB0aGUgY3Vyc29yIHdoZXJlIGJlZ2lucyB0byByZWFkLiBEZWZhdWx0IDBcbiAgICogQHBhcmFtIGxlbmd0aCAtIGRlbGltaXRlIHdoZXJlIHRoZSB2YWxpZCBkYXRhIGVuZHMuIERlZmF1bHQ6IGJ1ZmZlci5sZW5ndGhcbiAgICovXG4gIHJlYWRpbmc/OiB7XG4gICAgYnVmZmVyOiBVaW50OEFycmF5XG4gICAgbGVuZ3RoPzogbnVtYmVyXG4gICAgY3VycmVudE9mZnNldDogbnVtYmVyXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGJ1ZmZlciAtIGEgYnVmZmVyIGFscmVhZHkgYWxsb2NhdGVkIHRvIHdyaXRlIHRoZXJlLlxuICAgKiBAcGFyYW0gY3VycmVudE9mZnNldCAtIHNldCB0aGUgY3Vyc29yIHRvIG5vdCBzdGFydCB3cml0aW5nIGZyb20gdGhlIGJlZ2luIG9mIGl0LiBEZWZhdWx0IDBcbiAgICovXG4gIHdyaXRpbmc/OiB7XG4gICAgYnVmZmVyOiBVaW50OEFycmF5XG4gICAgY3VycmVudE9mZnNldD86IG51bWJlclxuICB9XG5cbiAgaW5pdGlhbENhcGFjaXR5PzogbnVtYmVyXG59XG5cbmNvbnN0IGRlZmF1bHRJbml0aWFsQ2FwYWNpdHkgPSAxMDI0MFxuXG4vKipcbiAqIEJ5dGVCdWZmZXIgaXMgYSB3cmFwcGVyIG9mIERhdGFWaWV3IHdoaWNoIGFsc28gYWRkcyBhIHJlYWQgYW5kIHdyaXRlIG9mZnNldC5cbiAqICBBbHNvIGluIGEgd3JpdGUgb3BlcmF0aW9uIGl0IHJlc2l6ZXMgdGhlIGJ1ZmZlciBpcyBiZWluZyB1c2VkIGlmIGl0IG5lZWRzLlxuICpcbiAqIC0gVXNlIHJlYWQgYW5kIHdyaXRlIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIG9yIGNvbnN1bWUgZGF0YS5cbiAqIC0gVXNlIHNldCBhbmQgZ2V0IG9ubHkgaWYgeW91IGFyZSBzdXJlIHRoYXQgeW91J3JlIGRvaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQnl0ZUJ1ZmZlcihvcHRpb25zOiBDcmVhdGVCeXRlQnVmZmVyT3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IGluaXRpYWxST2Zmc2V0OiBudW1iZXIgPSBvcHRpb25zLnJlYWRpbmc/LmN1cnJlbnRPZmZzZXQgfHwgMFxuICBsZXQgaW5pdGlhbEJ1ZmZlcjogVWludDhBcnJheSB8IG51bGwgPSBudWxsXG4gIGxldCBpbml0aWFsV09mZnNldDogbnVtYmVyID0gMFxuXG4gIGlmIChvcHRpb25zLndyaXRpbmcpIHtcbiAgICBpbml0aWFsQnVmZmVyID0gb3B0aW9ucy53cml0aW5nLmJ1ZmZlclxuICAgIGlmIChvcHRpb25zLndyaXRpbmcuY3VycmVudE9mZnNldCkge1xuICAgICAgaW5pdGlhbFdPZmZzZXQgPSBvcHRpb25zLndyaXRpbmcuY3VycmVudE9mZnNldFxuICAgIH1cbiAgfSBlbHNlIGlmIChvcHRpb25zLnJlYWRpbmcpIHtcbiAgICBpbml0aWFsQnVmZmVyID0gb3B0aW9ucy5yZWFkaW5nLmJ1ZmZlclxuICAgIGluaXRpYWxXT2Zmc2V0ID0gb3B0aW9ucy5yZWFkaW5nLmxlbmd0aCB8fCBvcHRpb25zLnJlYWRpbmcuYnVmZmVyLmxlbmd0aFxuICB9IGVsc2Uge1xuICAgIGluaXRpYWxCdWZmZXIgPSBuZXcgVWludDhBcnJheShcbiAgICAgIG9wdGlvbnMuaW5pdGlhbENhcGFjaXR5IHx8IGRlZmF1bHRJbml0aWFsQ2FwYWNpdHlcbiAgICApXG4gIH1cblxuICBsZXQgYnVmZmVyOiBVaW50OEFycmF5ID0gaW5pdGlhbEJ1ZmZlciFcbiAgbGV0IHZpZXc6IERhdGFWaWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIsIGJ1ZmZlci5ieXRlT2Zmc2V0KVxuICBsZXQgd29mZnNldDogbnVtYmVyID0gaW5pdGlhbFdPZmZzZXRcbiAgbGV0IHJvZmZzZXQ6IG51bWJlciA9IGluaXRpYWxST2Zmc2V0XG5cbiAgLyoqXG4gICAqIEluY3JlZW1lbnQgdGhlIHdyaXRlIG9mZnNldCBhbmQgcmVzaXplIHRoZSBidWZmZXIgaWYgaXQgbmVlZHMuXG4gICAqL1xuICBjb25zdCB3b0FkZCA9IChhbW91bnQ6IG51bWJlcikgPT4ge1xuICAgIGlmICh3b2Zmc2V0ICsgYW1vdW50ID4gYnVmZmVyLmJ5dGVMZW5ndGgpIHtcbiAgICAgIGNvbnN0IG5ld3NpemUgPSBnZXROZXh0U2l6ZShidWZmZXIuYnl0ZUxlbmd0aCwgd29mZnNldCArIGFtb3VudClcbiAgICAgIGNvbnN0IG5ld0J1ZmZlciA9IG5ldyBVaW50OEFycmF5KG5ld3NpemUpXG4gICAgICBuZXdCdWZmZXIuc2V0KGJ1ZmZlcilcbiAgICAgIGJ1ZmZlciA9IG5ld0J1ZmZlclxuICAgICAgdmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIuYnVmZmVyKVxuICAgIH1cblxuICAgIHdvZmZzZXQgKz0gYW1vdW50XG4gICAgcmV0dXJuIHdvZmZzZXQgLSBhbW91bnRcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmNyZW1lbnQgdGhlIHJlYWQgb2Zmc2V0IGFuZCB0aHJvdyBhbiBlcnJvciBpZiBpdCdzIHRyeWluZyB0byByZWFkXG4gICAqICBvdXRzaWRlIHRoZSBib3VuZHMuXG4gICAqL1xuICBjb25zdCByb0FkZCA9IChhbW91bnQ6IG51bWJlcikgPT4ge1xuICAgIGlmIChyb2Zmc2V0ICsgYW1vdW50ID4gd29mZnNldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdPdXRzaWRlIG9mIHRoZSBib3VuZHMgb2Ygd3JpdGVuIGRhdGEuJylcbiAgICB9XG5cbiAgICByb2Zmc2V0ICs9IGFtb3VudFxuICAgIHJldHVybiByb2Zmc2V0IC0gYW1vdW50XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIFRoZSBlbnRpcmUgY3VycmVudCBVaW50OEFycmF5LlxuICAgICAqXG4gICAgICogV0FSTklORzogaWYgdGhlIGJ1ZmZlciBncm93cywgdGhlIHZpZXcgaGFkIGNoYW5nZWQgaXRzZWxmLFxuICAgICAqICBhbmQgdGhlIHJlZmVyZW5jZSB3aWxsIGJlIGEgaW52YWxpZCBvbmUuXG4gICAgICovXG4gICAgYnVmZmVyKCk6IFVpbnQ4QXJyYXkge1xuICAgICAgcmV0dXJuIGJ1ZmZlclxuICAgIH0sXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgVGhlIGNhcGFjaXR5IG9mIHRoZSBjdXJyZW50IGJ1ZmZlclxuICAgICAqL1xuICAgIGJ1ZmZlckxlbmd0aCgpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIGJ1ZmZlci5sZW5ndGhcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFJlc2V0cyBieXRlQnVmZmVyIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IG9uZVxuICAgICAqL1xuICAgIHJlc2V0QnVmZmVyKCk6IHZvaWQge1xuICAgICAgcm9mZnNldCA9IDBcbiAgICAgIHdvZmZzZXQgPSAwXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCByZWFkIG9mZnNldFxuICAgICAqL1xuICAgIGN1cnJlbnRSZWFkT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICByZXR1cm4gcm9mZnNldFxuICAgIH0sXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgd3JpdGUgb2Zmc2V0XG4gICAgICovXG4gICAgY3VycmVudFdyaXRlT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICByZXR1cm4gd29mZnNldFxuICAgIH0sXG4gICAgLyoqXG4gICAgICogUmVhZGluZyBwdXJwb3NlXG4gICAgICogUmV0dXJucyB0aGUgcHJldml1b3Mgb2Zmc3NldCBzaXplIGJlZm9yZSBpbmNyZW1lbnRpbmdcbiAgICAgKi9cbiAgICBpbmNyZW1lbnRSZWFkT2Zmc2V0KGFtb3VudDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiByb0FkZChhbW91bnQpXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBIb3cgbWFueSBieXRlcyBhcmUgYXZhaWxhYmxlIHRvIHJlYWQuXG4gICAgICovXG4gICAgcmVtYWluaW5nQnl0ZXMoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiB3b2Zmc2V0IC0gcm9mZnNldFxuICAgIH0sXG4gICAgcmVhZEZsb2F0MzIoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiB2aWV3LmdldEZsb2F0MzIocm9BZGQoNCkpXG4gICAgfSxcbiAgICByZWFkRmxvYXQ2NCgpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIHZpZXcuZ2V0RmxvYXQ2NChyb0FkZCg4KSlcbiAgICB9LFxuICAgIHJlYWRJbnQ4KCk6IG51bWJlciB7XG4gICAgICByZXR1cm4gdmlldy5nZXRJbnQ4KHJvQWRkKDEpKVxuICAgIH0sXG4gICAgcmVhZEludDE2KCk6IG51bWJlciB7XG4gICAgICByZXR1cm4gdmlldy5nZXRJbnQxNihyb0FkZCgyKSlcbiAgICB9LFxuICAgIHJlYWRJbnQzMigpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIHZpZXcuZ2V0SW50MzIocm9BZGQoNCkpXG4gICAgfSxcbiAgICByZWFkSW50NjQoKTogYmlnaW50IHtcbiAgICAgIHJldHVybiB2aWV3LmdldEJpZ0ludDY0KHJvQWRkKDgpKVxuICAgIH0sXG4gICAgcmVhZFVpbnQ4KCk6IG51bWJlciB7XG4gICAgICByZXR1cm4gdmlldy5nZXRVaW50OChyb0FkZCgxKSlcbiAgICB9LFxuICAgIHJlYWRVaW50MTYoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiB2aWV3LmdldFVpbnQxNihyb0FkZCgyKSlcbiAgICB9LFxuICAgIHJlYWRVaW50MzIoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiB2aWV3LmdldFVpbnQzMihyb0FkZCg0KSlcbiAgICB9LFxuICAgIHJlYWRVaW50NjQoKTogYmlnaW50IHtcbiAgICAgIHJldHVybiB2aWV3LmdldEJpZ1VpbnQ2NChyb0FkZCg4KSlcbiAgICB9LFxuICAgIHJlYWRCdWZmZXIoKSB7XG4gICAgICBjb25zdCBsZW5ndGggPSB2aWV3LmdldFVpbnQzMihyb0FkZCg0KSlcbiAgICAgIHJldHVybiBidWZmZXIuc3ViYXJyYXkocm9BZGQobGVuZ3RoKSwgcm9BZGQoMCkpXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBXcml0aW5nIHB1cnBvc2VcbiAgICAgKi9cbiAgICAvKipcbiAgICAgKiBJbmNyZW1lbnQgb2Zmc2V0XG4gICAgICogQHBhcmFtIGFtb3VudCAtIGhvdyBtYW55IGJ5dGVzXG4gICAgICogQHJldHVybnMgVGhlIG9mZnNldCB3aGVuIHRoaXMgcmVzZXJ2aW5nIHN0YXJ0cy5cbiAgICAgKi9cbiAgICBpbmNyZW1lbnRXcml0ZU9mZnNldChhbW91bnQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgICByZXR1cm4gd29BZGQoYW1vdW50KVxuICAgIH0sXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgVGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyB3cml0ZW4gaW4gdGhlIGJ1ZmZlci5cbiAgICAgKi9cbiAgICBzaXplKCk6IG51bWJlciB7XG4gICAgICByZXR1cm4gd29mZnNldFxuICAgIH0sXG4gICAgLyoqXG4gICAgICogVGFrZSBjYXJlIHVzaW5nIHRoaXMgZnVuY3Rpb24sIGlmIHlvdSBtb2RpZnkgdGhlIGRhdGEgYWZ0ZXIsIHRoZVxuICAgICAqIHJldHVybmVkIHN1YmFycmF5IHdpbGwgY2hhbmdlIHRvby4gSWYgeW91J2xsIG1vZGlmeSB0aGUgY29udGVudCBvZiB0aGVcbiAgICAgKiBieXRlYnVmZmVyLCBtYXliZSB5b3Ugd2FudCB0byB1c2UgdG9Db3BpZWRCaW5hcnkoKVxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIHN1YmFycmF5IGZyb20gMCB0byBvZmZzZXQgYXMgcmVmZXJlbmNlLlxuICAgICAqL1xuICAgIHRvQmluYXJ5KCkge1xuICAgICAgcmV0dXJuIGJ1ZmZlci5zdWJhcnJheSgwLCB3b2Zmc2V0KVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBTYWZlIGNvcGllZCBidWZmZXIgb2YgdGhlIGN1cnJlbnQgZGF0YSBvZiBCeXRlQnVmZmVyXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgc3ViYXJyYXkgZnJvbSAwIHRvIG9mZnNldC5cbiAgICAgKi9cbiAgICB0b0NvcGllZEJpbmFyeSgpIHtcbiAgICAgIHJldHVybiBuZXcgVWludDhBcnJheSh0aGlzLnRvQmluYXJ5KCkpXG4gICAgfSxcblxuICAgIHdyaXRlQnVmZmVyKHZhbHVlOiBVaW50OEFycmF5LCB3cml0ZUxlbmd0aDogYm9vbGVhbiA9IHRydWUpIHtcbiAgICAgIGlmICh3cml0ZUxlbmd0aCkge1xuICAgICAgICB0aGlzLndyaXRlVWludDMyKHZhbHVlLmJ5dGVMZW5ndGgpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG8gPSB3b0FkZCh2YWx1ZS5ieXRlTGVuZ3RoKVxuICAgICAgYnVmZmVyLnNldCh2YWx1ZSwgbylcbiAgICB9LFxuICAgIHdyaXRlRmxvYXQzMih2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICBjb25zdCBvID0gd29BZGQoNClcbiAgICAgIHZpZXcuc2V0RmxvYXQzMihvLCB2YWx1ZSlcbiAgICB9LFxuICAgIHdyaXRlRmxvYXQ2NCh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICBjb25zdCBvID0gd29BZGQoOClcbiAgICAgIHZpZXcuc2V0RmxvYXQ2NChvLCB2YWx1ZSlcbiAgICB9LFxuICAgIHdyaXRlSW50OCh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICBjb25zdCBvID0gd29BZGQoMSlcbiAgICAgIHZpZXcuc2V0SW50OChvLCB2YWx1ZSlcbiAgICB9LFxuICAgIHdyaXRlSW50MTYodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgY29uc3QgbyA9IHdvQWRkKDIpXG4gICAgICB2aWV3LnNldEludDE2KG8sIHZhbHVlKVxuICAgIH0sXG4gICAgd3JpdGVJbnQzMih2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICBjb25zdCBvID0gd29BZGQoNClcbiAgICAgIHZpZXcuc2V0SW50MzIobywgdmFsdWUpXG4gICAgfSxcbiAgICB3cml0ZUludDY0KHZhbHVlOiBiaWdpbnQpOiB2b2lkIHtcbiAgICAgIGNvbnN0IG8gPSB3b0FkZCg4KVxuICAgICAgdmlldy5zZXRCaWdJbnQ2NChvLCB2YWx1ZSlcbiAgICB9LFxuICAgIHdyaXRlVWludDgodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgY29uc3QgbyA9IHdvQWRkKDEpXG4gICAgICB2aWV3LnNldFVpbnQ4KG8sIHZhbHVlKVxuICAgIH0sXG4gICAgd3JpdGVVaW50MTYodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgY29uc3QgbyA9IHdvQWRkKDIpXG4gICAgICB2aWV3LnNldFVpbnQxNihvLCB2YWx1ZSlcbiAgICB9LFxuICAgIHdyaXRlVWludDMyKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgIGNvbnN0IG8gPSB3b0FkZCg0KVxuICAgICAgdmlldy5zZXRVaW50MzIobywgdmFsdWUpXG4gICAgfSxcbiAgICB3cml0ZVVpbnQ2NCh2YWx1ZTogYmlnaW50KTogdm9pZCB7XG4gICAgICBjb25zdCBvID0gd29BZGQoOClcbiAgICAgIHZpZXcuc2V0QmlnVWludDY0KG8sIHZhbHVlKVxuICAgIH0sXG4gICAgLy8gRGF0YXZpZXcgUHJveHlcbiAgICBnZXRGbG9hdDMyKG9mZnNldDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiB2aWV3LmdldEZsb2F0MzIob2Zmc2V0KVxuICAgIH0sXG4gICAgZ2V0RmxvYXQ2NChvZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgICByZXR1cm4gdmlldy5nZXRGbG9hdDY0KG9mZnNldClcbiAgICB9LFxuICAgIGdldEludDgob2Zmc2V0OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIHZpZXcuZ2V0SW50OChvZmZzZXQpXG4gICAgfSxcbiAgICBnZXRJbnQxNihvZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgICByZXR1cm4gdmlldy5nZXRJbnQxNihvZmZzZXQpXG4gICAgfSxcbiAgICBnZXRJbnQzMihvZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgICByZXR1cm4gdmlldy5nZXRJbnQzMihvZmZzZXQpXG4gICAgfSxcbiAgICBnZXRJbnQ2NChvZmZzZXQ6IG51bWJlcik6IGJpZ2ludCB7XG4gICAgICByZXR1cm4gdmlldy5nZXRCaWdJbnQ2NChvZmZzZXQpXG4gICAgfSxcbiAgICBnZXRVaW50OChvZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgICByZXR1cm4gdmlldy5nZXRVaW50OChvZmZzZXQpXG4gICAgfSxcbiAgICBnZXRVaW50MTYob2Zmc2V0OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIHZpZXcuZ2V0VWludDE2KG9mZnNldClcbiAgICB9LFxuICAgIGdldFVpbnQzMihvZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgICByZXR1cm4gdmlldy5nZXRVaW50MzIob2Zmc2V0KVxuICAgIH0sXG4gICAgZ2V0VWludDY0KG9mZnNldDogbnVtYmVyKTogYmlnaW50IHtcbiAgICAgIHJldHVybiB2aWV3LmdldEJpZ1VpbnQ2NChvZmZzZXQpXG4gICAgfSxcbiAgICBzZXRGbG9hdDMyKG9mZnNldDogbnVtYmVyLCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICB2aWV3LnNldEZsb2F0MzIob2Zmc2V0LCB2YWx1ZSlcbiAgICB9LFxuICAgIHNldEZsb2F0NjQob2Zmc2V0OiBudW1iZXIsIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgIHZpZXcuc2V0RmxvYXQ2NChvZmZzZXQsIHZhbHVlKVxuICAgIH0sXG4gICAgc2V0SW50OChvZmZzZXQ6IG51bWJlciwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgdmlldy5zZXRJbnQ4KG9mZnNldCwgdmFsdWUpXG4gICAgfSxcbiAgICBzZXRJbnQxNihvZmZzZXQ6IG51bWJlciwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgdmlldy5zZXRJbnQxNihvZmZzZXQsIHZhbHVlKVxuICAgIH0sXG4gICAgc2V0SW50MzIob2Zmc2V0OiBudW1iZXIsIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgIHZpZXcuc2V0SW50MzIob2Zmc2V0LCB2YWx1ZSlcbiAgICB9LFxuICAgIHNldEludDY0KG9mZnNldDogbnVtYmVyLCB2YWx1ZTogYmlnaW50KTogdm9pZCB7XG4gICAgICB2aWV3LnNldEJpZ0ludDY0KG9mZnNldCwgdmFsdWUpXG4gICAgfSxcbiAgICBzZXRVaW50OChvZmZzZXQ6IG51bWJlciwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgdmlldy5zZXRVaW50OChvZmZzZXQsIHZhbHVlKVxuICAgIH0sXG4gICAgc2V0VWludDE2KG9mZnNldDogbnVtYmVyLCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICB2aWV3LnNldFVpbnQxNihvZmZzZXQsIHZhbHVlKVxuICAgIH0sXG4gICAgc2V0VWludDMyKG9mZnNldDogbnVtYmVyLCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICB2aWV3LnNldFVpbnQzMihvZmZzZXQsIHZhbHVlKVxuICAgIH0sXG4gICAgc2V0VWludDY0KG9mZnNldDogbnVtYmVyLCB2YWx1ZTogYmlnaW50KTogdm9pZCB7XG4gICAgICB2aWV3LnNldEJpZ1VpbnQ2NChvZmZzZXQsIHZhbHVlKVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgQnl0ZUJ1ZmZlciA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUJ5dGVCdWZmZXI+XG4iLCIvKipcbiAqIFRoZSB3aXJlIG1lc3NhZ2UgaXMgdGhlIHRvcC1sZXZlbCBtZXNzYWdlIHRoYXQgY2FuIGJlIHBhY2tlZFxuICogIGluc2lkZSBpdCBjYW4gY29udGFpbiBhIGRhdGEgd2l0aCBhbm90aGVyIHN0cnVjdHVyZSBvciBwcm90b2NvbFxuICpcbiAqIEVhY2ggd2lyZSBtZXNzYWdlIGhhcyB0aHJlZSBwcmltaXRpdmUgcHJvcGVydHkgdGhhdCBpdCdsbCBuZXZlciBjaGFuZ2VcbiAqICAgLS0tPiBsZW5ndGggICAgICAgIHVpbnQzMiAobWVzc2FnZSBzaXplIHVwIHRvIDQsMjk0LDk2NywyOTUpXG4gKiAgIC0tLT4gdmVyc2lvbiAgICAgICB1aW50MzIgKGZvciBub3cganVzdCBhIG51bWJlciB3aGljaCBpcyB6ZXJvKVxuICogICAtLS0+IG1lc3NhZ2UgdHlwZSAgdWludDMyXG4gKiBUaGUgbGVuZ3RoIGluZGljYXRlcyBob3cgbWFueSBieXRlcyBhcmUgYWJvdmUgc2VsZiwgdGhlIHZlcnNpb24gaW5cbiAqIGNvbWJpbmF0aW9uIHdpdGggbWVzc2FnZSB0eXBlIGRlZmluZXMgdGhlIHNldCBvZiBoYW5kbGVycyB0aGF0IHdpbGwgYmVcbiAqIGF2YWlsYWJsZSB0byBwcm9jZXNzIHRoZSBtZXNzYWdlXG4gKlxuICovXG5cbmltcG9ydCB7IEJ5dGVCdWZmZXIgfSBmcm9tICcuL0J5dGVCdWZmZXInXG5cbnR5cGUgVWludDMyID0gbnVtYmVyXG5cbmV4cG9ydCBuYW1lc3BhY2UgV2lyZU1lc3NhZ2Uge1xuICBleHBvcnQgZW51bSBFbnVtIHtcbiAgICBSRVNFUlZFRCA9IDAsXG5cbiAgICAvLyBDb21wb25lbnQgT3BlcmF0aW9uXG4gICAgUFVUX0NPTVBPTkVOVCA9IDEsXG4gICAgREVMRVRFX0NPTVBPTkVOVCA9IDIsXG5cbiAgICBNQVhfTUVTU0FHRV9UWVBFXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGxlbmd0aCAtIFVpbnQzMiB0aGUgbGVuZ3RoIG9mIGFsbCBtZXNzYWdlIChpbmNsdWRpbmcgdGhlIGhlYWRlcilcbiAgICogQHBhcmFtIHR5cGUgLSBkZWZpbmUgdGhlIGZ1bmN0aW9uIHdoaWNoIGhhbmRsZXMgdGhlIGRhdGFcbiAgICovXG4gIGV4cG9ydCB0eXBlIEhlYWRlciA9IHtcbiAgICBsZW5ndGg6IFVpbnQzMlxuICAgIHR5cGU6IFVpbnQzMlxuICB9XG5cbiAgZXhwb3J0IGNvbnN0IEhFQURFUl9MRU5HVEggPSA4XG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBpZiB0aGUgbWVzc2FnZSBpbmNvbWluZyBpcyBjb21wbGV0ZWRcbiAgICogQHBhcmFtIGJ1ZlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlKGJ1ZjogQnl0ZUJ1ZmZlcikge1xuICAgIGNvbnN0IHJlbSA9IGJ1Zi5yZW1haW5pbmdCeXRlcygpXG4gICAgaWYgKHJlbSA8IEhFQURFUl9MRU5HVEgpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGNvbnN0IG1lc3NhZ2VMZW5ndGggPSBidWYuZ2V0VWludDMyKGJ1Zi5jdXJyZW50UmVhZE9mZnNldCgpKVxuICAgIGlmIChyZW0gPCBtZXNzYWdlTGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIHJlYWRIZWFkZXIoYnVmOiBCeXRlQnVmZmVyKTogSGVhZGVyIHwgbnVsbCB7XG4gICAgaWYgKCF2YWxpZGF0ZShidWYpKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsZW5ndGg6IGJ1Zi5yZWFkVWludDMyKCksXG4gICAgICB0eXBlOiBidWYucmVhZFVpbnQzMigpIGFzIEVudW1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgV2lyZU1lc3NhZ2VcbiIsImltcG9ydCB7IENvbXBvbmVudERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9lbmdpbmUvY29tcG9uZW50J1xuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSAnLi4vLi4vZW5naW5lL2VudGl0eSdcbmltcG9ydCB7IEJ5dGVCdWZmZXIgfSBmcm9tICcuLi9CeXRlQnVmZmVyJ1xuaW1wb3J0IFdpcmVNZXNzYWdlIGZyb20gJy4uL3dpcmVNZXNzYWdlJ1xuXG5leHBvcnQgbmFtZXNwYWNlIENvbXBvbmVudE9wZXJhdGlvbiB7XG4gIC8qKlxuICAgKiBAcGFyYW0gZW50aXR5IC0gVWludDMyIG51bWJlciBvZiB0aGUgZW50aXR5XG4gICAqIEBwYXJhbSBjb21wb25lbnRJZCAtIFVpbnQzMiBudW1iZXIgb2YgaWRcbiAgICogQHBhcmFtIHRpbWVzdGFtcCAtIFVpbnQ2NCBMYW1wb3J0IHRpbWVzdGFtcFxuICAgKiBAcGFyYW0gZGF0YSAtIFVpbnQ4W10gZGF0YSBvZiBjb21wb25lbnRcbiAgICovXG4gIGV4cG9ydCB0eXBlIElQdXRDb21wb25lbnQgPSB7XG4gICAgZW50aXR5OiBFbnRpdHlcbiAgICBjb21wb25lbnRJZDogbnVtYmVyXG4gICAgdGltZXN0YW1wOiBudW1iZXJcbiAgICBkYXRhOiBVaW50OEFycmF5XG4gIH1cbiAgZXhwb3J0IHR5cGUgSURlbGV0ZUNvbXBvbmVudCA9IHtcbiAgICBlbnRpdHk6IEVudGl0eVxuICAgIGNvbXBvbmVudElkOiBudW1iZXJcbiAgICB0aW1lc3RhbXA6IG51bWJlclxuICAgIGRhdGE/OiB1bmRlZmluZWRcbiAgfVxuXG4gIGV4cG9ydCBjb25zdCBNRVNTQUdFX0hFQURFUl9MRU5HVEggPSAyMFxuICAvKipcbiAgICogQ2FsbCB0aGlzIGZ1bmN0aW9uIGZvciBhbiBvcHRpbWFsIHdyaXRpbmcgZGF0YSBwYXNzaW5nIHRoZSBCeXRlQnVmZmVyXG4gICAqICBhbHJlYWR5IGFsbG9jYXRlZFxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIHdyaXRlKFxuICAgIHR5cGU6IFdpcmVNZXNzYWdlLkVudW0sXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgdGltZXN0YW1wOiBudW1iZXIsXG4gICAgY29tcG9uZW50RGVmaW5pdGlvbjogQ29tcG9uZW50RGVmaW5pdGlvbixcbiAgICBidWY6IEJ5dGVCdWZmZXJcbiAgKSB7XG4gICAgLy8gcmVzZXJ2ZSB0aGUgYmVnaW5uaW5nXG4gICAgY29uc3Qgc3RhcnRNZXNzYWdlT2Zmc2V0ID0gYnVmLmluY3JlbWVudFdyaXRlT2Zmc2V0KFxuICAgICAgV2lyZU1lc3NhZ2UuSEVBREVSX0xFTkdUSCArIE1FU1NBR0VfSEVBREVSX0xFTkdUSFxuICAgIClcblxuICAgIC8vIHdyaXRlIGJvZHlcbiAgICBpZiAodHlwZSA9PT0gV2lyZU1lc3NhZ2UuRW51bS5QVVRfQ09NUE9ORU5UKSB7XG4gICAgICBjb21wb25lbnREZWZpbml0aW9uLndyaXRlVG9CeXRlQnVmZmVyKGVudGl0eSwgYnVmKVxuICAgIH1cbiAgICBjb25zdCBtZXNzYWdlTGVuZ3RoID0gYnVmLnNpemUoKSAtIHN0YXJ0TWVzc2FnZU9mZnNldFxuXG4gICAgLy8gV3JpdGUgV2lyZU1lc3NhZ2UgaGVhZGVyXG4gICAgYnVmLnNldFVpbnQzMihzdGFydE1lc3NhZ2VPZmZzZXQsIG1lc3NhZ2VMZW5ndGgpXG4gICAgYnVmLnNldFVpbnQzMihzdGFydE1lc3NhZ2VPZmZzZXQgKyA0LCB0eXBlKVxuXG4gICAgLy8gV3JpdGUgQ29tcG9uZW50T3BlcmF0aW9uIGhlYWRlclxuICAgIGJ1Zi5zZXRVaW50MzIoc3RhcnRNZXNzYWdlT2Zmc2V0ICsgOCwgZW50aXR5KVxuICAgIGJ1Zi5zZXRVaW50MzIoc3RhcnRNZXNzYWdlT2Zmc2V0ICsgMTIsIGNvbXBvbmVudERlZmluaXRpb24uX2lkKVxuICAgIGJ1Zi5zZXRVaW50NjQoc3RhcnRNZXNzYWdlT2Zmc2V0ICsgMTYsIEJpZ0ludCh0aW1lc3RhbXApKVxuICAgIGJ1Zi5zZXRVaW50MzIoXG4gICAgICBzdGFydE1lc3NhZ2VPZmZzZXQgKyAyNCxcbiAgICAgIG1lc3NhZ2VMZW5ndGggLSBNRVNTQUdFX0hFQURFUl9MRU5HVEggLSBXaXJlTWVzc2FnZS5IRUFERVJfTEVOR1RIXG4gICAgKVxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIHJlYWQoXG4gICAgYnVmOiBCeXRlQnVmZmVyXG4gICk6IChXaXJlTWVzc2FnZS5IZWFkZXIgJiAoSVB1dENvbXBvbmVudCB8IElEZWxldGVDb21wb25lbnQpKSB8IG51bGwge1xuICAgIGNvbnN0IGhlYWRlciA9IFdpcmVNZXNzYWdlLnJlYWRIZWFkZXIoYnVmKVxuXG4gICAgaWYgKCFoZWFkZXIpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgY29tbW9uID0ge1xuICAgICAgLi4uaGVhZGVyLFxuICAgICAgZW50aXR5OiBidWYucmVhZFVpbnQzMigpIGFzIEVudGl0eSxcbiAgICAgIGNvbXBvbmVudElkOiBidWYucmVhZEludDMyKCksXG4gICAgICB0aW1lc3RhbXA6IE51bWJlcihidWYucmVhZFVpbnQ2NCgpKVxuICAgIH1cblxuICAgIGlmIChoZWFkZXIudHlwZSA9PT0gV2lyZU1lc3NhZ2UuRW51bS5ERUxFVEVfQ09NUE9ORU5UKSB7XG4gICAgICByZXR1cm4gY29tbW9uXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbW1vbixcbiAgICAgIGRhdGE6IGJ1Zi5yZWFkQnVmZmVyKClcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IENvbXBvbmVudERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9lbmdpbmUvY29tcG9uZW50J1xuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSAnLi4vLi4vZW5naW5lL2VudGl0eSdcblxuZXhwb3J0IG5hbWVzcGFjZSBDcmR0VXRpbHMge1xuICBleHBvcnQgdHlwZSBDb21wb25lbnRJRCA9IENvbXBvbmVudERlZmluaXRpb25bJ19pZCddXG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldEtleShlbnRpdHk6IEVudGl0eSwgY29tcG9uZW50SWQ6IENvbXBvbmVudElEKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7ZW50aXR5fS4ke2NvbXBvbmVudElkfWBcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIFN5bmNocm9uaXplZEVudGl0eVR5cGUge1xuICAgIC8vIHN5bmNocm9uaXplcyBlbnRpdGllcyB3aXRoIHRoZSBOZXR3b3JrU3luY2hyb25pemVkIGNvbXBvbmVudCBvbmx5LCB1c2VkIGZvciBuZXR3b3JrZWQgZ2FtZXNcbiAgICBORVRXT1JLRUQsXG4gICAgLy8gc3luY2hyb25pemVzIGVudGl0aWVzIG5lZWRlZCBieSB0aGUgcmVuZGVyZXJcbiAgICBSRU5ERVJFUlxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENyZHRVdGlsc1xuIiwiaW1wb3J0IHsgY3JkdFByb3RvY29sLCBNZXNzYWdlIGFzIENyZHRNZXNzYWdlIH0gZnJvbSAnQGRjbC9jcmR0J1xuXG5pbXBvcnQgdHlwZSB7IFByZUVuZ2luZSB9IGZyb20gJy4uLy4uL2VuZ2luZSdcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4uLy4uL2VuZ2luZS9lbnRpdHknXG5pbXBvcnQgeyBjcmVhdGVCeXRlQnVmZmVyIH0gZnJvbSAnLi4vLi4vc2VyaWFsaXphdGlvbi9CeXRlQnVmZmVyJ1xuaW1wb3J0IHsgQ29tcG9uZW50T3BlcmF0aW9uIGFzIE1lc3NhZ2UgfSBmcm9tICcuLi8uLi9zZXJpYWxpemF0aW9uL2NyZHQvY29tcG9uZW50T3BlcmF0aW9uJ1xuaW1wb3J0IFdpcmVNZXNzYWdlIGZyb20gJy4uLy4uL3NlcmlhbGl6YXRpb24vd2lyZU1lc3NhZ2UnXG5pbXBvcnQgeyBUcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydHMvdHlwZXMnXG5pbXBvcnQgeyBSZWNlaXZlTWVzc2FnZSwgVHJhbnNwb3J0TWVzc2FnZSB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQgQ3JkdFV0aWxzIGZyb20gJy4vdXRpbHMnXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmR0U2NlbmVTeXN0ZW0oe1xuICBlbmdpbmUsXG4gIHRyYW5zcG9ydHNcbn06IHtcbiAgZW5naW5lOiBQcmVFbmdpbmVcbiAgdHJhbnNwb3J0czogVHJhbnNwb3J0W11cbn0pIHtcbiAgLy8gQ1JEVCBDbGllbnRcbiAgY29uc3QgY3JkdENsaWVudCA9IGNyZHRQcm90b2NvbDxVaW50OEFycmF5PigpXG4gIC8vIE1lc3NhZ2VzIHRoYXQgd2UgcmVjZWl2ZWQgYXQgdHJhbnNwb3J0Lm9uTWVzc2FnZSB3YWl0aW5nIHRvIGJlIHByb2Nlc3NlZFxuICBjb25zdCByZWNlaXZlZE1lc3NhZ2VzOiBSZWNlaXZlTWVzc2FnZVtdID0gW11cbiAgLy8gTWVzc2FnZXMgYWxyZWFkeSBwcm9jZXNzZWQgYnkgdGhlIGVuZ2luZSBidXQgdGhhdCB3ZSBuZWVkIHRvIGJyb2FkY2FzdCB0byBvdGhlciB0cmFuc3BvcnRzLlxuICBjb25zdCB0cmFuc3BvcnRNZXNzYWdlczogVHJhbnNwb3J0TWVzc2FnZVtdID0gW11cbiAgLy8gTWFwIG9mIGVudGl0aWVzIGFscmVhZHkgcHJvY2Vzc2VkIGF0IGxlYXN0IG9uY2VcblxuICB0cmFuc3BvcnRzLmZvckVhY2goXG4gICAgKHRyYW5zcG9ydCkgPT4gKHRyYW5zcG9ydC5vbm1lc3NhZ2UgPSBwYXJzZUNodW5rTWVzc2FnZSh0cmFuc3BvcnQudHlwZSkpXG4gIClcblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHRyYW5zcG9ydFR5cGUgdHJhbnBvcnQgaWQgdG8gaWRlbnRpeSBtZXNzYWdlc1xuICAgKiBAcmV0dXJucyBhIGZ1bmN0aW9uIHRvIHByb2Nlc3MgcmVjZWl2ZWQgbWVzc2FnZXNcbiAgICovXG4gIGZ1bmN0aW9uIHBhcnNlQ2h1bmtNZXNzYWdlKHRyYW5zcG9ydFR5cGU6IHN0cmluZykge1xuICAgIC8qKlxuICAgICAqIFJlY2VpdmVzIGEgY2h1bmsgb2YgYmluYXJ5IG1lc3NhZ2VzIGFuZCBzdG9yZXMgYWxsIHRoZSB2YWxpZFxuICAgICAqIENvbXBvbmVudCBPcGVyYXRpb24gTWVzc2FnZXMgYXQgbWVzc2FnZXMgcXVldWVcbiAgICAgKiBAcGFyYW0gY2h1bmtNZXNzYWdlIEEgY2h1bmsgb2YgYmluYXJ5IG1lc3NhZ2VzXG4gICAgICovXG4gICAgcmV0dXJuIGZ1bmN0aW9uIHBhcnNlQ2h1bmtNZXNzYWdlKGNodW5rTWVzc2FnZTogVWludDhBcnJheSkge1xuICAgICAgY29uc3QgYnVmZmVyID0gY3JlYXRlQnl0ZUJ1ZmZlcih7XG4gICAgICAgIHJlYWRpbmc6IHsgYnVmZmVyOiBjaHVua01lc3NhZ2UsIGN1cnJlbnRPZmZzZXQ6IDAgfVxuICAgICAgfSlcblxuICAgICAgd2hpbGUgKFdpcmVNZXNzYWdlLnZhbGlkYXRlKGJ1ZmZlcikpIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gYnVmZmVyLmN1cnJlbnRSZWFkT2Zmc2V0KClcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IE1lc3NhZ2UucmVhZChidWZmZXIpIVxuXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgZW50aXR5LCBjb21wb25lbnRJZCwgZGF0YSwgdGltZXN0YW1wIH0gPSBtZXNzYWdlXG4gICAgICAgIHJlY2VpdmVkTWVzc2FnZXMucHVzaCh7XG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgY29tcG9uZW50SWQsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICB0aW1lc3RhbXAsXG4gICAgICAgICAgdHJhbnNwb3J0VHlwZSxcbiAgICAgICAgICBtZXNzYWdlQnVmZmVyOiBidWZmZXJcbiAgICAgICAgICAgIC5idWZmZXIoKVxuICAgICAgICAgICAgLnN1YmFycmF5KG9mZnNldCwgYnVmZmVyLmN1cnJlbnRSZWFkT2Zmc2V0KCkpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbmQgY2xlYXIgdGhlIG1lc3NhZXMgcXVldWVcbiAgICogQHJldHVybnMgbWVzc2FnZXMgcmVjaWV2ZWQgYnkgdGhlIHRyYW5zcG9ydCB0byBwcm9jZXNzIG9uIHRoZSBuZXh0IHRpY2tcbiAgICovXG4gIGZ1bmN0aW9uIGdldE1lc3NhZ2VzPFQgPSB1bmtub3duPih2YWx1ZTogVFtdKSB7XG4gICAgY29uc3QgbWVzc2FnZXNUb1Byb2Nlc3MgPSBBcnJheS5mcm9tKHZhbHVlKVxuICAgIHZhbHVlLmxlbmd0aCA9IDBcbiAgICByZXR1cm4gbWVzc2FnZXNUb1Byb2Nlc3NcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGZuIHdpbGwgYmUgY2FsbGVkIG9uIGV2ZXJ5IHRpY2suXG4gICAqIFByb2Nlc3MgYWxsIHRoZSBtZXNzYWdlcyBxdWV1ZSByZWNlaXZlZCBieSB0aGUgdHJhbnNwb3J0XG4gICAqL1xuICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZXMoKSB7XG4gICAgY29uc3QgbWVzc2FnZXNUb1Byb2Nlc3MgPSBnZXRNZXNzYWdlcyhyZWNlaXZlZE1lc3NhZ2VzKVxuICAgIGZvciAoY29uc3QgdHJhbnNwb3J0IG9mIHRyYW5zcG9ydHMpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGNyZWF0ZUJ5dGVCdWZmZXIoKVxuICAgICAgZm9yIChjb25zdCBtZXNzYWdlIG9mIG1lc3NhZ2VzVG9Qcm9jZXNzKSB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSwgdGltZXN0YW1wLCBjb21wb25lbnRJZCwgZW50aXR5LCB0eXBlIH0gPSBtZXNzYWdlXG4gICAgICAgIGNvbnN0IGNyZHRNZXNzYWdlOiBDcmR0TWVzc2FnZTxVaW50OEFycmF5PiA9IHtcbiAgICAgICAgICBrZXk6IENyZHRVdGlscy5nZXRLZXkoZW50aXR5LCBjb21wb25lbnRJZCksXG4gICAgICAgICAgZGF0YTogZGF0YSB8fCBudWxsLFxuICAgICAgICAgIHRpbWVzdGFtcDogdGltZXN0YW1wXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gZW5naW5lLmdldENvbXBvbmVudChjb21wb25lbnRJZClcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGNyZHRDbGllbnQucHJvY2Vzc01lc3NhZ2UoY3JkdE1lc3NhZ2UpXG5cbiAgICAgICAgLy8gQ1JEVCBvdXRkYXRlZCBtZXNzYWdlLiBSZXNlbmQgdGhpcyBtZXNzYWdlIHRocm91Z2ggdGhlIHdpcmVcbiAgICAgICAgaWYgKGNyZHRNZXNzYWdlICE9PSBjdXJyZW50KSB7XG4gICAgICAgICAgY29uc3QgdHlwZSA9IGNvbXBvbmVudC5oYXMoZW50aXR5KVxuICAgICAgICAgICAgPyBXaXJlTWVzc2FnZS5FbnVtLlBVVF9DT01QT05FTlRcbiAgICAgICAgICAgIDogV2lyZU1lc3NhZ2UuRW51bS5ERUxFVEVfQ09NUE9ORU5UXG4gICAgICAgICAgTWVzc2FnZS53cml0ZSh0eXBlLCBlbnRpdHksIGN1cnJlbnQudGltZXN0YW1wLCBjb21wb25lbnQsIGJ1ZmZlcilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBQcm9jZXNzIENSRFQgTWVzc2FnZVxuICAgICAgICAgIGlmICh0eXBlID09PSBXaXJlTWVzc2FnZS5FbnVtLkRFTEVURV9DT01QT05FTlQpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudC5kZWxldGVGcm9tKGVudGl0eSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgb3B0cyA9IHtcbiAgICAgICAgICAgICAgcmVhZGluZzogeyBidWZmZXI6IG1lc3NhZ2UuZGF0YSEsIGN1cnJlbnRPZmZzZXQ6IDAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYmIgPSBjcmVhdGVCeXRlQnVmZmVyKG9wdHMpXG5cbiAgICAgICAgICAgIC8vIFVwZGF0ZSBlbmdpbmUgY29tcG9uZW50XG4gICAgICAgICAgICBjb21wb25lbnQudXBzZXJ0RnJvbUJpbmFyeShtZXNzYWdlLmVudGl0eSwgYmIpXG4gICAgICAgICAgICBjb21wb25lbnQuY2xlYXJEaXJ0eSgpXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEFkZCBtZXNzYWdlIHRvIHRyYW5zcG9ydCBxdWV1ZSB0byBiZSBwcm9jZXNzZWQgYnkgb3RoZXJzIHRyYW5zcG9ydHNcbiAgICAgICAgICB0cmFuc3BvcnRNZXNzYWdlcy5wdXNoKG1lc3NhZ2UpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGJ1ZmZlci5zaXplKCkpIHtcbiAgICAgICAgdHJhbnNwb3J0LnNlbmQoYnVmZmVyLnRvQmluYXJ5KCkpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEl0ZXJhdGVzIHRoZSBkaXJ0eSBtYXAgYW5kIGdlbmVyYXRlcyBjcmR0IG1lc3NhZ2VzIHRvIGJlIHNlbmRcbiAgICogQHBhcmFtIGRpcnR5TWFwIGEgbWFwIG9mIHsgZW50aXRpZXM6IFtjb21wb25lbnRJZF0gfVxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlTWVzc2FnZXMoZGlydHlNYXA6IE1hcDxFbnRpdHksIFNldDxudW1iZXI+Pikge1xuICAgIC8vIENSRFQgTWVzc2FnZXMgd2lsbCBiZSB0aGUgbWVyZ2UgYmV0d2VlbiB0aGUgcmVjaWV2ZWQgdHJhbnNwb3J0IG1lc3NhZ2VzIGFuZCB0aGUgbmV3IGNyZHQgbWVzc2FnZXNcbiAgICBjb25zdCBjcmR0TWVzc2FnZXMgPSBnZXRNZXNzYWdlcyh0cmFuc3BvcnRNZXNzYWdlcylcbiAgICBjb25zdCBidWZmZXIgPSBjcmVhdGVCeXRlQnVmZmVyKClcblxuICAgIGZvciAoY29uc3QgW2VudGl0eSwgY29tcG9uZW50c0lkXSBvZiBkaXJ0eU1hcCkge1xuICAgICAgZm9yIChjb25zdCBjb21wb25lbnRJZCBvZiBjb21wb25lbnRzSWQpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gZW5naW5lLmdldENvbXBvbmVudChjb21wb25lbnRJZClcbiAgICAgICAgY29uc3QgZW50aXR5Q29tcG9uZW50ID0gY29tcG9uZW50LmhhcyhlbnRpdHkpXG4gICAgICAgICAgPyBjb21wb25lbnQudG9CaW5hcnkoZW50aXR5KS50b0JpbmFyeSgpXG4gICAgICAgICAgOiBudWxsXG4gICAgICAgIGNvbnN0IGV2ZW50ID0gY3JkdENsaWVudC5jcmVhdGVFdmVudChcbiAgICAgICAgICBDcmR0VXRpbHMuZ2V0S2V5KGVudGl0eSwgY29tcG9uZW50SWQpLFxuICAgICAgICAgIGVudGl0eUNvbXBvbmVudFxuICAgICAgICApXG4gICAgICAgIGNvbnN0IG9mZnNldCA9IGJ1ZmZlci5jdXJyZW50V3JpdGVPZmZzZXQoKVxuICAgICAgICBjb25zdCB0eXBlID0gY29tcG9uZW50LmhhcyhlbnRpdHkpXG4gICAgICAgICAgPyBXaXJlTWVzc2FnZS5FbnVtLlBVVF9DT01QT05FTlRcbiAgICAgICAgICA6IFdpcmVNZXNzYWdlLkVudW0uREVMRVRFX0NPTVBPTkVOVFxuICAgICAgICBjb25zdCB0cmFuc3BvcnRNZXNzYWdlOiBPbWl0PFRyYW5zcG9ydE1lc3NhZ2UsICdtZXNzYWdlQnVmZmVyJz4gPSB7XG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBjb21wb25lbnRJZCxcbiAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgdGltZXN0YW1wOiBldmVudC50aW1lc3RhbXBcbiAgICAgICAgfVxuICAgICAgICBpZiAodHJhbnNwb3J0cy5zb21lKCh0KSA9PiB0LmZpbHRlcih0cmFuc3BvcnRNZXNzYWdlKSkpIHtcbiAgICAgICAgICBNZXNzYWdlLndyaXRlKHR5cGUsIGVudGl0eSwgZXZlbnQudGltZXN0YW1wLCBjb21wb25lbnQsIGJ1ZmZlcilcbiAgICAgICAgICBjcmR0TWVzc2FnZXMucHVzaCh7XG4gICAgICAgICAgICAuLi50cmFuc3BvcnRNZXNzYWdlLFxuICAgICAgICAgICAgbWVzc2FnZUJ1ZmZlcjogYnVmZmVyXG4gICAgICAgICAgICAgIC5idWZmZXIoKVxuICAgICAgICAgICAgICAuc3ViYXJyYXkob2Zmc2V0LCBidWZmZXIuY3VycmVudFdyaXRlT2Zmc2V0KCkpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNlbmQgbWVzc2FnZXMgdG8gdHJhbnNwb3J0c1xuICAgIGNvbnN0IHRyYW5zcG9ydEJ1ZmZlciA9IGNyZWF0ZUJ5dGVCdWZmZXIoKVxuICAgIGZvciAoY29uc3QgdHJhbnNwb3J0IG9mIHRyYW5zcG9ydHMpIHtcbiAgICAgIHRyYW5zcG9ydEJ1ZmZlci5yZXNldEJ1ZmZlcigpXG4gICAgICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgY3JkdE1lc3NhZ2VzKSB7XG4gICAgICAgIGlmICh0cmFuc3BvcnQuZmlsdGVyKG1lc3NhZ2UpKSB7XG4gICAgICAgICAgdHJhbnNwb3J0QnVmZmVyLndyaXRlQnVmZmVyKG1lc3NhZ2UubWVzc2FnZUJ1ZmZlciwgZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0cmFuc3BvcnRCdWZmZXIuc2l6ZSgpKSB7XG4gICAgICAgIHRyYW5zcG9ydC5zZW5kKHRyYW5zcG9ydEJ1ZmZlci50b0JpbmFyeSgpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY3JlYXRlTWVzc2FnZXMsXG4gICAgcmVjZWl2ZU1lc3NhZ2VzXG4gIH1cbn1cbiIsImltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4vZW50aXR5J1xuXG5leHBvcnQgbmFtZXNwYWNlIEVudGl0eVV0aWxzIHtcbiAgZXhwb3J0IGNvbnN0IE1BWF9FTlRJVElFUyA9IDEwMDAwXG5cbiAgbGV0IG9mZnNldDogbnVtYmVyID0gTUFYX0VOVElUSUVTXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRPZmZzZXQoKSB7XG4gICAgY29uc3Qgb2ZmID0gb2Zmc2V0ICsgMVxuICAgIG9mZnNldCArPSBNQVhfRU5USVRJRVNcbiAgICByZXR1cm4gb2ZmXG4gIH1cblxuICBjb25zdCBTVEFUSUNfRU5USVRJRVMgPSBbMCwgTUFYX0VOVElUSUVTXVxuICBleHBvcnQgZnVuY3Rpb24gaXNTdGF0aWNFbnRpdHkoZW50aXR5OiBFbnRpdHkpIHtcbiAgICBjb25zdCBbbWluLCBtYXhdID0gU1RBVElDX0VOVElUSUVTXG4gICAgcmV0dXJuIGVudGl0eSA+PSBtaW4gJiYgZW50aXR5IDw9IG1heFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVudGl0eVV0aWxzXG4iLCJpbXBvcnQgeyBFbnRpdHlVdGlscyB9IGZyb20gJy4vZW50aXR5LXV0aWxzJ1xuXG5kZWNsYXJlIGNvbnN0IGVudGl0eVN5bWJvbDogdW5pcXVlIHN5bWJvbFxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIEVudGl0eSA9IG51bWJlciAmIHsgW2VudGl0eVN5bWJvbF06IHRydWUgfVxuXG5leHBvcnQgZnVuY3Rpb24gRW50aXR5Q29udGFpbmVyKCkge1xuICBjb25zdCBzdGF0aWNFbnRpdHkgPSBFbnRpdHkoKVxuICBjb25zdCBkeW5hbWljRW50aXR5ID0gRW50aXR5KHRydWUpXG4gIHJldHVybiB7XG4gICAgZ2VuZXJhdGVFbnRpdHkoZHluYW1pYzogYm9vbGVhbiA9IGZhbHNlKTogRW50aXR5IHtcbiAgICAgIGlmIChkeW5hbWljKSByZXR1cm4gZHluYW1pY0VudGl0eS5nZW5lcmF0ZUVudGl0eSgpXG4gICAgICByZXR1cm4gc3RhdGljRW50aXR5LmdlbmVyYXRlRW50aXR5KClcbiAgICB9LFxuICAgIHJlbW92ZUVudGl0eShlbnRpdHk6IEVudGl0eSk6IHZvaWQge1xuICAgICAgc3RhdGljRW50aXR5LnJlbW92ZUVudGl0eShlbnRpdHkpXG4gICAgICBkeW5hbWljRW50aXR5LnJlbW92ZUVudGl0eShlbnRpdHkpXG4gICAgfSxcbiAgICBnZXRVbnVzZWRFbnRpdGllcygpOiBTZXQ8RW50aXR5PiB7XG4gICAgICByZXR1cm4gbmV3IFNldChbXG4gICAgICAgIC4uLnN0YXRpY0VudGl0eS5nZXRVbnVzZWRFbnRpdGllcygpLFxuICAgICAgICAuLi5keW5hbWljRW50aXR5LmdldFVudXNlZEVudGl0aWVzKClcbiAgICAgIF0pXG4gICAgfSxcbiAgICBnZXRVc2VkRW50aXRpZXMoKTogU2V0PEVudGl0eT4ge1xuICAgICAgcmV0dXJuIG5ldyBTZXQoW1xuICAgICAgICAuLi5zdGF0aWNFbnRpdHkuZ2V0VXNlZEVudGl0aWVzKCksXG4gICAgICAgIC4uLmR5bmFtaWNFbnRpdHkuZ2V0VXNlZEVudGl0aWVzKClcbiAgICAgIF0pXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIEVudGl0eSh3aXRoT2Zmc2V0OiBib29sZWFuID0gZmFsc2UpIHtcbiAgZnVuY3Rpb24gY3JlYXRlRW50aXR5KGVudGl0eTogbnVtYmVyKTogRW50aXR5IHtcbiAgICByZXR1cm4gZW50aXR5IGFzIEVudGl0eVxuICB9XG5cbiAgLy8gVE9ETzogZ2V0b2Zmc2V0IGZyb20gYSBzZXJ2ZXI/XG4gIGNvbnN0IG9mZnNldCA9IHdpdGhPZmZzZXQgPyBFbnRpdHlVdGlscy5nZXRPZmZzZXQoKSA6IDBcbiAgY29uc3QgdXNlZEVudGl0aWVzOiBTZXQ8RW50aXR5PiA9IG5ldyBTZXQoKVxuICBjb25zdCB1bnVzZWRFbnRpdGllczogU2V0PEVudGl0eT4gPSBuZXcgU2V0KClcblxuICBmdW5jdGlvbiBnZW5lcmF0ZUVudGl0eSgpOiBFbnRpdHkge1xuICAgIGlmICghdW51c2VkRW50aXRpZXMuc2l6ZSAmJiAhdXNlZEVudGl0aWVzLnNpemUpIHtcbiAgICAgIGNvbnN0IGVudGl0eSA9IGNyZWF0ZUVudGl0eShvZmZzZXQpXG4gICAgICB1c2VkRW50aXRpZXMuYWRkKGVudGl0eSlcbiAgICAgIHJldHVybiBlbnRpdHlcbiAgICB9XG5cbiAgICAvLyBUT0RPOiB3aGF0IGhhcHBlbnMgaWYgd2UgZGVsZXRlIGFuIGVudGl0eVxuICAgIC8vIGFuZCBjcmVhdGVzIGEgbmV3IG9uZSBpbiB0aGUgc2FtZSB0aWNrXG4gICAgY29uc3QgaXRlcmF0b3IgPSB1bnVzZWRFbnRpdGllc1tTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpXG4gICAgaWYgKGl0ZXJhdG9yLmRvbmUpIHtcbiAgICAgIGNvbnN0IGVudGl0eSA9IGNyZWF0ZUVudGl0eShNYXRoLm1heCguLi51c2VkRW50aXRpZXMudmFsdWVzKCkpICsgMSlcbiAgICAgIGlmIChlbnRpdHkgPj0gRW50aXR5VXRpbHMuTUFYX0VOVElUSUVTICsgb2Zmc2V0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRW50aXR5IHJhdGUgbGltaXQgZXhjZWVkJylcbiAgICAgIH1cbiAgICAgIHVzZWRFbnRpdGllcy5hZGQoZW50aXR5KVxuICAgICAgcmV0dXJuIGVudGl0eVxuICAgIH1cblxuICAgIGNvbnN0IGVudGl0eSA9IGl0ZXJhdG9yLnZhbHVlXG4gICAgdW51c2VkRW50aXRpZXMuZGVsZXRlKGVudGl0eSlcbiAgICB1c2VkRW50aXRpZXMuYWRkKGVudGl0eSlcblxuICAgIHJldHVybiBlbnRpdHlcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZUVudGl0eShlbnRpdHk6IEVudGl0eSkge1xuICAgIGlmICghdXNlZEVudGl0aWVzLmhhcyhlbnRpdHkpKSByZXR1cm5cbiAgICB1c2VkRW50aXRpZXMuZGVsZXRlKGVudGl0eSlcbiAgICB1bnVzZWRFbnRpdGllcy5hZGQoZW50aXR5KVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBnZXRVbnVzZWRFbnRpdGllcygpIHtcbiAgICAgIHJldHVybiBuZXcgU2V0KHVudXNlZEVudGl0aWVzKVxuICAgIH0sXG4gICAgZ2V0VXNlZEVudGl0aWVzKCkge1xuICAgICAgcmV0dXJuIG5ldyBTZXQodXNlZEVudGl0aWVzKVxuICAgIH0sXG4gICAgZ2VuZXJhdGVFbnRpdHksXG4gICAgcmVtb3ZlRW50aXR5XG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgRGVlcFJlYWRvbmx5IH0gZnJvbSAnLi4vTWF0aCdcbmV4cG9ydCB0eXBlIHsgRGVlcFJlYWRvbmx5IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZXBSZWFkb25seTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICB2YWw6IFRcbik6IERlZXBSZWFkb25seTxUPiB7XG4gIC8vIEZhaWwgb25seSBvbiBkZXZlbG9wbWVudCBkdWUgdG8gcGVyZiBpc3N1ZXNcbiAgLy8gaWYgKGlzUHJvZCgpKSB7XG4gIC8vICAgcmV0dXJuIHZhbFxuICAvLyB9XG5cbiAgcmV0dXJuIE9iamVjdC5mcmVlemUoeyAuLi52YWwgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm90VW5kZWZpbmVkPFQ+KHZhbDogVCB8IHVuZGVmaW5lZCk6IHZhbCBpcyBUIHtcbiAgcmV0dXJuICEhdmFsXG59XG4iLCJpbXBvcnQgdHlwZSB7IEVjc1R5cGUgfSBmcm9tICcuLi9idWlsdC1pbi10eXBlcy9FY3NUeXBlJ1xuaW1wb3J0IHsgQnl0ZUJ1ZmZlciwgY3JlYXRlQnl0ZUJ1ZmZlciB9IGZyb20gJy4uL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4vZW50aXR5J1xuaW1wb3J0IHsgZGVlcFJlYWRvbmx5LCBEZWVwUmVhZG9ubHkgfSBmcm9tICcuL3V0aWxzJ1xuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgRWNzUmVzdWx0PFQgZXh0ZW5kcyBFY3NUeXBlPiA9IFQgZXh0ZW5kcyBFY3NUeXBlXG4gID8gUmV0dXJuVHlwZTxUWydkZXNlcmlhbGl6ZSddPlxuICA6IG5ldmVyXG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBDb21wb25lbnRUeXBlPFQgZXh0ZW5kcyBFY3NUeXBlPiA9IEVjc1Jlc3VsdDxUPlxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgQ29tcG9uZW50RGVmaW5pdGlvbjxUIGV4dGVuZHMgRWNzVHlwZSA9IEVjc1R5cGU8YW55Pj4gPSB7XG4gIF9pZDogbnVtYmVyXG4gIGhhcyhlbnRpdHk6IEVudGl0eSk6IGJvb2xlYW5cbiAgZ2V0RnJvbShlbnRpdHk6IEVudGl0eSk6IERlZXBSZWFkb25seTxDb21wb25lbnRUeXBlPFQ+PlxuXG4gIGdldE9yTnVsbChlbnRpdHk6IEVudGl0eSk6IERlZXBSZWFkb25seTxDb21wb25lbnRUeXBlPFQ+PiB8IG51bGxcblxuICAvLyBhZGRzIHRoaXMgY29tcG9uZW50IHRvIHRoZSBsaXN0IFwidG8gYmUgcmV2aWV3ZWQgbmV4dCBmcmFtZVwiXG4gIGNyZWF0ZShlbnRpdHk6IEVudGl0eSwgdmFsPzogQ29tcG9uZW50VHlwZTxUPik6IENvbXBvbmVudFR5cGU8VD5cblxuICAvLyBhZGRzIHRoaXMgY29tcG9uZW50IHRvIHRoZSBsaXN0IFwidG8gYmUgcmV2aWV3ZWQgbmV4dCBmcmFtZVwiXG4gIG11dGFibGUoZW50aXR5OiBFbnRpdHkpOiBDb21wb25lbnRUeXBlPFQ+XG4gIGNyZWF0ZU9yUmVwbGFjZShlbnRpdHk6IEVudGl0eSwgdmFsPzogQ29tcG9uZW50VHlwZTxUPik6IENvbXBvbmVudFR5cGU8VD5cbiAgZGVsZXRlRnJvbShlbnRpdHk6IEVudGl0eSk6IENvbXBvbmVudFR5cGU8VD4gfCBudWxsXG5cbiAgdXBzZXJ0RnJvbUJpbmFyeShlbnRpdHk6IEVudGl0eSwgZGF0YTogQnl0ZUJ1ZmZlcik6IENvbXBvbmVudFR5cGU8VD4gfCBudWxsXG4gIHVwZGF0ZUZyb21CaW5hcnkoZW50aXR5OiBFbnRpdHksIGRhdGE6IEJ5dGVCdWZmZXIpOiBDb21wb25lbnRUeXBlPFQ+IHwgbnVsbFxuICAvLyBhbGxvY2F0ZXMgYSBidWZmZXIgYW5kIHJldHVybnMgbmV3IGJ1ZmZlclxuICB0b0JpbmFyeShlbnRpdHk6IEVudGl0eSk6IEJ5dGVCdWZmZXJcbiAgLy8gd3JpdGVzIHRvIGEgcHJlLWFsbG9jYXRlZCBidWZmZXJcbiAgd3JpdGVUb0J5dGVCdWZmZXIoZW50aXR5OiBFbnRpdHksIGJ1ZmZlcjogQnl0ZUJ1ZmZlcik6IHZvaWRcblxuICBpdGVyYXRvcigpOiBJdGVyYWJsZTxbRW50aXR5LCBDb21wb25lbnRUeXBlPFQ+XT5cblxuICAvLyBEaXJ0eVxuICBkaXJ0eUl0ZXJhdG9yKCk6IEl0ZXJhYmxlPEVudGl0eT5cbiAgY2xlYXJEaXJ0eSgpOiB2b2lkXG4gIGlzRGlydHkoZW50aXR5OiBFbnRpdHkpOiBib29sZWFuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVDb21wb25lbnQ8VCBleHRlbmRzIEVjc1R5cGU+KFxuICBjb21wb25lbnRJZDogbnVtYmVyLFxuICBzcGVjOiBUXG4gIC8vIG1ldGE6IHsgc3luY0ZsYWdzIH1cbik6IENvbXBvbmVudERlZmluaXRpb248VD4ge1xuICBjb25zdCBkYXRhID0gbmV3IE1hcDxFbnRpdHksIENvbXBvbmVudFR5cGU8VD4+KClcbiAgY29uc3QgZGlydHlJdGVyYXRvciA9IG5ldyBTZXQ8RW50aXR5PigpXG5cbiAgcmV0dXJuIHtcbiAgICBfaWQ6IGNvbXBvbmVudElkLFxuICAgIGlzRGlydHk6IGZ1bmN0aW9uIChlbnRpdHk6IEVudGl0eSk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIGRpcnR5SXRlcmF0b3IuaGFzKGVudGl0eSlcbiAgICB9LFxuICAgIGhhczogZnVuY3Rpb24gKGVudGl0eTogRW50aXR5KTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gZGF0YS5oYXMoZW50aXR5KVxuICAgIH0sXG4gICAgZGVsZXRlRnJvbTogZnVuY3Rpb24gKGVudGl0eTogRW50aXR5KTogQ29tcG9uZW50VHlwZTxUPiB8IG51bGwge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZGF0YS5nZXQoZW50aXR5KVxuICAgICAgZGF0YS5kZWxldGUoZW50aXR5KVxuICAgICAgZGlydHlJdGVyYXRvci5hZGQoZW50aXR5KVxuICAgICAgcmV0dXJuIGNvbXBvbmVudCB8fCBudWxsXG4gICAgfSxcbiAgICBnZXRPck51bGw6IGZ1bmN0aW9uIChcbiAgICAgIGVudGl0eTogRW50aXR5XG4gICAgKTogRGVlcFJlYWRvbmx5PENvbXBvbmVudFR5cGU8VD4+IHwgbnVsbCB7XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBkYXRhLmdldChlbnRpdHkpXG4gICAgICByZXR1cm4gY29tcG9uZW50ID8gZGVlcFJlYWRvbmx5KGNvbXBvbmVudCkgOiBudWxsXG4gICAgfSxcbiAgICBnZXRGcm9tOiBmdW5jdGlvbiAoZW50aXR5OiBFbnRpdHkpOiBEZWVwUmVhZG9ubHk8Q29tcG9uZW50VHlwZTxUPj4ge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZGF0YS5nZXQoZW50aXR5KVxuICAgICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBbZ2V0RnJvbV0gQ29tcG9uZW50ICR7Y29tcG9uZW50SWR9IGZvciAke2VudGl0eX0gbm90IGZvdW5kYFxuICAgICAgICApXG4gICAgICB9XG4gICAgICByZXR1cm4gZGVlcFJlYWRvbmx5KGNvbXBvbmVudClcbiAgICB9LFxuICAgIGNyZWF0ZTogZnVuY3Rpb24gKFxuICAgICAgZW50aXR5OiBFbnRpdHksXG4gICAgICB2YWx1ZT86IENvbXBvbmVudFR5cGU8VD5cbiAgICApOiBDb21wb25lbnRUeXBlPFQ+IHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRhdGEuZ2V0KGVudGl0eSlcbiAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBbY3JlYXRlXSBDb21wb25lbnQgJHtjb21wb25lbnRJZH0gZm9yICR7ZW50aXR5fSBhbHJlYWR5IGV4aXN0c2BcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgY29uc3QgdXNlZFZhbHVlID0gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHNwZWMuY3JlYXRlKCkgOiB2YWx1ZVxuICAgICAgZGF0YS5zZXQoZW50aXR5LCB1c2VkVmFsdWUpXG4gICAgICBkaXJ0eUl0ZXJhdG9yLmFkZChlbnRpdHkpXG4gICAgICByZXR1cm4gdXNlZFZhbHVlXG4gICAgfSxcbiAgICBjcmVhdGVPclJlcGxhY2U6IGZ1bmN0aW9uIChcbiAgICAgIGVudGl0eTogRW50aXR5LFxuICAgICAgdmFsdWU/OiBDb21wb25lbnRUeXBlPFQ+XG4gICAgKTogQ29tcG9uZW50VHlwZTxUPiB7XG4gICAgICBjb25zdCB1c2VkVmFsdWUgPSB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gc3BlYy5jcmVhdGUoKSA6IHZhbHVlXG4gICAgICBkYXRhLnNldChlbnRpdHksIHVzZWRWYWx1ZSEpXG4gICAgICBkaXJ0eUl0ZXJhdG9yLmFkZChlbnRpdHkpXG4gICAgICByZXR1cm4gdXNlZFZhbHVlIVxuICAgIH0sXG4gICAgbXV0YWJsZTogZnVuY3Rpb24gKGVudGl0eTogRW50aXR5KTogQ29tcG9uZW50VHlwZTxUPiB7XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBkYXRhLmdldChlbnRpdHkpXG4gICAgICBpZiAoIWNvbXBvbmVudCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFttdXRhYmxlXSBDb21wb25lbnQgJHtjb21wb25lbnRJZH0gZm9yICR7ZW50aXR5fSBub3QgZm91bmRgXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGRpcnR5SXRlcmF0b3IuYWRkKGVudGl0eSlcbiAgICAgIHJldHVybiBjb21wb25lbnRcbiAgICB9LFxuICAgIGl0ZXJhdG9yOiBmdW5jdGlvbiogKCk6IEl0ZXJhYmxlPFtFbnRpdHksIENvbXBvbmVudFR5cGU8VD5dPiB7XG4gICAgICBmb3IgKGNvbnN0IFtlbnRpdHksIGNvbXBvbmVudF0gb2YgZGF0YSkge1xuICAgICAgICB5aWVsZCBbZW50aXR5LCBjb21wb25lbnRdXG4gICAgICB9XG4gICAgfSxcbiAgICBkaXJ0eUl0ZXJhdG9yOiBmdW5jdGlvbiogKCk6IEl0ZXJhYmxlPEVudGl0eT4ge1xuICAgICAgZm9yIChjb25zdCBlbnRpdHkgb2YgZGlydHlJdGVyYXRvcikge1xuICAgICAgICB5aWVsZCBlbnRpdHlcbiAgICAgIH1cbiAgICB9LFxuICAgIHRvQmluYXJ5KGVudGl0eTogRW50aXR5KTogQnl0ZUJ1ZmZlciB7XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBkYXRhLmdldChlbnRpdHkpXG4gICAgICBpZiAoIWNvbXBvbmVudCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFt0b0JpbmFyeV0gQ29tcG9uZW50ICR7Y29tcG9uZW50SWR9IGZvciAke2VudGl0eX0gbm90IGZvdW5kYFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdyaXRlQnVmZmVyID0gY3JlYXRlQnl0ZUJ1ZmZlcigpXG4gICAgICBzcGVjLnNlcmlhbGl6ZShjb21wb25lbnQsIHdyaXRlQnVmZmVyKVxuICAgICAgcmV0dXJuIHdyaXRlQnVmZmVyXG4gICAgfSxcbiAgICB3cml0ZVRvQnl0ZUJ1ZmZlcihlbnRpdHk6IEVudGl0eSwgYnVmZmVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBkYXRhLmdldChlbnRpdHkpXG4gICAgICBpZiAoIWNvbXBvbmVudCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFt3cml0ZVRvQnl0ZUJ1ZmZlcl0gQ29tcG9uZW50ICR7Y29tcG9uZW50SWR9IGZvciAke2VudGl0eX0gbm90IGZvdW5kYFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIHNwZWMuc2VyaWFsaXplKGNvbXBvbmVudCwgYnVmZmVyKVxuICAgIH0sXG4gICAgdXBkYXRlRnJvbUJpbmFyeShcbiAgICAgIGVudGl0eTogRW50aXR5LFxuICAgICAgYnVmZmVyOiBCeXRlQnVmZmVyXG4gICAgKTogQ29tcG9uZW50VHlwZTxUPiB8IG51bGwge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZGF0YS5nZXQoZW50aXR5KVxuICAgICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBbdXBkYXRlRnJvbUJpbmFyeV0gQ29tcG9uZW50ICR7Y29tcG9uZW50SWR9IGZvciAke2VudGl0eX0gbm90IGZvdW5kYFxuICAgICAgICApXG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy51cHNlcnRGcm9tQmluYXJ5KGVudGl0eSwgYnVmZmVyKVxuICAgIH0sXG4gICAgdXBzZXJ0RnJvbUJpbmFyeShcbiAgICAgIGVudGl0eTogRW50aXR5LFxuICAgICAgYnVmZmVyOiBCeXRlQnVmZmVyXG4gICAgKTogQ29tcG9uZW50VHlwZTxUPiB8IG51bGwge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSBzcGVjLmRlc2VyaWFsaXplKGJ1ZmZlcilcbiAgICAgIGRhdGEuc2V0KGVudGl0eSwgbmV3VmFsdWUpXG4gICAgICBkaXJ0eUl0ZXJhdG9yLmFkZChlbnRpdHkpXG4gICAgICByZXR1cm4gbmV3VmFsdWVcbiAgICB9LFxuICAgIGNsZWFyRGlydHk6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGRpcnR5SXRlcmF0b3IuY2xlYXIoKVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgZGVmaW5lU2RrQ29tcG9uZW50cywgU2RrQ29tcG9uZW50cyB9IGZyb20gJy4uL2NvbXBvbmVudHMnXG5pbXBvcnQgeyBjcmR0U2NlbmVTeXN0ZW0gfSBmcm9tICcuLi9zeXN0ZW1zL2NyZHQnXG5pbXBvcnQgeyBFbnRpdHksIEVudGl0eUNvbnRhaW5lciB9IGZyb20gJy4vZW50aXR5J1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50VHlwZSxcbiAgQ29tcG9uZW50RGVmaW5pdGlvbixcbiAgZGVmaW5lQ29tcG9uZW50IGFzIGRlZkNvbXBvbmVudFxufSBmcm9tICcuL2NvbXBvbmVudCdcbmltcG9ydCB0eXBlIHsgQ29tcG9uZW50RWNzVHlwZSwgSUVuZ2luZVBhcmFtcywgVXBkYXRlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB0eXBlIHsgRGVlcFJlYWRvbmx5IH0gZnJvbSAnLi4vTWF0aCdcbmltcG9ydCB0eXBlIHsgRWNzVHlwZSB9IGZyb20gJy4uL2J1aWx0LWluLXR5cGVzL0Vjc1R5cGUnXG5pbXBvcnQgeyBJRW5naW5lIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IEJ5dGVCdWZmZXIgfSBmcm9tICcuLi9zZXJpYWxpemF0aW9uL0J5dGVCdWZmZXInXG5cbmV4cG9ydCB7XG4gIENvbXBvbmVudFR5cGUsXG4gIEVudGl0eSxcbiAgQnl0ZUJ1ZmZlcixcbiAgU2RrQ29tcG9uZW50cyBhcyBTZGtDb21wb25ldG5zLFxuICBDb21wb25lbnREZWZpbml0aW9uXG59XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJ1xuXG5mdW5jdGlvbiBwcmVFbmdpbmUoKSB7XG4gIGNvbnN0IGVudGl0eUNvbnRhaW5lciA9IEVudGl0eUNvbnRhaW5lcigpXG4gIGNvbnN0IGNvbXBvbmVudHNEZWZpbml0aW9uID0gbmV3IE1hcDxudW1iZXIsIENvbXBvbmVudERlZmluaXRpb248YW55Pj4oKVxuICAvLyBUT0RPOiBmaW5kIGEgd2F5IHRvIG1ha2UgdGhpcyB3b3JrLlxuICAvLyBNYXliZSBhIHByb3h5L2NhbGxiYWNrIHRvIGJlIHVwLXRvLWRhdGVcbiAgY29uc3QgZW50aXRpZXNDb21wb25lbnQgPSBuZXcgTWFwPFxuICAgIG51bWJlcixcbiAgICBTZXQ8Q29tcG9uZW50RGVmaW5pdGlvbjxhbnk+WydfaWQnXT5cbiAgPigpXG4gIGNvbnN0IHN5c3RlbXMgPSBuZXcgU2V0PFVwZGF0ZT4oKVxuXG4gIGZ1bmN0aW9uIGFkZFN5c3RlbShmbjogVXBkYXRlKSB7XG4gICAgaWYgKHN5c3RlbXMuaGFzKGZuKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTeXN0ZW0gYWxyZWFkeSBhZGRlZCcpXG4gICAgfVxuICAgIHN5c3RlbXMuYWRkKGZuKVxuICB9XG5cbiAgZnVuY3Rpb24gYWRkRW50aXR5KGR5bmFtaWM6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIC8vIGVudGl0aWVzQ29tcG5vbmVudC5zZXQoZW50aXR5LCBuZXcgU2V0KCkpXG4gICAgY29uc3QgZW50aXR5ID0gZW50aXR5Q29udGFpbmVyLmdlbmVyYXRlRW50aXR5KGR5bmFtaWMpXG4gICAgcmV0dXJuIGVudGl0eVxuICB9XG5cbiAgZnVuY3Rpb24gYWRkRHluYW1pY0VudGl0eSgpIHtcbiAgICByZXR1cm4gYWRkRW50aXR5KHRydWUpXG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVFbnRpdHkoZW50aXR5OiBFbnRpdHkpIHtcbiAgICBmb3IgKGNvbnN0IFssIGNvbXBvbmVudF0gb2YgY29tcG9uZW50c0RlZmluaXRpb24pIHtcbiAgICAgIGlmIChjb21wb25lbnQuaGFzKGVudGl0eSkpIHtcbiAgICAgICAgY29tcG9uZW50LmRlbGV0ZUZyb20oZW50aXR5KVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlbnRpdHlDb250YWluZXIucmVtb3ZlRW50aXR5KGVudGl0eSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlZmluZUNvbXBvbmVudDxUIGV4dGVuZHMgRWNzVHlwZT4oXG4gICAgY29tcG9uZW50SWQ6IG51bWJlcixcbiAgICBzcGVjOiBUXG4gICk6IENvbXBvbmVudERlZmluaXRpb248VD4ge1xuICAgIGlmIChjb21wb25lbnRzRGVmaW5pdGlvbi5nZXQoY29tcG9uZW50SWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCAke2NvbXBvbmVudElkfSBhbHJlYWR5IGRlY2xhcmVkYClcbiAgICB9XG4gICAgY29uc3QgbmV3Q29tcG9uZW50ID0gZGVmQ29tcG9uZW50PFQ+KGNvbXBvbmVudElkLCBzcGVjKVxuICAgIGNvbXBvbmVudHNEZWZpbml0aW9uLnNldChjb21wb25lbnRJZCwgbmV3Q29tcG9uZW50KVxuICAgIHJldHVybiBuZXdDb21wb25lbnRcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldENvbXBvbmVudDxUIGV4dGVuZHMgRWNzVHlwZT4oXG4gICAgY29tcG9uZW50SWQ6IG51bWJlclxuICApOiBDb21wb25lbnREZWZpbml0aW9uPFQ+IHtcbiAgICBjb25zdCBjb21wb25lbnQgPSBjb21wb25lbnRzRGVmaW5pdGlvbi5nZXQoY29tcG9uZW50SWQpXG4gICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0NvbXBvbmVudCBub3QgZm91bmQuIFlvdSBuZWVkIHRvIGRlY2xhcmUgdGhlIGNvbXBvbmVudHMgYXQgdGhlIGJlZ2lubmlnIG9mIHRoZSBlbmdpbmUgZGVjbGFyYXRpb24nXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiBjb21wb25lbnRcbiAgfVxuXG4gIGZ1bmN0aW9uKiBtdXRhYmxlR3JvdXBPZjxcbiAgICBUIGV4dGVuZHMgW0NvbXBvbmVudERlZmluaXRpb24sIC4uLkNvbXBvbmVudERlZmluaXRpb25bXV1cbiAgPiguLi5jb21wb25lbnRzOiBUKTogSXRlcmFibGU8W0VudGl0eSwgLi4uQ29tcG9uZW50RWNzVHlwZTxUPl0+IHtcbiAgICBmb3IgKGNvbnN0IFtlbnRpdHksIC4uLmdyb3VwQ29tcF0gb2YgZ2V0Q29tcG9uZW50RGVmR3JvdXAoLi4uY29tcG9uZW50cykpIHtcbiAgICAgIHlpZWxkIFtlbnRpdHksIC4uLmdyb3VwQ29tcC5tYXAoKGMpID0+IGMubXV0YWJsZShlbnRpdHkpKV0gYXMgW1xuICAgICAgICBFbnRpdHksXG4gICAgICAgIC4uLkNvbXBvbmVudEVjc1R5cGU8VD5cbiAgICAgIF1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiogZ3JvdXBPZjxUIGV4dGVuZHMgW0NvbXBvbmVudERlZmluaXRpb24sIC4uLkNvbXBvbmVudERlZmluaXRpb25bXV0+KFxuICAgIC4uLmNvbXBvbmVudHM6IFRcbiAgKTogSXRlcmFibGU8W0VudGl0eSwgLi4uRGVlcFJlYWRvbmx5PENvbXBvbmVudEVjc1R5cGU8VD4+XT4ge1xuICAgIGZvciAoY29uc3QgW2VudGl0eSwgLi4uZ3JvdXBDb21wXSBvZiBnZXRDb21wb25lbnREZWZHcm91cCguLi5jb21wb25lbnRzKSkge1xuICAgICAgeWllbGQgW2VudGl0eSwgLi4uZ3JvdXBDb21wLm1hcCgoYykgPT4gYy5nZXRGcm9tKGVudGl0eSkpXSBhcyBbXG4gICAgICAgIEVudGl0eSxcbiAgICAgICAgLi4uRGVlcFJlYWRvbmx5PENvbXBvbmVudEVjc1R5cGU8VD4+XG4gICAgICBdXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24qIGdldENvbXBvbmVudERlZkdyb3VwPFQgZXh0ZW5kcyBDb21wb25lbnREZWZpbml0aW9uW10+KFxuICAgIC4uLmFyZ3M6IFRcbiAgKTogSXRlcmFibGU8W0VudGl0eSwgLi4uVF0+IHtcbiAgICBjb25zdCBbZmlyc3RDb21wb25lbnREZWYsIC4uLmNvbXBvbmVudERlZmluaXRpb25zXSA9IGFyZ3NcbiAgICBmb3IgKGNvbnN0IFtlbnRpdHldIG9mIGZpcnN0Q29tcG9uZW50RGVmLml0ZXJhdG9yKCkpIHtcbiAgICAgIGxldCBtYXRjaGVzID0gdHJ1ZVxuICAgICAgZm9yIChjb25zdCBjb21wb25lbnREZWYgb2YgY29tcG9uZW50RGVmaW5pdGlvbnMpIHtcbiAgICAgICAgaWYgKCFjb21wb25lbnREZWYuaGFzKGVudGl0eSkpIHtcbiAgICAgICAgICBtYXRjaGVzID0gZmFsc2VcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgIHlpZWxkIFtlbnRpdHksIC4uLmFyZ3NdXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlbnRpdGllc0NvbXBvbmVudCxcbiAgICBjb21wb25lbnRzRGVmaW5pdGlvbixcbiAgICBzeXN0ZW1zLFxuICAgIGFkZEVudGl0eSxcbiAgICBhZGREeW5hbWljRW50aXR5LFxuICAgIHJlbW92ZUVudGl0eSxcbiAgICBhZGRTeXN0ZW0sXG4gICAgZGVmaW5lQ29tcG9uZW50LFxuICAgIG11dGFibGVHcm91cE9mLFxuICAgIGdyb3VwT2YsXG4gICAgZ2V0Q29tcG9uZW50XG4gIH1cbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IHR5cGUgUHJlRW5naW5lID0gUmV0dXJuVHlwZTx0eXBlb2YgcHJlRW5naW5lPlxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEVuZ2luZSh7IHRyYW5zcG9ydHMgfTogSUVuZ2luZVBhcmFtcyA9IHt9KTogSUVuZ2luZSB7XG4gIGNvbnN0IGVuZ2luZSA9IHByZUVuZ2luZSgpXG4gIGNvbnN0IGNyZHRTeXN0ZW0gPSBjcmR0U2NlbmVTeXN0ZW0oeyBlbmdpbmUsIHRyYW5zcG9ydHM6IHRyYW5zcG9ydHMgfHwgW10gfSlcbiAgY29uc3QgYmFzZUNvbXBvbmVudHMgPSBkZWZpbmVTZGtDb21wb25lbnRzKGVuZ2luZSlcblxuICBmdW5jdGlvbiB1cGRhdGUoZHQ6IG51bWJlcikge1xuICAgIGNyZHRTeXN0ZW0ucmVjZWl2ZU1lc3NhZ2VzKClcblxuICAgIGZvciAoY29uc3Qgc3lzdGVtIG9mIGVuZ2luZS5zeXN0ZW1zKSB7XG4gICAgICBzeXN0ZW0oZHQpXG4gICAgfVxuXG4gICAgLy8gVE9ETzogUGVyZiB0aXBcbiAgICAvLyBTaG91bGQgd2UgYWRkIHNvbWUgZGlydHlJdGVyYXRvclNldCBhdCBlbmdpbmUgbGV2ZWwgc28gd2UgZG9udCBoYXZlXG4gICAgLy8gdG8gaXRlcmF0ZSBhbGwgdGhlIGNvbXBvbmVudCBkZWZpbml0aW9ucyB0byBnZXQgdGhlIGRpcnR5IG9uZXMgP1xuICAgIGNvbnN0IGRpcnR5U2V0ID0gbmV3IE1hcDxFbnRpdHksIFNldDxudW1iZXI+PigpXG4gICAgZm9yIChjb25zdCBbY29tcG9uZW50SWQsIGRlZmluaXRpb25dIG9mIGVuZ2luZS5jb21wb25lbnRzRGVmaW5pdGlvbikge1xuICAgICAgZm9yIChjb25zdCBlbnRpdHkgb2YgZGVmaW5pdGlvbi5kaXJ0eUl0ZXJhdG9yKCkpIHtcbiAgICAgICAgaWYgKCFkaXJ0eVNldC5oYXMoZW50aXR5KSkge1xuICAgICAgICAgIGRpcnR5U2V0LnNldChlbnRpdHksIG5ldyBTZXQoKSlcbiAgICAgICAgfVxuICAgICAgICBkaXJ0eVNldC5nZXQoZW50aXR5KSEuYWRkKGNvbXBvbmVudElkKVxuICAgICAgfVxuICAgIH1cbiAgICBjcmR0U3lzdGVtLmNyZWF0ZU1lc3NhZ2VzKGRpcnR5U2V0KVxuXG4gICAgZm9yIChjb25zdCBbX2NvbXBvbmVudElkLCBkZWZpbml0aW9uXSBvZiBlbmdpbmUuY29tcG9uZW50c0RlZmluaXRpb24pIHtcbiAgICAgIGRlZmluaXRpb24uY2xlYXJEaXJ0eSgpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhZGRFbnRpdHk6IGVuZ2luZS5hZGRFbnRpdHksXG4gICAgYWRkRHluYW1pY0VudGl0eTogZW5naW5lLmFkZER5bmFtaWNFbnRpdHksXG4gICAgcmVtb3ZlRW50aXR5OiBlbmdpbmUucmVtb3ZlRW50aXR5LFxuICAgIGFkZFN5c3RlbTogZW5naW5lLmFkZFN5c3RlbSxcbiAgICBkZWZpbmVDb21wb25lbnQ6IGVuZ2luZS5kZWZpbmVDb21wb25lbnQsXG4gICAgbXV0YWJsZUdyb3VwT2Y6IGVuZ2luZS5tdXRhYmxlR3JvdXBPZixcbiAgICBncm91cE9mOiBlbmdpbmUuZ3JvdXBPZixcbiAgICBnZXRDb21wb25lbnQ6IGVuZ2luZS5nZXRDb21wb25lbnQsXG4gICAgdXBkYXRlLFxuICAgIGJhc2VDb21wb25lbnRzXG4gIH1cbn1cbiIsImltcG9ydCB7IEJ5dGVCdWZmZXIgfSBmcm9tICcuLi9zZXJpYWxpemF0aW9uL0J5dGVCdWZmZXInXG5pbXBvcnQgeyBFY3NUeXBlIH0gZnJvbSAnLi9FY3NUeXBlJ1xuaW1wb3J0IHsgVG9PcHRpb25hbCB9IGZyb20gJy4vdHlwaW5nJ1xuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTcGVjIHtcbiAgW2tleTogc3RyaW5nXTogRWNzVHlwZVxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgUmVzdWx0PFQgZXh0ZW5kcyBTcGVjPiA9IFRvT3B0aW9uYWw8e1xuICBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIEVjc1R5cGVcbiAgICA/IFJldHVyblR5cGU8VFtLXVsnZGVzZXJpYWxpemUnXT5cbiAgICA6IFRbS10gZXh0ZW5kcyBTcGVjXG4gICAgPyBSZXN1bHQ8VFtLXT5cbiAgICA6IG5ldmVyXG59PlxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1hcFR5cGU8VCBleHRlbmRzIFNwZWM+KHNwZWM6IFQpOiBFY3NUeXBlPFJlc3VsdDxUPj4ge1xuICByZXR1cm4ge1xuICAgIHNlcmlhbGl6ZSh2YWx1ZTogUmVzdWx0PFQ+LCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBzcGVjKSB7XG4gICAgICAgIC8vIFRPRE86IGFzIGFueVxuICAgICAgICBzcGVjW2tleV0uc2VyaWFsaXplKCh2YWx1ZSBhcyBhbnkpW2tleV0sIGJ1aWxkZXIpXG4gICAgICB9XG4gICAgfSxcbiAgICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBSZXN1bHQ8VD4ge1xuICAgICAgY29uc3QgbmV3VmFsdWU6IFJlc3VsdDxUPiA9IHt9IGFzIGFueVxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gc3BlYykge1xuICAgICAgICAvLyBUT0RPOiBhcyBhbnlcbiAgICAgICAgOyhuZXdWYWx1ZSBhcyBhbnkpW2tleV0gPSBzcGVjW2tleV0uZGVzZXJpYWxpemUocmVhZGVyKVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ld1ZhbHVlXG4gICAgfSxcbiAgICBjcmVhdGUoKSB7XG4gICAgICBjb25zdCBuZXdWYWx1ZTogUmVzdWx0PFQ+ID0ge30gYXMgYW55XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBzcGVjKSB7XG4gICAgICAgIC8vIFRPRE86IGFzIGFueVxuICAgICAgICA7KG5ld1ZhbHVlIGFzIGFueSlba2V5XSA9IHNwZWNba2V5XS5jcmVhdGUoKVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ld1ZhbHVlXG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBCeXRlQnVmZmVyIH0gZnJvbSAnLi4vc2VyaWFsaXphdGlvbi9CeXRlQnVmZmVyJ1xuaW1wb3J0IHsgRWNzVHlwZSB9IGZyb20gJy4vRWNzVHlwZSdcblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBBcnJheVR5cGU8VD4odHlwZTogRWNzVHlwZTxUPik6IEVjc1R5cGU8QXJyYXk8VD4+IHtcbiAgcmV0dXJuIHtcbiAgICBzZXJpYWxpemUodmFsdWU6IEFycmF5PFQ+LCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgICBidWlsZGVyLndyaXRlVWludDMyKHZhbHVlLmxlbmd0aClcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB2YWx1ZSkge1xuICAgICAgICB0eXBlLnNlcmlhbGl6ZShpdGVtLCBidWlsZGVyKVxuICAgICAgfVxuICAgIH0sXG4gICAgZGVzZXJpYWxpemUocmVhZGVyOiBCeXRlQnVmZmVyKTogQXJyYXk8VD4ge1xuICAgICAgY29uc3QgbmV3QXJyYXk6IEFycmF5PFQ+ID0gW11cbiAgICAgIGNvbnN0IGxlbmd0aCA9IHJlYWRlci5yZWFkVWludDMyKClcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgbmV3QXJyYXkucHVzaCh0eXBlLmRlc2VyaWFsaXplKHJlYWRlcikpXG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3QXJyYXlcbiAgICB9LFxuICAgIGNyZWF0ZSgpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgQnl0ZUJ1ZmZlciB9IGZyb20gJy4uL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IEVjc1R5cGUgfSBmcm9tICcuL0Vjc1R5cGUnXG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gT3B0aW9uYWw8VD4oc3BlYzogRWNzVHlwZTxUPik6IEVjc1R5cGU8VCB8IHVuZGVmaW5lZD4ge1xuICByZXR1cm4ge1xuICAgIHNlcmlhbGl6ZSh2YWx1ZTogVCB8IHVuZGVmaW5lZCwgYnVpbGRlcjogQnl0ZUJ1ZmZlcik6IHZvaWQge1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGJ1aWxkZXIud3JpdGVJbnQ4KDEpXG4gICAgICAgIHNwZWMuc2VyaWFsaXplKHZhbHVlLCBidWlsZGVyKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnVpbGRlci53cml0ZUludDgoMClcbiAgICAgIH1cbiAgICB9LFxuICAgIGRlc2VyaWFsaXplKHJlYWRlcjogQnl0ZUJ1ZmZlcik6IFQgfCB1bmRlZmluZWQge1xuICAgICAgY29uc3QgZXhpc3RzID0gcmVhZGVyLnJlYWRJbnQ4KClcbiAgICAgIGlmIChleGlzdHMpIHtcbiAgICAgICAgcmV0dXJuIHNwZWMuZGVzZXJpYWxpemUocmVhZGVyKVxuICAgICAgfVxuICAgIH0sXG4gICAgY3JlYXRlKCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgQnl0ZUJ1ZmZlciB9IGZyb20gJy4uLy4uL3NlcmlhbGl6YXRpb24vQnl0ZUJ1ZmZlcidcbmltcG9ydCB7IEVjc1R5cGUgfSBmcm9tICcuLi9FY3NUeXBlJ1xuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEludDY0OiBFY3NUeXBlPG51bWJlcj4gPSB7XG4gIHNlcmlhbGl6ZSh2YWx1ZTogbnVtYmVyLCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgYnVpbGRlci53cml0ZUludDY0KEJpZ0ludCh2YWx1ZSkpXG4gIH0sXG4gIGRlc2VyaWFsaXplKHJlYWRlcjogQnl0ZUJ1ZmZlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIE51bWJlcihyZWFkZXIucmVhZEludDY0KCkpXG4gIH0sXG4gIGNyZWF0ZSgpIHtcbiAgICByZXR1cm4gMFxuICB9XG59XG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSW50MzI6IEVjc1R5cGU8bnVtYmVyPiA9IHtcbiAgc2VyaWFsaXplKHZhbHVlOiBudW1iZXIsIGJ1aWxkZXI6IEJ5dGVCdWZmZXIpOiB2b2lkIHtcbiAgICBidWlsZGVyLndyaXRlSW50MzIodmFsdWUpXG4gIH0sXG4gIGRlc2VyaWFsaXplKHJlYWRlcjogQnl0ZUJ1ZmZlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHJlYWRlci5yZWFkSW50MzIoKVxuICB9LFxuICBjcmVhdGUoKSB7XG4gICAgcmV0dXJuIDBcbiAgfVxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEludDE2OiBFY3NUeXBlPG51bWJlcj4gPSB7XG4gIHNlcmlhbGl6ZSh2YWx1ZTogbnVtYmVyLCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgYnVpbGRlci53cml0ZUludDE2KHZhbHVlKVxuICB9LFxuICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBudW1iZXIge1xuICAgIHJldHVybiByZWFkZXIucmVhZEludDE2KClcbiAgfSxcbiAgY3JlYXRlKCkge1xuICAgIHJldHVybiAwXG4gIH1cbn1cblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBJbnQ4OiBFY3NUeXBlPG51bWJlcj4gPSB7XG4gIHNlcmlhbGl6ZSh2YWx1ZTogbnVtYmVyLCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgYnVpbGRlci53cml0ZUludDgodmFsdWUpXG4gIH0sXG4gIGRlc2VyaWFsaXplKHJlYWRlcjogQnl0ZUJ1ZmZlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHJlYWRlci5yZWFkSW50OCgpXG4gIH0sXG4gIGNyZWF0ZSgpIHtcbiAgICByZXR1cm4gMFxuICB9XG59XG4iLCJpbXBvcnQgeyBCeXRlQnVmZmVyIH0gZnJvbSAnLi4vLi4vc2VyaWFsaXphdGlvbi9CeXRlQnVmZmVyJ1xuaW1wb3J0IHsgRWNzVHlwZSB9IGZyb20gJy4uL0Vjc1R5cGUnXG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRmxvYXQzMjogRWNzVHlwZTxudW1iZXI+ID0ge1xuICBzZXJpYWxpemUodmFsdWU6IG51bWJlciwgYnVpbGRlcjogQnl0ZUJ1ZmZlcik6IHZvaWQge1xuICAgIGJ1aWxkZXIud3JpdGVGbG9hdDMyKHZhbHVlKVxuICB9LFxuICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBudW1iZXIge1xuICAgIHJldHVybiByZWFkZXIucmVhZEZsb2F0MzIoKVxuICB9LFxuICBjcmVhdGUoKSB7XG4gICAgcmV0dXJuIDAuMFxuICB9XG59XG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRmxvYXQ2NDogRWNzVHlwZTxudW1iZXI+ID0ge1xuICBzZXJpYWxpemUodmFsdWU6IG51bWJlciwgYnVpbGRlcjogQnl0ZUJ1ZmZlcik6IHZvaWQge1xuICAgIGJ1aWxkZXIud3JpdGVGbG9hdDY0KHZhbHVlKVxuICB9LFxuICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBudW1iZXIge1xuICAgIHJldHVybiByZWFkZXIucmVhZEZsb2F0NjQoKVxuICB9LFxuICBjcmVhdGUoKSB7XG4gICAgcmV0dXJuIDAuMFxuICB9XG59XG4iLCJpbXBvcnQgeyBCeXRlQnVmZmVyIH0gZnJvbSAnLi4vLi4vc2VyaWFsaXphdGlvbi9CeXRlQnVmZmVyJ1xuaW1wb3J0IHsgRWNzVHlwZSB9IGZyb20gJy4uL0Vjc1R5cGUnXG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRmxhdFN0cmluZzogRWNzVHlwZTxzdHJpbmc+ID0ge1xuICBzZXJpYWxpemUodmFsdWU6IHN0cmluZywgYnVpbGRlcjogQnl0ZUJ1ZmZlcik6IHZvaWQge1xuICAgIGJ1aWxkZXIud3JpdGVCdWZmZXIobmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHZhbHVlKSlcbiAgfSxcbiAgZGVzZXJpYWxpemUocmVhZGVyOiBCeXRlQnVmZmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKHJlYWRlci5yZWFkQnVmZmVyKCkpXG4gIH0sXG4gIGNyZWF0ZSgpIHtcbiAgICByZXR1cm4gJydcbiAgfVxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEVjc1N0cmluZyA9IEZsYXRTdHJpbmdcbiIsImltcG9ydCB7IEJ5dGVCdWZmZXIgfSBmcm9tICcuLi8uLi9zZXJpYWxpemF0aW9uL0J5dGVCdWZmZXInXG5pbXBvcnQgeyBFY3NUeXBlIH0gZnJvbSAnLi4vRWNzVHlwZSdcblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbnVtPFQ+KHR5cGU6IEVjc1R5cGU8YW55Pik6IEVjc1R5cGU8VD4ge1xuICByZXR1cm4ge1xuICAgIHNlcmlhbGl6ZSh2YWx1ZTogVCwgYnVpbGRlcjogQnl0ZUJ1ZmZlcik6IHZvaWQge1xuICAgICAgdHlwZS5zZXJpYWxpemUodmFsdWUsIGJ1aWxkZXIpXG4gICAgfSxcbiAgICBkZXNlcmlhbGl6ZShyZWFkZXI6IEJ5dGVCdWZmZXIpOiBUIHtcbiAgICAgIHJldHVybiB0eXBlLmRlc2VyaWFsaXplKHJlYWRlcilcbiAgICB9LFxuICAgIGNyZWF0ZSgpIHtcbiAgICAgIHJldHVybiB0eXBlLmNyZWF0ZSgpXG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBCeXRlQnVmZmVyIH0gZnJvbSAnLi4vLi4vc2VyaWFsaXphdGlvbi9CeXRlQnVmZmVyJ1xuaW1wb3J0IHsgRWNzVHlwZSB9IGZyb20gJy4uL0Vjc1R5cGUnXG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRWNzQm9vbGVhbjogRWNzVHlwZTxib29sZWFuPiA9IHtcbiAgc2VyaWFsaXplKHZhbHVlOiBib29sZWFuLCBidWlsZGVyOiBCeXRlQnVmZmVyKTogdm9pZCB7XG4gICAgYnVpbGRlci53cml0ZUludDgodmFsdWUgPyAxIDogMClcbiAgfSxcbiAgZGVzZXJpYWxpemUocmVhZGVyOiBCeXRlQnVmZmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJlYWRlci5yZWFkSW50OCgpID09PSAxXG4gIH0sXG4gIGNyZWF0ZSgpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuIiwiaW1wb3J0IHsgVHJhbnNwb3J0TWVzc2FnZSB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgVHJhbnNwb3J0IH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IENvbXBvbmVudElkcyB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvZ2VuZXJhdGVkL2luZGV4LmdlbidcbmltcG9ydCB7IExFR0FDWV9DT01QT05FTlRfSUQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2xlZ2FjeS90eXBlcydcblxuY29uc3QgY29tcG9uZW50SWRzID0gT2JqZWN0LnZhbHVlcyhDb21wb25lbnRJZHMpXG4gIC5maWx0ZXIoKGEpID0+IHR5cGVvZiBhID09PSAnbnVtYmVyJylcbiAgLm1hcChOdW1iZXIpXG5jb25zdCByZW5kZXJlckNvbXBvbmVudElkcyA9IGNvbXBvbmVudElkcy5jb25jYXQoTEVHQUNZX0NPTVBPTkVOVF9JRC5UUkFOU0ZPUk0pXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZW5kZXJlclRyYW5zcG9ydCgpOiBUcmFuc3BvcnQge1xuICBjb25zdCB0eXBlID0gJ3JlbmRlcmVyJ1xuICByZXR1cm4ge1xuICAgIHR5cGUsXG4gICAgc2VuZChtZXNzYWdlOiBVaW50OEFycmF5KTogdm9pZCB7XG4gICAgICAvLyBUT0RPOiByZXBsYWNlIHdpdGggbmV3IHJwY1xuICAgICAgZGNsXG4gICAgICAgIC5jYWxsUnBjKCdAZGVjZW50cmFsYW5kL0V4cGVyaW1lbnRhbEFQSScsICdzZW5kVG9SZW5kZXJlcicsIFtcbiAgICAgICAgICB7IGRhdGE6IG5ldyBVaW50OEFycmF5KG1lc3NhZ2UpIH1cbiAgICAgICAgXSlcbiAgICAgICAgLmNhdGNoKGRjbC5lcnJvcilcbiAgICB9LFxuICAgIGZpbHRlcihtZXNzYWdlOiBUcmFuc3BvcnRNZXNzYWdlKTogYm9vbGVhbiB7XG4gICAgICAvLyBFY2hvIG1lc3NhZ2UsIGlnbm9yZSB0aGVtXG4gICAgICBpZiAobWVzc2FnZS50cmFuc3BvcnRUeXBlID09PSB0eXBlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuXG4gICAgICAvLyBPbmx5IHNlbmQgcmVuZGVyZXIgY29tcG9uZW50cyAoUHJvdG8gR2VuZXJhdGVkKVxuICAgICAgaWYgKCFyZW5kZXJlckNvbXBvbmVudElkcy5pbmNsdWRlcyhtZXNzYWdlLmNvbXBvbmVudElkKSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICEhbWVzc2FnZVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgVHJhbnNwb3J0TWVzc2FnZSB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgVHJhbnNwb3J0IH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5ldHdvcmtUcmFuc3BvcnQoKTogVHJhbnNwb3J0IHtcbiAgLy8gY29uc3QgcnBjID0gbmV3IFJwY1RyYW5zcG9ydCgpXG4gIGZ1bmN0aW9uIHNlbmQoLi4uX2FyZ3M6IGFueVtdKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ05ldHdvcmtNZXNzYWdlIFNlbnQ6ICcsIC4uLmFyZ3MpXG4gIH1cblxuICBjb25zdCB0eXBlID0gJ25ldHdvcmstdHJhbnNwb3J0J1xuICByZXR1cm4ge1xuICAgIHNlbmQsXG4gICAgdHlwZSxcbiAgICBmaWx0ZXIobWVzc2FnZTogVHJhbnNwb3J0TWVzc2FnZSk6IGJvb2xlYW4ge1xuICAgICAgLy8gRWNobyBtZXNzYWdlLCBpZ25vcmUgdGhlbVxuICAgICAgaWYgKG1lc3NhZ2UudHJhbnNwb3J0VHlwZSA9PT0gdHlwZSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgLy8gVE9ETzogU3RhdGljIGVudGl0aWVzICYgTmV0d29yayBjb21wb25lbnRzXG5cbiAgICAgIHJldHVybiAhIW1lc3NhZ2UgLy8gdmFsaWRDb21wb25lbnRzLmluY2x1ZGVzKGNvbXBvbmVudElkKVxuICAgIH1cbiAgfVxufVxuIiwiLyoqXG4gKiBAYWxwaGEgKiBUaGlzIGZpbGUgaW5pdGlhbGl6YXRpb24gaXMgYW4gYWxwaGEgb25lLiBUaGlzIGlzIGJhc2VkIG9uIHRoZSBvbGQtZWNzXG4gKiBpbml0IGFuZCBpdCdsbCBiZSBjaGFuZ2luZy5cbiAqL1xuXG5pbXBvcnQgeyBFbmdpbmUgfSBmcm9tICcuL2VuZ2luZSdcbmltcG9ydCB7IGNyZWF0ZVJlbmRlcmVyVHJhbnNwb3J0IH0gZnJvbSAnLi9zeXN0ZW1zL2NyZHQvdHJhbnNwb3J0cy9yZW5kZXJlclRyYW5zcG9ydCdcbmltcG9ydCB7IGNyZWF0ZU5ldHdvcmtUcmFuc3BvcnQgfSBmcm9tICcuL3N5c3RlbXMvY3JkdC90cmFuc3BvcnRzL25ldHdvcmtUcmFuc3BvcnQnXG5cbmNvbnN0IHJlbmRlcmVyVHJhbnNwb3J0ID0gY3JlYXRlUmVuZGVyZXJUcmFuc3BvcnQoKVxuZXhwb3J0IGNvbnN0IGVuZ2luZSA9IEVuZ2luZSh7XG4gIHRyYW5zcG9ydHM6IFtyZW5kZXJlclRyYW5zcG9ydCwgY3JlYXRlTmV0d29ya1RyYW5zcG9ydCgpXVxufSlcblxuaWYgKGRjbCkge1xuICBkY2wubG9hZE1vZHVsZSgnQGRlY2VudHJhbGFuZC9FeHBlcmltZW50YWxBUEknLCB7fSkuY2F0Y2goZGNsLmVycm9yKVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHB1bGxSZW5kZXJlck1lc3NhZ2VzKCkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZGNsLmNhbGxScGMoXG4gICAgICAnQGRlY2VudHJhbGFuZC9FeHBlcmltZW50YWxBUEknLFxuICAgICAgJ21lc3NhZ2VGcm9tUmVuZGVyZXInLFxuICAgICAgW11cbiAgICApXG5cbiAgICBpZiAocmVzcG9uc2UuZGF0YT8ubGVuZ3RoKSB7XG4gICAgICBpZiAocmVuZGVyZXJUcmFuc3BvcnQub25tZXNzYWdlKSB7XG4gICAgICAgIGZvciAoY29uc3QgYnl0ZUFycmF5IG9mIHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICByZW5kZXJlclRyYW5zcG9ydC5vbm1lc3NhZ2UoYnl0ZUFycmF5KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZGNsLm9uVXBkYXRlKChkdDogbnVtYmVyKSA9PiB7XG4gICAgcHVsbFJlbmRlcmVyTWVzc2FnZXMoKVxuICAgICAgLmNhdGNoKGRjbC5lcnJvcilcbiAgICAgIC5maW5hbGx5KCgpID0+IGVuZ2luZS51cGRhdGUoZHQpKVxuICB9KVxufVxuIl0sIm5hbWVzIjpbInJlcXVpcmUkJDAiLCJyZXF1aXJlJCQxIiwicmVxdWlyZSQkMiIsInRoaXMiLCJyZXF1aXJlJCQzIiwicmVxdWlyZSQkNCIsInJlcXVpcmUkJDUiLCJyZXF1aXJlJCQ2IiwicmVxdWlyZSQkNyIsImdsb2JhbCIsIl9tMC5Xcml0ZXIiLCJfbTAuUmVhZGVyIiwiQ09NUE9ORU5UX0lEIiwiQW5pbWF0b3IuQ09NUE9ORU5UX0lEIiwiQW5pbWF0b3IuQW5pbWF0b3IiLCJBdWRpb1NvdXJjZS5DT01QT05FTlRfSUQiLCJBdWRpb1NvdXJjZS5BdWRpb1NvdXJjZSIsIkF1ZGlvU3RyZWFtLkNPTVBPTkVOVF9JRCIsIkF1ZGlvU3RyZWFtLkF1ZGlvU3RyZWFtIiwiQm94U2hhcGUuQ09NUE9ORU5UX0lEIiwiQm94U2hhcGUuQm94U2hhcGUiLCJDeWxpbmRlclNoYXBlLkNPTVBPTkVOVF9JRCIsIkN5bGluZGVyU2hhcGUuQ3lsaW5kZXJTaGFwZSIsIkdMVEZTaGFwZS5DT01QT05FTlRfSUQiLCJHTFRGU2hhcGUuR0xURlNoYXBlIiwiTkZUU2hhcGUuQ09NUE9ORU5UX0lEIiwiTkZUU2hhcGUuTkZUU2hhcGUiLCJPblBvaW50ZXJEb3duLkNPTVBPTkVOVF9JRCIsIk9uUG9pbnRlckRvd24uT25Qb2ludGVyRG93biIsIk9uUG9pbnRlckRvd25SZXN1bHQuQ09NUE9ORU5UX0lEIiwiT25Qb2ludGVyRG93blJlc3VsdC5PblBvaW50ZXJEb3duUmVzdWx0IiwiT25Qb2ludGVyVXAuQ09NUE9ORU5UX0lEIiwiT25Qb2ludGVyVXAuT25Qb2ludGVyVXAiLCJPblBvaW50ZXJVcFJlc3VsdC5DT01QT05FTlRfSUQiLCJPblBvaW50ZXJVcFJlc3VsdC5PblBvaW50ZXJVcFJlc3VsdCIsIlBsYW5lU2hhcGUuQ09NUE9ORU5UX0lEIiwiUGxhbmVTaGFwZS5QbGFuZVNoYXBlIiwiU3BoZXJlU2hhcGUuQ09NUE9ORU5UX0lEIiwiU3BoZXJlU2hhcGUuU3BoZXJlU2hhcGUiLCJUZXh0U2hhcGUuQ09NUE9ORU5UX0lEIiwiVGV4dFNoYXBlLlRleHRTaGFwZSIsIlVpVHJhbnNmb3JtLkNPTVBPTkVOVF9JRCIsIlVpVHJhbnNmb3JtLlVpVHJhbnNmb3JtIiwiVmVjdG9yMyIsIlF1YXRlcm5pb24iLCJJRCIsIkxlZ2FjeVRyYW5zZm9ybSIsIldpcmVNZXNzYWdlIiwiY3JkdFByb3RvY29sIiwiTWVzc2FnZSIsIkNyZHRVdGlscyIsImRlZmluZUNvbXBvbmVudCIsImRlZkNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FDQSxNQUFNLENBQUMsY0FBYyxDQUFBLE9BQUEsRUFBVSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztHQUM5RCxPQUFrQixDQUFBLE9BQUEsR0FBQSxLQUFLLENBQUMsQ0FBQztHQUt6QixDQUFDLFVBQVUsT0FBTyxFQUFFO0NBQ3BCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLE1BQUksU0FBUyxNQUFNO0NBQ25CO0NBQ0E7Q0FDQTtPQUNJLENBQUMsR0FBRyxDQUFDO0NBQ1Q7Q0FDQTtDQUNBO09BQ0ksQ0FBQyxHQUFHLENBQUM7Q0FDVDtDQUNBO0NBQ0E7T0FDSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1dBQ0gsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDdEI7Q0FDTCxNQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0NBQzVCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLE1BQUksU0FBUyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRTtDQUNuQyxVQUFRLE9BQU87ZUFDSCxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztlQUN4QixDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztlQUN4QixDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztDQUNwQyxXQUFTLENBQUM7UUFDTDtDQUNMLE1BQUksT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7Q0FDdEI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxNQUFJLFNBQVMsUUFB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LEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7Q0FDakQ7Q0FDQSxVQUFRLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0NBQzVDLFVBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Q0FDNUMsVUFBUSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztDQUM1QyxVQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Q0FDN0M7Q0FDQSxVQUFRLE9BQU87Q0FDZixjQUFZLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTtDQUN2RCxjQUFZLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTtDQUN2RCxjQUFZLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTtDQUN2RCxXQUFTLENBQUM7UUFDTDtDQUNMLE1BQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDNUI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7T0FDSSxTQUFTLElBQUks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Q0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0NBQy9DLFVBQVEsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztDQUMvQyxVQUFRLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7Q0FDL0MsVUFBUSxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQzFDO0NBQ0wsTUFBSSxVQUFVLENBQUMseUJBQXlCLEdBQUcseUJBQXlCLENBQUM7Q0FDckU7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLE1BQUksU0FBUyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0NBQ3JELFVBQVEsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQztDQUMvQjtXQUNRLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7V0FDbEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztXQUNsRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQzNEO1dBQ1EsTUFBTSxLQUFLLEdBQUcsR0FBRyxHQUFH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R0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ2pGLFVBQVEsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNsRixVQUFRLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ2pGLFVBQVEsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3RTtDQUNMLE1BQUksVUFBVSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7Q0FDN0MsTUFBSSxTQUFTLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFO1dBQzlCLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO0NBQ3pELGNBQVksT0FB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R0FBRyxDQUFDO2NBQ2IsR0FBRyxDQUFDLEdBQUcsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztjQUN0QixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztjQUN0QixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztjQUN0QixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztjQUN0QixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztjQUN0QixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztjQUN0QixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztjQUN0QixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztXQUN6QjtBQUNUO1VBQ1EsU0FBUyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtDQUNwRCxhQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7Y0FDYixHQUFHLENBQUMsR0FBRyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1dBQ3pCO0FBQ1Q7Q0FDQTtVQUNRLE9BQU8sQ0FBQyxhQUFhLEdBQUcsRUFBRSxHQUFHLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDO0NBQy9FO1VBQ1EsT0FBTyxDQUFDLGFBQWEsR0FBRyxFQUFFLEdBQUcsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUM7QUFDL0U7Q0FDQSxTQUFRLFNBQVMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtjQUNsQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO2NBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO2NB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UyxNQUFNLEdBQUc7TUFDMUMsT0FBTyxNQUFNLENBQUMsWUFBWTtDQUM5QixTQUFRLElBQUksQ0FBQyxFQUFFLFVBQVUsR0FBRztDQUM1QixTQUFRLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLEdBQUc7Q0FDNUIsU0FBUSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHO0NBQzVCLFNBQVEsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFO0NBQ3RCLFNBQVEsSUFBSSxDQUFDLEVBQUUsVUFBVSxHQUFHO0NBQzVCLFNBQVEsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksR0FBRztDQUM1QixTQUFRLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUc7Q0FDNUIsU0FBUSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUU7Q0FDdEIsTUFBSyxDQUFDO0NBQ04sRUFBQyxDQUFDO0FBQ0Y7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLENBQUEsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsU0FBUyxRQUFRLEdBQUc7TUFDOUMsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7TUFDM0IsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQztDQUM5RCxLQUFJLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMscUJBQXFCLElBQUksTUFBTSxDQUFDLENBQUM7TUFDMUQsT0FBTyxJQUFJLENBQUM7Q0FDaEIsRUFBQyxDQUFDO0FBQ0Y7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLENBQUEsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsU0FBUyxRQUFRLEdBQUc7TUFDOUMsSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO01BQzFCLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksTUFBTSxDQUFDLENBQUM7Q0FDOUQsS0FBSSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixJQUFJLE1BQU0sQ0FBQyxDQUFDO01BQzFELE9BQU8sSUFBSSxDQUFDO0NBQ2hCLEVBQUMsQ0FBQztBQUNGO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxDQUFBLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFNBQVMsTUFBTSxHQUFHO0NBQzlDLEtBQUksSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLEVBQUU7Q0FDeEIsU0FBUSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3JELFNBQVEsS0FBSyxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO01BQzVCLE9BQU8sS0FBSyxLQUFLLENBQUM7YUFDWCxLQUFLLEtBQUssQ0FBQztlQUNULEtBQUssR0FBRyxLQUFLO0NBQzFCLGdCQUFlLEtBQUssR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7Q0FDbEMsZ0JBQWUsS0FBSyxHQUFHLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQztlQUN6QixLQUFLLEdBQUcsS0FBSztDQUMxQixnQkFBZSxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO0NBQ2xDLGdCQUFlLEtBQUssR0FBRyxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUM7Q0FDdEMsWUFBVyxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7R0FDL0IsQ0FBQTs7Ozs7Ozs7OztHQ3RNRCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUM7QUFDbkI7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLFNBQVMsR0FBR0EsZ0JBQUEsRUFBZ0MsQ0FBQztBQUNsRDtDQUNBO0NBQ0EsRUFBQSxJQUFJLENBQUMsTUFBTSxHQUFHQyxhQUFBLEVBQTZCLENBQUM7QUFDNUM7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLFlBQVksR0FBR0MsbUJBQUEsRUFBbUMsQ0FBQztBQUN4RDtDQUNBO0NBQ0EsRUFBQSxJQUFJLENBQUMsS0FBSyxHQUFHRSxZQUFBLEVBQTRCLENBQUM7QUFDMUM7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLE9BQU8sR0FBR0MsY0FBQSxFQUE4QixDQUFDO0FBQzlDO0NBQ0E7Q0FDQSxFQUFBLElBQUksQ0FBQyxJQUFJLEdBQUdDLFdBQUEsRUFBMkIsQ0FBQztBQUN4QztDQUNBO0NBQ0EsRUFBQSxJQUFJLENBQUMsSUFBSSxHQUFHQyxXQUFBLEVBQTJCLENBQUM7QUFDeEM7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLFFBQVEsR0FBR0MsZUFBQSxFQUFxQixDQUFDO0FBQ3RDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtHQUNBLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU9DLGNBQU0sS0FBSyxXQUFXO0NBQ25ELHdCQUFzQkEsY0FBTTt5QkFDTkEsY0FBTSxDQUFDLE9BQU87Q0FDcEMsd0JBQXNCQSxjQUFNLENBQUMsT0FBTyxDQUFDLFFBQVE7eUJBQ3ZCQSxjQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwRDtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxFQUFBLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSUEsY0FBTTtDQUNuQyxnQkFBYyxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksTUFBTTtDQUNyRCxnQkFBYyxPQUFPLElBQUksT0FBTyxXQUFXLElBQUksSUFBSTtDQUNuRCxnQkFBY04sY0FBSSxDQUFDO0FBQ25CO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsRUFBQSxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsOEJBQThCLEVBQUUsQ0FBQztBQUNwRjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxFQUFBLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO0FBQ3JGO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0dBQ0EsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUywrQkFBK0IsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFO0NBQzFGLE1BQUksT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDO0NBQ3ZGLEdBQUMsQ0FBQztBQUNGO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUU7T0FDckMsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxZQUFZLE1BQU0sQ0FBQztDQUNoRSxHQUFDLENBQUM7QUFDRjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxFQUFBLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFO0NBQ3pDLE1BQUksT0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDO0NBQzlDLEdBQUMsQ0FBQztBQUNGO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLEtBQUs7QUFDVjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtHQUNBLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRTtDQUN2QyxNQUFJLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QixJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7Q0FDakQsVUFBUSxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7T0FDOUcsT0FBTyxLQUFLLENBQUM7Q0FDakIsR0FBQyxDQUFDO0FBQ0Y7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7QUFDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsRUFBQSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsV0FBVztDQUMxQixNQUFJLElBQUk7V0FDQSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQztDQUNuRDtXQUNRLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsTUFBTSw4QkFBOEIsSUFBSSxDQUFDO1FBQ2hGLENBQUMsT0FBTyxDQUFDLEVBQUU7Q0FDaEI7V0FDUSxPQUFPLElBQUksQ0FBQztRQUNmO0NBQ0wsR0FBQyxHQUFHLENBQUM7QUFDTDtDQUNBO0NBQ0EsRUFBQSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztBQUN6QjtDQUNBO0NBQ0EsRUFBQSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0FBQ2hDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLFNBQVMsQ0FBQyxXQUFXLEVBQUU7Q0FDakQ7Q0FDQSxNQUFJLE9BQU8sT0FBTyxXQUFXLEtBQUssUUFBUTthQUNoQyxJQUFJLENBQUMsTUFBTTtDQUNyQixnQkFBYyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDO0NBQ25ELGdCQUFjLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7YUFDL0IsSUFBSSxDQUFDLE1BQU07Q0FDckIsZ0JBQWMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7aUJBQzlCLE9BQU8sVUFBVSxLQUFLLFdBQVc7Q0FDL0Msb0JBQWtCLFdBQVc7Q0FDN0Isb0JBQWtCLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0NBQzlDLEdBQUMsQ0FBQztBQUNGO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7R0FDQSxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sVUFBVSxLQUFLLFdBQVcsR0FBRyxVQUFVLDhCQUE4QixLQUFLLENBQUM7QUFDL0Y7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0FBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLElBQUksOEJBQThCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTywrQkFBK0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSTtDQUNqSCx5Q0FBdUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJO0NBQ3ZELGNBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNqQztDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxFQUFBLElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLENBQUM7QUFDakM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsRUFBQSxJQUFJLENBQUMsT0FBTyxHQUFHLHVCQUF1QixDQUFDO0FBQ3ZDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLE9BQU8sR0FBRyw0Q0FBNEMsQ0FBQztBQUM1RDtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxFQUFBLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxVQUFVLENBQUMsS0FBSyxFQUFFO0NBQzdDLE1BQUksT0FBTyxLQUFLO2FBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFO0NBQzVDLFlBQVUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7Q0FDakMsR0FBQyxDQUFDO0FBQ0Y7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7R0FDQSxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7T0FDdEQsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7T0FDeEMsSUFBSSxJQUFJLENBQUMsSUFBSTtDQUNqQixVQUFRLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO09BQzFELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztDQUM1QyxHQUFDLENBQUM7QUFDRjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxFQUFBLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFO09BQy9CLEtBQUssSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztDQUNqRSxVQUFRLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLFFBQVE7Q0FDbkQsY0FBWSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO09BQ3BDLE9BQU8sR0FBRyxDQUFDO0lBQ2Q7QUFDRDtDQUNBLEVBQUEsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsRUFBQSxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsT0FBTyxDQUFDLEdBQUcsRUFBRTtDQUNyQyxNQUFJLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzFELEdBQUMsQ0FBQztBQUNGO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0dBQ0EsU0FBUyxRQUFRLENBQUMsSUFBSSxFQUFFO0FBQ3hCO0NBQ0EsTUFBSSxTQUFTLFdBQVcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFO0FBQzlDO0NBQ0EsVUFBUSxJQUFJLEVBQUUsSUFBSSxZQUFZLFdBQVcsQ0FBQztlQUM5QixPQUFPLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN4RDtDQUNBO0NBQ0E7QUFDQTtDQUNBLFVBQVEsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxPQUFPLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hGO0NBQ0E7V0FDUSxJQUFJLEtBQUssQ0FBQyxpQkFBaUI7ZUFDdkIsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztDQUN2RDtlQUNZLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEtBQUssRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3JGO0NBQ0EsVUFBUSxJQUFJLFVBQVU7Q0FDdEIsY0FBWSxLQUFLLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9CO0FBQ0w7Q0FDQSxNQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxXQUFXLEdBQUcsV0FBVyxDQUFDO0FBQ3ZGO09BQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsT0FBTyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMvRjtPQUNJLFdBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFNBQVMsUUFBUSxHQUFHO1dBQ2pELE9BQU8sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztDQUMvQyxPQUFLLENBQUM7QUFDTjtPQUNJLE9BQU8sV0FBVyxDQUFDO0lBQ3RCO0FBQ0Q7Q0FDQSxFQUFBLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQ3pCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDL0M7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0FBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7QUFDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxFQUFBLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxRQUFRLENBQUMsVUFBVSxFQUFFO0NBQ2pELE1BQUksSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO0NBQ3RCLE1BQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1dBQ3RDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsTUFBSSxPQUFPLFdBQVc7V0FDZCxLQUFLLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7Q0FDM0UsY0FBWSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSTtDQUNoRyxrQkFBZ0IsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDL0IsT0FBSyxDQUFDO0NBQ04sR0FBQyxDQUFDO0FBQ0Y7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtBQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEVBQUEsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLFFBQVEsQ0FBQyxVQUFVLEVBQUU7QUFDakQ7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7T0FDSSxPQUFPLFNBQVMsSUFBSSxFQUFFO0NBQzFCLFVBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO0NBQ2xELGNBQVksSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSTttQkFDdEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsT0FBSyxDQUFDO0NBQ04sR0FBQyxDQUFDO0FBQ0Y7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtHQUNBLElBQUksQ0FBQyxhQUFhLEdBQUc7T0FDakIsS0FBSyxFQUFFLE1BQU07T0FDYixLQUFLLEVBQUUsTUFBTTtPQUNiLEtBQUssRUFBRSxNQUFNO09BQ2IsSUFBSSxFQUFFLElBQUk7Q0FDZCxHQUFDLENBQUM7QUFDRjtDQUNBO0dBQ0EsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXO0NBQzdCLE1BQUksSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztDQUM3QjtPQUNJLElBQUksQ0FBQyxNQUFNLEVBQUU7V0FDVCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7Q0FDNUQsVUFBUSxPQUFPO1FBQ1Y7Q0FDTDtDQUNBO0NBQ0EsTUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSTtDQUN0RTtDQUNBLFVBQVEsU0FBUyxXQUFXLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtlQUNsQyxPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztDQUMvQyxXQUFTLENBQUM7Q0FDVixNQUFJLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLENBQUMsV0FBVztDQUNqRDtDQUNBLFVBQVEsU0FBUyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7Q0FDMUMsY0FBWSxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQ3BDLFdBQVMsQ0FBQztJQUNULENBQUE7Ozs7Ozs7Ozs7O0NDbmFELENBQWMsTUFBQSxHQUFHLE1BQU0sQ0FBQztBQUN4QjtFQUNBLElBQUksSUFBSSxRQUFRSCxnQkFBQSxFQUF5QixDQUFDO0FBQzFDO0NBQ0EsQ0FBQSxJQUFJLFlBQVksQ0FBQztBQUNqQjtDQUNBLENBQUEsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVE7Q0FDN0IsS0FBSSxNQUFNLE1BQU0sSUFBSSxDQUFDLE1BQU07Q0FDM0IsS0FBSSxJQUFJLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQztBQUMxQjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLENBQUEsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDMUI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEtBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDakI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEtBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDbkI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEtBQUksSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7QUFDMUI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEtBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7R0FDbEI7QUFDRDtDQUNBO0VBQ0EsU0FBUyxJQUFJLEdBQUcsRUFBRTtBQUNsQjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7RUFDQSxTQUFTLEtBQUssQ0FBQyxNQUFNLEVBQUU7QUFDdkI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEtBQUksSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQzVCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxLQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztBQUM1QjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsS0FBSSxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDMUI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEtBQUksSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0dBQzdCO0FBQ0Q7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsQ0FBQSxTQUFTLE1BQU0sR0FBRztBQUNsQjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsS0FBSSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNqQjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsS0FBSSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEtBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQzFCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxLQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtHQUNDO0FBQ0Q7Q0FDQSxDQUFBLElBQUksTUFBTSxHQUFHLFNBQVMsTUFBTSxHQUFHO01BQzNCLE9BQU8sSUFBSSxDQUFDLE1BQU07WUFDWixTQUFTLG1CQUFtQixHQUFHO2NBQzdCLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLFNBQVMsYUFBYSxHQUFHO0NBQzdELGlCQUFnQixPQUFPLElBQUksWUFBWSxFQUFFLENBQUM7Q0FDMUMsY0FBYSxHQUFHLENBQUM7V0FDUjtDQUNUO1lBQ1UsU0FBUyxZQUFZLEdBQUc7Q0FDbEMsYUFBWSxPQUFPLElBQUksTUFBTSxFQUFFLENBQUM7Q0FDaEMsVUFBUyxDQUFDO0NBQ1YsRUFBQyxDQUFDO0FBQ0Y7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsQ0FBQSxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ3pCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLENBQUEsTUFBTSxDQUFDLEtBQUssR0FBRyxTQUFTLEtBQUssQ0FBQyxJQUFJLEVBQUU7TUFDaEMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDaEMsRUFBQyxDQUFDO0FBQ0Y7Q0FDQTtDQUNBO0NBQ0EsQ0FBQSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSztNQUNwQixNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxDQUFBLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFNBQVMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0NBQ3JELEtBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0NBQ3RELEtBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUM7TUFDaEIsT0FBTyxJQUFJLENBQUM7Q0FDaEIsRUFBQyxDQUFDO0FBQ0Y7Q0FDQSxDQUFBLFNBQVMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO01BQzlCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO0dBQ3hCO0FBQ0Q7Q0FDQSxDQUFBLFNBQVMsYUFBYSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0NBQ3RDLEtBQUksT0FBTyxHQUFHLEdBQUcsR0FBRyxFQUFFO1VBQ2QsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7VUFDN0IsR0FBRyxNQUFNLENBQUMsQ0FBQztPQUNkO0NBQ0wsS0FBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0dBQ2xCO0FBQ0Q7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxD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LEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsT0FBTyxLQUFLLENBQUM7Q0FDL0csU0FBUSxLQUFLLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsT0FBTyxLQUFLLENBQUM7Q0FDL0csU0FBUSxLQUFLLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDL0c7Q0FDQTtVQUNRLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO0NBQ3hDLGFBQVksSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0NBQ2hDLGFBQVksTUFBTSxlQUFlLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1dBQ25DO1VBQ0QsT0FBTyxLQUFLLENBQUM7Q0FDckIsTUFBSyxDQUFDO0NBQ04sRUFBQyxHQUFHLENBQUM7QUFDTDtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsQ0FBQSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxTQUFTLFVB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Q0FBQyxDQUFBO0NBQzdDLFNBQUE7Q0FDRCxRQUFBLElBQUksT0FBTyxDQUFDLFlBQVksS0FBSyxDQUFDLEVBQUU7Q0FDOUIsWUFBQSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUE7Q0FDOUMsU0FBQTtDQUNELFFBQUEsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLENBQUMsRUFBRTtDQUM1QixZQUFBLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQTtDQUM1QyxTQUFBO0NBQ0QsUUFBQSxJQUFJLE9BQU8sQ0FBQyxTQUFTLEtBQUssQ0FBQyxFQUFFO0NBQzNCLFlBQUEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0NBQzNDLFNBQUE7Q0FDRCxRQUFBLElBQUksT0FBTyxDQUFDLGFBQWEsS0FBSyxDQUFDLEVBQUU7Q0FDL0IsWUFBQSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUE7Q0FDL0MsU0FBQTtDQUNELFFBQUEsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRTtDQUMxQixZQUFBLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtDQUMxQyxTQUFBO0NBQ0QsUUFBQSxJQUFJLE9BQU8sQ0FBQyxjQUFjLEtBQUssQ0FBQyxFQUFFO0NBQ2hDLFlBQUEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFBO0NBQ2hELFNBQUE7Q0FDRCxRQUFBLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxDQUFDLEVBQUU7Q0FDMUIsWUFBQSxN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LENBQUMsTUFBYyxFQUFBO0NBQ3ZCLFlBQUEsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1VBQy9CO0NBQ0QsUUFBQSxPQUFPLENBQUMsTUFBYyxFQUFBO0NBQ3BCLFlBQUEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1VBQzVCO0NBQ0QsUUFBQSxRQUFRLENBQUMsTUFBYyxFQUFBO0NBQ3JCLFlBQUEsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1VBQzdCO0NBQ0QsUUFBQSxRQUFRLENBQUMsTUFBYyxFQUFBO0NBQ3JCLFlBQUEsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1VBQzdCO0NBQ0QsUUFBQSxRQUFRLENBQUMsTUFBYyxFQUFBO0NBQ3JCLFlBQUEsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1VBQ2hDO0NBQ0QsUUFBQSxRQUFRLENBQUMsTUFBYyxFQUFBO0NBQ3JCLFlBQUEsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1VBQzdCO0NBQ0QsUUFBQSxTQUFTLENBQUMsTUFBYyxFQUFBO0NBQ3RCLFlBQUEsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1VBQzlCO0NBQ0QsUUFBQSxTQUFTLENBQUMsTUFBYyxFQUFBO0NBQ3RCLFlBQUEsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1VBQzlCO0NBQ0QsUUFBQSxTQUFTLENBQUMsTUFBYyxFQUFBO0NBQ3RCLFlBQUEsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1VBQ2pDO1NBQ0QsVUFBVSxDQUFDLE1BQWMsRUFBRSxLQUFhLEVBQUE7Q0FDdEMsWUFBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQTtVQUMvQjtTQUNELFVBQVUsQ0FBQyxNQUFjLEVBQUUsS0FBYSxFQUFB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
|