@glimmer/runtime
Advanced tools
Comparing version 0.50.3 to 0.50.4
@@ -100,6 +100,2 @@ "use strict"; | ||
} | ||
currentBlock() { | ||
return this.elements().block(); | ||
} | ||
/* Registers */ | ||
@@ -407,5 +403,15 @@ | ||
while (true) { | ||
result = this.next(); | ||
if (result.done) break; | ||
try { | ||
while (true) { | ||
result = this.next(); | ||
if (result.done) break; | ||
} | ||
} finally { | ||
// If any existing blocks are open, due to an error or something like | ||
// that, we need to close them all and clean things up properly. | ||
let elements = this.elements(); | ||
while (elements.hasBlocks) { | ||
elements.popBlock(); | ||
} | ||
} | ||
@@ -558,2 +564,2 @@ | ||
exports.JitVM = JitVM; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2FwcGVuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBMkJBOztBQVdBOztBQWdCQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBa0ZBLE1BQUEsTUFBQSxDQUFZO0FBQVosRUFBQSxXQUFBLEdBQUE7QUFDVyxTQUFBLEtBQUEsR0FBUSxJQUFSLFdBQVEsRUFBUjtBQUNBLFNBQUEsWUFBQSxHQUFlLElBQWYsV0FBZSxFQUFmO0FBQ0EsU0FBQSxRQUFBLEdBQVcsSUFBWCxXQUFXLEVBQVg7QUFDQSxTQUFBLEtBQUEsR0FBUSxJQUFSLFdBQVEsRUFBUjtBQUNBLFNBQUEsSUFBQSxHQUFPLElBQVAsV0FBTyxFQUFQO0FBQ1Y7O0FBTlc7O0FBUUUsTUFBQSxFQUFBLENBQWtCO0FBMkg5Qjs7O0FBSUEsRUFBQSxXQUFBLENBQUEsT0FBQSxFQUVFO0FBQUEsSUFBQSxFQUFBO0FBQUEsSUFBQSxLQUFBO0FBQUEsSUFBQSxZQUFBO0FBQTJCLElBQUE7QUFBM0IsR0FGRixFQUFBLFlBQUEsRUFHK0M7QUFGcEMsU0FBQSxPQUFBLEdBQUEsT0FBQTtBQUVRLFNBQUEsWUFBQSxHQUFBLFlBQUE7QUFqSUYsU0FBQSxFQUFBLElBQVcsSUFBWCxNQUFXLEVBQVg7QUFHQSxTQUFBLEVBQUEsSUFBcUIsSUFBckIsV0FBcUIsRUFBckI7QUFtQlYsU0FBQSxFQUFBLEdBQUEsSUFBQTtBQUNBLFNBQUEsRUFBQSxHQUFBLElBQUE7QUFDQSxTQUFBLEVBQUEsR0FBQSxJQUFBO0FBQ0EsU0FBQSxFQUFBLEdBQUEsSUFBQTtBQUNBLFNBQUEsRUFBQSxHQUFBLElBQUE7O0FBeUdMLFFBQUksU0FBUyxHQUFHLGVBQUEsT0FBQSxDQUFoQixLQUFnQixDQUFoQjs7QUFGNkMsYUFJN0Msa0JBQU8sT0FBQSxFQUFB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QUFuQjtBQUNBLFFBQUksRUFBRSxHQUFHLE9BQU8sQ0FBUCxPQUFPLENBQVAsQ0FBQSxPQUFBLEVBQUEsS0FBQSxFQUFULFdBQVMsQ0FBVDtBQUNBLElBQUEsRUFBRSxDQUFGLFlBQUE7QUFDQSxXQUFBLEVBQUE7QUFDRDs7QUFFRCxTQUFBLEtBQUEsQ0FBQSxPQUFBLEVBRUU7QUFBQSxJQUFBLE1BQUE7QUFBQSxJQUFBLFdBQUE7QUFBdUIsSUFBQTtBQUF2QixHQUZGLEVBQUEsT0FBQSxFQUdtQztBQUVqQyxRQUFJLEVBQUUsR0FBRyxPQUFPLENBQVAsT0FBTyxDQUFQLENBQUEsT0FBQSxFQUVQLE9BQU8sQ0FDTCxPQUFPLENBQVAsT0FBQSxDQUFBLElBQUEsQ0FBQSxPQUFBLENBREssTUFDTCxDQURLLEVBRUwsdUJBQUEsSUFBQSxDQUFBLCtCQUFBLEVBRkssQ0FFTCxDQUZLLEVBRkEsWUFFQSxDQUZBLEVBQVQsV0FBUyxDQUFUO0FBU0EsSUFBQSxFQUFFLENBQUYsWUFBQTtBQUNBLFdBQUEsRUFBQTtBQUNEOztBQWFELEVBQUEsT0FBTyxDQUFBLElBQUEsRUFBZSxFQUFFLEdBQUcsS0FBQSxpQkFBQSxFQUFBLGFBQUEsQ0FBcEIsT0FBb0IsQ0FBcEIsRUFBcUQ7QUFDMUQsV0FBTyxJQUFBLDRCQUFBLENBQXlCLEtBQUEsWUFBQSxDQUFBLElBQUEsRUFBekIsRUFBeUIsQ0FBekIsRUFBc0QsS0FBN0QsTUFBTyxDQUFQO0FBQ0Q7O0FBSUQsRUFBQSxPQUFPLENBQUEsS0FBQSxFQUEwQjtBQUMvQixRQUFJLE1BQU0sR0FBRyx3QkFBYSxLQUFLLENBQUwsT0FBQSxDQUFjLEtBQXhDLE9BQTBCLENBQWIsQ0FBYjtBQUVBLFdBQUEsTUFBQTtBQUNEOztBQXJEMkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21waWxhYmxlQmxvY2ssXG4gIENvbXBpbGFibGVUZW1wbGF0ZSxcbiAgRGVzdHJveWFibGUsXG4gIERyb3AsXG4gIER5bmFtaWNTY29wZSxcbiAgRW52aXJvbm1lbnQsXG4gIEppdE9yQW90QmxvY2ssXG4gIFBhcnRpYWxTY29wZSxcbiAgUmVuZGVyUmVzdWx0LFxuICBSaWNoSXRlcmF0b3JSZXN1bHQsXG4gIFJ1bnRpbWVDb250ZXh0LFxuICBSdW50aW1lQ29uc3RhbnRzLFxuICBSdW50aW1lSGVhcCxcbiAgUnVudGltZVByb2dyYW0sXG4gIFNjb3BlLFxuICBTeW1ib2xEZXN0cm95YWJsZSxcbiAgU3ludGF4Q29tcGlsYXRpb25Db250ZXh0LFxuICBWTSBhcyBQdWJsaWNWTSxcbiAgSml0UnVudGltZUNvbnRleHQsXG4gIEFvdFJ1bnRpbWVDb250ZXh0LFxuICBMaXZlQmxvY2ssXG4gIEVsZW1lbnRCdWlsZGVyLFxufSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IExPQ0FMX1NIT1VMRF9MT0cgfSBmcm9tICdAZ2xpbW1lci9sb2NhbC1kZWJ1Zy1mbGFncyc7XG5pbXBvcnQgeyBSdW50aW1lT3BJbXBsIH0gZnJvbSAnQGdsaW1tZXIvcHJvZ3JhbSc7XG5pbXBvcnQgeyBQYXRoUmVmZXJlbmNlLCBSZWZlcmVuY2VJdGVyYXRvciwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQge1xuICBhc3NvY2lhdGVEZXN0cnVjdG9yLFxuICBkZXN0cnVjdG9yLFxuICBleHBlY3QsXG4gIGlzRHJvcCxcbiAgTGlua2VkTGlzdCxcbiAgTGlzdFNsaWNlLFxuICBPcHRpb24sXG4gIFN0YWNrLFxuICBhc3NlcnQsXG59IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgJGZwLFxuICAkcGMsXG4gICRzMCxcbiAgJHMxLFxuICAkc3AsXG4gICR0MCxcbiAgJHQxLFxuICAkdjAsXG4gIGlzTG93TGV2ZWxSZWdpc3RlcixcbiAgTWFjaGluZVJlZ2lzdGVyLFxuICBSZWdpc3RlcixcbiAgU3lzY2FsbFJlZ2lzdGVyLFxufSBmcm9tICdAZ2xpbW1lci92bSc7XG5pbXBvcnQgeyBDaGVja051bWJlciwgY2hlY2sgfSBmcm9tICdAZ2xpbW1lci9kZWJ1Zyc7XG5pbXBvcnQgeyB1bndyYXBIYW5kbGUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IGNvbWJpbmVTbGljZSB9IGZyb20gJy4uL3V0aWxzL3RhZ3MnO1xuaW1wb3J0IHsgRGlkTW9kaWZ5T3Bjb2RlLCBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSwgTGFiZWxPcGNvZGUgfSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcbmltcG9ydCB7IFNjb3BlSW1wbCB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBEZWJ1Z1N0YXRlLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgVU5ERUZJTkVEX1JFRkVSRU5DRSB9IGZyb20gJy4uL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHsgQVJHUywgQ09OU1RBTlRTLCBERVNUUlVDVE9SX1NUQUNLLCBIRUFQLCBJTk5FUl9WTSwgUkVHSVNURVJTLCBTVEFDS1MgfSBmcm9tICcuLi9zeW1ib2xzJztcbmltcG9ydCB7IFZNQXJndW1lbnRzSW1wbCB9IGZyb20gJy4vYXJndW1lbnRzJztcbmltcG9ydCBMb3dMZXZlbFZNIGZyb20gJy4vbG93LWxldmVsJztcbmltcG9ydCBSZW5kZXJSZXN1bHRJbXBsIGZyb20gJy4vcmVuZGVyLXJlc3VsdCc7XG5pbXBvcnQgRXZhbHVhdGlvblN0YWNrSW1wbCwgeyBFdmFsdWF0aW9uU3RhY2sgfSBmcm9tICcuL3N0YWNrJztcbmltcG9ydCB7XG4gIEJsb2NrT3Bjb2RlLFxuICBMaXN0QmxvY2tPcGNvZGUsXG4gIFJlc3VtYWJsZVZNU3RhdGUsXG4gIFJlc3VtYWJsZVZNU3RhdGVJbXBsLFxuICBUcnlPcGNvZGUsXG4gIFZNU3RhdGUsXG59IGZyb20gJy4vdXBkYXRlJztcblxuLyoqXG4gKiBUaGlzIGludGVyZmFjZSBpcyB1c2VkIGJ5IGludGVybmFsIG9wY29kZXMsIGFuZCBpcyBtb3JlIHN0YWJsZSB0aGFuXG4gKiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEFwcGVuZCBWTSBpdHNlbGYuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYWxWTTxDIGV4dGVuZHMgSml0T3JBb3RCbG9jayA9IEppdE9yQW90QmxvY2s+IHtcbiAgcmVhZG9ubHkgW0NPTlNUQU5UU106IFJ1bnRpbWVDb25zdGFudHM7XG4gIHJlYWRvbmx5IFtBUkdTXTogVk1Bcmd1bWVudHNJbXBsO1xuXG4gIHJlYWRvbmx5IGVudjogRW52aXJvbm1lbnQ7XG4gIHJlYWRvbmx5IHN0YWNrOiBFdmFsdWF0aW9uU3RhY2s7XG4gIHJlYWRvbmx5IHJ1bnRpbWU6IFJ1bnRpbWVDb250ZXh0O1xuXG4gIGxvYWRWYWx1ZShyZWdpc3RlcjogTWFjaGluZVJlZ2lzdGVyLCB2YWx1ZTogbnVtYmVyKTogdm9pZDtcbiAgbG9hZFZhbHVlKHJlZ2lzdGVyOiBSZWdpc3RlciwgdmFsdWU6IHVua25vd24pOiB2b2lkO1xuICBsb2FkVmFsdWUocmVnaXN0ZXI6IFJlZ2lzdGVyIHwgTWFjaGluZVJlZ2lzdGVyLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG5cbiAgZmV0Y2hWYWx1ZShyZWdpc3RlcjogTWFjaGluZVJlZ2lzdGVyLnJhIHwgTWFjaGluZVJlZ2lzdGVyLnBjKTogbnVtYmVyO1xuICAvLyBUT0RPOiBTb21ldGhpbmcgYmV0dGVyIHRoYW4gYSB0eXBlIGFzc2VydGlvbj9cbiAgZmV0Y2hWYWx1ZTxUPihyZWdpc3RlcjogUmVnaXN0ZXIpOiBUO1xuICBmZXRjaFZhbHVlKHJlZ2lzdGVyOiBSZWdpc3Rlcik6IHVua25vd247XG5cbiAgbG9hZChyZWdpc3RlcjogUmVnaXN0ZXIpOiB2b2lkO1xuICBmZXRjaChyZWdpc3RlcjogUmVnaXN0ZXIpOiB2b2lkO1xuXG4gIHNjb3BlKCk6IFNjb3BlPEM+O1xuICBlbGVtZW50cygpOiBFbGVtZW50QnVpbGRlcjtcblxuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8dW5rbm93bj47XG5cbiAgdXBkYXRlV2l0aChvcGNvZGU6IFVwZGF0aW5nT3Bjb2RlKTogdm9pZDtcblxuICBhc3NvY2lhdGVEZXN0cm95YWJsZShkOiBTeW1ib2xEZXN0cm95YWJsZSB8IERlc3Ryb3lhYmxlKTogdm9pZDtcblxuICBiZWdpbkNhY2hlR3JvdXAoKTogdm9pZDtcbiAgY29tbWl0Q2FjaGVHcm91cCgpOiB2b2lkO1xuXG4gIC8vLyBJdGVyYXRpb24gLy8vXG5cbiAgZW50ZXJMaXN0KG9mZnNldDogbnVtYmVyKTogdm9pZDtcbiAgZXhpdExpc3QoKTogdm9pZDtcbiAgaXRlcmF0ZShtZW1vOiBQYXRoUmVmZXJlbmNlPHVua25vd24+LCBpdGVtOiBQYXRoUmVmZXJlbmNlPHVua25vd24+KTogVHJ5T3Bjb2RlO1xuICBlbnRlckl0ZW0oa2V5OiB1bmtub3duLCBvcGNvZGU6IFRyeU9wY29kZSk6IHZvaWQ7XG5cbiAgcHVzaFJvb3RTY29wZShzaXplOiBudW1iZXIpOiBQYXJ0aWFsU2NvcGU8Qz47XG4gIHB1c2hDaGlsZFNjb3BlKCk6IHZvaWQ7XG4gIHBvcFNjb3BlKCk6IHZvaWQ7XG4gIHB1c2hTY29wZShzY29wZTogU2NvcGU8Qz4pOiB2b2lkO1xuXG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGU7XG4gIGJpbmREeW5hbWljU2NvcGUobmFtZXM6IG51bWJlcltdKTogdm9pZDtcbiAgcHVzaER5bmFtaWNTY29wZSgpOiB2b2lkO1xuICBwb3BEeW5hbWljU2NvcGUoKTogdm9pZDtcblxuICBlbnRlcihhcmdzOiBudW1iZXIpOiB2b2lkO1xuICBleGl0KCk6IHZvaWQ7XG5cbiAgZ290byhwYzogbnVtYmVyKTogdm9pZDtcbiAgY2FsbChoYW5kbGU6IG51bWJlcik6IHZvaWQ7XG4gIHB1c2hGcmFtZSgpOiB2b2lkO1xuXG4gIHJlZmVyZW5jZUZvclN5bWJvbChzeW1ib2w6IG51bWJlcik6IFBhdGhSZWZlcmVuY2U8dW5rbm93bj47XG5cbiAgZXhlY3V0ZShpbml0aWFsaXplPzogKHZtOiB0aGlzKSA9PiB2b2lkKTogUmVuZGVyUmVzdWx0O1xuICBwdXNoVXBkYXRpbmcobGlzdD86IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KTogdm9pZDtcbiAgbmV4dCgpOiBSaWNoSXRlcmF0b3JSZXN1bHQ8bnVsbCwgUmVuZGVyUmVzdWx0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbEppdFZNIGV4dGVuZHMgSW50ZXJuYWxWTTxDb21waWxhYmxlQmxvY2s+IHtcbiAgY29tcGlsZShibG9jazogQ29tcGlsYWJsZVRlbXBsYXRlKTogbnVtYmVyO1xuICByZWFkb25seSBydW50aW1lOiBKaXRSdW50aW1lQ29udGV4dDtcbiAgcmVhZG9ubHkgY29udGV4dDogU3ludGF4Q29tcGlsYXRpb25Db250ZXh0O1xufVxuXG5jbGFzcyBTdGFja3M8QyBleHRlbmRzIEppdE9yQW90QmxvY2s+IHtcbiAgcmVhZG9ubHkgc2NvcGUgPSBuZXcgU3RhY2s8U2NvcGU8Qz4+KCk7XG4gIHJlYWRvbmx5IGR5bmFtaWNTY29wZSA9IG5ldyBTdGFjazxEeW5hbWljU2NvcGU+KCk7XG4gIHJlYWRvbmx5IHVwZGF0aW5nID0gbmV3IFN0YWNrPExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+PigpO1xuICByZWFkb25seSBjYWNoZSA9IG5ldyBTdGFjazxPcHRpb248VXBkYXRpbmdPcGNvZGU+PigpO1xuICByZWFkb25seSBsaXN0ID0gbmV3IFN0YWNrPExpc3RCbG9ja09wY29kZT4oKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYWJzdHJhY3QgY2xhc3MgVk08QyBleHRlbmRzIEppdE9yQW90QmxvY2s+IGltcGxlbWVudHMgUHVibGljVk0sIEludGVybmFsVk08Qz4ge1xuICBwcml2YXRlIHJlYWRvbmx5IFtTVEFDS1NdID0gbmV3IFN0YWNrczxDPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IFtIRUFQXTogUnVudGltZUhlYXA7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJ1Y3Rvcjogb2JqZWN0O1xuICBwcml2YXRlIHJlYWRvbmx5IFtERVNUUlVDVE9SX1NUQUNLXSA9IG5ldyBTdGFjazxvYmplY3Q+KCk7XG4gIHJlYWRvbmx5IFtDT05TVEFOVFNdOiBSdW50aW1lQ29uc3RhbnRzO1xuICByZWFkb25seSBbQVJHU106IFZNQXJndW1lbnRzSW1wbDtcbiAgcmVhZG9ubHkgW0lOTkVSX1ZNXTogTG93TGV2ZWxWTTtcblxuICBnZXQgc3RhY2soKTogRXZhbHVhdGlvblN0YWNrIHtcbiAgICByZXR1cm4gdGhpc1tJTk5FUl9WTV0uc3RhY2sgYXMgRXZhbHVhdGlvblN0YWNrO1xuICB9XG5cbiAgY3VycmVudEJsb2NrKCk6IExpdmVCbG9jayB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudHMoKS5ibG9jaygpO1xuICB9XG5cbiAgLyogUmVnaXN0ZXJzICovXG5cbiAgZ2V0IHBjKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXNbSU5ORVJfVk1dLmZldGNoUmVnaXN0ZXIoJHBjKTtcbiAgfVxuXG4gIHB1YmxpYyBzMDogdW5rbm93biA9IG51bGw7XG4gIHB1YmxpYyBzMTogdW5rbm93biA9IG51bGw7XG4gIHB1YmxpYyB0MDogdW5rbm93biA9IG51bGw7XG4gIHB1YmxpYyB0MTogdW5rbm93biA9IG51bGw7XG4gIHB1YmxpYyB2MDogdW5rbm93biA9IG51bGw7XG5cbiAgLy8gRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXIgb250byB0aGUgc3RhY2tcbiAgZmV0Y2gocmVnaXN0ZXI6IFN5c2NhbGxSZWdpc3Rlcik6IHZvaWQge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLmZldGNoVmFsdWUocmVnaXN0ZXIpKTtcbiAgfVxuXG4gIC8vIExvYWQgYSB2YWx1ZSBmcm9tIHRoZSBzdGFjayBpbnRvIGEgcmVnaXN0ZXJcbiAgbG9hZChyZWdpc3RlcjogU3lzY2FsbFJlZ2lzdGVyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5zdGFjay5wb3AoKTtcblxuICAgIHRoaXMubG9hZFZhbHVlKHJlZ2lzdGVyLCB2YWx1ZSk7XG4gIH1cblxuICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlclxuICBmZXRjaFZhbHVlKHJlZ2lzdGVyOiBNYWNoaW5lUmVnaXN0ZXIpOiBudW1iZXI7XG4gIGZldGNoVmFsdWU8VD4ocmVnaXN0ZXI6IFJlZ2lzdGVyKTogVDtcbiAgZmV0Y2hWYWx1ZShyZWdpc3RlcjogUmVnaXN0ZXIgfCBNYWNoaW5lUmVnaXN0ZXIpOiB1bmtub3duIHtcbiAgICBpZiAoaXNMb3dMZXZlbFJlZ2lzdGVyKHJlZ2lzdGVyKSkge1xuICAgICAgcmV0dXJuIHRoaXNbSU5ORVJfVk1dLmZldGNoUmVnaXN0ZXIocmVnaXN0ZXIpO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVnaXN0ZXIpIHtcbiAgICAgIGNhc2UgJHMwOlxuICAgICAgICByZXR1cm4gdGhpcy5zMDtcbiAgICAgIGNhc2UgJHMxOlxuICAgICAgICByZXR1cm4gdGhpcy5zMTtcbiAgICAgIGNhc2UgJHQwOlxuICAgICAgICByZXR1cm4gdGhpcy50MDtcbiAgICAgIGNhc2UgJHQxOlxuICAgICAgICByZXR1cm4gdGhpcy50MTtcbiAgICAgIGNhc2UgJHYwOlxuICAgICAgICByZXR1cm4gdGhpcy52MDtcbiAgICB9XG4gIH1cblxuICAvLyBMb2FkIGEgdmFsdWUgaW50byBhIHJlZ2lzdGVyXG5cbiAgbG9hZFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3RlciB8IE1hY2hpbmVSZWdpc3RlciwgdmFsdWU6IFQpOiB2b2lkIHtcbiAgICBpZiAoaXNMb3dMZXZlbFJlZ2lzdGVyKHJlZ2lzdGVyKSkge1xuICAgICAgdGhpc1tJTk5FUl9WTV0ubG9hZFJlZ2lzdGVyKHJlZ2lzdGVyLCAodmFsdWUgYXMgYW55KSBhcyBudW1iZXIpO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVnaXN0ZXIpIHtcbiAgICAgIGNhc2UgJHMwOlxuICAgICAgICB0aGlzLnMwID0gdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAkczE6XG4gICAgICAgIHRoaXMuczEgPSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICR0MDpcbiAgICAgICAgdGhpcy50MCA9IHZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJHQxOlxuICAgICAgICB0aGlzLnQxID0gdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAkdjA6XG4gICAgICAgIHRoaXMudjAgPSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1pZ3JhdGVkIHRvIElubmVyXG4gICAqL1xuXG4gIC8vIFN0YXJ0IGEgbmV3IGZyYW1lIGFuZCBzYXZlICRyYSBhbmQgJGZwIG9uIHRoZSBzdGFja1xuICBwdXNoRnJhbWUoKSB7XG4gICAgdGhpc1tJTk5FUl9WTV0ucHVzaEZyYW1lKCk7XG4gIH1cblxuICAvLyBSZXN0b3JlICRyYSwgJHNwIGFuZCAkZnBcbiAgcG9wRnJhbWUoKSB7XG4gICAgdGhpc1tJTk5FUl9WTV0ucG9wRnJhbWUoKTtcbiAgfVxuXG4gIC8vIEp1bXAgdG8gYW4gYWRkcmVzcyBpbiBgcHJvZ3JhbWBcbiAgZ290byhvZmZzZXQ6IG51bWJlcikge1xuICAgIHRoaXNbSU5ORVJfVk1dLmdvdG8ob2Zmc2V0KTtcbiAgfVxuXG4gIC8vIFNhdmUgJHBjIGludG8gJHJhLCB0aGVuIGp1bXAgdG8gYSBuZXcgYWRkcmVzcyBpbiBgcHJvZ3JhbWAgKGphbCBpbiBNSVBTKVxuICBjYWxsKGhhbmRsZTogbnVtYmVyKSB7XG4gICAgdGhpc1tJTk5FUl9WTV0uY2FsbChoYW5kbGUpO1xuICB9XG5cbiAgLy8gUHV0IGEgc3BlY2lmaWMgYHByb2dyYW1gIGFkZHJlc3MgaW4gJHJhXG4gIHJldHVyblRvKG9mZnNldDogbnVtYmVyKSB7XG4gICAgdGhpc1tJTk5FUl9WTV0ucmV0dXJuVG8ob2Zmc2V0KTtcbiAgfVxuXG4gIC8vIFJldHVybiB0byB0aGUgYHByb2dyYW1gIGFkZHJlc3Mgc3RvcmVkIGluICRyYVxuICByZXR1cm4oKSB7XG4gICAgdGhpc1tJTk5FUl9WTV0ucmV0dXJuKCk7XG4gIH1cblxuICAvKipcbiAgICogRW5kIG9mIG1pZ3JhdGVkLlxuICAgKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBydW50aW1lOiBSdW50aW1lQ29udGV4dCxcbiAgICB7IHBjLCBzY29wZSwgZHluYW1pY1Njb3BlLCBzdGFjayB9OiBWTVN0YXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFN0YWNrOiBFbGVtZW50QnVpbGRlclxuICApIHtcbiAgICBsZXQgZXZhbFN0YWNrID0gRXZhbHVhdGlvblN0YWNrSW1wbC5yZXN0b3JlKHN0YWNrKTtcblxuICAgIGFzc2VydCh0eXBlb2YgcGMgPT09ICdudW1iZXInLCAncGMgaXMgYSBudW1iZXInKTtcblxuICAgIGV2YWxTdGFja1tSRUdJU1RFUlNdWyRwY10gPSBwYztcbiAgICBldmFsU3RhY2tbUkVHSVNURVJTXVskc3BdID0gc3RhY2subGVuZ3RoIC0gMTtcbiAgICBldmFsU3RhY2tbUkVHSVNURVJTXVskZnBdID0gLTE7XG5cbiAgICB0aGlzW0hFQVBdID0gdGhpcy5wcm9ncmFtLmhlYXA7XG4gICAgdGhpc1tDT05TVEFOVFNdID0gdGhpcy5wcm9ncmFtLmNvbnN0YW50cztcbiAgICB0aGlzLmVsZW1lbnRTdGFjayA9IGVsZW1lbnRTdGFjaztcbiAgICB0aGlzW1NUQUNLU10uc2NvcGUucHVzaChzY29wZSk7XG4gICAgdGhpc1tTVEFDS1NdLmR5bmFtaWNTY29wZS5wdXNoKGR5bmFtaWNTY29wZSk7XG4gICAgdGhpc1tBUkdTXSA9IG5ldyBWTUFyZ3VtZW50c0ltcGwoKTtcbiAgICB0aGlzW0lOTkVSX1ZNXSA9IG5ldyBMb3dMZXZlbFZNKFxuICAgICAgZXZhbFN0YWNrLFxuICAgICAgdGhpc1tIRUFQXSxcbiAgICAgIHJ1bnRpbWUucHJvZ3JhbSxcbiAgICAgIHtcbiAgICAgICAgZGVidWdCZWZvcmU6IChvcGNvZGU6IFJ1bnRpbWVPcEltcGwpOiBEZWJ1Z1N0YXRlID0+IHtcbiAgICAgICAgICByZXR1cm4gQVBQRU5EX09QQ09ERVMuZGVidWdCZWZvcmUodGhpcywgb3Bjb2RlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBkZWJ1Z0FmdGVyOiAoc3RhdGU6IERlYnVnU3RhdGUpOiB2b2lkID0+IHtcbiAgICAgICAgICBBUFBFTkRfT1BDT0RFUy5kZWJ1Z0FmdGVyKHRoaXMsIHN0YXRlKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBldmFsU3RhY2tbUkVHSVNURVJTXVxuICAgICk7XG5cbiAgICB0aGlzLmRlc3RydWN0b3IgPSB7fTtcbiAgICB0aGlzW0RFU1RSVUNUT1JfU1RBQ0tdLnB1c2godGhpcy5kZXN0cnVjdG9yKTtcbiAgfVxuXG4gIGdldCBwcm9ncmFtKCk6IFJ1bnRpbWVQcm9ncmFtIHtcbiAgICByZXR1cm4gdGhpcy5ydW50aW1lLnByb2dyYW07XG4gIH1cblxuICBnZXQgZW52KCk6IEVudmlyb25tZW50IHtcbiAgICByZXR1cm4gdGhpcy5ydW50aW1lLmVudjtcbiAgfVxuXG4gIGNhcHR1cmVTdGF0ZShhcmdzOiBudW1iZXIsIHBjID0gdGhpc1tJTk5FUl9WTV0uZmV0Y2hSZWdpc3RlcigkcGMpKTogVk1TdGF0ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBjLFxuICAgICAgZHluYW1pY1Njb3BlOiB0aGlzLmR5bmFtaWNTY29wZSgpLFxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGUoKSxcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLmNhcHR1cmUoYXJncyksXG4gICAgfTtcbiAgfVxuXG4gIGFic3RyYWN0IGNhcHR1cmUoYXJnczogbnVtYmVyLCBwYz86IG51bWJlcik6IFJlc3VtYWJsZVZNU3RhdGU8SW50ZXJuYWxWTT47XG5cbiAgYmVnaW5DYWNoZUdyb3VwKCkge1xuICAgIHRoaXNbU1RBQ0tTXS5jYWNoZS5wdXNoKHRoaXMudXBkYXRpbmcoKS50YWlsKCkpO1xuICB9XG5cbiAgY29tbWl0Q2FjaGVHcm91cCgpIHtcbiAgICBsZXQgRU5EID0gbmV3IExhYmVsT3Bjb2RlKCdFTkQnKTtcblxuICAgIGxldCBvcGNvZGVzID0gdGhpcy51cGRhdGluZygpO1xuICAgIGxldCBtYXJrZXIgPSB0aGlzW1NUQUNLU10uY2FjaGUucG9wKCk7XG4gICAgbGV0IGhlYWQgPSBtYXJrZXIgPyBvcGNvZGVzLm5leHROb2RlKG1hcmtlcikgOiBvcGNvZGVzLmhlYWQoKTtcbiAgICBsZXQgdGFpbCA9IG9wY29kZXMudGFpbCgpO1xuICAgIGxldCB0YWcgPSBjb21iaW5lU2xpY2UobmV3IExpc3RTbGljZShoZWFkLCB0YWlsKSk7XG5cbiAgICBsZXQgZ3VhcmQgPSBuZXcgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUodGFnLCBFTkQpO1xuXG4gICAgb3Bjb2Rlcy5pbnNlcnRCZWZvcmUoZ3VhcmQsIGhlYWQpO1xuICAgIG9wY29kZXMuYXBwZW5kKG5ldyBEaWRNb2RpZnlPcGNvZGUoZ3VhcmQpKTtcbiAgICBvcGNvZGVzLmFwcGVuZChFTkQpO1xuICB9XG5cbiAgZW50ZXIoYXJnczogbnVtYmVyKSB7XG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCk7XG5cbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoYXJncyk7XG4gICAgbGV0IGJsb2NrID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuXG4gICAgbGV0IHRyeU9wY29kZSA9IG5ldyBUcnlPcGNvZGUoc3RhdGUsIHRoaXMucnVudGltZSwgYmxvY2ssIHVwZGF0aW5nKTtcblxuICAgIHRoaXMuZGlkRW50ZXIodHJ5T3Bjb2RlKTtcbiAgfVxuXG4gIGl0ZXJhdGUoXG4gICAgbWVtbzogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPixcbiAgICB2YWx1ZTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPlxuICApOiBUcnlPcGNvZGUge1xuICAgIGxldCBzdGFjayA9IHRoaXMuc3RhY2s7XG4gICAgc3RhY2sucHVzaCh2YWx1ZSk7XG4gICAgc3RhY2sucHVzaChtZW1vKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgyKTtcbiAgICBsZXQgYmxvY2sgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG5cbiAgICAvLyBsZXQgaXAgPSB0aGlzLmlwO1xuICAgIC8vIHRoaXMuaXAgPSBlbmQgKyA0O1xuICAgIC8vIHRoaXMuZnJhbWVzLnB1c2goaXApO1xuXG4gICAgcmV0dXJuIG5ldyBUcnlPcGNvZGUoc3RhdGUsIHRoaXMucnVudGltZSwgYmxvY2ssIG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpKTtcbiAgfVxuXG4gIGVudGVySXRlbShrZXk6IHN0cmluZywgb3Bjb2RlOiBUcnlPcGNvZGUpIHtcbiAgICB0aGlzLmxpc3RCbG9jaygpLm1hcC5zZXQoa2V5LCBvcGNvZGUpO1xuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgfVxuXG4gIGVudGVyTGlzdChvZmZzZXQ6IG51bWJlcikge1xuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PEJsb2NrT3Bjb2RlPigpO1xuXG4gICAgbGV0IGFkZHIgPSB0aGlzW0lOTkVSX1ZNXS50YXJnZXQob2Zmc2V0KTtcbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMCwgYWRkcik7XG4gICAgbGV0IGxpc3QgPSB0aGlzLmVsZW1lbnRzKCkucHVzaEJsb2NrTGlzdCh1cGRhdGluZyk7XG4gICAgbGV0IGFydGlmYWN0cyA9IHRoaXMuc3RhY2sucGVlazxSZWZlcmVuY2VJdGVyYXRvcj4oKS5hcnRpZmFjdHM7XG5cbiAgICBsZXQgb3Bjb2RlID0gbmV3IExpc3RCbG9ja09wY29kZShzdGF0ZSwgdGhpcy5ydW50aW1lLCBsaXN0LCB1cGRhdGluZywgYXJ0aWZhY3RzKTtcblxuICAgIHRoaXNbU1RBQ0tTXS5saXN0LnB1c2gob3Bjb2RlKTtcblxuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlkRW50ZXIob3Bjb2RlOiBCbG9ja09wY29kZSkge1xuICAgIHRoaXMuYXNzb2NpYXRlRGVzdHJ1Y3RvcihkZXN0cnVjdG9yKG9wY29kZSkpO1xuICAgIHRoaXNbREVTVFJVQ1RPUl9TVEFDS10ucHVzaChvcGNvZGUpO1xuICAgIHRoaXMudXBkYXRlV2l0aChvcGNvZGUpO1xuICAgIHRoaXMucHVzaFVwZGF0aW5nKG9wY29kZS5jaGlsZHJlbik7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXNbREVTVFJVQ1RPUl9TVEFDS10ucG9wKCk7XG4gICAgdGhpcy5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgdGhpcy5wb3BVcGRhdGluZygpO1xuXG4gICAgbGV0IHBhcmVudCA9IHRoaXMudXBkYXRpbmcoKS50YWlsKCkgYXMgQmxvY2tPcGNvZGU7XG5cbiAgICBwYXJlbnQuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gIH1cblxuICBleGl0TGlzdCgpIHtcbiAgICB0aGlzLmV4aXQoKTtcbiAgICB0aGlzW1NUQUNLU10ubGlzdC5wb3AoKTtcbiAgfVxuXG4gIHB1c2hVcGRhdGluZyhsaXN0ID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpOiB2b2lkIHtcbiAgICB0aGlzW1NUQUNLU10udXBkYXRpbmcucHVzaChsaXN0KTtcbiAgfVxuXG4gIHBvcFVwZGF0aW5nKCk6IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+IHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXNbU1RBQ0tTXS51cGRhdGluZy5wb3AoKSwgXCJjYW4ndCBwb3AgYW4gZW1wdHkgc3RhY2tcIik7XG4gIH1cblxuICB1cGRhdGVXaXRoKG9wY29kZTogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICB0aGlzLnVwZGF0aW5nKCkuYXBwZW5kKG9wY29kZSk7XG4gIH1cblxuICBsaXN0QmxvY2soKTogTGlzdEJsb2NrT3Bjb2RlIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXNbU1RBQ0tTXS5saXN0LmN1cnJlbnQsICdleHBlY3RlZCBhIGxpc3QgYmxvY2snKTtcbiAgfVxuXG4gIGFzc29jaWF0ZURlc3RydWN0b3IoY2hpbGQ6IERyb3ApOiB2b2lkIHtcbiAgICBpZiAoIWlzRHJvcChjaGlsZCkpIHJldHVybjtcbiAgICBsZXQgcGFyZW50ID0gZXhwZWN0KHRoaXNbREVTVFJVQ1RPUl9TVEFDS10uY3VycmVudCwgJ0V4cGVjdGVkIGRlc3RydWN0b3IgcGFyZW50Jyk7XG4gICAgYXNzb2NpYXRlRGVzdHJ1Y3RvcihwYXJlbnQsIGNoaWxkKTtcbiAgfVxuXG4gIGFzc29jaWF0ZURlc3Ryb3lhYmxlKGNoaWxkOiBTeW1ib2xEZXN0cm95YWJsZSB8IERlc3Ryb3lhYmxlKTogdm9pZCB7XG4gICAgdGhpcy5hc3NvY2lhdGVEZXN0cnVjdG9yKGRlc3RydWN0b3IoY2hpbGQpKTtcbiAgfVxuXG4gIHRyeVVwZGF0aW5nKCk6IE9wdGlvbjxMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPj4ge1xuICAgIHJldHVybiB0aGlzW1NUQUNLU10udXBkYXRpbmcuY3VycmVudDtcbiAgfVxuXG4gIHVwZGF0aW5nKCk6IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+IHtcbiAgICByZXR1cm4gZXhwZWN0KFxuICAgICAgdGhpc1tTVEFDS1NdLnVwZGF0aW5nLmN1cnJlbnQsXG4gICAgICAnZXhwZWN0ZWQgdXBkYXRpbmcgb3Bjb2RlIG9uIHRoZSB1cGRhdGluZyBvcGNvZGUgc3RhY2snXG4gICAgKTtcbiAgfVxuXG4gIGVsZW1lbnRzKCk6IEVsZW1lbnRCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50U3RhY2s7XG4gIH1cblxuICBzY29wZSgpOiBTY29wZTxDPiB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzW1NUQUNLU10uc2NvcGUuY3VycmVudCwgJ2V4cGVjdGVkIHNjb3BlIG9uIHRoZSBzY29wZSBzdGFjaycpO1xuICB9XG5cbiAgZHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZSB7XG4gICAgcmV0dXJuIGV4cGVjdChcbiAgICAgIHRoaXNbU1RBQ0tTXS5keW5hbWljU2NvcGUuY3VycmVudCxcbiAgICAgICdleHBlY3RlZCBkeW5hbWljIHNjb3BlIG9uIHRoZSBkeW5hbWljIHNjb3BlIHN0YWNrJ1xuICAgICk7XG4gIH1cblxuICBwdXNoQ2hpbGRTY29wZSgpIHtcbiAgICB0aGlzW1NUQUNLU10uc2NvcGUucHVzaCh0aGlzLnNjb3BlKCkuY2hpbGQoKSk7XG4gIH1cblxuICBwdXNoRHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZSB7XG4gICAgbGV0IGNoaWxkID0gdGhpcy5keW5hbWljU2NvcGUoKS5jaGlsZCgpO1xuICAgIHRoaXNbU1RBQ0tTXS5keW5hbWljU2NvcGUucHVzaChjaGlsZCk7XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9XG5cbiAgcHVzaFJvb3RTY29wZShzaXplOiBudW1iZXIpOiBQYXJ0aWFsU2NvcGU8Qz4ge1xuICAgIGxldCBzY29wZSA9IFNjb3BlSW1wbC5zaXplZDxDPihzaXplKTtcbiAgICB0aGlzW1NUQUNLU10uc2NvcGUucHVzaChzY29wZSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcHVzaFNjb3BlKHNjb3BlOiBTY29wZTxDPikge1xuICAgIHRoaXNbU1RBQ0tTXS5zY29wZS5wdXNoKHNjb3BlKTtcbiAgfVxuXG4gIHBvcFNjb3BlKCkge1xuICAgIHRoaXNbU1RBQ0tTXS5zY29wZS5wb3AoKTtcbiAgfVxuXG4gIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzW1NUQUNLU10uZHluYW1pY1Njb3BlLnBvcCgpO1xuICB9XG5cbiAgLy8vIFNDT1BFIEhFTFBFUlNcblxuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTZWxmKCk7XG4gIH1cblxuICByZWZlcmVuY2VGb3JTeW1ib2woc3ltYm9sOiBudW1iZXIpOiBQYXRoUmVmZXJlbmNlPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFN5bWJvbChzeW1ib2wpO1xuICB9XG5cbiAgLy8vIEVYRUNVVElPTlxuXG4gIGV4ZWN1dGUoaW5pdGlhbGl6ZT86ICh2bTogdGhpcykgPT4gdm9pZCk6IFJlbmRlclJlc3VsdCB7XG4gICAgaWYgKExPQ0FMX1NIT1VMRF9MT0cpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBFWEVDVVRJTkcgRlJPTSAke3RoaXNbSU5ORVJfVk1dLmZldGNoUmVnaXN0ZXIoJHBjKX1gKTtcbiAgICB9XG5cbiAgICBpZiAoaW5pdGlhbGl6ZSkgaW5pdGlhbGl6ZSh0aGlzKTtcblxuICAgIGxldCByZXN1bHQ6IFJpY2hJdGVyYXRvclJlc3VsdDxudWxsLCBSZW5kZXJSZXN1bHQ+O1xuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMubmV4dCgpO1xuICAgICAgaWYgKHJlc3VsdC5kb25lKSBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LnZhbHVlO1xuICB9XG5cbiAgbmV4dCgpOiBSaWNoSXRlcmF0b3JSZXN1bHQ8bnVsbCwgUmVuZGVyUmVzdWx0PiB7XG4gICAgbGV0IHsgZW52LCBlbGVtZW50U3RhY2sgfSA9IHRoaXM7XG4gICAgbGV0IG9wY29kZSA9IHRoaXNbSU5ORVJfVk1dLm5leHRTdGF0ZW1lbnQoKTtcbiAgICBsZXQgcmVzdWx0OiBSaWNoSXRlcmF0b3JSZXN1bHQ8bnVsbCwgUmVuZGVyUmVzdWx0PjtcbiAgICBpZiAob3Bjb2RlICE9PSBudWxsKSB7XG4gICAgICB0aGlzW0lOTkVSX1ZNXS5ldmFsdWF0ZU91dGVyKG9wY29kZSwgdGhpcyk7XG4gICAgICByZXN1bHQgPSB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogbnVsbCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBVbmxvYWQgdGhlIHN0YWNrXG4gICAgICB0aGlzLnN0YWNrLnJlc2V0KCk7XG5cbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgZG9uZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IG5ldyBSZW5kZXJSZXN1bHRJbXBsKFxuICAgICAgICAgIGVudixcbiAgICAgICAgICB0aGlzLnBvcFVwZGF0aW5nKCksXG4gICAgICAgICAgZWxlbWVudFN0YWNrLnBvcEJsb2NrKCksXG4gICAgICAgICAgdGhpcy5kZXN0cnVjdG9yXG4gICAgICAgICksXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYmluZER5bmFtaWNTY29wZShuYW1lczogbnVtYmVyW10pIHtcbiAgICBsZXQgc2NvcGUgPSB0aGlzLmR5bmFtaWNTY29wZSgpO1xuXG4gICAgZm9yIChsZXQgaSA9IG5hbWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBsZXQgbmFtZSA9IHRoaXNbQ09OU1RBTlRTXS5nZXRTdHJpbmcobmFtZXNbaV0pO1xuICAgICAgc2NvcGUuc2V0KG5hbWUsIHRoaXMuc3RhY2sucG9wPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4+KCkpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB2bVN0YXRlPEMgZXh0ZW5kcyBKaXRPckFvdEJsb2NrPihcbiAgcGM6IG51bWJlcixcbiAgc2NvcGU6IFNjb3BlPEM+ID0gU2NvcGVJbXBsLnJvb3Q8Qz4oVU5ERUZJTkVEX1JFRkVSRU5DRSwgMCksXG4gIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlXG4pIHtcbiAgcmV0dXJuIHtcbiAgICBwYyxcbiAgICBzY29wZSxcbiAgICBkeW5hbWljU2NvcGUsXG4gICAgc3RhY2s6IFtdLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pbmltYWxJbml0T3B0aW9ucyB7XG4gIGhhbmRsZTogbnVtYmVyO1xuICB0cmVlQnVpbGRlcjogRWxlbWVudEJ1aWxkZXI7XG4gIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluaXRPcHRpb25zIGV4dGVuZHMgTWluaW1hbEluaXRPcHRpb25zIHtcbiAgc2VsZjogUGF0aFJlZmVyZW5jZTx1bmtub3duPjtcbn1cblxuZXhwb3J0IGNsYXNzIEFvdFZNIGV4dGVuZHMgVk08bnVtYmVyPiBpbXBsZW1lbnRzIEludGVybmFsVk08bnVtYmVyPiB7XG4gIHN0YXRpYyBlbXB0eShcbiAgICBydW50aW1lOiBBb3RSdW50aW1lQ29udGV4dCxcbiAgICB7IGhhbmRsZSwgdHJlZUJ1aWxkZXIsIGR5bmFtaWNTY29wZSB9OiBNaW5pbWFsSW5pdE9wdGlvbnNcbiAgKTogSW50ZXJuYWxWTTxudW1iZXI+IHtcbiAgICBsZXQgdm0gPSBpbml0QU9UKFxuICAgICAgcnVudGltZSxcbiAgICAgIHZtU3RhdGUoXG4gICAgICAgIHJ1bnRpbWUucHJvZ3JhbS5oZWFwLmdldGFkZHIoaGFuZGxlKSxcbiAgICAgICAgU2NvcGVJbXBsLnJvb3Q8bnVtYmVyPihVTkRFRklORURfUkVGRVJFTkNFLCAwKSxcbiAgICAgICAgZHluYW1pY1Njb3BlXG4gICAgICApLFxuICAgICAgdHJlZUJ1aWxkZXJcbiAgICApO1xuICAgIHZtLnB1c2hVcGRhdGluZygpO1xuICAgIHJldHVybiB2bTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0aWFsKFxuICAgIHJ1bnRpbWU6IEFvdFJ1bnRpbWVDb250ZXh0LFxuICAgIHsgaGFuZGxlLCBzZWxmLCB0cmVlQnVpbGRlciwgZHluYW1pY1Njb3BlIH06IEluaXRPcHRpb25zXG4gICkge1xuICAgIGxldCBzY29wZVNpemUgPSBydW50aW1lLnByb2dyYW0uaGVhcC5zY29wZXNpemVvZihoYW5kbGUpO1xuICAgIGxldCBzY29wZSA9IFNjb3BlSW1wbC5yb290KHNlbGYsIHNjb3BlU2l6ZSk7XG4gICAgbGV0IHBjID0gY2hlY2socnVudGltZS5wcm9ncmFtLmhlYXAuZ2V0YWRkcihoYW5kbGUpLCBDaGVja051bWJlcik7XG4gICAgbGV0IHN0YXRlID0gdm1TdGF0ZShwYywgc2NvcGUsIGR5bmFtaWNTY29wZSk7XG4gICAgbGV0IHZtID0gaW5pdEFPVChydW50aW1lLCBzdGF0ZSwgdHJlZUJ1aWxkZXIpO1xuICAgIHZtLnB1c2hVcGRhdGluZygpO1xuICAgIHJldHVybiB2bTtcbiAgfVxuXG4gIGNhcHR1cmUoYXJnczogbnVtYmVyLCBwYyA9IHRoaXNbSU5ORVJfVk1dLmZldGNoUmVnaXN0ZXIoJHBjKSk6IFJlc3VtYWJsZVZNU3RhdGU8QW90Vk0+IHtcbiAgICByZXR1cm4gbmV3IFJlc3VtYWJsZVZNU3RhdGVJbXBsKHRoaXMuY2FwdHVyZVN0YXRlKGFyZ3MsIHBjKSwgaW5pdEFPVCk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgVm1Jbml0Q2FsbGJhY2s8ViBleHRlbmRzIEludGVybmFsVk0gPSBJbnRlcm5hbFZNPiA9IChcbiAgdGhpczogdm9pZCxcbiAgcnVudGltZTogViBleHRlbmRzIEppdFZNID8gSml0UnVudGltZUNvbnRleHQgOiBBb3RSdW50aW1lQ29udGV4dCxcbiAgc3RhdGU6IFZNU3RhdGUsXG4gIGJ1aWxkZXI6IEVsZW1lbnRCdWlsZGVyXG4pID0+IFY7XG5cbmV4cG9ydCB0eXBlIEppdFZtSW5pdENhbGxiYWNrPFYgZXh0ZW5kcyBJbnRlcm5hbFZNPiA9IChcbiAgdGhpczogdm9pZCxcbiAgcnVudGltZTogSml0UnVudGltZUNvbnRleHQsXG4gIHN0YXRlOiBWTVN0YXRlLFxuICBidWlsZGVyOiBFbGVtZW50QnVpbGRlclxuKSA9PiBWO1xuXG5mdW5jdGlvbiBpbml0QU9UKHJ1bnRpbWU6IEFvdFJ1bnRpbWVDb250ZXh0LCBzdGF0ZTogVk1TdGF0ZSwgYnVpbGRlcjogRWxlbWVudEJ1aWxkZXIpOiBBb3RWTSB7XG4gIHJldHVybiBuZXcgQW90Vk0ocnVudGltZSwgc3RhdGUsIGJ1aWxkZXIpO1xufVxuXG5mdW5jdGlvbiBpbml0SklUKGNvbnRleHQ6IFN5bnRheENvbXBpbGF0aW9uQ29udGV4dCk6IEppdFZtSW5pdENhbGxiYWNrPEppdFZNPiB7XG4gIHJldHVybiAocnVudGltZSwgc3RhdGUsIGJ1aWxkZXIpID0+IG5ldyBKaXRWTShydW50aW1lLCBzdGF0ZSwgYnVpbGRlciwgY29udGV4dCk7XG59XG5cbmV4cG9ydCBjbGFzcyBKaXRWTSBleHRlbmRzIFZNPENvbXBpbGFibGVCbG9jaz4gaW1wbGVtZW50cyBJbnRlcm5hbEppdFZNIHtcbiAgc3RhdGljIGluaXRpYWwoXG4gICAgcnVudGltZTogSml0UnVudGltZUNvbnRleHQsXG4gICAgY29udGV4dDogU3ludGF4Q29tcGlsYXRpb25Db250ZXh0LFxuICAgIHsgaGFuZGxlLCBzZWxmLCBkeW5hbWljU2NvcGUsIHRyZWVCdWlsZGVyIH06IEluaXRPcHRpb25zXG4gICkge1xuICAgIGxldCBzY29wZVNpemUgPSBydW50aW1lLnByb2dyYW0uaGVhcC5zY29wZXNpemVvZihoYW5kbGUpO1xuICAgIGxldCBzY29wZSA9IFNjb3BlSW1wbC5yb290KHNlbGYsIHNjb3BlU2l6ZSk7XG4gICAgbGV0IHN0YXRlID0gdm1TdGF0ZShydW50aW1lLnByb2dyYW0uaGVhcC5nZXRhZGRyKGhhbmRsZSksIHNjb3BlLCBkeW5hbWljU2NvcGUpO1xuICAgIGxldCB2bSA9IGluaXRKSVQoY29udGV4dCkocnVudGltZSwgc3RhdGUsIHRyZWVCdWlsZGVyKTtcbiAgICB2bS5wdXNoVXBkYXRpbmcoKTtcbiAgICByZXR1cm4gdm07XG4gIH1cblxuICBzdGF0aWMgZW1wdHkoXG4gICAgcnVudGltZTogSml0UnVudGltZUNvbnRleHQsXG4gICAgeyBoYW5kbGUsIHRyZWVCdWlsZGVyLCBkeW5hbWljU2NvcGUgfTogTWluaW1hbEluaXRPcHRpb25zLFxuICAgIGNvbnRleHQ6IFN5bnRheENvbXBpbGF0aW9uQ29udGV4dFxuICApIHtcbiAgICBsZXQgdm0gPSBpbml0SklUKGNvbnRleHQpKFxuICAgICAgcnVudGltZSxcbiAgICAgIHZtU3RhdGUoXG4gICAgICAgIHJ1bnRpbWUucHJvZ3JhbS5oZWFwLmdldGFkZHIoaGFuZGxlKSxcbiAgICAgICAgU2NvcGVJbXBsLnJvb3Q8Q29tcGlsYWJsZUJsb2NrPihVTkRFRklORURfUkVGRVJFTkNFLCAwKSxcbiAgICAgICAgZHluYW1pY1Njb3BlXG4gICAgICApLFxuICAgICAgdHJlZUJ1aWxkZXJcbiAgICApO1xuICAgIHZtLnB1c2hVcGRhdGluZygpO1xuICAgIHJldHVybiB2bTtcbiAgfVxuXG4gIHJlYWRvbmx5IHJ1bnRpbWUhOiBKaXRSdW50aW1lQ29udGV4dDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBydW50aW1lOiBKaXRSdW50aW1lQ29udGV4dCxcbiAgICBzdGF0ZTogVk1TdGF0ZSxcbiAgICBlbGVtZW50U3RhY2s6IEVsZW1lbnRCdWlsZGVyLFxuICAgIHJlYWRvbmx5IGNvbnRleHQ6IFN5bnRheENvbXBpbGF0aW9uQ29udGV4dFxuICApIHtcbiAgICBzdXBlcihydW50aW1lLCBzdGF0ZSwgZWxlbWVudFN0YWNrKTtcbiAgfVxuXG4gIGNhcHR1cmUoYXJnczogbnVtYmVyLCBwYyA9IHRoaXNbSU5ORVJfVk1dLmZldGNoUmVnaXN0ZXIoJHBjKSk6IFJlc3VtYWJsZVZNU3RhdGU8Sml0Vk0+IHtcbiAgICByZXR1cm4gbmV3IFJlc3VtYWJsZVZNU3RhdGVJbXBsKHRoaXMuY2FwdHVyZVN0YXRlKGFyZ3MsIHBjKSwgdGhpcy5yZXN1bWUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXN1bWU6IFZtSW5pdENhbGxiYWNrPEppdFZNPiA9IGluaXRKSVQodGhpcy5jb250ZXh0KTtcblxuICBjb21waWxlKGJsb2NrOiBDb21waWxhYmxlVGVtcGxhdGUpOiBudW1iZXIge1xuICAgIGxldCBoYW5kbGUgPSB1bndyYXBIYW5kbGUoYmxvY2suY29tcGlsZSh0aGlzLmNvbnRleHQpKTtcblxuICAgIHJldHVybiBoYW5kbGU7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2FwcGVuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBMEJBOztBQVdBOztBQWdCQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBa0ZBLE1BQUEsTUFBQSxDQUFZO0FBQVosRUFBQSxXQUFBLEdBQUE7QUFDVyxTQUFBLEtBQUEsR0FBUSxJQUFSLFdBQVEsRUFBUjtBQUNBLFNBQUEsWUFBQSxHQUFlLElBQWYsV0FBZSxFQUFmO0FBQ0EsU0FBQSxRQUFBLEdBQVcsSUFBWCxXQUFXLEVBQVg7QUFDQSxTQUFBLEtBQUEsR0FBUSxJQUFSLFdBQVEsRUFBUjtBQUNBLFNBQUEsSUFBQSxHQUFPLElBQVAsV0FBTyxFQUFQO0FBQ1Y7O0FBTlc7O0FBUUUsTUFBQSxFQUFBLENBQWtCO0FBdUg5Qjs7O0FBSUEsRUFBQSxXQUFBLENBQUEsT0FBQSxFQUVFO0FBQUEsSUFBQSxFQUFBO0FBQUEsSUFBQSxLQUFBO0FBQUEsSUFBQSxZQUFBO0FBQTJCLElBQUE7QUFBM0IsR0FGRixFQUFBLFlBQUEsRUFHK0M7QUFGcEMsU0FBQSxPQUFBLEdBQUEsT0FBQTtBQUVRLFNBQUEsWUFBQSxHQUFBLFlBQUE7QUE3SEYsU0FBQSxFQUFBLElBQVcsSUFBWCxNQUFXLEVBQVg7QUFHQSxTQUFBLEVBQUEsSUFBcUIsSUFBckIsV0FBcUIsRUFBckI7QUFlVixTQUFBLEVBQUEsR0FBQSxJQUFBO0FBQ0EsU0FBQSxFQUFBLEdBQUEsSUFBQTtBQUNBLFNBQUEsRUFBQSxHQUFBLElBQUE7QUFDQSxTQUFBLEVBQUEsR0FBQSxJQUFBO0FBQ0EsU0FBQSxFQUFBLEdBQUEsSUFBQTs7QUF5R0wsUUFBSSxTQUFTLEdBQUcsZUFBQSxPQUFBLENBQWhCLEtBQWdCLENBQWhCOztBQUY2QyxhQUk3QyxrQkFBTyxPQUFBLEVBQUEs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YmxlVGVtcGxhdGUsXG4gIERlc3Ryb3lhYmxlLFxuICBEcm9wLFxuICBEeW5hbWljU2NvcGUsXG4gIEVudmlyb25tZW50LFxuICBKaXRPckFvdEJsb2NrLFxuICBQYXJ0aWFsU2NvcGUsXG4gIFJlbmRlclJlc3VsdCxcbiAgUmljaEl0ZXJhdG9yUmVzdWx0LFxuICBSdW50aW1lQ29udGV4dCxcbiAgUnVudGltZUNvbnN0YW50cyxcbiAgUnVudGltZUhlYXAsXG4gIFJ1bnRpbWVQcm9ncmFtLFxuICBTY29wZSxcbiAgU3ltYm9sRGVzdHJveWFibGUsXG4gIFN5bnRheENvbXBpbGF0aW9uQ29udGV4dCxcbiAgVk0gYXMgUHVibGljVk0sXG4gIEppdFJ1bnRpbWVDb250ZXh0LFxuICBBb3RSdW50aW1lQ29udGV4dCxcbiAgRWxlbWVudEJ1aWxkZXIsXG59IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTE9DQUxfU0hPVUxEX0xPRyB9IGZyb20gJ0BnbGltbWVyL2xvY2FsLWRlYnVnLWZsYWdzJztcbmltcG9ydCB7IFJ1bnRpbWVPcEltcGwgfSBmcm9tICdAZ2xpbW1lci9wcm9ncmFtJztcbmltcG9ydCB7IFBhdGhSZWZlcmVuY2UsIFJlZmVyZW5jZUl0ZXJhdG9yLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7XG4gIGFzc29jaWF0ZURlc3RydWN0b3IsXG4gIGRlc3RydWN0b3IsXG4gIGV4cGVjdCxcbiAgaXNEcm9wLFxuICBMaW5rZWRMaXN0LFxuICBMaXN0U2xpY2UsXG4gIE9wdGlvbixcbiAgU3RhY2ssXG4gIGFzc2VydCxcbn0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICAkZnAsXG4gICRwYyxcbiAgJHMwLFxuICAkczEsXG4gICRzcCxcbiAgJHQwLFxuICAkdDEsXG4gICR2MCxcbiAgaXNMb3dMZXZlbFJlZ2lzdGVyLFxuICBNYWNoaW5lUmVnaXN0ZXIsXG4gIFJlZ2lzdGVyLFxuICBTeXNjYWxsUmVnaXN0ZXIsXG59IGZyb20gJ0BnbGltbWVyL3ZtJztcbmltcG9ydCB7IENoZWNrTnVtYmVyLCBjaGVjayB9IGZyb20gJ0BnbGltbWVyL2RlYnVnJztcbmltcG9ydCB7IHVud3JhcEhhbmRsZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgY29tYmluZVNsaWNlIH0gZnJvbSAnLi4vdXRpbHMvdGFncyc7XG5pbXBvcnQgeyBEaWRNb2RpZnlPcGNvZGUsIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlLCBMYWJlbE9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgU2NvcGVJbXBsIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMsIERlYnVnU3RhdGUsIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBBUkdTLCBDT05TVEFOVFMsIERFU1RSVUNUT1JfU1RBQ0ssIEhFQVAsIElOTkVSX1ZNLCBSRUdJU1RFUlMsIFNUQUNLUyB9IGZyb20gJy4uL3N5bWJvbHMnO1xuaW1wb3J0IHsgVk1Bcmd1bWVudHNJbXBsIH0gZnJvbSAnLi9hcmd1bWVudHMnO1xuaW1wb3J0IExvd0xldmVsVk0gZnJvbSAnLi9sb3ctbGV2ZWwnO1xuaW1wb3J0IFJlbmRlclJlc3VsdEltcGwgZnJvbSAnLi9yZW5kZXItcmVzdWx0JztcbmltcG9ydCBFdmFsdWF0aW9uU3RhY2tJbXBsLCB7IEV2YWx1YXRpb25TdGFjayB9IGZyb20gJy4vc3RhY2snO1xuaW1wb3J0IHtcbiAgQmxvY2tPcGNvZGUsXG4gIExpc3RCbG9ja09wY29kZSxcbiAgUmVzdW1hYmxlVk1TdGF0ZSxcbiAgUmVzdW1hYmxlVk1TdGF0ZUltcGwsXG4gIFRyeU9wY29kZSxcbiAgVk1TdGF0ZSxcbn0gZnJvbSAnLi91cGRhdGUnO1xuXG4vKipcbiAqIFRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgYnkgaW50ZXJuYWwgb3Bjb2RlcywgYW5kIGlzIG1vcmUgc3RhYmxlIHRoYW5cbiAqIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQXBwZW5kIFZNIGl0c2VsZi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbFZNPEMgZXh0ZW5kcyBKaXRPckFvdEJsb2NrID0gSml0T3JBb3RCbG9jaz4ge1xuICByZWFkb25seSBbQ09OU1RBTlRTXTogUnVudGltZUNvbnN0YW50cztcbiAgcmVhZG9ubHkgW0FSR1NdOiBWTUFyZ3VtZW50c0ltcGw7XG5cbiAgcmVhZG9ubHkgZW52OiBFbnZpcm9ubWVudDtcbiAgcmVhZG9ubHkgc3RhY2s6IEV2YWx1YXRpb25TdGFjaztcbiAgcmVhZG9ubHkgcnVudGltZTogUnVudGltZUNvbnRleHQ7XG5cbiAgbG9hZFZhbHVlKHJlZ2lzdGVyOiBNYWNoaW5lUmVnaXN0ZXIsIHZhbHVlOiBudW1iZXIpOiB2b2lkO1xuICBsb2FkVmFsdWUocmVnaXN0ZXI6IFJlZ2lzdGVyLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIGxvYWRWYWx1ZShyZWdpc3RlcjogUmVnaXN0ZXIgfCBNYWNoaW5lUmVnaXN0ZXIsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcblxuICBmZXRjaFZhbHVlKHJlZ2lzdGVyOiBNYWNoaW5lUmVnaXN0ZXIucmEgfCBNYWNoaW5lUmVnaXN0ZXIucGMpOiBudW1iZXI7XG4gIC8vIFRPRE86IFNvbWV0aGluZyBiZXR0ZXIgdGhhbiBhIHR5cGUgYXNzZXJ0aW9uP1xuICBmZXRjaFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3Rlcik6IFQ7XG4gIGZldGNoVmFsdWUocmVnaXN0ZXI6IFJlZ2lzdGVyKTogdW5rbm93bjtcblxuICBsb2FkKHJlZ2lzdGVyOiBSZWdpc3Rlcik6IHZvaWQ7XG4gIGZldGNoKHJlZ2lzdGVyOiBSZWdpc3Rlcik6IHZvaWQ7XG5cbiAgc2NvcGUoKTogU2NvcGU8Qz47XG4gIGVsZW1lbnRzKCk6IEVsZW1lbnRCdWlsZGVyO1xuXG4gIGdldFNlbGYoKTogUGF0aFJlZmVyZW5jZTx1bmtub3duPjtcblxuICB1cGRhdGVXaXRoKG9wY29kZTogVXBkYXRpbmdPcGNvZGUpOiB2b2lkO1xuXG4gIGFzc29jaWF0ZURlc3Ryb3lhYmxlKGQ6IFN5bWJvbERlc3Ryb3lhYmxlIHwgRGVzdHJveWFibGUpOiB2b2lkO1xuXG4gIGJlZ2luQ2FjaGVHcm91cCgpOiB2b2lkO1xuICBjb21taXRDYWNoZUdyb3VwKCk6IHZvaWQ7XG5cbiAgLy8vIEl0ZXJhdGlvbiAvLy9cblxuICBlbnRlckxpc3Qob2Zmc2V0OiBudW1iZXIpOiB2b2lkO1xuICBleGl0TGlzdCgpOiB2b2lkO1xuICBpdGVyYXRlKG1lbW86IFBhdGhSZWZlcmVuY2U8dW5rbm93bj4sIGl0ZW06IFBhdGhSZWZlcmVuY2U8dW5rbm93bj4pOiBUcnlPcGNvZGU7XG4gIGVudGVySXRlbShrZXk6IHVua25vd24sIG9wY29kZTogVHJ5T3Bjb2RlKTogdm9pZDtcblxuICBwdXNoUm9vdFNjb3BlKHNpemU6IG51bWJlcik6IFBhcnRpYWxTY29wZTxDPjtcbiAgcHVzaENoaWxkU2NvcGUoKTogdm9pZDtcbiAgcG9wU2NvcGUoKTogdm9pZDtcbiAgcHVzaFNjb3BlKHNjb3BlOiBTY29wZTxDPik6IHZvaWQ7XG5cbiAgZHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZTtcbiAgYmluZER5bmFtaWNTY29wZShuYW1lczogbnVtYmVyW10pOiB2b2lkO1xuICBwdXNoRHluYW1pY1Njb3BlKCk6IHZvaWQ7XG4gIHBvcER5bmFtaWNTY29wZSgpOiB2b2lkO1xuXG4gIGVudGVyKGFyZ3M6IG51bWJlcik6IHZvaWQ7XG4gIGV4aXQoKTogdm9pZDtcblxuICBnb3RvKHBjOiBudW1iZXIpOiB2b2lkO1xuICBjYWxsKGhhbmRsZTogbnVtYmVyKTogdm9pZDtcbiAgcHVzaEZyYW1lKCk6IHZvaWQ7XG5cbiAgcmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbDogbnVtYmVyKTogUGF0aFJlZmVyZW5jZTx1bmtub3duPjtcblxuICBleGVjdXRlKGluaXRpYWxpemU/OiAodm06IHRoaXMpID0+IHZvaWQpOiBSZW5kZXJSZXN1bHQ7XG4gIHB1c2hVcGRhdGluZyhsaXN0PzogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4pOiB2b2lkO1xuICBuZXh0KCk6IFJpY2hJdGVyYXRvclJlc3VsdDxudWxsLCBSZW5kZXJSZXN1bHQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVybmFsSml0Vk0gZXh0ZW5kcyBJbnRlcm5hbFZNPENvbXBpbGFibGVCbG9jaz4ge1xuICBjb21waWxlKGJsb2NrOiBDb21waWxhYmxlVGVtcGxhdGUpOiBudW1iZXI7XG4gIHJlYWRvbmx5IHJ1bnRpbWU6IEppdFJ1bnRpbWVDb250ZXh0O1xuICByZWFkb25seSBjb250ZXh0OiBTeW50YXhDb21waWxhdGlvbkNvbnRleHQ7XG59XG5cbmNsYXNzIFN0YWNrczxDIGV4dGVuZHMgSml0T3JBb3RCbG9jaz4ge1xuICByZWFkb25seSBzY29wZSA9IG5ldyBTdGFjazxTY29wZTxDPj4oKTtcbiAgcmVhZG9ubHkgZHluYW1pY1Njb3BlID0gbmV3IFN0YWNrPER5bmFtaWNTY29wZT4oKTtcbiAgcmVhZG9ubHkgdXBkYXRpbmcgPSBuZXcgU3RhY2s8TGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4+KCk7XG4gIHJlYWRvbmx5IGNhY2hlID0gbmV3IFN0YWNrPE9wdGlvbjxVcGRhdGluZ09wY29kZT4+KCk7XG4gIHJlYWRvbmx5IGxpc3QgPSBuZXcgU3RhY2s8TGlzdEJsb2NrT3Bjb2RlPigpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhYnN0cmFjdCBjbGFzcyBWTTxDIGV4dGVuZHMgSml0T3JBb3RCbG9jaz4gaW1wbGVtZW50cyBQdWJsaWNWTSwgSW50ZXJuYWxWTTxDPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgW1NUQUNLU10gPSBuZXcgU3RhY2tzPEM+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgW0hFQVBdOiBSdW50aW1lSGVhcDtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cnVjdG9yOiBvYmplY3Q7XG4gIHByaXZhdGUgcmVhZG9ubHkgW0RFU1RSVUNUT1JfU1RBQ0tdID0gbmV3IFN0YWNrPG9iamVjdD4oKTtcbiAgcmVhZG9ubHkgW0NPTlNUQU5UU106IFJ1bnRpbWVDb25zdGFudHM7XG4gIHJlYWRvbmx5IFtBUkdTXTogVk1Bcmd1bWVudHNJbXBsO1xuICByZWFkb25seSBbSU5ORVJfVk1dOiBMb3dMZXZlbFZNO1xuXG4gIGdldCBzdGFjaygpOiBFdmFsdWF0aW9uU3RhY2sge1xuICAgIHJldHVybiB0aGlzW0lOTkVSX1ZNXS5zdGFjayBhcyBFdmFsdWF0aW9uU3RhY2s7XG4gIH1cblxuICAvKiBSZWdpc3RlcnMgKi9cblxuICBnZXQgcGMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpc1tJTk5FUl9WTV0uZmV0Y2hSZWdpc3RlcigkcGMpO1xuICB9XG5cbiAgcHVibGljIHMwOiB1bmtub3duID0gbnVsbDtcbiAgcHVibGljIHMxOiB1bmtub3duID0gbnVsbDtcbiAgcHVibGljIHQwOiB1bmtub3duID0gbnVsbDtcbiAgcHVibGljIHQxOiB1bmtub3duID0gbnVsbDtcbiAgcHVibGljIHYwOiB1bmtub3duID0gbnVsbDtcblxuICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlciBvbnRvIHRoZSBzdGFja1xuICBmZXRjaChyZWdpc3RlcjogU3lzY2FsbFJlZ2lzdGVyKTogdm9pZCB7XG4gICAgdGhpcy5zdGFjay5wdXNoKHRoaXMuZmV0Y2hWYWx1ZShyZWdpc3RlcikpO1xuICB9XG5cbiAgLy8gTG9hZCBhIHZhbHVlIGZyb20gdGhlIHN0YWNrIGludG8gYSByZWdpc3RlclxuICBsb2FkKHJlZ2lzdGVyOiBTeXNjYWxsUmVnaXN0ZXIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnN0YWNrLnBvcCgpO1xuXG4gICAgdGhpcy5sb2FkVmFsdWUocmVnaXN0ZXIsIHZhbHVlKTtcbiAgfVxuXG4gIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyXG4gIGZldGNoVmFsdWUocmVnaXN0ZXI6IE1hY2hpbmVSZWdpc3Rlcik6IG51bWJlcjtcbiAgZmV0Y2hWYWx1ZTxUPihyZWdpc3RlcjogUmVnaXN0ZXIpOiBUO1xuICBmZXRjaFZhbHVlKHJlZ2lzdGVyOiBSZWdpc3RlciB8IE1hY2hpbmVSZWdpc3Rlcik6IHVua25vd24ge1xuICAgIGlmIChpc0xvd0xldmVsUmVnaXN0ZXIocmVnaXN0ZXIpKSB7XG4gICAgICByZXR1cm4gdGhpc1tJTk5FUl9WTV0uZmV0Y2hSZWdpc3RlcihyZWdpc3Rlcik7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZWdpc3Rlcikge1xuICAgICAgY2FzZSAkczA6XG4gICAgICAgIHJldHVybiB0aGlzLnMwO1xuICAgICAgY2FzZSAkczE6XG4gICAgICAgIHJldHVybiB0aGlzLnMxO1xuICAgICAgY2FzZSAkdDA6XG4gICAgICAgIHJldHVybiB0aGlzLnQwO1xuICAgICAgY2FzZSAkdDE6XG4gICAgICAgIHJldHVybiB0aGlzLnQxO1xuICAgICAgY2FzZSAkdjA6XG4gICAgICAgIHJldHVybiB0aGlzLnYwO1xuICAgIH1cbiAgfVxuXG4gIC8vIExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcblxuICBsb2FkVmFsdWU8VD4ocmVnaXN0ZXI6IFJlZ2lzdGVyIHwgTWFjaGluZVJlZ2lzdGVyLCB2YWx1ZTogVCk6IHZvaWQge1xuICAgIGlmIChpc0xvd0xldmVsUmVnaXN0ZXIocmVnaXN0ZXIpKSB7XG4gICAgICB0aGlzW0lOTkVSX1ZNXS5sb2FkUmVnaXN0ZXIocmVnaXN0ZXIsICh2YWx1ZSBhcyBhbnkpIGFzIG51bWJlcik7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZWdpc3Rlcikge1xuICAgICAgY2FzZSAkczA6XG4gICAgICAgIHRoaXMuczAgPSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICRzMTpcbiAgICAgICAgdGhpcy5zMSA9IHZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJHQwOlxuICAgICAgICB0aGlzLnQwID0gdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAkdDE6XG4gICAgICAgIHRoaXMudDEgPSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICR2MDpcbiAgICAgICAgdGhpcy52MCA9IHZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWlncmF0ZWQgdG8gSW5uZXJcbiAgICovXG5cbiAgLy8gU3RhcnQgYSBuZXcgZnJhbWUgYW5kIHNhdmUgJHJhIGFuZCAkZnAgb24gdGhlIHN0YWNrXG4gIHB1c2hGcmFtZSgpIHtcbiAgICB0aGlzW0lOTkVSX1ZNXS5wdXNoRnJhbWUoKTtcbiAgfVxuXG4gIC8vIFJlc3RvcmUgJHJhLCAkc3AgYW5kICRmcFxuICBwb3BGcmFtZSgpIHtcbiAgICB0aGlzW0lOTkVSX1ZNXS5wb3BGcmFtZSgpO1xuICB9XG5cbiAgLy8gSnVtcCB0byBhbiBhZGRyZXNzIGluIGBwcm9ncmFtYFxuICBnb3RvKG9mZnNldDogbnVtYmVyKSB7XG4gICAgdGhpc1tJTk5FUl9WTV0uZ290byhvZmZzZXQpO1xuICB9XG5cbiAgLy8gU2F2ZSAkcGMgaW50byAkcmEsIHRoZW4ganVtcCB0byBhIG5ldyBhZGRyZXNzIGluIGBwcm9ncmFtYCAoamFsIGluIE1JUFMpXG4gIGNhbGwoaGFuZGxlOiBudW1iZXIpIHtcbiAgICB0aGlzW0lOTkVSX1ZNXS5jYWxsKGhhbmRsZSk7XG4gIH1cblxuICAvLyBQdXQgYSBzcGVjaWZpYyBgcHJvZ3JhbWAgYWRkcmVzcyBpbiAkcmFcbiAgcmV0dXJuVG8ob2Zmc2V0OiBudW1iZXIpIHtcbiAgICB0aGlzW0lOTkVSX1ZNXS5yZXR1cm5UbyhvZmZzZXQpO1xuICB9XG5cbiAgLy8gUmV0dXJuIHRvIHRoZSBgcHJvZ3JhbWAgYWRkcmVzcyBzdG9yZWQgaW4gJHJhXG4gIHJldHVybigpIHtcbiAgICB0aGlzW0lOTkVSX1ZNXS5yZXR1cm4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmQgb2YgbWlncmF0ZWQuXG4gICAqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IHJ1bnRpbWU6IFJ1bnRpbWVDb250ZXh0LFxuICAgIHsgcGMsIHNjb3BlLCBkeW5hbWljU2NvcGUsIHN0YWNrIH06IFZNU3RhdGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50U3RhY2s6IEVsZW1lbnRCdWlsZGVyXG4gICkge1xuICAgIGxldCBldmFsU3RhY2sgPSBFdmFsdWF0aW9uU3RhY2tJbXBsLnJlc3RvcmUoc3RhY2spO1xuXG4gICAgYXNzZXJ0KHR5cGVvZiBwYyA9PT0gJ251bWJlcicsICdwYyBpcyBhIG51bWJlcicpO1xuXG4gICAgZXZhbFN0YWNrW1JFR0lTVEVSU11bJHBjXSA9IHBjO1xuICAgIGV2YWxTdGFja1tSRUdJU1RFUlNdWyRzcF0gPSBzdGFjay5sZW5ndGggLSAxO1xuICAgIGV2YWxTdGFja1tSRUdJU1RFUlNdWyRmcF0gPSAtMTtcblxuICAgIHRoaXNbSEVBUF0gPSB0aGlzLnByb2dyYW0uaGVhcDtcbiAgICB0aGlzW0NPTlNUQU5UU10gPSB0aGlzLnByb2dyYW0uY29uc3RhbnRzO1xuICAgIHRoaXMuZWxlbWVudFN0YWNrID0gZWxlbWVudFN0YWNrO1xuICAgIHRoaXNbU1RBQ0tTXS5zY29wZS5wdXNoKHNjb3BlKTtcbiAgICB0aGlzW1NUQUNLU10uZHluYW1pY1Njb3BlLnB1c2goZHluYW1pY1Njb3BlKTtcbiAgICB0aGlzW0FSR1NdID0gbmV3IFZNQXJndW1lbnRzSW1wbCgpO1xuICAgIHRoaXNbSU5ORVJfVk1dID0gbmV3IExvd0xldmVsVk0oXG4gICAgICBldmFsU3RhY2ssXG4gICAgICB0aGlzW0hFQVBdLFxuICAgICAgcnVudGltZS5wcm9ncmFtLFxuICAgICAge1xuICAgICAgICBkZWJ1Z0JlZm9yZTogKG9wY29kZTogUnVudGltZU9wSW1wbCk6IERlYnVnU3RhdGUgPT4ge1xuICAgICAgICAgIHJldHVybiBBUFBFTkRfT1BDT0RFUy5kZWJ1Z0JlZm9yZSh0aGlzLCBvcGNvZGUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlYnVnQWZ0ZXI6IChzdGF0ZTogRGVidWdTdGF0ZSk6IHZvaWQgPT4ge1xuICAgICAgICAgIEFQUEVORF9PUENPREVTLmRlYnVnQWZ0ZXIodGhpcywgc3RhdGUpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGV2YWxTdGFja1tSRUdJU1RFUlNdXG4gICAgKTtcblxuICAgIHRoaXMuZGVzdHJ1Y3RvciA9IHt9O1xuICAgIHRoaXNbREVTVFJVQ1RPUl9TVEFDS10ucHVzaCh0aGlzLmRlc3RydWN0b3IpO1xuICB9XG5cbiAgZ2V0IHByb2dyYW0oKTogUnVudGltZVByb2dyYW0ge1xuICAgIHJldHVybiB0aGlzLnJ1bnRpbWUucHJvZ3JhbTtcbiAgfVxuXG4gIGdldCBlbnYoKTogRW52aXJvbm1lbnQge1xuICAgIHJldHVybiB0aGlzLnJ1bnRpbWUuZW52O1xuICB9XG5cbiAgY2FwdHVyZVN0YXRlKGFyZ3M6IG51bWJlciwgcGMgPSB0aGlzW0lOTkVSX1ZNXS5mZXRjaFJlZ2lzdGVyKCRwYykpOiBWTVN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGMsXG4gICAgICBkeW5hbWljU2NvcGU6IHRoaXMuZHluYW1pY1Njb3BlKCksXG4gICAgICBzY29wZTogdGhpcy5zY29wZSgpLFxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2suY2FwdHVyZShhcmdzKSxcbiAgICB9O1xuICB9XG5cbiAgYWJzdHJhY3QgY2FwdHVyZShhcmdzOiBudW1iZXIsIHBjPzogbnVtYmVyKTogUmVzdW1hYmxlVk1TdGF0ZTxJbnRlcm5hbFZNPjtcblxuICBiZWdpbkNhY2hlR3JvdXAoKSB7XG4gICAgdGhpc1tTVEFDS1NdLmNhY2hlLnB1c2godGhpcy51cGRhdGluZygpLnRhaWwoKSk7XG4gIH1cblxuICBjb21taXRDYWNoZUdyb3VwKCkge1xuICAgIGxldCBFTkQgPSBuZXcgTGFiZWxPcGNvZGUoJ0VORCcpO1xuXG4gICAgbGV0IG9wY29kZXMgPSB0aGlzLnVwZGF0aW5nKCk7XG4gICAgbGV0IG1hcmtlciA9IHRoaXNbU1RBQ0tTXS5jYWNoZS5wb3AoKTtcbiAgICBsZXQgaGVhZCA9IG1hcmtlciA/IG9wY29kZXMubmV4dE5vZGUobWFya2VyKSA6IG9wY29kZXMuaGVhZCgpO1xuICAgIGxldCB0YWlsID0gb3Bjb2Rlcy50YWlsKCk7XG4gICAgbGV0IHRhZyA9IGNvbWJpbmVTbGljZShuZXcgTGlzdFNsaWNlKGhlYWQsIHRhaWwpKTtcblxuICAgIGxldCBndWFyZCA9IG5ldyBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSh0YWcsIEVORCk7XG5cbiAgICBvcGNvZGVzLmluc2VydEJlZm9yZShndWFyZCwgaGVhZCk7XG4gICAgb3Bjb2Rlcy5hcHBlbmQobmV3IERpZE1vZGlmeU9wY29kZShndWFyZCkpO1xuICAgIG9wY29kZXMuYXBwZW5kKEVORCk7XG4gIH1cblxuICBlbnRlcihhcmdzOiBudW1iZXIpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZShhcmdzKTtcbiAgICBsZXQgYmxvY2sgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG5cbiAgICBsZXQgdHJ5T3Bjb2RlID0gbmV3IFRyeU9wY29kZShzdGF0ZSwgdGhpcy5ydW50aW1lLCBibG9jaywgdXBkYXRpbmcpO1xuXG4gICAgdGhpcy5kaWRFbnRlcih0cnlPcGNvZGUpO1xuICB9XG5cbiAgaXRlcmF0ZShcbiAgICBtZW1vOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+LFxuICAgIHZhbHVlOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+XG4gICk6IFRyeU9wY29kZSB7XG4gICAgbGV0IHN0YWNrID0gdGhpcy5zdGFjaztcbiAgICBzdGFjay5wdXNoKHZhbHVlKTtcbiAgICBzdGFjay5wdXNoKG1lbW8pO1xuXG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDIpO1xuICAgIGxldCBibG9jayA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcblxuICAgIC8vIGxldCBpcCA9IHRoaXMuaXA7XG4gICAgLy8gdGhpcy5pcCA9IGVuZCArIDQ7XG4gICAgLy8gdGhpcy5mcmFtZXMucHVzaChpcCk7XG5cbiAgICByZXR1cm4gbmV3IFRyeU9wY29kZShzdGF0ZSwgdGhpcy5ydW50aW1lLCBibG9jaywgbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpO1xuICB9XG5cbiAgZW50ZXJJdGVtKGtleTogc3RyaW5nLCBvcGNvZGU6IFRyeU9wY29kZSkge1xuICAgIHRoaXMubGlzdEJsb2NrKCkubWFwLnNldChrZXksIG9wY29kZSk7XG4gICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICB9XG5cbiAgZW50ZXJMaXN0KG9mZnNldDogbnVtYmVyKSB7XG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8QmxvY2tPcGNvZGU+KCk7XG5cbiAgICBsZXQgYWRkciA9IHRoaXNbSU5ORVJfVk1dLnRhcmdldChvZmZzZXQpO1xuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgwLCBhZGRyKTtcbiAgICBsZXQgbGlzdCA9IHRoaXMuZWxlbWVudHMoKS5wdXNoQmxvY2tMaXN0KHVwZGF0aW5nKTtcbiAgICBsZXQgYXJ0aWZhY3RzID0gdGhpcy5zdGFjay5wZWVrPFJlZmVyZW5jZUl0ZXJhdG9yPigpLmFydGlmYWN0cztcblxuICAgIGxldCBvcGNvZGUgPSBuZXcgTGlzdEJsb2NrT3Bjb2RlKHN0YXRlLCB0aGlzLnJ1bnRpbWUsIGxpc3QsIHVwZGF0aW5nLCBhcnRpZmFjdHMpO1xuXG4gICAgdGhpc1tTVEFDS1NdLmxpc3QucHVzaChvcGNvZGUpO1xuXG4gICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaWRFbnRlcihvcGNvZGU6IEJsb2NrT3Bjb2RlKSB7XG4gICAgdGhpcy5hc3NvY2lhdGVEZXN0cnVjdG9yKGRlc3RydWN0b3Iob3Bjb2RlKSk7XG4gICAgdGhpc1tERVNUUlVDVE9SX1NUQUNLXS5wdXNoKG9wY29kZSk7XG4gICAgdGhpcy51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgdGhpcy5wdXNoVXBkYXRpbmcob3Bjb2RlLmNoaWxkcmVuKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpc1tERVNUUlVDVE9SX1NUQUNLXS5wb3AoKTtcbiAgICB0aGlzLmVsZW1lbnRzKCkucG9wQmxvY2soKTtcbiAgICB0aGlzLnBvcFVwZGF0aW5nKCk7XG5cbiAgICBsZXQgcGFyZW50ID0gdGhpcy51cGRhdGluZygpLnRhaWwoKSBhcyBCbG9ja09wY29kZTtcblxuICAgIHBhcmVudC5kaWRJbml0aWFsaXplQ2hpbGRyZW4oKTtcbiAgfVxuXG4gIGV4aXRMaXN0KCkge1xuICAgIHRoaXMuZXhpdCgpO1xuICAgIHRoaXNbU1RBQ0tTXS5saXN0LnBvcCgpO1xuICB9XG5cbiAgcHVzaFVwZGF0aW5nKGxpc3QgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKSk6IHZvaWQge1xuICAgIHRoaXNbU1RBQ0tTXS51cGRhdGluZy5wdXNoKGxpc3QpO1xuICB9XG5cbiAgcG9wVXBkYXRpbmcoKTogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4ge1xuICAgIHJldHVybiBleHBlY3QodGhpc1tTVEFDS1NdLnVwZGF0aW5nLnBvcCgpLCBcImNhbid0IHBvcCBhbiBlbXB0eSBzdGFja1wiKTtcbiAgfVxuXG4gIHVwZGF0ZVdpdGgob3Bjb2RlOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMudXBkYXRpbmcoKS5hcHBlbmQob3Bjb2RlKTtcbiAgfVxuXG4gIGxpc3RCbG9jaygpOiBMaXN0QmxvY2tPcGNvZGUge1xuICAgIHJldHVybiBleHBlY3QodGhpc1tTVEFDS1NdLmxpc3QuY3VycmVudCwgJ2V4cGVjdGVkIGEgbGlzdCBibG9jaycpO1xuICB9XG5cbiAgYXNzb2NpYXRlRGVzdHJ1Y3RvcihjaGlsZDogRHJvcCk6IHZvaWQge1xuICAgIGlmICghaXNEcm9wKGNoaWxkKSkgcmV0dXJuO1xuICAgIGxldCBwYXJlbnQgPSBleHBlY3QodGhpc1tERVNUUlVDVE9SX1NUQUNLXS5jdXJyZW50LCAnRXhwZWN0ZWQgZGVzdHJ1Y3RvciBwYXJlbnQnKTtcbiAgICBhc3NvY2lhdGVEZXN0cnVjdG9yKHBhcmVudCwgY2hpbGQpO1xuICB9XG5cbiAgYXNzb2NpYXRlRGVzdHJveWFibGUoY2hpbGQ6IFN5bWJvbERlc3Ryb3lhYmxlIHwgRGVzdHJveWFibGUpOiB2b2lkIHtcbiAgICB0aGlzLmFzc29jaWF0ZURlc3RydWN0b3IoZGVzdHJ1Y3RvcihjaGlsZCkpO1xuICB9XG5cbiAgdHJ5VXBkYXRpbmcoKTogT3B0aW9uPExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+PiB7XG4gICAgcmV0dXJuIHRoaXNbU1RBQ0tTXS51cGRhdGluZy5jdXJyZW50O1xuICB9XG5cbiAgdXBkYXRpbmcoKTogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4ge1xuICAgIHJldHVybiBleHBlY3QoXG4gICAgICB0aGlzW1NUQUNLU10udXBkYXRpbmcuY3VycmVudCxcbiAgICAgICdleHBlY3RlZCB1cGRhdGluZyBvcGNvZGUgb24gdGhlIHVwZGF0aW5nIG9wY29kZSBzdGFjaydcbiAgICApO1xuICB9XG5cbiAgZWxlbWVudHMoKTogRWxlbWVudEJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRTdGFjaztcbiAgfVxuXG4gIHNjb3BlKCk6IFNjb3BlPEM+IHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXNbU1RBQ0tTXS5zY29wZS5jdXJyZW50LCAnZXhwZWN0ZWQgc2NvcGUgb24gdGhlIHNjb3BlIHN0YWNrJyk7XG4gIH1cblxuICBkeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlIHtcbiAgICByZXR1cm4gZXhwZWN0KFxuICAgICAgdGhpc1tTVEFDS1NdLmR5bmFtaWNTY29wZS5jdXJyZW50LFxuICAgICAgJ2V4cGVjdGVkIGR5bmFtaWMgc2NvcGUgb24gdGhlIGR5bmFtaWMgc2NvcGUgc3RhY2snXG4gICAgKTtcbiAgfVxuXG4gIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgIHRoaXNbU1RBQ0tTXS5zY29wZS5wdXNoKHRoaXMuc2NvcGUoKS5jaGlsZCgpKTtcbiAgfVxuXG4gIHB1c2hEeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlIHtcbiAgICBsZXQgY2hpbGQgPSB0aGlzLmR5bmFtaWNTY29wZSgpLmNoaWxkKCk7XG4gICAgdGhpc1tTVEFDS1NdLmR5bmFtaWNTY29wZS5wdXNoKGNoaWxkKTtcbiAgICByZXR1cm4gY2hpbGQ7XG4gIH1cblxuICBwdXNoUm9vdFNjb3BlKHNpemU6IG51bWJlcik6IFBhcnRpYWxTY29wZTxDPiB7XG4gICAgbGV0IHNjb3BlID0gU2NvcGVJbXBsLnNpemVkPEM+KHNpemUpO1xuICAgIHRoaXNbU1RBQ0tTXS5zY29wZS5wdXNoKHNjb3BlKTtcbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwdXNoU2NvcGUoc2NvcGU6IFNjb3BlPEM+KSB7XG4gICAgdGhpc1tTVEFDS1NdLnNjb3BlLnB1c2goc2NvcGUpO1xuICB9XG5cbiAgcG9wU2NvcGUoKSB7XG4gICAgdGhpc1tTVEFDS1NdLnNjb3BlLnBvcCgpO1xuICB9XG5cbiAgcG9wRHluYW1pY1Njb3BlKCkge1xuICAgIHRoaXNbU1RBQ0tTXS5keW5hbWljU2NvcGUucG9wKCk7XG4gIH1cblxuICAvLy8gU0NPUEUgSEVMUEVSU1xuXG4gIGdldFNlbGYoKTogUGF0aFJlZmVyZW5jZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFNlbGYoKTtcbiAgfVxuXG4gIHJlZmVyZW5jZUZvclN5bWJvbChzeW1ib2w6IG51bWJlcik6IFBhdGhSZWZlcmVuY2U8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U3ltYm9sKHN5bWJvbCk7XG4gIH1cblxuICAvLy8gRVhFQ1VUSU9OXG5cbiAgZXhlY3V0ZShpbml0aWFsaXplPzogKHZtOiB0aGlzKSA9PiB2b2lkKTogUmVuZGVyUmVzdWx0IHtcbiAgICBpZiAoTE9DQUxfU0hPVUxEX0xPRykge1xuICAgICAgY29uc29sZS5sb2coYEVYRUNVVElORyBGUk9NICR7dGhpc1tJTk5FUl9WTV0uZmV0Y2hSZWdpc3RlcigkcGMpfWApO1xuICAgIH1cblxuICAgIGlmIChpbml0aWFsaXplKSBpbml0aWFsaXplKHRoaXMpO1xuXG4gICAgbGV0IHJlc3VsdDogUmljaEl0ZXJhdG9yUmVzdWx0PG51bGwsIFJlbmRlclJlc3VsdD47XG5cbiAgICB0cnkge1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5uZXh0KCk7XG4gICAgICAgIGlmIChyZXN1bHQuZG9uZSkgYnJlYWs7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIElmIGFueSBleGlzdGluZyBibG9ja3MgYXJlIG9wZW4sIGR1ZSB0byBhbiBlcnJvciBvciBzb21ldGhpbmcgbGlrZVxuICAgICAgLy8gdGhhdCwgd2UgbmVlZCB0byBjbG9zZSB0aGVtIGFsbCBhbmQgY2xlYW4gdGhpbmdzIHVwIHByb3Blcmx5LlxuICAgICAgbGV0IGVsZW1lbnRzID0gdGhpcy5lbGVtZW50cygpO1xuXG4gICAgICB3aGlsZSAoZWxlbWVudHMuaGFzQmxvY2tzKSB7XG4gICAgICAgIGVsZW1lbnRzLnBvcEJsb2NrKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbiAgfVxuXG4gIG5leHQoKTogUmljaEl0ZXJhdG9yUmVzdWx0PG51bGwsIFJlbmRlclJlc3VsdD4ge1xuICAgIGxldCB7IGVudiwgZWxlbWVudFN0YWNrIH0gPSB0aGlzO1xuICAgIGxldCBvcGNvZGUgPSB0aGlzW0lOTkVSX1ZNXS5uZXh0U3RhdGVtZW50KCk7XG4gICAgbGV0IHJlc3VsdDogUmljaEl0ZXJhdG9yUmVzdWx0PG51bGwsIFJlbmRlclJlc3VsdD47XG4gICAgaWYgKG9wY29kZSAhPT0gbnVsbCkge1xuICAgICAgdGhpc1tJTk5FUl9WTV0uZXZhbHVhdGVPdXRlcihvcGNvZGUsIHRoaXMpO1xuICAgICAgcmVzdWx0ID0geyBkb25lOiBmYWxzZSwgdmFsdWU6IG51bGwgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVW5sb2FkIHRoZSBzdGFja1xuICAgICAgdGhpcy5zdGFjay5yZXNldCgpO1xuXG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIGRvbmU6IHRydWUsXG4gICAgICAgIHZhbHVlOiBuZXcgUmVuZGVyUmVzdWx0SW1wbChcbiAgICAgICAgICBlbnYsXG4gICAgICAgICAgdGhpcy5wb3BVcGRhdGluZygpLFxuICAgICAgICAgIGVsZW1lbnRTdGFjay5wb3BCbG9jaygpLFxuICAgICAgICAgIHRoaXMuZGVzdHJ1Y3RvclxuICAgICAgICApLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGJpbmREeW5hbWljU2NvcGUobmFtZXM6IG51bWJlcltdKSB7XG4gICAgbGV0IHNjb3BlID0gdGhpcy5keW5hbWljU2NvcGUoKTtcblxuICAgIGZvciAobGV0IGkgPSBuYW1lcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgbGV0IG5hbWUgPSB0aGlzW0NPTlNUQU5UU10uZ2V0U3RyaW5nKG5hbWVzW2ldKTtcbiAgICAgIHNjb3BlLnNldChuYW1lLCB0aGlzLnN0YWNrLnBvcDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+PigpKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdm1TdGF0ZTxDIGV4dGVuZHMgSml0T3JBb3RCbG9jaz4oXG4gIHBjOiBudW1iZXIsXG4gIHNjb3BlOiBTY29wZTxDPiA9IFNjb3BlSW1wbC5yb290PEM+KFVOREVGSU5FRF9SRUZFUkVOQ0UsIDApLFxuICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZVxuKSB7XG4gIHJldHVybiB7XG4gICAgcGMsXG4gICAgc2NvcGUsXG4gICAgZHluYW1pY1Njb3BlLFxuICAgIHN0YWNrOiBbXSxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNaW5pbWFsSW5pdE9wdGlvbnMge1xuICBoYW5kbGU6IG51bWJlcjtcbiAgdHJlZUJ1aWxkZXI6IEVsZW1lbnRCdWlsZGVyO1xuICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbml0T3B0aW9ucyBleHRlbmRzIE1pbmltYWxJbml0T3B0aW9ucyB7XG4gIHNlbGY6IFBhdGhSZWZlcmVuY2U8dW5rbm93bj47XG59XG5cbmV4cG9ydCBjbGFzcyBBb3RWTSBleHRlbmRzIFZNPG51bWJlcj4gaW1wbGVtZW50cyBJbnRlcm5hbFZNPG51bWJlcj4ge1xuICBzdGF0aWMgZW1wdHkoXG4gICAgcnVudGltZTogQW90UnVudGltZUNvbnRleHQsXG4gICAgeyBoYW5kbGUsIHRyZWVCdWlsZGVyLCBkeW5hbWljU2NvcGUgfTogTWluaW1hbEluaXRPcHRpb25zXG4gICk6IEludGVybmFsVk08bnVtYmVyPiB7XG4gICAgbGV0IHZtID0gaW5pdEFPVChcbiAgICAgIHJ1bnRpbWUsXG4gICAgICB2bVN0YXRlKFxuICAgICAgICBydW50aW1lLnByb2dyYW0uaGVhcC5nZXRhZGRyKGhhbmRsZSksXG4gICAgICAgIFNjb3BlSW1wbC5yb290PG51bWJlcj4oVU5ERUZJTkVEX1JFRkVSRU5DRSwgMCksXG4gICAgICAgIGR5bmFtaWNTY29wZVxuICAgICAgKSxcbiAgICAgIHRyZWVCdWlsZGVyXG4gICAgKTtcbiAgICB2bS5wdXNoVXBkYXRpbmcoKTtcbiAgICByZXR1cm4gdm07XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhbChcbiAgICBydW50aW1lOiBBb3RSdW50aW1lQ29udGV4dCxcbiAgICB7IGhhbmRsZSwgc2VsZiwgdHJlZUJ1aWxkZXIsIGR5bmFtaWNTY29wZSB9OiBJbml0T3B0aW9uc1xuICApIHtcbiAgICBsZXQgc2NvcGVTaXplID0gcnVudGltZS5wcm9ncmFtLmhlYXAuc2NvcGVzaXplb2YoaGFuZGxlKTtcbiAgICBsZXQgc2NvcGUgPSBTY29wZUltcGwucm9vdChzZWxmLCBzY29wZVNpemUpO1xuICAgIGxldCBwYyA9IGNoZWNrKHJ1bnRpbWUucHJvZ3JhbS5oZWFwLmdldGFkZHIoaGFuZGxlKSwgQ2hlY2tOdW1iZXIpO1xuICAgIGxldCBzdGF0ZSA9IHZtU3RhdGUocGMsIHNjb3BlLCBkeW5hbWljU2NvcGUpO1xuICAgIGxldCB2bSA9IGluaXRBT1QocnVudGltZSwgc3RhdGUsIHRyZWVCdWlsZGVyKTtcbiAgICB2bS5wdXNoVXBkYXRpbmcoKTtcbiAgICByZXR1cm4gdm07XG4gIH1cblxuICBjYXB0dXJlKGFyZ3M6IG51bWJlciwgcGMgPSB0aGlzW0lOTkVSX1ZNXS5mZXRjaFJlZ2lzdGVyKCRwYykpOiBSZXN1bWFibGVWTVN0YXRlPEFvdFZNPiB7XG4gICAgcmV0dXJuIG5ldyBSZXN1bWFibGVWTVN0YXRlSW1wbCh0aGlzLmNhcHR1cmVTdGF0ZShhcmdzLCBwYyksIGluaXRBT1QpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFZtSW5pdENhbGxiYWNrPFYgZXh0ZW5kcyBJbnRlcm5hbFZNID0gSW50ZXJuYWxWTT4gPSAoXG4gIHRoaXM6IHZvaWQsXG4gIHJ1bnRpbWU6IFYgZXh0ZW5kcyBKaXRWTSA/IEppdFJ1bnRpbWVDb250ZXh0IDogQW90UnVudGltZUNvbnRleHQsXG4gIHN0YXRlOiBWTVN0YXRlLFxuICBidWlsZGVyOiBFbGVtZW50QnVpbGRlclxuKSA9PiBWO1xuXG5leHBvcnQgdHlwZSBKaXRWbUluaXRDYWxsYmFjazxWIGV4dGVuZHMgSW50ZXJuYWxWTT4gPSAoXG4gIHRoaXM6IHZvaWQsXG4gIHJ1bnRpbWU6IEppdFJ1bnRpbWVDb250ZXh0LFxuICBzdGF0ZTogVk1TdGF0ZSxcbiAgYnVpbGRlcjogRWxlbWVudEJ1aWxkZXJcbikgPT4gVjtcblxuZnVuY3Rpb24gaW5pdEFPVChydW50aW1lOiBBb3RSdW50aW1lQ29udGV4dCwgc3RhdGU6IFZNU3RhdGUsIGJ1aWxkZXI6IEVsZW1lbnRCdWlsZGVyKTogQW90Vk0ge1xuICByZXR1cm4gbmV3IEFvdFZNKHJ1bnRpbWUsIHN0YXRlLCBidWlsZGVyKTtcbn1cblxuZnVuY3Rpb24gaW5pdEpJVChjb250ZXh0OiBTeW50YXhDb21waWxhdGlvbkNvbnRleHQpOiBKaXRWbUluaXRDYWxsYmFjazxKaXRWTT4ge1xuICByZXR1cm4gKHJ1bnRpbWUsIHN0YXRlLCBidWlsZGVyKSA9PiBuZXcgSml0Vk0ocnVudGltZSwgc3RhdGUsIGJ1aWxkZXIsIGNvbnRleHQpO1xufVxuXG5leHBvcnQgY2xhc3MgSml0Vk0gZXh0ZW5kcyBWTTxDb21waWxhYmxlQmxvY2s+IGltcGxlbWVudHMgSW50ZXJuYWxKaXRWTSB7XG4gIHN0YXRpYyBpbml0aWFsKFxuICAgIHJ1bnRpbWU6IEppdFJ1bnRpbWVDb250ZXh0LFxuICAgIGNvbnRleHQ6IFN5bnRheENvbXBpbGF0aW9uQ29udGV4dCxcbiAgICB7IGhhbmRsZSwgc2VsZiwgZHluYW1pY1Njb3BlLCB0cmVlQnVpbGRlciB9OiBJbml0T3B0aW9uc1xuICApIHtcbiAgICBsZXQgc2NvcGVTaXplID0gcnVudGltZS5wcm9ncmFtLmhlYXAuc2NvcGVzaXplb2YoaGFuZGxlKTtcbiAgICBsZXQgc2NvcGUgPSBTY29wZUltcGwucm9vdChzZWxmLCBzY29wZVNpemUpO1xuICAgIGxldCBzdGF0ZSA9IHZtU3RhdGUocnVudGltZS5wcm9ncmFtLmhlYXAuZ2V0YWRkcihoYW5kbGUpLCBzY29wZSwgZHluYW1pY1Njb3BlKTtcbiAgICBsZXQgdm0gPSBpbml0SklUKGNvbnRleHQpKHJ1bnRpbWUsIHN0YXRlLCB0cmVlQnVpbGRlcik7XG4gICAgdm0ucHVzaFVwZGF0aW5nKCk7XG4gICAgcmV0dXJuIHZtO1xuICB9XG5cbiAgc3RhdGljIGVtcHR5KFxuICAgIHJ1bnRpbWU6IEppdFJ1bnRpbWVDb250ZXh0LFxuICAgIHsgaGFuZGxlLCB0cmVlQnVpbGRlciwgZHluYW1pY1Njb3BlIH06IE1pbmltYWxJbml0T3B0aW9ucyxcbiAgICBjb250ZXh0OiBTeW50YXhDb21waWxhdGlvbkNvbnRleHRcbiAgKSB7XG4gICAgbGV0IHZtID0gaW5pdEpJVChjb250ZXh0KShcbiAgICAgIHJ1bnRpbWUsXG4gICAgICB2bVN0YXRlKFxuICAgICAgICBydW50aW1lLnByb2dyYW0uaGVhcC5nZXRhZGRyKGhhbmRsZSksXG4gICAgICAgIFNjb3BlSW1wbC5yb290PENvbXBpbGFibGVCbG9jaz4oVU5ERUZJTkVEX1JFRkVSRU5DRSwgMCksXG4gICAgICAgIGR5bmFtaWNTY29wZVxuICAgICAgKSxcbiAgICAgIHRyZWVCdWlsZGVyXG4gICAgKTtcbiAgICB2bS5wdXNoVXBkYXRpbmcoKTtcbiAgICByZXR1cm4gdm07XG4gIH1cblxuICByZWFkb25seSBydW50aW1lITogSml0UnVudGltZUNvbnRleHQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcnVudGltZTogSml0UnVudGltZUNvbnRleHQsXG4gICAgc3RhdGU6IFZNU3RhdGUsXG4gICAgZWxlbWVudFN0YWNrOiBFbGVtZW50QnVpbGRlcixcbiAgICByZWFkb25seSBjb250ZXh0OiBTeW50YXhDb21waWxhdGlvbkNvbnRleHRcbiAgKSB7XG4gICAgc3VwZXIocnVudGltZSwgc3RhdGUsIGVsZW1lbnRTdGFjayk7XG4gIH1cblxuICBjYXB0dXJlKGFyZ3M6IG51bWJlciwgcGMgPSB0aGlzW0lOTkVSX1ZNXS5mZXRjaFJlZ2lzdGVyKCRwYykpOiBSZXN1bWFibGVWTVN0YXRlPEppdFZNPiB7XG4gICAgcmV0dXJuIG5ldyBSZXN1bWFibGVWTVN0YXRlSW1wbCh0aGlzLmNhcHR1cmVTdGF0ZShhcmdzLCBwYyksIHRoaXMucmVzdW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzdW1lOiBWbUluaXRDYWxsYmFjazxKaXRWTT4gPSBpbml0SklUKHRoaXMuY29udGV4dCk7XG5cbiAgY29tcGlsZShibG9jazogQ29tcGlsYWJsZVRlbXBsYXRlKTogbnVtYmVyIHtcbiAgICBsZXQgaGFuZGxlID0gdW53cmFwSGFuZGxlKGJsb2NrLmNvbXBpbGUodGhpcy5jb250ZXh0KSk7XG5cbiAgICByZXR1cm4gaGFuZGxlO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9 |
@@ -104,2 +104,6 @@ "use strict"; | ||
get hasBlocks() { | ||
return this.blockStack.size > 0; | ||
} | ||
block() { | ||
@@ -506,2 +510,2 @@ return this.blockStack.current; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2VsZW1lbnQtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQWNBOztBQW1CQTs7QUFDQTs7OztBQVdBLE1BQUEsS0FBQSxDQUFXO0FBQ1QsRUFBQSxXQUFBLENBQUEsSUFBQSxFQUFvQztBQUFoQixTQUFBLElBQUEsR0FBQSxJQUFBO0FBQW9COztBQUV4QyxFQUFBLFNBQVMsR0FBQTtBQUNQLFdBQU8sS0FBUCxJQUFBO0FBQ0Q7O0FBTFE7O0FBUVgsTUFBQSxJQUFBLENBQVU7QUFDUixFQUFBLFdBQUEsQ0FBQSxJQUFBLEVBQW9DO0FBQWhCLFNBQUEsSUFBQSxHQUFBLElBQUE7QUFBb0I7O0FBRXhDLEVBQUEsUUFBUSxHQUFBO0FBQ04sV0FBTyxLQUFQLElBQUE7QUFDRDs7QUFMTzs7QUFRSixNQUFBLFFBQUEsQ0FBZTtBQUduQixFQUFBLFdBQUEsQ0FBQSxNQUFBLEVBQTBCO0FBQ3hCLFNBQUEsTUFBQSxHQUFBLE1BQUE7QUFDRDs7QUFFRCxFQUFBLGFBQWEsR0FBQTtBQUNYLFdBQU8sS0FBQSxNQUFBLENBQVAsYUFBTyxFQUFQO0FBQ0Q7O0FBRUQsRUFBQSxTQUFTLEdBQUE7QUFDUCxXQUFPLEtBQUEsTUFBQSxDQUFQLFNBQU8sRUFBUDtBQUNEOztBQUVELEVBQUEsUUFBUSxHQUFBO0FBQ04sV0FBTyxLQUFBLE1BQUEsQ0FBUCxRQUFPLEVBQVA7QUFDRDs7QUFqQmtCOzs7QUFvQmQsTUFBTSxZQUFZLEdBQXNCLGtCQUF4QyxjQUF3QyxDQUF4Qzs7O0FBRUQsTUFBQSxpQkFBQSxDQUF3QjtBQXlCNUIsRUFBQSxXQUFBLENBQUEsR0FBQSxFQUFBLFVBQUEsRUFBQSxXQUFBLEVBQXdGO0FBdEJqRixTQUFBLFlBQUEsR0FBQSxJQUFBO0FBQ0EsU0FBQSxVQUFBLEdBQUEsSUFBQTtBQUdQLFNBQUEsRUFBQSxJQUFpQixJQUFqQixXQUFpQixF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LGtCQUFNLEtBQU4sRUFEVSxrREFDVixDQURVO0FBRVg7O0FBRUQsRUFBQSxhQUFhLENBQUEsS0FBQSxFQUFrQjtBQUFBLGFBQzdCLGtCQUFNLEtBQU4sRUFENkIsdURBQzdCLENBRDZCO0FBRTlCOztBQUVELEVBQUEsZUFBZSxDQUFBLE9BQUEsRUFBZ0IsQ0FBSTs7QUFFbkMsRUFBQSxRQUFRLENBQUEsTUFBQSxFQUF1QjtBQUFBLGFBQzdCLGtCQUFPLEtBQUEsU0FBQSxDQUFBLElBQUEsT0FBRCxJQUFOLEVBRDZCLDRCQUM3QixDQUQ2QjtBQUU5Qjs7QUEvQ2dCOztBQWtEYixTQUFBLGFBQUEsQ0FBQSxHQUFBLEVBQUEsTUFBQSxFQUE0RDtBQUNoRSxTQUFPLGlCQUFpQixDQUFqQixnQkFBQSxDQUFBLEdBQUEsRUFBUCxNQUFPLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJvdW5kcyxcbiAgRWxlbWVudE9wZXJhdGlvbnMsXG4gIEVudmlyb25tZW50LFxuICBHbGltbWVyVHJlZUNoYW5nZXMsXG4gIEdsaW1tZXJUcmVlQ29uc3RydWN0aW9uLFxuICBTeW1ib2xEZXN0cm95YWJsZSxcbiAgRWxlbWVudEJ1aWxkZXIsXG4gIExpdmVCbG9jayxcbiAgQ3Vyc29yU3RhY2tTeW1ib2wsXG4gIFVwZGF0YWJsZUJsb2NrLFxuICBDdXJzb3IsXG4gIE1vZGlmaWVyTWFuYWdlcixcbn0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIERFU1RST1ksXG4gIGV4cGVjdCxcbiAgTGlua2VkTGlzdCxcbiAgTGlua2VkTGlzdE5vZGUsXG4gIE9wdGlvbixcbiAgU3RhY2ssXG4gIE1heWJlLFxuICBzeW1ib2wsXG59IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgQXR0ck5hbWVzcGFjZSxcbiAgU2ltcGxlQ29tbWVudCxcbiAgU2ltcGxlRG9jdW1lbnRGcmFnbWVudCxcbiAgU2ltcGxlRWxlbWVudCxcbiAgU2ltcGxlTm9kZSxcbiAgU2ltcGxlVGV4dCxcbn0gZnJvbSAnQHNpbXBsZS1kb20vaW50ZXJmYWNlJztcbmltcG9ydCB7IGNsZWFyLCBDb25jcmV0ZUJvdW5kcywgQ3Vyc29ySW1wbCwgU2luZ2xlTm9kZUJvdW5kcyB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBkZXRhY2hDaGlsZHJlbiB9IGZyb20gJy4uL2xpZmV0aW1lJztcbmltcG9ydCB7IER5bmFtaWNBdHRyaWJ1dGUgfSBmcm9tICcuL2F0dHJpYnV0ZXMvZHluYW1pYyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlyc3ROb2RlIHtcbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFzdE5vZGUge1xuICBsYXN0Tm9kZSgpOiBTaW1wbGVOb2RlO1xufVxuXG5jbGFzcyBGaXJzdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbm9kZTogU2ltcGxlTm9kZSkge31cblxuICBmaXJzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxufVxuXG5jbGFzcyBMYXN0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlOiBTaW1wbGVOb2RlKSB7fVxuXG4gIGxhc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZyYWdtZW50IGltcGxlbWVudHMgQm91bmRzIHtcbiAgcHJpdmF0ZSBib3VuZHM6IEJvdW5kcztcblxuICBjb25zdHJ1Y3Rvcihib3VuZHM6IEJvdW5kcykge1xuICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICB9XG5cbiAgcGFyZW50RWxlbWVudCgpOiBTaW1wbGVFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5sYXN0Tm9kZSgpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBDVVJTT1JfU1RBQ0s6IEN1cnNvclN0YWNrU3ltYm9sID0gc3ltYm9sKCdDVVJTT1JfU1RBQ0snKTtcblxuZXhwb3J0IGNsYXNzIE5ld0VsZW1lbnRCdWlsZGVyIGltcGxlbWVudHMgRWxlbWVudEJ1aWxkZXIge1xuICBwdWJsaWMgZG9tOiBHbGltbWVyVHJlZUNvbnN0cnVjdGlvbjtcbiAgcHVibGljIHVwZGF0ZU9wZXJhdGlvbnM6IEdsaW1tZXJUcmVlQ2hhbmdlcztcbiAgcHVibGljIGNvbnN0cnVjdGluZzogT3B0aW9uPFNpbXBsZUVsZW1lbnQ+ID0gbnVsbDtcbiAgcHVibGljIG9wZXJhdGlvbnM6IE9wdGlvbjxFbGVtZW50T3BlcmF0aW9ucz4gPSBudWxsO1xuICBwcml2YXRlIGVudjogRW52aXJvbm1lbnQ7XG5cbiAgW0NVUlNPUl9TVEFDS10gPSBuZXcgU3RhY2s8Q3Vyc29yPigpO1xuICBwcml2YXRlIG1vZGlmaWVyU3RhY2sgPSBuZXcgU3RhY2s8T3B0aW9uPFtNb2RpZmllck1hbmFnZXIsIHVua25vd25dW10+PigpO1xuICBwcml2YXRlIGJsb2NrU3RhY2sgPSBuZXcgU3RhY2s8TGl2ZUJsb2NrPigpO1xuXG4gIHN0YXRpYyBmb3JJbml0aWFsUmVuZGVyKGVudjogRW52aXJvbm1lbnQsIGN1cnNvcjogQ3Vyc29ySW1wbCkge1xuICAgIHJldHVybiBuZXcgdGhpcyhlbnYsIGN1cnNvci5lbGVtZW50LCBjdXJzb3IubmV4dFNpYmxpbmcpLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIHN0YXRpYyByZXN1bWUoZW52OiBFbnZpcm9ubWVudCwgYmxvY2s6IFVwZGF0YWJsZUJsb2NrKTogTmV3RWxlbWVudEJ1aWxkZXIge1xuICAgIGxldCBwYXJlbnROb2RlID0gYmxvY2sucGFyZW50RWxlbWVudCgpO1xuICAgIGxldCBuZXh0U2libGluZyA9IGJsb2NrLnJlc2V0KGVudik7XG5cbiAgICBsZXQgc3RhY2sgPSBuZXcgdGhpcyhlbnYsIHBhcmVudE5vZGUsIG5leHRTaWJsaW5nKS5pbml0aWFsaXplKCk7XG4gICAgc3RhY2sucHVzaExpdmVCbG9jayhibG9jayk7XG5cbiAgICByZXR1cm4gc3RhY2s7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCBwYXJlbnROb2RlOiBTaW1wbGVFbGVtZW50LCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZU5vZGU+KSB7XG4gICAgdGhpcy5wdXNoRWxlbWVudChwYXJlbnROb2RlLCBuZXh0U2libGluZyk7XG5cbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLmRvbSA9IGVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCk7XG4gICAgdGhpcy51cGRhdGVPcGVyYXRpb25zID0gZW52LmdldERPTSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRpYWxpemUoKTogdGhpcyB7XG4gICAgdGhpcy5wdXNoU2ltcGxlQmxvY2soKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRlYnVnQmxvY2tzKCk6IExpdmVCbG9ja1tdIHtcbiAgICByZXR1cm4gdGhpcy5ibG9ja1N0YWNrLnRvQXJyYXkoKTtcbiAgfVxuXG4gIGdldCBlbGVtZW50KCk6IFNpbXBsZUVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzW0NVUlNPUl9TVEFDS10uY3VycmVudCEuZWxlbWVudDtcbiAgfVxuXG4gIGdldCBuZXh0U2libGluZygpOiBPcHRpb248U2ltcGxlTm9kZT4ge1xuICAgIHJldHVybiB0aGlzW0NVUlNPUl9TVEFDS10uY3VycmVudCEubmV4dFNpYmxpbmc7XG4gIH1cblxuICBibG9jaygpOiBMaXZlQmxvY2sge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQsICdFeHBlY3RlZCBhIGN1cnJlbnQgbGl2ZSBibG9jaycpO1xuICB9XG5cbiAgcG9wRWxlbWVudCgpIHtcbiAgICB0aGlzW0NVUlNPUl9TVEFDS10ucG9wKCk7XG4gICAgZXhwZWN0KHRoaXNbQ1VSU09SX1NUQUNLXS5jdXJyZW50LCBcImNhbid0IHBvcCBwYXN0IHRoZSBsYXN0IGVsZW1lbnRcIik7XG4gIH1cblxuICBwdXNoU2ltcGxlQmxvY2soKTogTGl2ZUJsb2NrIHtcbiAgICByZXR1cm4gdGhpcy5wdXNoTGl2ZUJsb2NrKG5ldyBTaW1wbGVMaXZlQmxvY2sodGhpcy5lbGVtZW50KSk7XG4gIH1cblxuICBwdXNoVXBkYXRhYmxlQmxvY2soKTogVXBkYXRhYmxlQmxvY2tJbXBsIHtcbiAgICByZXR1cm4gdGhpcy5wdXNoTGl2ZUJsb2NrKG5ldyBVcGRhdGFibGVCbG9ja0ltcGwodGhpcy5lbGVtZW50KSk7XG4gIH1cblxuICBwdXNoQmxvY2tMaXN0KGxpc3Q6IExpbmtlZExpc3Q8TGlua2VkTGlzdE5vZGUgJiBMaXZlQmxvY2s+KTogTGl2ZUJsb2NrTGlzdCB7XG4gICAgcmV0dXJuIHRoaXMucHVzaExpdmVCbG9jayhuZXcgTGl2ZUJsb2NrTGlzdCh0aGlzLmVsZW1lbnQsIGxpc3QpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwdXNoTGl2ZUJsb2NrPFQgZXh0ZW5kcyBMaXZlQmxvY2s+KGJsb2NrOiBULCBpc1JlbW90ZSA9IGZhbHNlKTogVCB7XG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmJsb2NrU3RhY2suY3VycmVudDtcblxuICAgIGlmIChjdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICBpZiAoIWlzUmVtb3RlKSB7XG4gICAgICAgIGN1cnJlbnQuZGlkQXBwZW5kQm91bmRzKGJsb2NrKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9fb3BlbkJsb2NrKCk7XG4gICAgdGhpcy5ibG9ja1N0YWNrLnB1c2goYmxvY2spO1xuICAgIHJldHVybiBibG9jaztcbiAgfVxuXG4gIHBvcEJsb2NrKCk6IExpdmVCbG9jayB7XG4gICAgdGhpcy5ibG9jaygpLmZpbmFsaXplKHRoaXMpO1xuICAgIHRoaXMuX19jbG9zZUJsb2NrKCk7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmJsb2NrU3RhY2sucG9wKCksICdFeHBlY3RlZCBwb3BCbG9jayB0byByZXR1cm4gYSBibG9jaycpO1xuICB9XG5cbiAgX19vcGVuQmxvY2soKTogdm9pZCB7fVxuICBfX2Nsb3NlQmxvY2soKTogdm9pZCB7fVxuXG4gIC8vIHRvZG8gcmV0dXJuIHNlZW1zIHVudXNlZFxuICBvcGVuRWxlbWVudCh0YWc6IHN0cmluZyk6IFNpbXBsZUVsZW1lbnQge1xuICAgIGxldCBlbGVtZW50ID0gdGhpcy5fX29wZW5FbGVtZW50KHRhZyk7XG4gICAgdGhpcy5jb25zdHJ1Y3RpbmcgPSBlbGVtZW50O1xuXG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cblxuICBfX29wZW5FbGVtZW50KHRhZzogc3RyaW5nKTogU2ltcGxlRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZG9tLmNyZWF0ZUVsZW1lbnQodGFnLCB0aGlzLmVsZW1lbnQpO1xuICB9XG5cbiAgZmx1c2hFbGVtZW50KG1vZGlmaWVyczogT3B0aW9uPFtNb2RpZmllck1hbmFnZXIsIHVua25vd25dW10+KSB7XG4gICAgbGV0IHBhcmVudCA9IHRoaXMuZWxlbWVudDtcbiAgICBsZXQgZWxlbWVudCA9IGV4cGVjdChcbiAgICAgIHRoaXMuY29uc3RydWN0aW5nLFxuICAgICAgYGZsdXNoRWxlbWVudCBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiBjb25zdHJ1Y3RpbmcgYW4gZWxlbWVudGBcbiAgICApO1xuXG4gICAgdGhpcy5fX2ZsdXNoRWxlbWVudChwYXJlbnQsIGVsZW1lbnQpO1xuXG4gICAgdGhpcy5jb25zdHJ1Y3RpbmcgPSBudWxsO1xuICAgIHRoaXMub3BlcmF0aW9ucyA9IG51bGw7XG5cbiAgICB0aGlzLnB1c2hNb2RpZmllcnMobW9kaWZpZXJzKTtcbiAgICB0aGlzLnB1c2hFbGVtZW50KGVsZW1lbnQsIG51bGwpO1xuICAgIHRoaXMuZGlkT3BlbkVsZW1lbnQoZWxlbWVudCk7XG4gIH1cblxuICBfX2ZsdXNoRWxlbWVudChwYXJlbnQ6IFNpbXBsZUVsZW1lbnQsIGNvbnN0cnVjdGluZzogU2ltcGxlRWxlbWVudCkge1xuICAgIHRoaXMuZG9tLmluc2VydEJlZm9yZShwYXJlbnQsIGNvbnN0cnVjdGluZywgdGhpcy5uZXh0U2libGluZyk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKTogT3B0aW9uPFtNb2RpZmllck1hbmFnZXIsIHVua25vd25dW10+IHtcbiAgICB0aGlzLndpbGxDbG9zZUVsZW1lbnQoKTtcbiAgICB0aGlzLnBvcEVsZW1lbnQoKTtcbiAgICByZXR1cm4gdGhpcy5wb3BNb2RpZmllcnMoKTtcbiAgfVxuXG4gIHB1c2hSZW1vdGVFbGVtZW50KFxuICAgIGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQsXG4gICAgZ3VpZDogc3RyaW5nLFxuICAgIGluc2VydEJlZm9yZTogTWF5YmU8U2ltcGxlTm9kZT5cbiAgKTogT3B0aW9uPFJlbW90ZUxpdmVCbG9jaz4ge1xuICAgIHJldHVybiB0aGlzLl9fcHVzaFJlbW90ZUVsZW1lbnQoZWxlbWVudCwgZ3VpZCwgaW5zZXJ0QmVmb3JlKTtcbiAgfVxuXG4gIF9fcHVzaFJlbW90ZUVsZW1lbnQoXG4gICAgZWxlbWVudDogU2ltcGxlRWxlbWVudCxcbiAgICBfZ3VpZDogc3RyaW5nLFxuICAgIGluc2VydEJlZm9yZTogTWF5YmU8U2ltcGxlTm9kZT5cbiAgKTogT3B0aW9uPFJlbW90ZUxpdmVCbG9jaz4ge1xuICAgIHRoaXMucHVzaEVsZW1lbnQoZWxlbWVudCwgaW5zZXJ0QmVmb3JlKTtcblxuICAgIGlmIChpbnNlcnRCZWZvcmUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgd2hpbGUgKGVsZW1lbnQubGFzdENoaWxkKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQ2hpbGQoZWxlbWVudC5sYXN0Q2hpbGQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBibG9jayA9IG5ldyBSZW1vdGVMaXZlQmxvY2soZWxlbWVudCk7XG5cbiAgICByZXR1cm4gdGhpcy5wdXNoTGl2ZUJsb2NrKGJsb2NrLCB0cnVlKTtcbiAgfVxuXG4gIHBvcFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5wb3BCbG9jaygpO1xuICAgIHRoaXMucG9wRWxlbWVudCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHB1c2hFbGVtZW50KGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQsIG5leHRTaWJsaW5nOiBNYXliZTxTaW1wbGVOb2RlPiA9IG51bGwpIHtcbiAgICB0aGlzW0NVUlNPUl9TVEFDS10ucHVzaChuZXcgQ3Vyc29ySW1wbChlbGVtZW50LCBuZXh0U2libGluZykpO1xuICB9XG5cbiAgcHJpdmF0ZSBwdXNoTW9kaWZpZXJzKG1vZGlmaWVyczogT3B0aW9uPFtNb2RpZmllck1hbmFnZXIsIHVua25vd25dW10+KTogdm9pZCB7XG4gICAgdGhpcy5tb2RpZmllclN0YWNrLnB1c2gobW9kaWZpZXJzKTtcbiAgfVxuXG4gIHByaXZhdGUgcG9wTW9kaWZpZXJzKCk6IE9wdGlvbjxbTW9kaWZpZXJNYW5hZ2VyLCB1bmtub3duXVtdPiB7XG4gICAgcmV0dXJuIHRoaXMubW9kaWZpZXJTdGFjay5wb3AoKTtcbiAgfVxuXG4gIGRpZEFwcGVuZEJvdW5kcyhib3VuZHM6IEJvdW5kcyk6IEJvdW5kcyB7XG4gICAgdGhpcy5ibG9jaygpLmRpZEFwcGVuZEJvdW5kcyhib3VuZHMpO1xuICAgIHJldHVybiBib3VuZHM7XG4gIH1cblxuICBkaWRBcHBlbmROb2RlPFQgZXh0ZW5kcyBTaW1wbGVOb2RlPihub2RlOiBUKTogVCB7XG4gICAgdGhpcy5ibG9jaygpLmRpZEFwcGVuZE5vZGUobm9kZSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBkaWRPcGVuRWxlbWVudChlbGVtZW50OiBTaW1wbGVFbGVtZW50KTogU2ltcGxlRWxlbWVudCB7XG4gICAgdGhpcy5ibG9jaygpLm9wZW5FbGVtZW50KGVsZW1lbnQpO1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgd2lsbENsb3NlRWxlbWVudCgpIHtcbiAgICB0aGlzLmJsb2NrKCkuY2xvc2VFbGVtZW50KCk7XG4gIH1cblxuICBhcHBlbmRUZXh0KHN0cmluZzogc3RyaW5nKTogU2ltcGxlVGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuZGlkQXBwZW5kTm9kZSh0aGlzLl9fYXBwZW5kVGV4dChzdHJpbmcpKTtcbiAgfVxuXG4gIF9fYXBwZW5kVGV4dCh0ZXh0OiBzdHJpbmcpOiBTaW1wbGVUZXh0IHtcbiAgICBsZXQgeyBkb20sIGVsZW1lbnQsIG5leHRTaWJsaW5nIH0gPSB0aGlzO1xuICAgIGxldCBub2RlID0gZG9tLmNyZWF0ZVRleHROb2RlKHRleHQpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUoZWxlbWVudCwgbm9kZSwgbmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgX19hcHBlbmROb2RlKG5vZGU6IFNpbXBsZU5vZGUpOiBTaW1wbGVOb2RlIHtcbiAgICB0aGlzLmRvbS5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCBub2RlLCB0aGlzLm5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIF9fYXBwZW5kRnJhZ21lbnQoZnJhZ21lbnQ6IFNpbXBsZURvY3VtZW50RnJhZ21lbnQpOiBCb3VuZHMge1xuICAgIGxldCBmaXJzdCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7XG5cbiAgICBpZiAoZmlyc3QpIHtcbiAgICAgIGxldCByZXQgPSBuZXcgQ29uY3JldGVCb3VuZHModGhpcy5lbGVtZW50LCBmaXJzdCwgZnJhZ21lbnQubGFzdENoaWxkISk7XG4gICAgICB0aGlzLmRvbS5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCBmcmFnbWVudCwgdGhpcy5uZXh0U2libGluZyk7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IFNpbmdsZU5vZGVCb3VuZHModGhpcy5lbGVtZW50LCB0aGlzLl9fYXBwZW5kQ29tbWVudCgnJykpO1xuICAgIH1cbiAgfVxuXG4gIF9fYXBwZW5kSFRNTChodG1sOiBzdHJpbmcpOiBCb3VuZHMge1xuICAgIHJldHVybiB0aGlzLmRvbS5pbnNlcnRIVE1MQmVmb3JlKHRoaXMuZWxlbWVudCwgdGhpcy5uZXh0U2libGluZywgaHRtbCk7XG4gIH1cblxuICBhcHBlbmREeW5hbWljSFRNTCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IGJvdW5kcyA9IHRoaXMudHJ1c3RlZENvbnRlbnQodmFsdWUpO1xuICAgIHRoaXMuZGlkQXBwZW5kQm91bmRzKGJvdW5kcyk7XG4gIH1cblxuICBhcHBlbmREeW5hbWljVGV4dCh2YWx1ZTogc3RyaW5nKTogU2ltcGxlVGV4dCB7XG4gICAgbGV0IG5vZGUgPSB0aGlzLnVudHJ1c3RlZENvbnRlbnQodmFsdWUpO1xuICAgIHRoaXMuZGlkQXBwZW5kTm9kZShub2RlKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIGFwcGVuZER5bmFtaWNGcmFnbWVudCh2YWx1ZTogU2ltcGxlRG9jdW1lbnRGcmFnbWVudCk6IHZvaWQge1xuICAgIGxldCBib3VuZHMgPSB0aGlzLl9fYXBwZW5kRnJhZ21lbnQodmFsdWUpO1xuICAgIHRoaXMuZGlkQXBwZW5kQm91bmRzKGJvdW5kcyk7XG4gIH1cblxuICBhcHBlbmREeW5hbWljTm9kZSh2YWx1ZTogU2ltcGxlTm9kZSk6IHZvaWQge1xuICAgIGxldCBub2RlID0gdGhpcy5fX2FwcGVuZE5vZGUodmFsdWUpO1xuICAgIGxldCBib3VuZHMgPSBuZXcgU2luZ2xlTm9kZUJvdW5kcyh0aGlzLmVsZW1lbnQsIG5vZGUpO1xuICAgIHRoaXMuZGlkQXBwZW5kQm91bmRzKGJvdW5kcyk7XG4gIH1cblxuICBwcml2YXRlIHRydXN0ZWRDb250ZW50KHZhbHVlOiBzdHJpbmcpOiBCb3VuZHMge1xuICAgIHJldHVybiB0aGlzLl9fYXBwZW5kSFRNTCh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHVudHJ1c3RlZENvbnRlbnQodmFsdWU6IHN0cmluZyk6IFNpbXBsZVRleHQge1xuICAgIHJldHVybiB0aGlzLl9fYXBwZW5kVGV4dCh2YWx1ZSk7XG4gIH1cblxuICBhcHBlbmRDb21tZW50KHN0cmluZzogc3RyaW5nKTogU2ltcGxlQ29tbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZGlkQXBwZW5kTm9kZSh0aGlzLl9fYXBwZW5kQ29tbWVudChzdHJpbmcpKTtcbiAgfVxuXG4gIF9fYXBwZW5kQ29tbWVudChzdHJpbmc6IHN0cmluZyk6IFNpbXBsZUNvbW1lbnQge1xuICAgIGxldCB7IGRvbSwgZWxlbWVudCwgbmV4dFNpYmxpbmcgfSA9IHRoaXM7XG4gICAgbGV0IG5vZGUgPSBkb20uY3JlYXRlQ29tbWVudChzdHJpbmcpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUoZWxlbWVudCwgbm9kZSwgbmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgX19zZXRBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBuYW1lc3BhY2U6IE9wdGlvbjxBdHRyTmFtZXNwYWNlPik6IHZvaWQge1xuICAgIHRoaXMuZG9tLnNldEF0dHJpYnV0ZSh0aGlzLmNvbnN0cnVjdGluZyEsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICB9XG5cbiAgX19zZXRQcm9wZXJ0eShuYW1lOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gICAgKHRoaXMuY29uc3RydWN0aW5nISBhcyBhbnkpW25hbWVdID0gdmFsdWU7XG4gIH1cblxuICBzZXRTdGF0aWNBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBuYW1lc3BhY2U6IE9wdGlvbjxBdHRyTmFtZXNwYWNlPik6IHZvaWQge1xuICAgIHRoaXMuX19zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gIH1cblxuICBzZXREeW5hbWljQXR0cmlidXRlKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogdW5rbm93bixcbiAgICB0cnVzdGluZzogYm9vbGVhbixcbiAgICBuYW1lc3BhY2U6IE9wdGlvbjxBdHRyTmFtZXNwYWNlPlxuICApOiBEeW5hbWljQXR0cmlidXRlIHtcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuY29uc3RydWN0aW5nITtcbiAgICBsZXQgYXR0cmlidXRlID0gdGhpcy5lbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsIG5hbWUsIHRydXN0aW5nLCBuYW1lc3BhY2UpO1xuICAgIGF0dHJpYnV0ZS5zZXQodGhpcywgdmFsdWUsIHRoaXMuZW52KTtcbiAgICByZXR1cm4gYXR0cmlidXRlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTaW1wbGVMaXZlQmxvY2sgaW1wbGVtZW50cyBMaXZlQmxvY2sge1xuICBwcm90ZWN0ZWQgZmlyc3Q6IE9wdGlvbjxGaXJzdE5vZGU+ID0gbnVsbDtcbiAgcHJvdGVjdGVkIGxhc3Q6IE9wdGlvbjxMYXN0Tm9kZT4gPSBudWxsO1xuICBwcm90ZWN0ZWQgZGVzdHJveWFibGVzOiBPcHRpb248U3ltYm9sRGVzdHJveWFibGVbXT4gPSBudWxsO1xuICBwcm90ZWN0ZWQgbmVzdGluZyA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJlbnQ6IFNpbXBsZUVsZW1lbnQpIHt9XG5cbiAgcGFyZW50RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQ7XG4gIH1cblxuICBmaXJzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgbGV0IGZpcnN0ID0gZXhwZWN0KFxuICAgICAgdGhpcy5maXJzdCxcbiAgICAgICdjYW5ub3QgY2FsbCBgZmlyc3ROb2RlKClgIHdoaWxlIGBTaW1wbGVMaXZlQmxvY2tgIGlzIHN0aWxsIGluaXRpYWxpemluZydcbiAgICApO1xuXG4gICAgcmV0dXJuIGZpcnN0LmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgbGV0IGxhc3QgPSBleHBlY3QoXG4gICAgICB0aGlzLmxhc3QsXG4gICAgICAnY2Fubm90IGNhbGwgYGxhc3ROb2RlKClgIHdoaWxlIGBTaW1wbGVMaXZlQmxvY2tgIGlzIHN0aWxsIGluaXRpYWxpemluZydcbiAgICApO1xuXG4gICAgcmV0dXJuIGxhc3QubGFzdE5vZGUoKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQpIHtcbiAgICB0aGlzLmRpZEFwcGVuZE5vZGUoZWxlbWVudCk7XG4gICAgdGhpcy5uZXN0aW5nKys7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5uZXN0aW5nLS07XG4gIH1cblxuICBkaWRBcHBlbmROb2RlKG5vZGU6IFNpbXBsZU5vZGUpIHtcbiAgICBpZiAodGhpcy5uZXN0aW5nICE9PSAwKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuZmlyc3QpIHtcbiAgICAgIHRoaXMuZmlyc3QgPSBuZXcgRmlyc3Qobm9kZSk7XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0ID0gbmV3IExhc3Qobm9kZSk7XG4gIH1cblxuICBkaWRBcHBlbmRCb3VuZHMoYm91bmRzOiBCb3VuZHMpIHtcbiAgICBpZiAodGhpcy5uZXN0aW5nICE9PSAwKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuZmlyc3QpIHtcbiAgICAgIHRoaXMuZmlyc3QgPSBib3VuZHM7XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0ID0gYm91bmRzO1xuICB9XG5cbiAgZmluYWxpemUoc3RhY2s6IEVsZW1lbnRCdWlsZGVyKSB7XG4gICAgaWYgKHRoaXMuZmlyc3QgPT09IG51bGwpIHtcbiAgICAgIHN0YWNrLmFwcGVuZENvbW1lbnQoJycpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVtb3RlTGl2ZUJsb2NrIGV4dGVuZHMgU2ltcGxlTGl2ZUJsb2NrIGltcGxlbWVudHMgU3ltYm9sRGVzdHJveWFibGUge1xuICBbREVTVFJPWV0oKSB7XG4gICAgLy8gSW4gZ2VuZXJhbCwgeW91IG9ubHkgbmVlZCB0byBjbGVhciB0aGUgcm9vdCBvZiBhIGhpZXJhcmNoeSwgYW5kIHNob3VsZCBuZXZlclxuICAgIC8vIG5lZWQgdG8gY2xlYXIgYW55IGNoaWxkIG5vZGVzLiBUaGlzIGlzIGFuIGltcG9ydGFudCBjb25zdHJhaW50IHRoYXQgZ2l2ZXMgdXNcbiAgICAvLyBhIHN0cm9uZyBndWFyYW50ZWUgdGhhdCBjbGVhcmluZyBhIHN1YnRyZWUgaXMgYSBzaW5nbGUgRE9NIG9wZXJhdGlvbi5cbiAgICAvL1xuICAgIC8vIEJlY2F1c2UgcmVtb3RlIGJsb2NrcyBhcmUgbm90IG5vcm1hbGx5IHBoeXNpY2FsbHkgbmVzdGVkIGluc2lkZSBvZiB0aGUgdHJlZVxuICAgIC8vIHRoYXQgdGhleSBhcmUgbG9naWNhbGx5IG5lc3RlZCBpbnNpZGUsIHdlIG1hbnVhbGx5IGNsZWFyIHJlbW90ZSBibG9ja3Mgd2hlblxuICAgIC8vIGEgbG9naWNhbCBwYXJlbnQgaXMgY2xlYXJlZC5cbiAgICAvL1xuICAgIC8vIEhPV0VWRVIsIGl0IGlzIGN1cnJlbnRseSBwb3NzaWJsZSBmb3IgYSByZW1vdGUgYmxvY2sgdG8gYmUgcGh5c2ljYWxseSBuZXN0ZWRcbiAgICAvLyBpbnNpZGUgb2YgdGhlIGJsb2NrIGl0IGlzIGxvZ2ljYWxseSBjb250YWluZWQgaW5zaWRlIG9mLiBUaGlzIGhhcHBlbnMgd2hlblxuICAgIC8vIHRoZSByZW1vdGUgYmxvY2sgaXMgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgYXBwbGljYXRpb24ncyBlbnRpcmUgZWxlbWVudC5cbiAgICAvL1xuICAgIC8vIFRoZSBwcm9ibGVtIHdpdGggdGhhdCBzY2VuYXJpbyBpcyB0aGF0IEdsaW1tZXIgYmVsaWV2ZXMgdGhhdCBpdCBvd25zIG1vcmUgb2ZcbiAgICAvLyB0aGUgRE9NIHRoYW4gaXQgYWN0dWFsbHkgZG9lcy4gVGhlIGNvZGUgaXMgYXR0ZW1wdGluZyB0byB3cml0ZSBwYXN0IHRoZSBlbmRcbiAgICAvLyBvZiB0aGUgR2xpbW1lci1tYW5hZ2VkIHJvb3QsIGJ1dCBHbGltbWVyIGlzbid0IGF3YXJlIG9mIHRoYXQuXG4gICAgLy9cbiAgICAvLyBUaGUgY29ycmVjdCBzb2x1dGlvbiB0byB0aGF0IHByb2JsZW0gaXMgZm9yIEdsaW1tZXIgdG8gYmUgYXdhcmUgb2YgdGhlIGVuZFxuICAgIC8vIG9mIHRoZSBib3VuZHMgdGhhdCBpdCBvd25zLCBhbmQgb25jZSB3ZSBtYWtlIHRoYXQgY2hhbmdlLCB0aGlzIGNoZWNrIGNvdWxkXG4gICAgLy8gYmUgcmVtb3ZlZC5cbiAgICAvL1xuICAgIC8vIEZvciBub3csIGEgbW9yZSB0YXJnZXRlZCBmaXggaXMgdG8gY2hlY2sgd2hldGhlciB0aGUgbm9kZSB3YXMgYWxyZWFkeSByZW1vdmVkXG4gICAgLy8gYW5kIGF2b2lkIGNsZWFyaW5nIHRoZSBub2RlIGlmIGl0IHdhcy4gSW4gbW9zdCBjYXNlcyB0aGlzIHNob3VsZG4ndCBoYXBwZW4sXG4gICAgLy8gc28gdGhpcyBtaWdodCBoaWRlIGJ1Z3Mgd2hlcmUgdGhlIGNvZGUgY2xlYXJzIG5lc3RlZCBub2RlcyB1bm5lY2Vzc2FyaWx5LFxuICAgIC8vIHNvIHdlIHNob3VsZCBldmVudHVhbGx5IHRyeSB0byBkbyB0aGUgY29ycmVjdCBmaXguXG4gICAgaWYgKHRoaXMucGFyZW50RWxlbWVudCgpID09PSB0aGlzLmZpcnN0Tm9kZSgpLnBhcmVudE5vZGUpIHtcbiAgICAgIGNsZWFyKHRoaXMpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRhYmxlQmxvY2tJbXBsIGV4dGVuZHMgU2ltcGxlTGl2ZUJsb2NrIGltcGxlbWVudHMgVXBkYXRhYmxlQmxvY2sge1xuICByZXNldChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPFNpbXBsZU5vZGU+IHtcbiAgICBsZXQgbmV4dFNpYmxpbmcgPSBkZXRhY2hDaGlsZHJlbih0aGlzLCBlbnYpO1xuXG4gICAgLy8gbGV0IG5leHRTaWJsaW5nID0gY2xlYXIodGhpcyk7XG5cbiAgICB0aGlzLmZpcnN0ID0gbnVsbDtcbiAgICB0aGlzLmxhc3QgPSBudWxsO1xuICAgIHRoaXMuZGVzdHJveWFibGVzID0gbnVsbDtcbiAgICB0aGlzLm5lc3RpbmcgPSAwO1xuXG4gICAgcmV0dXJuIG5leHRTaWJsaW5nO1xuICB9XG59XG5cbi8vIEZJWE1FOiBBbGwgdGhlIG5vb3BzIGluIGhlcmUgaW5kaWNhdGUgYSBtb2RlbGxpbmcgcHJvYmxlbVxuY2xhc3MgTGl2ZUJsb2NrTGlzdCBpbXBsZW1lbnRzIExpdmVCbG9jayB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFyZW50OiBTaW1wbGVFbGVtZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYm91bmRMaXN0OiBMaW5rZWRMaXN0PExpbmtlZExpc3ROb2RlICYgTGl2ZUJsb2NrPlxuICApIHtcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICB0aGlzLmJvdW5kTGlzdCA9IGJvdW5kTGlzdDtcbiAgfVxuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIGxldCBoZWFkID0gZXhwZWN0KFxuICAgICAgdGhpcy5ib3VuZExpc3QuaGVhZCgpLFxuICAgICAgJ2Nhbm5vdCBjYWxsIGBmaXJzdE5vZGUoKWAgd2hpbGUgYExpdmVCbG9ja0xpc3RgIGlzIHN0aWxsIGluaXRpYWxpemluZydcbiAgICApO1xuXG4gICAgcmV0dXJuIGhlYWQuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpOiBTaW1wbGVOb2RlIHtcbiAgICBsZXQgdGFpbCA9IGV4cGVjdChcbiAgICAgIHRoaXMuYm91bmRMaXN0LnRhaWwoKSxcbiAgICAgICdjYW5ub3QgY2FsbCBgbGFzdE5vZGUoKWAgd2hpbGUgYExpdmVCbG9ja0xpc3RgIGlzIHN0aWxsIGluaXRpYWxpemluZydcbiAgICApO1xuXG4gICAgcmV0dXJuIHRhaWwubGFzdE5vZGUoKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KF9lbGVtZW50OiBTaW1wbGVFbGVtZW50KSB7XG4gICAgYXNzZXJ0KGZhbHNlLCAnQ2Fubm90IG9wZW5FbGVtZW50IGRpcmVjdGx5IGluc2lkZSBhIGJsb2NrIGxpc3QnKTtcbiAgfVxuXG4gIGNsb3NlRWxlbWVudCgpIHtcbiAgICBhc3NlcnQoZmFsc2UsICdDYW5ub3QgY2xvc2VFbGVtZW50IGRpcmVjdGx5IGluc2lkZSBhIGJsb2NrIGxpc3QnKTtcbiAgfVxuXG4gIGRpZEFwcGVuZE5vZGUoX25vZGU6IFNpbXBsZU5vZGUpIHtcbiAgICBhc3NlcnQoZmFsc2UsICdDYW5ub3QgY3JlYXRlIGEgbmV3IG5vZGUgZGlyZWN0bHkgaW5zaWRlIGEgYmxvY2sgbGlzdCcpO1xuICB9XG5cbiAgZGlkQXBwZW5kQm91bmRzKF9ib3VuZHM6IEJvdW5kcykge31cblxuICBmaW5hbGl6ZShfc3RhY2s6IEVsZW1lbnRCdWlsZGVyKSB7XG4gICAgYXNzZXJ0KHRoaXMuYm91bmRMaXN0LmhlYWQoKSAhPT0gbnVsbCwgJ2JvdW5kc0xpc3QgY2Fubm90IGJlIGVtcHR5Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsaWVudEJ1aWxkZXIoZW52OiBFbnZpcm9ubWVudCwgY3Vyc29yOiBDdXJzb3JJbXBsKTogRWxlbWVudEJ1aWxkZXIge1xuICByZXR1cm4gTmV3RWxlbWVudEJ1aWxkZXIuZm9ySW5pdGlhbFJlbmRlcihlbnYsIGN1cnNvcik7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2VsZW1lbnQtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQWNBOztBQW1CQTs7QUFDQTs7OztBQVdBLE1BQUEsS0FBQSxDQUFXO0FBQ1QsRUFBQSxXQUFBLENBQUEsSUFBQSxFQUFvQztBQUFoQixTQUFBLElBQUEsR0FBQSxJQUFBO0FBQW9COztBQUV4QyxFQUFBLFNBQVMsR0FBQTtBQUNQLFdBQU8sS0FBUCxJQUFBO0FBQ0Q7O0FBTFE7O0FBUVgsTUFBQSxJQUFBLENBQVU7QUFDUixFQUFBLFdBQUEsQ0FBQSxJQUFBLEVBQW9DO0FBQWhCLFNBQUEsSUFBQSxHQUFBLElBQUE7QUFBb0I7O0FBRXhDLEVBQUEsUUFBUSxHQUFBO0FBQ04sV0FBTyxLQUFQLElBQUE7QUFDRDs7QUFMTzs7QUFRSixNQUFBLFFBQUEsQ0FBZTtBQUduQixFQUFBLFdBQUEsQ0FBQSxNQUFBLEVBQTBCO0FBQ3hCLFNBQUEsTUFBQSxHQUFBLE1BQUE7QUFDRDs7QUFFRCxFQUFBLGFBQWEsR0FBQTtBQUNYLFdBQU8sS0FBQSxNQUFBLENBQVAsYUFBTyxFQUFQO0FBQ0Q7O0FBRUQsRUFBQSxTQUFTLEdBQUE7QUFDUCxXQUFPLEtBQUEsTUFBQSxDQUFQLFNBQU8sRUFBUDtBQUNEOztBQUVELEVBQUEsUUFBUSxHQUFBO0FBQ04sV0FBTyxLQUFBLE1BQUEsQ0FBUCxRQUFPLEVBQVA7QUFDRDs7QUFqQmtCOzs7QUFvQmQsTUFBTSxZQUFZLEdBQXNCLGtCQUF4QyxjQUF3QyxDQUF4Qzs7O0FBRUQsTUFBQSxpQkFBQSxDQUF3QjtBQXlCNUIsRUFBQSxXQUFBLENBQUEsR0FBQSxFQUFBLFVBQUEsRUFBQSxXQUFBLEVBQXdGO0FBdEJqRixTQUFBLFlBQUEsR0FBQSxJQUFBO0FBQ0EsU0FBQSxVQUFBLEdBQUEsSUFBQTtBQUdQLFNBQUEsRUFBQSxJQUFpQixJQUFqQixXQUFpQixF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a0JBQU0sS0FBTixFQURpQyxpREFDakMsQ0FEaUM7QUFFbEM7O0FBRUQsRUFBQSxZQUFZLEdBQUE7QUFBQSxhQUNWLGtCQUFNLEtBQU4sRUFEVSxrREFDVixDQURVO0FBRVg7O0FBRUQsRUFBQSxhQUFhLENBQUEsS0FBQSxFQUFrQjtBQUFBLGFBQzdCLGtCQUFNLEtBQU4sRUFENkIsdURBQzdCLENBRDZCO0FBRTlCOztBQUVELEVBQUEsZUFBZSxDQUFBLE9BQUEsRUFBZ0IsQ0FBSTs7QUFFbkMsRUFBQSxRQUFRLENBQUEsTUFBQSxFQUF1QjtBQUFBLGFBQzdCLGtCQUFPLEtBQUEsU0FBQSxDQUFBLElBQUEsT0FBRCxJQUFOLEVBRDZCLDRCQUM3QixDQUQ2QjtBQUU5Qjs7QUEvQ2dCOztBQWtEYixTQUFBLGFBQUEsQ0FBQSxHQUFBLEVBQUEsTUFBQSxFQUE0RDtBQUNoRSxTQUFPLGlCQUFpQixDQUFqQixnQkFBQSxDQUFBLEdBQUEsRUFBUCxNQUFPLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJvdW5kcyxcbiAgRWxlbWVudE9wZXJhdGlvbnMsXG4gIEVudmlyb25tZW50LFxuICBHbGltbWVyVHJlZUNoYW5nZXMsXG4gIEdsaW1tZXJUcmVlQ29uc3RydWN0aW9uLFxuICBTeW1ib2xEZXN0cm95YWJsZSxcbiAgRWxlbWVudEJ1aWxkZXIsXG4gIExpdmVCbG9jayxcbiAgQ3Vyc29yU3RhY2tTeW1ib2wsXG4gIFVwZGF0YWJsZUJsb2NrLFxuICBDdXJzb3IsXG4gIE1vZGlmaWVyTWFuYWdlcixcbn0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIERFU1RST1ksXG4gIGV4cGVjdCxcbiAgTGlua2VkTGlzdCxcbiAgTGlua2VkTGlzdE5vZGUsXG4gIE9wdGlvbixcbiAgU3RhY2ssXG4gIE1heWJlLFxuICBzeW1ib2wsXG59IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgQXR0ck5hbWVzcGFjZSxcbiAgU2ltcGxlQ29tbWVudCxcbiAgU2ltcGxlRG9jdW1lbnRGcmFnbWVudCxcbiAgU2ltcGxlRWxlbWVudCxcbiAgU2ltcGxlTm9kZSxcbiAgU2ltcGxlVGV4dCxcbn0gZnJvbSAnQHNpbXBsZS1kb20vaW50ZXJmYWNlJztcbmltcG9ydCB7IGNsZWFyLCBDb25jcmV0ZUJvdW5kcywgQ3Vyc29ySW1wbCwgU2luZ2xlTm9kZUJvdW5kcyB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBkZXRhY2hDaGlsZHJlbiB9IGZyb20gJy4uL2xpZmV0aW1lJztcbmltcG9ydCB7IER5bmFtaWNBdHRyaWJ1dGUgfSBmcm9tICcuL2F0dHJpYnV0ZXMvZHluYW1pYyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlyc3ROb2RlIHtcbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFzdE5vZGUge1xuICBsYXN0Tm9kZSgpOiBTaW1wbGVOb2RlO1xufVxuXG5jbGFzcyBGaXJzdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbm9kZTogU2ltcGxlTm9kZSkge31cblxuICBmaXJzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxufVxuXG5jbGFzcyBMYXN0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlOiBTaW1wbGVOb2RlKSB7fVxuXG4gIGxhc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZyYWdtZW50IGltcGxlbWVudHMgQm91bmRzIHtcbiAgcHJpdmF0ZSBib3VuZHM6IEJvdW5kcztcblxuICBjb25zdHJ1Y3Rvcihib3VuZHM6IEJvdW5kcykge1xuICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICB9XG5cbiAgcGFyZW50RWxlbWVudCgpOiBTaW1wbGVFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5sYXN0Tm9kZSgpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBDVVJTT1JfU1RBQ0s6IEN1cnNvclN0YWNrU3ltYm9sID0gc3ltYm9sKCdDVVJTT1JfU1RBQ0snKTtcblxuZXhwb3J0IGNsYXNzIE5ld0VsZW1lbnRCdWlsZGVyIGltcGxlbWVudHMgRWxlbWVudEJ1aWxkZXIge1xuICBwdWJsaWMgZG9tOiBHbGltbWVyVHJlZUNvbnN0cnVjdGlvbjtcbiAgcHVibGljIHVwZGF0ZU9wZXJhdGlvbnM6IEdsaW1tZXJUcmVlQ2hhbmdlcztcbiAgcHVibGljIGNvbnN0cnVjdGluZzogT3B0aW9uPFNpbXBsZUVsZW1lbnQ+ID0gbnVsbDtcbiAgcHVibGljIG9wZXJhdGlvbnM6IE9wdGlvbjxFbGVtZW50T3BlcmF0aW9ucz4gPSBudWxsO1xuICBwcml2YXRlIGVudjogRW52aXJvbm1lbnQ7XG5cbiAgW0NVUlNPUl9TVEFDS10gPSBuZXcgU3RhY2s8Q3Vyc29yPigpO1xuICBwcml2YXRlIG1vZGlmaWVyU3RhY2sgPSBuZXcgU3RhY2s8T3B0aW9uPFtNb2RpZmllck1hbmFnZXIsIHVua25vd25dW10+PigpO1xuICBwcml2YXRlIGJsb2NrU3RhY2sgPSBuZXcgU3RhY2s8TGl2ZUJsb2NrPigpO1xuXG4gIHN0YXRpYyBmb3JJbml0aWFsUmVuZGVyKGVudjogRW52aXJvbm1lbnQsIGN1cnNvcjogQ3Vyc29ySW1wbCkge1xuICAgIHJldHVybiBuZXcgdGhpcyhlbnYsIGN1cnNvci5lbGVtZW50LCBjdXJzb3IubmV4dFNpYmxpbmcpLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIHN0YXRpYyByZXN1bWUoZW52OiBFbnZpcm9ubWVudCwgYmxvY2s6IFVwZGF0YWJsZUJsb2NrKTogTmV3RWxlbWVudEJ1aWxkZXIge1xuICAgIGxldCBwYXJlbnROb2RlID0gYmxvY2sucGFyZW50RWxlbWVudCgpO1xuICAgIGxldCBuZXh0U2libGluZyA9IGJsb2NrLnJlc2V0KGVudik7XG5cbiAgICBsZXQgc3RhY2sgPSBuZXcgdGhpcyhlbnYsIHBhcmVudE5vZGUsIG5leHRTaWJsaW5nKS5pbml0aWFsaXplKCk7XG4gICAgc3RhY2sucHVzaExpdmVCbG9jayhibG9jayk7XG5cbiAgICByZXR1cm4gc3RhY2s7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCBwYXJlbnROb2RlOiBTaW1wbGVFbGVtZW50LCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZU5vZGU+KSB7XG4gICAgdGhpcy5wdXNoRWxlbWVudChwYXJlbnROb2RlLCBuZXh0U2libGluZyk7XG5cbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLmRvbSA9IGVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCk7XG4gICAgdGhpcy51cGRhdGVPcGVyYXRpb25zID0gZW52LmdldERPTSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRpYWxpemUoKTogdGhpcyB7XG4gICAgdGhpcy5wdXNoU2ltcGxlQmxvY2soKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRlYnVnQmxvY2tzKCk6IExpdmVCbG9ja1tdIHtcbiAgICByZXR1cm4gdGhpcy5ibG9ja1N0YWNrLnRvQXJyYXkoKTtcbiAgfVxuXG4gIGdldCBlbGVtZW50KCk6IFNpbXBsZUVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzW0NVUlNPUl9TVEFDS10uY3VycmVudCEuZWxlbWVudDtcbiAgfVxuXG4gIGdldCBuZXh0U2libGluZygpOiBPcHRpb248U2ltcGxlTm9kZT4ge1xuICAgIHJldHVybiB0aGlzW0NVUlNPUl9TVEFDS10uY3VycmVudCEubmV4dFNpYmxpbmc7XG4gIH1cblxuICBnZXQgaGFzQmxvY2tzKCkge1xuICAgIHJldHVybiB0aGlzLmJsb2NrU3RhY2suc2l6ZSA+IDA7XG4gIH1cblxuICBwcm90ZWN0ZWQgYmxvY2soKTogTGl2ZUJsb2NrIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuYmxvY2tTdGFjay5jdXJyZW50LCAnRXhwZWN0ZWQgYSBjdXJyZW50IGxpdmUgYmxvY2snKTtcbiAgfVxuXG4gIHBvcEVsZW1lbnQoKSB7XG4gICAgdGhpc1tDVVJTT1JfU1RBQ0tdLnBvcCgpO1xuICAgIGV4cGVjdCh0aGlzW0NVUlNPUl9TVEFDS10uY3VycmVudCwgXCJjYW4ndCBwb3AgcGFzdCB0aGUgbGFzdCBlbGVtZW50XCIpO1xuICB9XG5cbiAgcHVzaFNpbXBsZUJsb2NrKCk6IExpdmVCbG9jayB7XG4gICAgcmV0dXJuIHRoaXMucHVzaExpdmVCbG9jayhuZXcgU2ltcGxlTGl2ZUJsb2NrKHRoaXMuZWxlbWVudCkpO1xuICB9XG5cbiAgcHVzaFVwZGF0YWJsZUJsb2NrKCk6IFVwZGF0YWJsZUJsb2NrSW1wbCB7XG4gICAgcmV0dXJuIHRoaXMucHVzaExpdmVCbG9jayhuZXcgVXBkYXRhYmxlQmxvY2tJbXBsKHRoaXMuZWxlbWVudCkpO1xuICB9XG5cbiAgcHVzaEJsb2NrTGlzdChsaXN0OiBMaW5rZWRMaXN0PExpbmtlZExpc3ROb2RlICYgTGl2ZUJsb2NrPik6IExpdmVCbG9ja0xpc3Qge1xuICAgIHJldHVybiB0aGlzLnB1c2hMaXZlQmxvY2sobmV3IExpdmVCbG9ja0xpc3QodGhpcy5lbGVtZW50LCBsaXN0KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHVzaExpdmVCbG9jazxUIGV4dGVuZHMgTGl2ZUJsb2NrPihibG9jazogVCwgaXNSZW1vdGUgPSBmYWxzZSk6IFQge1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQ7XG5cbiAgICBpZiAoY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgaWYgKCFpc1JlbW90ZSkge1xuICAgICAgICBjdXJyZW50LmRpZEFwcGVuZEJvdW5kcyhibG9jayk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fX29wZW5CbG9jaygpO1xuICAgIHRoaXMuYmxvY2tTdGFjay5wdXNoKGJsb2NrKTtcbiAgICByZXR1cm4gYmxvY2s7XG4gIH1cblxuICBwb3BCbG9jaygpOiBMaXZlQmxvY2sge1xuICAgIHRoaXMuYmxvY2soKS5maW5hbGl6ZSh0aGlzKTtcbiAgICB0aGlzLl9fY2xvc2VCbG9jaygpO1xuICAgIHJldHVybiBleHBlY3QodGhpcy5ibG9ja1N0YWNrLnBvcCgpLCAnRXhwZWN0ZWQgcG9wQmxvY2sgdG8gcmV0dXJuIGEgYmxvY2snKTtcbiAgfVxuXG4gIF9fb3BlbkJsb2NrKCk6IHZvaWQge31cbiAgX19jbG9zZUJsb2NrKCk6IHZvaWQge31cblxuICAvLyB0b2RvIHJldHVybiBzZWVtcyB1bnVzZWRcbiAgb3BlbkVsZW1lbnQodGFnOiBzdHJpbmcpOiBTaW1wbGVFbGVtZW50IHtcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuX19vcGVuRWxlbWVudCh0YWcpO1xuICAgIHRoaXMuY29uc3RydWN0aW5nID0gZWxlbWVudDtcblxuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgX19vcGVuRWxlbWVudCh0YWc6IHN0cmluZyk6IFNpbXBsZUVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmRvbS5jcmVhdGVFbGVtZW50KHRhZywgdGhpcy5lbGVtZW50KTtcbiAgfVxuXG4gIGZsdXNoRWxlbWVudChtb2RpZmllcnM6IE9wdGlvbjxbTW9kaWZpZXJNYW5hZ2VyLCB1bmtub3duXVtdPikge1xuICAgIGxldCBwYXJlbnQgPSB0aGlzLmVsZW1lbnQ7XG4gICAgbGV0IGVsZW1lbnQgPSBleHBlY3QoXG4gICAgICB0aGlzLmNvbnN0cnVjdGluZyxcbiAgICAgIGBmbHVzaEVsZW1lbnQgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gY29uc3RydWN0aW5nIGFuIGVsZW1lbnRgXG4gICAgKTtcblxuICAgIHRoaXMuX19mbHVzaEVsZW1lbnQocGFyZW50LCBlbGVtZW50KTtcblxuICAgIHRoaXMuY29uc3RydWN0aW5nID0gbnVsbDtcbiAgICB0aGlzLm9wZXJhdGlvbnMgPSBudWxsO1xuXG4gICAgdGhpcy5wdXNoTW9kaWZpZXJzKG1vZGlmaWVycyk7XG4gICAgdGhpcy5wdXNoRWxlbWVudChlbGVtZW50LCBudWxsKTtcbiAgICB0aGlzLmRpZE9wZW5FbGVtZW50KGVsZW1lbnQpO1xuICB9XG5cbiAgX19mbHVzaEVsZW1lbnQocGFyZW50OiBTaW1wbGVFbGVtZW50LCBjb25zdHJ1Y3Rpbmc6IFNpbXBsZUVsZW1lbnQpIHtcbiAgICB0aGlzLmRvbS5pbnNlcnRCZWZvcmUocGFyZW50LCBjb25zdHJ1Y3RpbmcsIHRoaXMubmV4dFNpYmxpbmcpO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCk6IE9wdGlvbjxbTW9kaWZpZXJNYW5hZ2VyLCB1bmtub3duXVtdPiB7XG4gICAgdGhpcy53aWxsQ2xvc2VFbGVtZW50KCk7XG4gICAgdGhpcy5wb3BFbGVtZW50KCk7XG4gICAgcmV0dXJuIHRoaXMucG9wTW9kaWZpZXJzKCk7XG4gIH1cblxuICBwdXNoUmVtb3RlRWxlbWVudChcbiAgICBlbGVtZW50OiBTaW1wbGVFbGVtZW50LFxuICAgIGd1aWQ6IHN0cmluZyxcbiAgICBpbnNlcnRCZWZvcmU6IE1heWJlPFNpbXBsZU5vZGU+XG4gICk6IE9wdGlvbjxSZW1vdGVMaXZlQmxvY2s+IHtcbiAgICByZXR1cm4gdGhpcy5fX3B1c2hSZW1vdGVFbGVtZW50KGVsZW1lbnQsIGd1aWQsIGluc2VydEJlZm9yZSk7XG4gIH1cblxuICBfX3B1c2hSZW1vdGVFbGVtZW50KFxuICAgIGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQsXG4gICAgX2d1aWQ6IHN0cmluZyxcbiAgICBpbnNlcnRCZWZvcmU6IE1heWJlPFNpbXBsZU5vZGU+XG4gICk6IE9wdGlvbjxSZW1vdGVMaXZlQmxvY2s+IHtcbiAgICB0aGlzLnB1c2hFbGVtZW50KGVsZW1lbnQsIGluc2VydEJlZm9yZSk7XG5cbiAgICBpZiAoaW5zZXJ0QmVmb3JlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHdoaWxlIChlbGVtZW50Lmxhc3RDaGlsZCkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUNoaWxkKGVsZW1lbnQubGFzdENoaWxkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgYmxvY2sgPSBuZXcgUmVtb3RlTGl2ZUJsb2NrKGVsZW1lbnQpO1xuXG4gICAgcmV0dXJuIHRoaXMucHVzaExpdmVCbG9jayhibG9jaywgdHJ1ZSk7XG4gIH1cblxuICBwb3BSZW1vdGVFbGVtZW50KCkge1xuICAgIHRoaXMucG9wQmxvY2soKTtcbiAgICB0aGlzLnBvcEVsZW1lbnQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwdXNoRWxlbWVudChlbGVtZW50OiBTaW1wbGVFbGVtZW50LCBuZXh0U2libGluZzogTWF5YmU8U2ltcGxlTm9kZT4gPSBudWxsKSB7XG4gICAgdGhpc1tDVVJTT1JfU1RBQ0tdLnB1c2gobmV3IEN1cnNvckltcGwoZWxlbWVudCwgbmV4dFNpYmxpbmcpKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaE1vZGlmaWVycyhtb2RpZmllcnM6IE9wdGlvbjxbTW9kaWZpZXJNYW5hZ2VyLCB1bmtub3duXVtdPik6IHZvaWQge1xuICAgIHRoaXMubW9kaWZpZXJTdGFjay5wdXNoKG1vZGlmaWVycyk7XG4gIH1cblxuICBwcml2YXRlIHBvcE1vZGlmaWVycygpOiBPcHRpb248W01vZGlmaWVyTWFuYWdlciwgdW5rbm93bl1bXT4ge1xuICAgIHJldHVybiB0aGlzLm1vZGlmaWVyU3RhY2sucG9wKCk7XG4gIH1cblxuICBkaWRBcHBlbmRCb3VuZHMoYm91bmRzOiBCb3VuZHMpOiBCb3VuZHMge1xuICAgIHRoaXMuYmxvY2soKS5kaWRBcHBlbmRCb3VuZHMoYm91bmRzKTtcbiAgICByZXR1cm4gYm91bmRzO1xuICB9XG5cbiAgZGlkQXBwZW5kTm9kZTxUIGV4dGVuZHMgU2ltcGxlTm9kZT4obm9kZTogVCk6IFQge1xuICAgIHRoaXMuYmxvY2soKS5kaWRBcHBlbmROb2RlKG5vZGUpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgZGlkT3BlbkVsZW1lbnQoZWxlbWVudDogU2ltcGxlRWxlbWVudCk6IFNpbXBsZUVsZW1lbnQge1xuICAgIHRoaXMuYmxvY2soKS5vcGVuRWxlbWVudChlbGVtZW50KTtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIHdpbGxDbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5ibG9jaygpLmNsb3NlRWxlbWVudCgpO1xuICB9XG5cbiAgYXBwZW5kVGV4dChzdHJpbmc6IHN0cmluZyk6IFNpbXBsZVRleHQge1xuICAgIHJldHVybiB0aGlzLmRpZEFwcGVuZE5vZGUodGhpcy5fX2FwcGVuZFRleHQoc3RyaW5nKSk7XG4gIH1cblxuICBfX2FwcGVuZFRleHQodGV4dDogc3RyaW5nKTogU2ltcGxlVGV4dCB7XG4gICAgbGV0IHsgZG9tLCBlbGVtZW50LCBuZXh0U2libGluZyB9ID0gdGhpcztcbiAgICBsZXQgbm9kZSA9IGRvbS5jcmVhdGVUZXh0Tm9kZSh0ZXh0KTtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIG5vZGUsIG5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIF9fYXBwZW5kTm9kZShub2RlOiBTaW1wbGVOb2RlKTogU2ltcGxlTm9kZSB7XG4gICAgdGhpcy5kb20uaW5zZXJ0QmVmb3JlKHRoaXMuZWxlbWVudCwgbm9kZSwgdGhpcy5uZXh0U2libGluZyk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBfX2FwcGVuZEZyYWdtZW50KGZyYWdtZW50OiBTaW1wbGVEb2N1bWVudEZyYWdtZW50KTogQm91bmRzIHtcbiAgICBsZXQgZmlyc3QgPSBmcmFnbWVudC5maXJzdENoaWxkO1xuXG4gICAgaWYgKGZpcnN0KSB7XG4gICAgICBsZXQgcmV0ID0gbmV3IENvbmNyZXRlQm91bmRzKHRoaXMuZWxlbWVudCwgZmlyc3QsIGZyYWdtZW50Lmxhc3RDaGlsZCEpO1xuICAgICAgdGhpcy5kb20uaW5zZXJ0QmVmb3JlKHRoaXMuZWxlbWVudCwgZnJhZ21lbnQsIHRoaXMubmV4dFNpYmxpbmcpO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBTaW5nbGVOb2RlQm91bmRzKHRoaXMuZWxlbWVudCwgdGhpcy5fX2FwcGVuZENvbW1lbnQoJycpKTtcbiAgICB9XG4gIH1cblxuICBfX2FwcGVuZEhUTUwoaHRtbDogc3RyaW5nKTogQm91bmRzIHtcbiAgICByZXR1cm4gdGhpcy5kb20uaW5zZXJ0SFRNTEJlZm9yZSh0aGlzLmVsZW1lbnQsIHRoaXMubmV4dFNpYmxpbmcsIGh0bWwpO1xuICB9XG5cbiAgYXBwZW5kRHluYW1pY0hUTUwodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBib3VuZHMgPSB0aGlzLnRydXN0ZWRDb250ZW50KHZhbHVlKTtcbiAgICB0aGlzLmRpZEFwcGVuZEJvdW5kcyhib3VuZHMpO1xuICB9XG5cbiAgYXBwZW5kRHluYW1pY1RleHQodmFsdWU6IHN0cmluZyk6IFNpbXBsZVRleHQge1xuICAgIGxldCBub2RlID0gdGhpcy51bnRydXN0ZWRDb250ZW50KHZhbHVlKTtcbiAgICB0aGlzLmRpZEFwcGVuZE5vZGUobm9kZSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBhcHBlbmREeW5hbWljRnJhZ21lbnQodmFsdWU6IFNpbXBsZURvY3VtZW50RnJhZ21lbnQpOiB2b2lkIHtcbiAgICBsZXQgYm91bmRzID0gdGhpcy5fX2FwcGVuZEZyYWdtZW50KHZhbHVlKTtcbiAgICB0aGlzLmRpZEFwcGVuZEJvdW5kcyhib3VuZHMpO1xuICB9XG5cbiAgYXBwZW5kRHluYW1pY05vZGUodmFsdWU6IFNpbXBsZU5vZGUpOiB2b2lkIHtcbiAgICBsZXQgbm9kZSA9IHRoaXMuX19hcHBlbmROb2RlKHZhbHVlKTtcbiAgICBsZXQgYm91bmRzID0gbmV3IFNpbmdsZU5vZGVCb3VuZHModGhpcy5lbGVtZW50LCBub2RlKTtcbiAgICB0aGlzLmRpZEFwcGVuZEJvdW5kcyhib3VuZHMpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cnVzdGVkQ29udGVudCh2YWx1ZTogc3RyaW5nKTogQm91bmRzIHtcbiAgICByZXR1cm4gdGhpcy5fX2FwcGVuZEhUTUwodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSB1bnRydXN0ZWRDb250ZW50KHZhbHVlOiBzdHJpbmcpOiBTaW1wbGVUZXh0IHtcbiAgICByZXR1cm4gdGhpcy5fX2FwcGVuZFRleHQodmFsdWUpO1xuICB9XG5cbiAgYXBwZW5kQ29tbWVudChzdHJpbmc6IHN0cmluZyk6IFNpbXBsZUNvbW1lbnQge1xuICAgIHJldHVybiB0aGlzLmRpZEFwcGVuZE5vZGUodGhpcy5fX2FwcGVuZENvbW1lbnQoc3RyaW5nKSk7XG4gIH1cblxuICBfX2FwcGVuZENvbW1lbnQoc3RyaW5nOiBzdHJpbmcpOiBTaW1wbGVDb21tZW50IHtcbiAgICBsZXQgeyBkb20sIGVsZW1lbnQsIG5leHRTaWJsaW5nIH0gPSB0aGlzO1xuICAgIGxldCBub2RlID0gZG9tLmNyZWF0ZUNvbW1lbnQoc3RyaW5nKTtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIG5vZGUsIG5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIF9fc2V0QXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbmFtZXNwYWNlOiBPcHRpb248QXR0ck5hbWVzcGFjZT4pOiB2b2lkIHtcbiAgICB0aGlzLmRvbS5zZXRBdHRyaWJ1dGUodGhpcy5jb25zdHJ1Y3RpbmchLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKTtcbiAgfVxuXG4gIF9fc2V0UHJvcGVydHkobmFtZTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgICh0aGlzLmNvbnN0cnVjdGluZyEgYXMgYW55KVtuYW1lXSA9IHZhbHVlO1xuICB9XG5cbiAgc2V0U3RhdGljQXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbmFtZXNwYWNlOiBPcHRpb248QXR0ck5hbWVzcGFjZT4pOiB2b2lkIHtcbiAgICB0aGlzLl9fc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICB9XG5cbiAgc2V0RHluYW1pY0F0dHJpYnV0ZShcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgdmFsdWU6IHVua25vd24sXG4gICAgdHJ1c3Rpbmc6IGJvb2xlYW4sXG4gICAgbmFtZXNwYWNlOiBPcHRpb248QXR0ck5hbWVzcGFjZT5cbiAgKTogRHluYW1pY0F0dHJpYnV0ZSB7XG4gICAgbGV0IGVsZW1lbnQgPSB0aGlzLmNvbnN0cnVjdGluZyE7XG4gICAgbGV0IGF0dHJpYnV0ZSA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCB0cnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICBhdHRyaWJ1dGUuc2V0KHRoaXMsIHZhbHVlLCB0aGlzLmVudik7XG4gICAgcmV0dXJuIGF0dHJpYnV0ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlTGl2ZUJsb2NrIGltcGxlbWVudHMgTGl2ZUJsb2NrIHtcbiAgcHJvdGVjdGVkIGZpcnN0OiBPcHRpb248Rmlyc3ROb2RlPiA9IG51bGw7XG4gIHByb3RlY3RlZCBsYXN0OiBPcHRpb248TGFzdE5vZGU+ID0gbnVsbDtcbiAgcHJvdGVjdGVkIGRlc3Ryb3lhYmxlczogT3B0aW9uPFN5bWJvbERlc3Ryb3lhYmxlW10+ID0gbnVsbDtcbiAgcHJvdGVjdGVkIG5lc3RpbmcgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyZW50OiBTaW1wbGVFbGVtZW50KSB7fVxuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIGxldCBmaXJzdCA9IGV4cGVjdChcbiAgICAgIHRoaXMuZmlyc3QsXG4gICAgICAnY2Fubm90IGNhbGwgYGZpcnN0Tm9kZSgpYCB3aGlsZSBgU2ltcGxlTGl2ZUJsb2NrYCBpcyBzdGlsbCBpbml0aWFsaXppbmcnXG4gICAgKTtcblxuICAgIHJldHVybiBmaXJzdC5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIGxldCBsYXN0ID0gZXhwZWN0KFxuICAgICAgdGhpcy5sYXN0LFxuICAgICAgJ2Nhbm5vdCBjYWxsIGBsYXN0Tm9kZSgpYCB3aGlsZSBgU2ltcGxlTGl2ZUJsb2NrYCBpcyBzdGlsbCBpbml0aWFsaXppbmcnXG4gICAgKTtcblxuICAgIHJldHVybiBsYXN0Lmxhc3ROb2RlKCk7XG4gIH1cblxuICBvcGVuRWxlbWVudChlbGVtZW50OiBTaW1wbGVFbGVtZW50KSB7XG4gICAgdGhpcy5kaWRBcHBlbmROb2RlKGVsZW1lbnQpO1xuICAgIHRoaXMubmVzdGluZysrO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIHRoaXMubmVzdGluZy0tO1xuICB9XG5cbiAgZGlkQXBwZW5kTm9kZShub2RlOiBTaW1wbGVOb2RlKSB7XG4gICAgaWYgKHRoaXMubmVzdGluZyAhPT0gMCkgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLmZpcnN0KSB7XG4gICAgICB0aGlzLmZpcnN0ID0gbmV3IEZpcnN0KG5vZGUpO1xuICAgIH1cblxuICAgIHRoaXMubGFzdCA9IG5ldyBMYXN0KG5vZGUpO1xuICB9XG5cbiAgZGlkQXBwZW5kQm91bmRzKGJvdW5kczogQm91bmRzKSB7XG4gICAgaWYgKHRoaXMubmVzdGluZyAhPT0gMCkgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLmZpcnN0KSB7XG4gICAgICB0aGlzLmZpcnN0ID0gYm91bmRzO1xuICAgIH1cblxuICAgIHRoaXMubGFzdCA9IGJvdW5kcztcbiAgfVxuXG4gIGZpbmFsaXplKHN0YWNrOiBFbGVtZW50QnVpbGRlcikge1xuICAgIGlmICh0aGlzLmZpcnN0ID09PSBudWxsKSB7XG4gICAgICBzdGFjay5hcHBlbmRDb21tZW50KCcnKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlbW90ZUxpdmVCbG9jayBleHRlbmRzIFNpbXBsZUxpdmVCbG9jayBpbXBsZW1lbnRzIFN5bWJvbERlc3Ryb3lhYmxlIHtcbiAgW0RFU1RST1ldKCkge1xuICAgIC8vIEluIGdlbmVyYWwsIHlvdSBvbmx5IG5lZWQgdG8gY2xlYXIgdGhlIHJvb3Qgb2YgYSBoaWVyYXJjaHksIGFuZCBzaG91bGQgbmV2ZXJcbiAgICAvLyBuZWVkIHRvIGNsZWFyIGFueSBjaGlsZCBub2Rlcy4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgY29uc3RyYWludCB0aGF0IGdpdmVzIHVzXG4gICAgLy8gYSBzdHJvbmcgZ3VhcmFudGVlIHRoYXQgY2xlYXJpbmcgYSBzdWJ0cmVlIGlzIGEgc2luZ2xlIERPTSBvcGVyYXRpb24uXG4gICAgLy9cbiAgICAvLyBCZWNhdXNlIHJlbW90ZSBibG9ja3MgYXJlIG5vdCBub3JtYWxseSBwaHlzaWNhbGx5IG5lc3RlZCBpbnNpZGUgb2YgdGhlIHRyZWVcbiAgICAvLyB0aGF0IHRoZXkgYXJlIGxvZ2ljYWxseSBuZXN0ZWQgaW5zaWRlLCB3ZSBtYW51YWxseSBjbGVhciByZW1vdGUgYmxvY2tzIHdoZW5cbiAgICAvLyBhIGxvZ2ljYWwgcGFyZW50IGlzIGNsZWFyZWQuXG4gICAgLy9cbiAgICAvLyBIT1dFVkVSLCBpdCBpcyBjdXJyZW50bHkgcG9zc2libGUgZm9yIGEgcmVtb3RlIGJsb2NrIHRvIGJlIHBoeXNpY2FsbHkgbmVzdGVkXG4gICAgLy8gaW5zaWRlIG9mIHRoZSBibG9jayBpdCBpcyBsb2dpY2FsbHkgY29udGFpbmVkIGluc2lkZSBvZi4gVGhpcyBoYXBwZW5zIHdoZW5cbiAgICAvLyB0aGUgcmVtb3RlIGJsb2NrIGlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGFwcGxpY2F0aW9uJ3MgZW50aXJlIGVsZW1lbnQuXG4gICAgLy9cbiAgICAvLyBUaGUgcHJvYmxlbSB3aXRoIHRoYXQgc2NlbmFyaW8gaXMgdGhhdCBHbGltbWVyIGJlbGlldmVzIHRoYXQgaXQgb3ducyBtb3JlIG9mXG4gICAgLy8gdGhlIERPTSB0aGFuIGl0IGFjdHVhbGx5IGRvZXMuIFRoZSBjb2RlIGlzIGF0dGVtcHRpbmcgdG8gd3JpdGUgcGFzdCB0aGUgZW5kXG4gICAgLy8gb2YgdGhlIEdsaW1tZXItbWFuYWdlZCByb290LCBidXQgR2xpbW1lciBpc24ndCBhd2FyZSBvZiB0aGF0LlxuICAgIC8vXG4gICAgLy8gVGhlIGNvcnJlY3Qgc29sdXRpb24gdG8gdGhhdCBwcm9ibGVtIGlzIGZvciBHbGltbWVyIHRvIGJlIGF3YXJlIG9mIHRoZSBlbmRcbiAgICAvLyBvZiB0aGUgYm91bmRzIHRoYXQgaXQgb3ducywgYW5kIG9uY2Ugd2UgbWFrZSB0aGF0IGNoYW5nZSwgdGhpcyBjaGVjayBjb3VsZFxuICAgIC8vIGJlIHJlbW92ZWQuXG4gICAgLy9cbiAgICAvLyBGb3Igbm93LCBhIG1vcmUgdGFyZ2V0ZWQgZml4IGlzIHRvIGNoZWNrIHdoZXRoZXIgdGhlIG5vZGUgd2FzIGFscmVhZHkgcmVtb3ZlZFxuICAgIC8vIGFuZCBhdm9pZCBjbGVhcmluZyB0aGUgbm9kZSBpZiBpdCB3YXMuIEluIG1vc3QgY2FzZXMgdGhpcyBzaG91bGRuJ3QgaGFwcGVuLFxuICAgIC8vIHNvIHRoaXMgbWlnaHQgaGlkZSBidWdzIHdoZXJlIHRoZSBjb2RlIGNsZWFycyBuZXN0ZWQgbm9kZXMgdW5uZWNlc3NhcmlseSxcbiAgICAvLyBzbyB3ZSBzaG91bGQgZXZlbnR1YWxseSB0cnkgdG8gZG8gdGhlIGNvcnJlY3QgZml4LlxuICAgIGlmICh0aGlzLnBhcmVudEVsZW1lbnQoKSA9PT0gdGhpcy5maXJzdE5vZGUoKS5wYXJlbnROb2RlKSB7XG4gICAgICBjbGVhcih0aGlzKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0YWJsZUJsb2NrSW1wbCBleHRlbmRzIFNpbXBsZUxpdmVCbG9jayBpbXBsZW1lbnRzIFVwZGF0YWJsZUJsb2NrIHtcbiAgcmVzZXQoZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxTaW1wbGVOb2RlPiB7XG4gICAgbGV0IG5leHRTaWJsaW5nID0gZGV0YWNoQ2hpbGRyZW4odGhpcywgZW52KTtcblxuICAgIC8vIGxldCBuZXh0U2libGluZyA9IGNsZWFyKHRoaXMpO1xuXG4gICAgdGhpcy5maXJzdCA9IG51bGw7XG4gICAgdGhpcy5sYXN0ID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3lhYmxlcyA9IG51bGw7XG4gICAgdGhpcy5uZXN0aW5nID0gMDtcblxuICAgIHJldHVybiBuZXh0U2libGluZztcbiAgfVxufVxuXG4vLyBGSVhNRTogQWxsIHRoZSBub29wcyBpbiBoZXJlIGluZGljYXRlIGEgbW9kZWxsaW5nIHByb2JsZW1cbmNsYXNzIExpdmVCbG9ja0xpc3QgaW1wbGVtZW50cyBMaXZlQmxvY2sge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhcmVudDogU2ltcGxlRWxlbWVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJvdW5kTGlzdDogTGlua2VkTGlzdDxMaW5rZWRMaXN0Tm9kZSAmIExpdmVCbG9jaz5cbiAgKSB7XG4gICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgdGhpcy5ib3VuZExpc3QgPSBib3VuZExpc3Q7XG4gIH1cblxuICBwYXJlbnRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudDtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpOiBTaW1wbGVOb2RlIHtcbiAgICBsZXQgaGVhZCA9IGV4cGVjdChcbiAgICAgIHRoaXMuYm91bmRMaXN0LmhlYWQoKSxcbiAgICAgICdjYW5ub3QgY2FsbCBgZmlyc3ROb2RlKClgIHdoaWxlIGBMaXZlQmxvY2tMaXN0YCBpcyBzdGlsbCBpbml0aWFsaXppbmcnXG4gICAgKTtcblxuICAgIHJldHVybiBoZWFkLmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgbGV0IHRhaWwgPSBleHBlY3QoXG4gICAgICB0aGlzLmJvdW5kTGlzdC50YWlsKCksXG4gICAgICAnY2Fubm90IGNhbGwgYGxhc3ROb2RlKClgIHdoaWxlIGBMaXZlQmxvY2tMaXN0YCBpcyBzdGlsbCBpbml0aWFsaXppbmcnXG4gICAgKTtcblxuICAgIHJldHVybiB0YWlsLmxhc3ROb2RlKCk7XG4gIH1cblxuICBvcGVuRWxlbWVudChfZWxlbWVudDogU2ltcGxlRWxlbWVudCkge1xuICAgIGFzc2VydChmYWxzZSwgJ0Nhbm5vdCBvcGVuRWxlbWVudCBkaXJlY3RseSBpbnNpZGUgYSBibG9jayBsaXN0Jyk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgYXNzZXJ0KGZhbHNlLCAnQ2Fubm90IGNsb3NlRWxlbWVudCBkaXJlY3RseSBpbnNpZGUgYSBibG9jayBsaXN0Jyk7XG4gIH1cblxuICBkaWRBcHBlbmROb2RlKF9ub2RlOiBTaW1wbGVOb2RlKSB7XG4gICAgYXNzZXJ0KGZhbHNlLCAnQ2Fubm90IGNyZWF0ZSBhIG5ldyBub2RlIGRpcmVjdGx5IGluc2lkZSBhIGJsb2NrIGxpc3QnKTtcbiAgfVxuXG4gIGRpZEFwcGVuZEJvdW5kcyhfYm91bmRzOiBCb3VuZHMpIHt9XG5cbiAgZmluYWxpemUoX3N0YWNrOiBFbGVtZW50QnVpbGRlcikge1xuICAgIGFzc2VydCh0aGlzLmJvdW5kTGlzdC5oZWFkKCkgIT09IG51bGwsICdib3VuZHNMaXN0IGNhbm5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGllbnRCdWlsZGVyKGVudjogRW52aXJvbm1lbnQsIGN1cnNvcjogQ3Vyc29ySW1wbCk6IEVsZW1lbnRCdWlsZGVyIHtcbiAgcmV0dXJuIE5ld0VsZW1lbnRCdWlsZGVyLmZvckluaXRpYWxSZW5kZXIoZW52LCBjdXJzb3IpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== |
@@ -119,11 +119,4 @@ "use strict"; | ||
var _proto = VM.prototype; | ||
var _proto = VM.prototype; // Fetch a value from a register onto the stack | ||
_proto.currentBlock = function currentBlock() { | ||
return this.elements().block(); | ||
} | ||
/* Registers */ | ||
; // Fetch a value from a register onto the stack | ||
_proto.fetch = function fetch(register) { | ||
@@ -423,5 +416,15 @@ this.stack.push(this.fetchValue(register)); | ||
while (true) { | ||
result = this.next(); | ||
if (result.done) break; | ||
try { | ||
while (true) { | ||
result = this.next(); | ||
if (result.done) break; | ||
} | ||
} finally { | ||
// If any existing blocks are open, due to an error or something like | ||
// that, we need to close them all and clean things up properly. | ||
var elements = this.elements(); | ||
while (elements.hasBlocks) { | ||
elements.popBlock(); | ||
} | ||
} | ||
@@ -474,2 +477,4 @@ | ||
} | ||
/* Registers */ | ||
}, { | ||
@@ -627,2 +632,2 @@ key: "pc", | ||
exports.JitVM = JitVM; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2FwcGVuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBMkJBOztBQVdBOztBQWdCQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWtGQSxNLEdBQUEsU0FBQSxNQUFBLEdBQUE7QUFDVyxPQUFBLEtBQUEsR0FBUSxJQUFSLFdBQVEsRUFBUjtBQUNBLE9BQUEsWUFBQSxHQUFlLElBQWYsV0FBZSxFQUFmO0FBQ0EsT0FBQSxRQUFBLEdBQVcsSUFBWCxXQUFXLEVBQVg7QUFDQSxPQUFBLEtBQUEsR0FBUSxJQUFSLFdBQVEsRUFBUjtBQUNBLE9BQUEsSUFBQSxHQUFPLElBQVAsV0FBTyxFQUFQOzs7SUFHRyxFOzs7QUEySFo7OztBQUlBLFdBQUEsRUFBQSxDQUFBLE9BQUEsRUFBQSxJQUFBLEVBQUEsWUFBQSxFQUcrQztBQUFBLFFBQUEsS0FBQSxHQUFBLElBQUE7O0FBQUEsUUFEN0MsRUFDNkMsR0FBQSxJQUFBLENBRDdDLEVBQzZDO0FBQUEsUUFEN0MsS0FDNkMsR0FBQSxJQUFBLENBRDdDLEtBQzZDO0FBQUEsUUFEN0MsWUFDNkMsR0FBQSxJQUFBLENBRDdDLFlBQzZDO0FBQUEsUUFEbEIsS0FDa0IsR0FBQSxJQUFBLENBRGxCLEtBQ2tCO0FBRnBDLFNBQUEsT0FBQSxHQUFBLE9BQUE7QUFFUSxTQUFBLFlBQUEsR0FBQSxZQUFBO0FBaklGLFNBQUEsRUFBQSxJQUFXLElBQVgsTUFBVyxFQUFYO0FBR0EsU0FBQSxFQUFBLElBQXFCLElBQXJCLFdBQXFCLEVBQXJCO0FBbUJWLFNBQUEsRUFBQSxHQUFBLElBQUE7QUFDQSxTQUFBLEVBQUEsR0FBQSxJQUFBO0FBQ0EsU0FBQSxFQUFBLEdBQUEsSUFBQTtBQUNBLFNBQUEsRUFBQSxHQUFBLElB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T0FBQSxDQUFBLElBQUEsRUFBQSxFQUFBLEVBQTREO0FBQUEsUUFBdEMsRUFBc0MsS0FBQSxLQUFBLENBQUEsRUFBQTtBQUF0QyxNQUFBLEVBQXNDLEdBQWpDLEtBQUEsaUJBQUEsRUFBQSxhQUFBLENBQXBCLE9BQW9CLENBQUw7QUFBc0M7O0FBQzFELFdBQU8sSUFBQSw0QkFBQSxDQUF5QixLQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQXpCLEVBQXlCLENBQXpCLEVBQXNELEtBQTdELE1BQU8sQ0FBUDtBQTVDSixHQUFBOztBQUFBLEVBQUEsT0FBQSxDQUFBLE9BQUEsR0FpREUsU0FBQSxPQUFBLENBQUEsS0FBQSxFQUFpQztBQUMvQixRQUFJLE1BQU0sR0FBRyx3QkFBYSxLQUFLLENBQUwsT0FBQSxDQUFjLEtBQXhDLE9BQTBCLENBQWIsQ0FBYjtBQUVBLFdBQUEsTUFBQTtBQXBESixHQUFBOztBQUFBLFNBQUEsS0FBQTtBQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21waWxhYmxlQmxvY2ssXG4gIENvbXBpbGFibGVUZW1wbGF0ZSxcbiAgRGVzdHJveWFibGUsXG4gIERyb3AsXG4gIER5bmFtaWNTY29wZSxcbiAgRW52aXJvbm1lbnQsXG4gIEppdE9yQW90QmxvY2ssXG4gIFBhcnRpYWxTY29wZSxcbiAgUmVuZGVyUmVzdWx0LFxuICBSaWNoSXRlcmF0b3JSZXN1bHQsXG4gIFJ1bnRpbWVDb250ZXh0LFxuICBSdW50aW1lQ29uc3RhbnRzLFxuICBSdW50aW1lSGVhcCxcbiAgUnVudGltZVByb2dyYW0sXG4gIFNjb3BlLFxuICBTeW1ib2xEZXN0cm95YWJsZSxcbiAgU3ludGF4Q29tcGlsYXRpb25Db250ZXh0LFxuICBWTSBhcyBQdWJsaWNWTSxcbiAgSml0UnVudGltZUNvbnRleHQsXG4gIEFvdFJ1bnRpbWVDb250ZXh0LFxuICBMaXZlQmxvY2ssXG4gIEVsZW1lbnRCdWlsZGVyLFxufSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IExPQ0FMX1NIT1VMRF9MT0cgfSBmcm9tICdAZ2xpbW1lci9sb2NhbC1kZWJ1Zy1mbGFncyc7XG5pbXBvcnQgeyBSdW50aW1lT3BJbXBsIH0gZnJvbSAnQGdsaW1tZXIvcHJvZ3JhbSc7XG5pbXBvcnQgeyBQYXRoUmVmZXJlbmNlLCBSZWZlcmVuY2VJdGVyYXRvciwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQge1xuICBhc3NvY2lhdGVEZXN0cnVjdG9yLFxuICBkZXN0cnVjdG9yLFxuICBleHBlY3QsXG4gIGlzRHJvcCxcbiAgTGlua2VkTGlzdCxcbiAgTGlzdFNsaWNlLFxuICBPcHRpb24sXG4gIFN0YWNrLFxuICBhc3NlcnQsXG59IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgJGZwLFxuICAkcGMsXG4gICRzMCxcbiAgJHMxLFxuICAkc3AsXG4gICR0MCxcbiAgJHQxLFxuICAkdjAsXG4gIGlzTG93TGV2ZWxSZWdpc3RlcixcbiAgTWFjaGluZVJlZ2lzdGVyLFxuICBSZWdpc3RlcixcbiAgU3lzY2FsbFJlZ2lzdGVyLFxufSBmcm9tICdAZ2xpbW1lci92bSc7XG5pbXBvcnQgeyBDaGVja051bWJlciwgY2hlY2sgfSBmcm9tICdAZ2xpbW1lci9kZWJ1Zyc7XG5pbXBvcnQgeyB1bndyYXBIYW5kbGUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IGNvbWJpbmVTbGljZSB9IGZyb20gJy4uL3V0aWxzL3RhZ3MnO1xuaW1wb3J0IHsgRGlkTW9kaWZ5T3Bjb2RlLCBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSwgTGFiZWxPcGNvZGUgfSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcbmltcG9ydCB7IFNjb3BlSW1wbCB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBEZWJ1Z1N0YXRlLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgVU5ERUZJTkVEX1JFRkVSRU5DRSB9IGZyb20gJy4uL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHsgQVJHUywgQ09OU1RBTlRTLCBERVNUUlVDVE9SX1NUQUNLLCBIRUFQLCBJTk5FUl9WTSwgUkVHSVNURVJTLCBTVEFDS1MgfSBmcm9tICcuLi9zeW1ib2xzJztcbmltcG9ydCB7IFZNQXJndW1lbnRzSW1wbCB9IGZyb20gJy4vYXJndW1lbnRzJztcbmltcG9ydCBMb3dMZXZlbFZNIGZyb20gJy4vbG93LWxldmVsJztcbmltcG9ydCBSZW5kZXJSZXN1bHRJbXBsIGZyb20gJy4vcmVuZGVyLXJlc3VsdCc7XG5pbXBvcnQgRXZhbHVhdGlvblN0YWNrSW1wbCwgeyBFdmFsdWF0aW9uU3RhY2sgfSBmcm9tICcuL3N0YWNrJztcbmltcG9ydCB7XG4gIEJsb2NrT3Bjb2RlLFxuICBMaXN0QmxvY2tPcGNvZGUsXG4gIFJlc3VtYWJsZVZNU3RhdGUsXG4gIFJlc3VtYWJsZVZNU3RhdGVJbXBsLFxuICBUcnlPcGNvZGUsXG4gIFZNU3RhdGUsXG59IGZyb20gJy4vdXBkYXRlJztcblxuLyoqXG4gKiBUaGlzIGludGVyZmFjZSBpcyB1c2VkIGJ5IGludGVybmFsIG9wY29kZXMsIGFuZCBpcyBtb3JlIHN0YWJsZSB0aGFuXG4gKiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEFwcGVuZCBWTSBpdHNlbGYuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYWxWTTxDIGV4dGVuZHMgSml0T3JBb3RCbG9jayA9IEppdE9yQW90QmxvY2s+IHtcbiAgcmVhZG9ubHkgW0NPTlNUQU5UU106IFJ1bnRpbWVDb25zdGFudHM7XG4gIHJlYWRvbmx5IFtBUkdTXTogVk1Bcmd1bWVudHNJbXBsO1xuXG4gIHJlYWRvbmx5IGVudjogRW52aXJvbm1lbnQ7XG4gIHJlYWRvbmx5IHN0YWNrOiBFdmFsdWF0aW9uU3RhY2s7XG4gIHJlYWRvbmx5IHJ1bnRpbWU6IFJ1bnRpbWVDb250ZXh0O1xuXG4gIGxvYWRWYWx1ZShyZWdpc3RlcjogTWFjaGluZVJlZ2lzdGVyLCB2YWx1ZTogbnVtYmVyKTogdm9pZDtcbiAgbG9hZFZhbHVlKHJlZ2lzdGVyOiBSZWdpc3RlciwgdmFsdWU6IHVua25vd24pOiB2b2lkO1xuICBsb2FkVmFsdWUocmVnaXN0ZXI6IFJlZ2lzdGVyIHwgTWFjaGluZVJlZ2lzdGVyLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG5cbiAgZmV0Y2hWYWx1ZShyZWdpc3RlcjogTWFjaGluZVJlZ2lzdGVyLnJhIHwgTWFjaGluZVJlZ2lzdGVyLnBjKTogbnVtYmVyO1xuICAvLyBUT0RPOiBTb21ldGhpbmcgYmV0dGVyIHRoYW4gYSB0eXBlIGFzc2VydGlvbj9cbiAgZmV0Y2hWYWx1ZTxUPihyZWdpc3RlcjogUmVnaXN0ZXIpOiBUO1xuICBmZXRjaFZhbHVlKHJlZ2lzdGVyOiBSZWdpc3Rlcik6IHVua25vd247XG5cbiAgbG9hZChyZWdpc3RlcjogUmVnaXN0ZXIpOiB2b2lkO1xuICBmZXRjaChyZWdpc3RlcjogUmVnaXN0ZXIpOiB2b2lkO1xuXG4gIHNjb3BlKCk6IFNjb3BlPEM+O1xuICBlbGVtZW50cygpOiBFbGVtZW50QnVpbGRlcjtcblxuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8dW5rbm93bj47XG5cbiAgdXBkYXRlV2l0aChvcGNvZGU6IFVwZGF0aW5nT3Bjb2RlKTogdm9pZDtcblxuICBhc3NvY2lhdGVEZXN0cm95YWJsZShkOiBTeW1ib2xEZXN0cm95YWJsZSB8IERlc3Ryb3lhYmxlKTogdm9pZDtcblxuICBiZWdpbkNhY2hlR3JvdXAoKTogdm9pZDtcbiAgY29tbWl0Q2FjaGVHcm91cCgpOiB2b2lkO1xuXG4gIC8vLyBJdGVyYXRpb24gLy8vXG5cbiAgZW50ZXJMaXN0KG9mZnNldDogbnVtYmVyKTogdm9pZDtcbiAgZXhpdExpc3QoKTogdm9pZDtcbiAgaXRlcmF0ZShtZW1vOiBQYXRoUmVmZXJlbmNlPHVua25vd24+LCBpdGVtOiBQYXRoUmVmZXJlbmNlPHVua25vd24+KTogVHJ5T3Bjb2RlO1xuICBlbnRlckl0ZW0oa2V5OiB1bmtub3duLCBvcGNvZGU6IFRyeU9wY29kZSk6IHZvaWQ7XG5cbiAgcHVzaFJvb3RTY29wZShzaXplOiBudW1iZXIpOiBQYXJ0aWFsU2NvcGU8Qz47XG4gIHB1c2hDaGlsZFNjb3BlKCk6IHZvaWQ7XG4gIHBvcFNjb3BlKCk6IHZvaWQ7XG4gIHB1c2hTY29wZShzY29wZTogU2NvcGU8Qz4pOiB2b2lkO1xuXG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGU7XG4gIGJpbmREeW5hbWljU2NvcGUobmFtZXM6IG51bWJlcltdKTogdm9pZDtcbiAgcHVzaER5bmFtaWNTY29wZSgpOiB2b2lkO1xuICBwb3BEeW5hbWljU2NvcGUoKTogdm9pZDtcblxuICBlbnRlcihhcmdzOiBudW1iZXIpOiB2b2lkO1xuICBleGl0KCk6IHZvaWQ7XG5cbiAgZ290byhwYzogbnVtYmVyKTogdm9pZDtcbiAgY2FsbChoYW5kbGU6IG51bWJlcik6IHZvaWQ7XG4gIHB1c2hGcmFtZSgpOiB2b2lkO1xuXG4gIHJlZmVyZW5jZUZvclN5bWJvbChzeW1ib2w6IG51bWJlcik6IFBhdGhSZWZlcmVuY2U8dW5rbm93bj47XG5cbiAgZXhlY3V0ZShpbml0aWFsaXplPzogKHZtOiB0aGlzKSA9PiB2b2lkKTogUmVuZGVyUmVzdWx0O1xuICBwdXNoVXBkYXRpbmcobGlzdD86IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KTogdm9pZDtcbiAgbmV4dCgpOiBSaWNoSXRlcmF0b3JSZXN1bHQ8bnVsbCwgUmVuZGVyUmVzdWx0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbEppdFZNIGV4dGVuZHMgSW50ZXJuYWxWTTxDb21waWxhYmxlQmxvY2s+IHtcbiAgY29tcGlsZShibG9jazogQ29tcGlsYWJsZVRlbXBsYXRlKTogbnVtYmVyO1xuICByZWFkb25seSBydW50aW1lOiBKaXRSdW50aW1lQ29udGV4dDtcbiAgcmVhZG9ubHkgY29udGV4dDogU3ludGF4Q29tcGlsYXRpb25Db250ZXh0O1xufVxuXG5jbGFzcyBTdGFja3M8QyBleHRlbmRzIEppdE9yQW90QmxvY2s+IHtcbiAgcmVhZG9ubHkgc2NvcGUgPSBuZXcgU3RhY2s8U2NvcGU8Qz4+KCk7XG4gIHJlYWRvbmx5IGR5bmFtaWNTY29wZSA9IG5ldyBTdGFjazxEeW5hbWljU2NvcGU+KCk7XG4gIHJlYWRvbmx5IHVwZGF0aW5nID0gbmV3IFN0YWNrPExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+PigpO1xuICByZWFkb25seSBjYWNoZSA9IG5ldyBTdGFjazxPcHRpb248VXBkYXRpbmdPcGNvZGU+PigpO1xuICByZWFkb25seSBsaXN0ID0gbmV3IFN0YWNrPExpc3RCbG9ja09wY29kZT4oKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYWJzdHJhY3QgY2xhc3MgVk08QyBleHRlbmRzIEppdE9yQW90QmxvY2s+IGltcGxlbWVudHMgUHVibGljVk0sIEludGVybmFsVk08Qz4ge1xuICBwcml2YXRlIHJlYWRvbmx5IFtTVEFDS1NdID0gbmV3IFN0YWNrczxDPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IFtIRUFQXTogUnVudGltZUhlYXA7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJ1Y3Rvcjogb2JqZWN0O1xuICBwcml2YXRlIHJlYWRvbmx5IFtERVNUUlVDVE9SX1NUQUNLXSA9IG5ldyBTdGFjazxvYmplY3Q+KCk7XG4gIHJlYWRvbmx5IFtDT05TVEFOVFNdOiBSdW50aW1lQ29uc3RhbnRzO1xuICByZWFkb25seSBbQVJHU106IFZNQXJndW1lbnRzSW1wbDtcbiAgcmVhZG9ubHkgW0lOTkVSX1ZNXTogTG93TGV2ZWxWTTtcblxuICBnZXQgc3RhY2soKTogRXZhbHVhdGlvblN0YWNrIHtcbiAgICByZXR1cm4gdGhpc1tJTk5FUl9WTV0uc3RhY2sgYXMgRXZhbHVhdGlvblN0YWNrO1xuICB9XG5cbiAgY3VycmVudEJsb2NrKCk6IExpdmVCbG9jayB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudHMoKS5ibG9jaygpO1xuICB9XG5cbiAgLyogUmVnaXN0ZXJzICovXG5cbiAgZ2V0IHBjKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXNbSU5ORVJfVk1dLmZldGNoUmVnaXN0ZXIoJHBjKTtcbiAgfVxuXG4gIHB1YmxpYyBzMDogdW5rbm93biA9IG51bGw7XG4gIHB1YmxpYyBzMTogdW5rbm93biA9IG51bGw7XG4gIHB1YmxpYyB0MDogdW5rbm93biA9IG51bGw7XG4gIHB1YmxpYyB0MTogdW5rbm93biA9IG51bGw7XG4gIHB1YmxpYyB2MDogdW5rbm93biA9IG51bGw7XG5cbiAgLy8gRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXIgb250byB0aGUgc3RhY2tcbiAgZmV0Y2gocmVnaXN0ZXI6IFN5c2NhbGxSZWdpc3Rlcik6IHZvaWQge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLmZldGNoVmFsdWUocmVnaXN0ZXIpKTtcbiAgfVxuXG4gIC8vIExvYWQgYSB2YWx1ZSBmcm9tIHRoZSBzdGFjayBpbnRvIGEgcmVnaXN0ZXJcbiAgbG9hZChyZWdpc3RlcjogU3lzY2FsbFJlZ2lzdGVyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5zdGFjay5wb3AoKTtcblxuICAgIHRoaXMubG9hZFZhbHVlKHJlZ2lzdGVyLCB2YWx1ZSk7XG4gIH1cblxuICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlclxuICBmZXRjaFZhbHVlKHJlZ2lzdGVyOiBNYWNoaW5lUmVnaXN0ZXIpOiBudW1iZXI7XG4gIGZldGNoVmFsdWU8VD4ocmVnaXN0ZXI6IFJlZ2lzdGVyKTogVDtcbiAgZmV0Y2hWYWx1ZShyZWdpc3RlcjogUmVnaXN0ZXIgfCBNYWNoaW5lUmVnaXN0ZXIpOiB1bmtub3duIHtcbiAgICBpZiAoaXNMb3dMZXZlbFJlZ2lzdGVyKHJlZ2lzdGVyKSkge1xuICAgICAgcmV0dXJuIHRoaXNbSU5ORVJfVk1dLmZldGNoUmVnaXN0ZXIocmVnaXN0ZXIpO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVnaXN0ZXIpIHtcbiAgICAgIGNhc2UgJHMwOlxuICAgICAgICByZXR1cm4gdGhpcy5zMDtcbiAgICAgIGNhc2UgJHMxOlxuICAgICAgICByZXR1cm4gdGhpcy5zMTtcbiAgICAgIGNhc2UgJHQwOlxuICAgICAgICByZXR1cm4gdGhpcy50MDtcbiAgICAgIGNhc2UgJHQxOlxuICAgICAgICByZXR1cm4gdGhpcy50MTtcbiAgICAgIGNhc2UgJHYwOlxuICAgICAgICByZXR1cm4gdGhpcy52MDtcbiAgICB9XG4gIH1cblxuICAvLyBMb2FkIGEgdmFsdWUgaW50byBhIHJlZ2lzdGVyXG5cbiAgbG9hZFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3RlciB8IE1hY2hpbmVSZWdpc3RlciwgdmFsdWU6IFQpOiB2b2lkIHtcbiAgICBpZiAoaXNMb3dMZXZlbFJlZ2lzdGVyKHJlZ2lzdGVyKSkge1xuICAgICAgdGhpc1tJTk5FUl9WTV0ubG9hZFJlZ2lzdGVyKHJlZ2lzdGVyLCAodmFsdWUgYXMgYW55KSBhcyBudW1iZXIpO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVnaXN0ZXIpIHtcbiAgICAgIGNhc2UgJHMwOlxuICAgICAgICB0aGlzLnMwID0gdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAkczE6XG4gICAgICAgIHRoaXMuczEgPSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICR0MDpcbiAgICAgICAgdGhpcy50MCA9IHZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJHQxOlxuICAgICAgICB0aGlzLnQxID0gdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAkdjA6XG4gICAgICAgIHRoaXMudjAgPSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1pZ3JhdGVkIHRvIElubmVyXG4gICAqL1xuXG4gIC8vIFN0YXJ0IGEgbmV3IGZyYW1lIGFuZCBzYXZlICRyYSBhbmQgJGZwIG9uIHRoZSBzdGFja1xuICBwdXNoRnJhbWUoKSB7XG4gICAgdGhpc1tJTk5FUl9WTV0ucHVzaEZyYW1lKCk7XG4gIH1cblxuICAvLyBSZXN0b3JlICRyYSwgJHNwIGFuZCAkZnBcbiAgcG9wRnJhbWUoKSB7XG4gICAgdGhpc1tJTk5FUl9WTV0ucG9wRnJhbWUoKTtcbiAgfVxuXG4gIC8vIEp1bXAgdG8gYW4gYWRkcmVzcyBpbiBgcHJvZ3JhbWBcbiAgZ290byhvZmZzZXQ6IG51bWJlcikge1xuICAgIHRoaXNbSU5ORVJfVk1dLmdvdG8ob2Zmc2V0KTtcbiAgfVxuXG4gIC8vIFNhdmUgJHBjIGludG8gJHJhLCB0aGVuIGp1bXAgdG8gYSBuZXcgYWRkcmVzcyBpbiBgcHJvZ3JhbWAgKGphbCBpbiBNSVBTKVxuICBjYWxsKGhhbmRsZTogbnVtYmVyKSB7XG4gICAgdGhpc1tJTk5FUl9WTV0uY2FsbChoYW5kbGUpO1xuICB9XG5cbiAgLy8gUHV0IGEgc3BlY2lmaWMgYHByb2dyYW1gIGFkZHJlc3MgaW4gJHJhXG4gIHJldHVyblRvKG9mZnNldDogbnVtYmVyKSB7XG4gICAgdGhpc1tJTk5FUl9WTV0ucmV0dXJuVG8ob2Zmc2V0KTtcbiAgfVxuXG4gIC8vIFJldHVybiB0byB0aGUgYHByb2dyYW1gIGFkZHJlc3Mgc3RvcmVkIGluICRyYVxuICByZXR1cm4oKSB7XG4gICAgdGhpc1tJTk5FUl9WTV0ucmV0dXJuKCk7XG4gIH1cblxuICAvKipcbiAgICogRW5kIG9mIG1pZ3JhdGVkLlxuICAgKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBydW50aW1lOiBSdW50aW1lQ29udGV4dCxcbiAgICB7IHBjLCBzY29wZSwgZHluYW1pY1Njb3BlLCBzdGFjayB9OiBWTVN0YXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFN0YWNrOiBFbGVtZW50QnVpbGRlclxuICApIHtcbiAgICBsZXQgZXZhbFN0YWNrID0gRXZhbHVhdGlvblN0YWNrSW1wbC5yZXN0b3JlKHN0YWNrKTtcblxuICAgIGFzc2VydCh0eXBlb2YgcGMgPT09ICdudW1iZXInLCAncGMgaXMgYSBudW1iZXInKTtcblxuICAgIGV2YWxTdGFja1tSRUdJU1RFUlNdWyRwY10gPSBwYztcbiAgICBldmFsU3RhY2tbUkVHSVNURVJTXVskc3BdID0gc3RhY2subGVuZ3RoIC0gMTtcbiAgICBldmFsU3RhY2tbUkVHSVNURVJTXVskZnBdID0gLTE7XG5cbiAgICB0aGlzW0hFQVBdID0gdGhpcy5wcm9ncmFtLmhlYXA7XG4gICAgdGhpc1tDT05TVEFOVFNdID0gdGhpcy5wcm9ncmFtLmNvbnN0YW50cztcbiAgICB0aGlzLmVsZW1lbnRTdGFjayA9IGVsZW1lbnRTdGFjaztcbiAgICB0aGlzW1NUQUNLU10uc2NvcGUucHVzaChzY29wZSk7XG4gICAgdGhpc1tTVEFDS1NdLmR5bmFtaWNTY29wZS5wdXNoKGR5bmFtaWNTY29wZSk7XG4gICAgdGhpc1tBUkdTXSA9IG5ldyBWTUFyZ3VtZW50c0ltcGwoKTtcbiAgICB0aGlzW0lOTkVSX1ZNXSA9IG5ldyBMb3dMZXZlbFZNKFxuICAgICAgZXZhbFN0YWNrLFxuICAgICAgdGhpc1tIRUFQXSxcbiAgICAgIHJ1bnRpbWUucHJvZ3JhbSxcbiAgICAgIHtcbiAgICAgICAgZGVidWdCZWZvcmU6IChvcGNvZGU6IFJ1bnRpbWVPcEltcGwpOiBEZWJ1Z1N0YXRlID0+IHtcbiAgICAgICAgICByZXR1cm4gQVBQRU5EX09QQ09ERVMuZGVidWdCZWZvcmUodGhpcywgb3Bjb2RlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBkZWJ1Z0FmdGVyOiAoc3RhdGU6IERlYnVnU3RhdGUpOiB2b2lkID0+IHtcbiAgICAgICAgICBBUFBFTkRfT1BDT0RFUy5kZWJ1Z0FmdGVyKHRoaXMsIHN0YXRlKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBldmFsU3RhY2tbUkVHSVNURVJTXVxuICAgICk7XG5cbiAgICB0aGlzLmRlc3RydWN0b3IgPSB7fTtcbiAgICB0aGlzW0RFU1RSVUNUT1JfU1RBQ0tdLnB1c2godGhpcy5kZXN0cnVjdG9yKTtcbiAgfVxuXG4gIGdldCBwcm9ncmFtKCk6IFJ1bnRpbWVQcm9ncmFtIHtcbiAgICByZXR1cm4gdGhpcy5ydW50aW1lLnByb2dyYW07XG4gIH1cblxuICBnZXQgZW52KCk6IEVudmlyb25tZW50IHtcbiAgICByZXR1cm4gdGhpcy5ydW50aW1lLmVudjtcbiAgfVxuXG4gIGNhcHR1cmVTdGF0ZShhcmdzOiBudW1iZXIsIHBjID0gdGhpc1tJTk5FUl9WTV0uZmV0Y2hSZWdpc3RlcigkcGMpKTogVk1TdGF0ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBjLFxuICAgICAgZHluYW1pY1Njb3BlOiB0aGlzLmR5bmFtaWNTY29wZSgpLFxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGUoKSxcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLmNhcHR1cmUoYXJncyksXG4gICAgfTtcbiAgfVxuXG4gIGFic3RyYWN0IGNhcHR1cmUoYXJnczogbnVtYmVyLCBwYz86IG51bWJlcik6IFJlc3VtYWJsZVZNU3RhdGU8SW50ZXJuYWxWTT47XG5cbiAgYmVnaW5DYWNoZUdyb3VwKCkge1xuICAgIHRoaXNbU1RBQ0tTXS5jYWNoZS5wdXNoKHRoaXMudXBkYXRpbmcoKS50YWlsKCkpO1xuICB9XG5cbiAgY29tbWl0Q2FjaGVHcm91cCgpIHtcbiAgICBsZXQgRU5EID0gbmV3IExhYmVsT3Bjb2RlKCdFTkQnKTtcblxuICAgIGxldCBvcGNvZGVzID0gdGhpcy51cGRhdGluZygpO1xuICAgIGxldCBtYXJrZXIgPSB0aGlzW1NUQUNLU10uY2FjaGUucG9wKCk7XG4gICAgbGV0IGhlYWQgPSBtYXJrZXIgPyBvcGNvZGVzLm5leHROb2RlKG1hcmtlcikgOiBvcGNvZGVzLmhlYWQoKTtcbiAgICBsZXQgdGFpbCA9IG9wY29kZXMudGFpbCgpO1xuICAgIGxldCB0YWcgPSBjb21iaW5lU2xpY2UobmV3IExpc3RTbGljZShoZWFkLCB0YWlsKSk7XG5cbiAgICBsZXQgZ3VhcmQgPSBuZXcgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUodGFnLCBFTkQpO1xuXG4gICAgb3Bjb2Rlcy5pbnNlcnRCZWZvcmUoZ3VhcmQsIGhlYWQpO1xuICAgIG9wY29kZXMuYXBwZW5kKG5ldyBEaWRNb2RpZnlPcGNvZGUoZ3VhcmQpKTtcbiAgICBvcGNvZGVzLmFwcGVuZChFTkQpO1xuICB9XG5cbiAgZW50ZXIoYXJnczogbnVtYmVyKSB7XG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCk7XG5cbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoYXJncyk7XG4gICAgbGV0IGJsb2NrID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuXG4gICAgbGV0IHRyeU9wY29kZSA9IG5ldyBUcnlPcGNvZGUoc3RhdGUsIHRoaXMucnVudGltZSwgYmxvY2ssIHVwZGF0aW5nKTtcblxuICAgIHRoaXMuZGlkRW50ZXIodHJ5T3Bjb2RlKTtcbiAgfVxuXG4gIGl0ZXJhdGUoXG4gICAgbWVtbzogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPixcbiAgICB2YWx1ZTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPlxuICApOiBUcnlPcGNvZGUge1xuICAgIGxldCBzdGFjayA9IHRoaXMuc3RhY2s7XG4gICAgc3RhY2sucHVzaCh2YWx1ZSk7XG4gICAgc3RhY2sucHVzaChtZW1vKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgyKTtcbiAgICBsZXQgYmxvY2sgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG5cbiAgICAvLyBsZXQgaXAgPSB0aGlzLmlwO1xuICAgIC8vIHRoaXMuaXAgPSBlbmQgKyA0O1xuICAgIC8vIHRoaXMuZnJhbWVzLnB1c2goaXApO1xuXG4gICAgcmV0dXJuIG5ldyBUcnlPcGNvZGUoc3RhdGUsIHRoaXMucnVudGltZSwgYmxvY2ssIG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpKTtcbiAgfVxuXG4gIGVudGVySXRlbShrZXk6IHN0cmluZywgb3Bjb2RlOiBUcnlPcGNvZGUpIHtcbiAgICB0aGlzLmxpc3RCbG9jaygpLm1hcC5zZXQoa2V5LCBvcGNvZGUpO1xuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgfVxuXG4gIGVudGVyTGlzdChvZmZzZXQ6IG51bWJlcikge1xuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PEJsb2NrT3Bjb2RlPigpO1xuXG4gICAgbGV0IGFkZHIgPSB0aGlzW0lOTkVSX1ZNXS50YXJnZXQob2Zmc2V0KTtcbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMCwgYWRkcik7XG4gICAgbGV0IGxpc3QgPSB0aGlzLmVsZW1lbnRzKCkucHVzaEJsb2NrTGlzdCh1cGRhdGluZyk7XG4gICAgbGV0IGFydGlmYWN0cyA9IHRoaXMuc3RhY2sucGVlazxSZWZlcmVuY2VJdGVyYXRvcj4oKS5hcnRpZmFjdHM7XG5cbiAgICBsZXQgb3Bjb2RlID0gbmV3IExpc3RCbG9ja09wY29kZShzdGF0ZSwgdGhpcy5ydW50aW1lLCBsaXN0LCB1cGRhdGluZywgYXJ0aWZhY3RzKTtcblxuICAgIHRoaXNbU1RBQ0tTXS5saXN0LnB1c2gob3Bjb2RlKTtcblxuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlkRW50ZXIob3Bjb2RlOiBCbG9ja09wY29kZSkge1xuICAgIHRoaXMuYXNzb2NpYXRlRGVzdHJ1Y3RvcihkZXN0cnVjdG9yKG9wY29kZSkpO1xuICAgIHRoaXNbREVTVFJVQ1RPUl9TVEFDS10ucHVzaChvcGNvZGUpO1xuICAgIHRoaXMudXBkYXRlV2l0aChvcGNvZGUpO1xuICAgIHRoaXMucHVzaFVwZGF0aW5nKG9wY29kZS5jaGlsZHJlbik7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXNbREVTVFJVQ1RPUl9TVEFDS10ucG9wKCk7XG4gICAgdGhpcy5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgdGhpcy5wb3BVcGRhdGluZygpO1xuXG4gICAgbGV0IHBhcmVudCA9IHRoaXMudXBkYXRpbmcoKS50YWlsKCkgYXMgQmxvY2tPcGNvZGU7XG5cbiAgICBwYXJlbnQuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gIH1cblxuICBleGl0TGlzdCgpIHtcbiAgICB0aGlzLmV4aXQoKTtcbiAgICB0aGlzW1NUQUNLU10ubGlzdC5wb3AoKTtcbiAgfVxuXG4gIHB1c2hVcGRhdGluZyhsaXN0ID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpOiB2b2lkIHtcbiAgICB0aGlzW1NUQUNLU10udXBkYXRpbmcucHVzaChsaXN0KTtcbiAgfVxuXG4gIHBvcFVwZGF0aW5nKCk6IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+IHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXNbU1RBQ0tTXS51cGRhdGluZy5wb3AoKSwgXCJjYW4ndCBwb3AgYW4gZW1wdHkgc3RhY2tcIik7XG4gIH1cblxuICB1cGRhdGVXaXRoKG9wY29kZTogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICB0aGlzLnVwZGF0aW5nKCkuYXBwZW5kKG9wY29kZSk7XG4gIH1cblxuICBsaXN0QmxvY2soKTogTGlzdEJsb2NrT3Bjb2RlIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXNbU1RBQ0tTXS5saXN0LmN1cnJlbnQsICdleHBlY3RlZCBhIGxpc3QgYmxvY2snKTtcbiAgfVxuXG4gIGFzc29jaWF0ZURlc3RydWN0b3IoY2hpbGQ6IERyb3ApOiB2b2lkIHtcbiAgICBpZiAoIWlzRHJvcChjaGlsZCkpIHJldHVybjtcbiAgICBsZXQgcGFyZW50ID0gZXhwZWN0KHRoaXNbREVTVFJVQ1RPUl9TVEFDS10uY3VycmVudCwgJ0V4cGVjdGVkIGRlc3RydWN0b3IgcGFyZW50Jyk7XG4gICAgYXNzb2NpYXRlRGVzdHJ1Y3RvcihwYXJlbnQsIGNoaWxkKTtcbiAgfVxuXG4gIGFzc29jaWF0ZURlc3Ryb3lhYmxlKGNoaWxkOiBTeW1ib2xEZXN0cm95YWJsZSB8IERlc3Ryb3lhYmxlKTogdm9pZCB7XG4gICAgdGhpcy5hc3NvY2lhdGVEZXN0cnVjdG9yKGRlc3RydWN0b3IoY2hpbGQpKTtcbiAgfVxuXG4gIHRyeVVwZGF0aW5nKCk6IE9wdGlvbjxMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPj4ge1xuICAgIHJldHVybiB0aGlzW1NUQUNLU10udXBkYXRpbmcuY3VycmVudDtcbiAgfVxuXG4gIHVwZGF0aW5nKCk6IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+IHtcbiAgICByZXR1cm4gZXhwZWN0KFxuICAgICAgdGhpc1tTVEFDS1NdLnVwZGF0aW5nLmN1cnJlbnQsXG4gICAgICAnZXhwZWN0ZWQgdXBkYXRpbmcgb3Bjb2RlIG9uIHRoZSB1cGRhdGluZyBvcGNvZGUgc3RhY2snXG4gICAgKTtcbiAgfVxuXG4gIGVsZW1lbnRzKCk6IEVsZW1lbnRCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50U3RhY2s7XG4gIH1cblxuICBzY29wZSgpOiBTY29wZTxDPiB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzW1NUQUNLU10uc2NvcGUuY3VycmVudCwgJ2V4cGVjdGVkIHNjb3BlIG9uIHRoZSBzY29wZSBzdGFjaycpO1xuICB9XG5cbiAgZHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZSB7XG4gICAgcmV0dXJuIGV4cGVjdChcbiAgICAgIHRoaXNbU1RBQ0tTXS5keW5hbWljU2NvcGUuY3VycmVudCxcbiAgICAgICdleHBlY3RlZCBkeW5hbWljIHNjb3BlIG9uIHRoZSBkeW5hbWljIHNjb3BlIHN0YWNrJ1xuICAgICk7XG4gIH1cblxuICBwdXNoQ2hpbGRTY29wZSgpIHtcbiAgICB0aGlzW1NUQUNLU10uc2NvcGUucHVzaCh0aGlzLnNjb3BlKCkuY2hpbGQoKSk7XG4gIH1cblxuICBwdXNoRHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZSB7XG4gICAgbGV0IGNoaWxkID0gdGhpcy5keW5hbWljU2NvcGUoKS5jaGlsZCgpO1xuICAgIHRoaXNbU1RBQ0tTXS5keW5hbWljU2NvcGUucHVzaChjaGlsZCk7XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9XG5cbiAgcHVzaFJvb3RTY29wZShzaXplOiBudW1iZXIpOiBQYXJ0aWFsU2NvcGU8Qz4ge1xuICAgIGxldCBzY29wZSA9IFNjb3BlSW1wbC5zaXplZDxDPihzaXplKTtcbiAgICB0aGlzW1NUQUNLU10uc2NvcGUucHVzaChzY29wZSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcHVzaFNjb3BlKHNjb3BlOiBTY29wZTxDPikge1xuICAgIHRoaXNbU1RBQ0tTXS5zY29wZS5wdXNoKHNjb3BlKTtcbiAgfVxuXG4gIHBvcFNjb3BlKCkge1xuICAgIHRoaXNbU1RBQ0tTXS5zY29wZS5wb3AoKTtcbiAgfVxuXG4gIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzW1NUQUNLU10uZHluYW1pY1Njb3BlLnBvcCgpO1xuICB9XG5cbiAgLy8vIFNDT1BFIEhFTFBFUlNcblxuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTZWxmKCk7XG4gIH1cblxuICByZWZlcmVuY2VGb3JTeW1ib2woc3ltYm9sOiBudW1iZXIpOiBQYXRoUmVmZXJlbmNlPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFN5bWJvbChzeW1ib2wpO1xuICB9XG5cbiAgLy8vIEVYRUNVVElPTlxuXG4gIGV4ZWN1dGUoaW5pdGlhbGl6ZT86ICh2bTogdGhpcykgPT4gdm9pZCk6IFJlbmRlclJlc3VsdCB7XG4gICAgaWYgKExPQ0FMX1NIT1VMRF9MT0cpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBFWEVDVVRJTkcgRlJPTSAke3RoaXNbSU5ORVJfVk1dLmZldGNoUmVnaXN0ZXIoJHBjKX1gKTtcbiAgICB9XG5cbiAgICBpZiAoaW5pdGlhbGl6ZSkgaW5pdGlhbGl6ZSh0aGlzKTtcblxuICAgIGxldCByZXN1bHQ6IFJpY2hJdGVyYXRvclJlc3VsdDxudWxsLCBSZW5kZXJSZXN1bHQ+O1xuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMubmV4dCgpO1xuICAgICAgaWYgKHJlc3VsdC5kb25lKSBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LnZhbHVlO1xuICB9XG5cbiAgbmV4dCgpOiBSaWNoSXRlcmF0b3JSZXN1bHQ8bnVsbCwgUmVuZGVyUmVzdWx0PiB7XG4gICAgbGV0IHsgZW52LCBlbGVtZW50U3RhY2sgfSA9IHRoaXM7XG4gICAgbGV0IG9wY29kZSA9IHRoaXNbSU5ORVJfVk1dLm5leHRTdGF0ZW1lbnQoKTtcbiAgICBsZXQgcmVzdWx0OiBSaWNoSXRlcmF0b3JSZXN1bHQ8bnVsbCwgUmVuZGVyUmVzdWx0PjtcbiAgICBpZiAob3Bjb2RlICE9PSBudWxsKSB7XG4gICAgICB0aGlzW0lOTkVSX1ZNXS5ldmFsdWF0ZU91dGVyKG9wY29kZSwgdGhpcyk7XG4gICAgICByZXN1bHQgPSB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogbnVsbCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBVbmxvYWQgdGhlIHN0YWNrXG4gICAgICB0aGlzLnN0YWNrLnJlc2V0KCk7XG5cbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgZG9uZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IG5ldyBSZW5kZXJSZXN1bHRJbXBsKFxuICAgICAgICAgIGVudixcbiAgICAgICAgICB0aGlzLnBvcFVwZGF0aW5nKCksXG4gICAgICAgICAgZWxlbWVudFN0YWNrLnBvcEJsb2NrKCksXG4gICAgICAgICAgdGhpcy5kZXN0cnVjdG9yXG4gICAgICAgICksXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYmluZER5bmFtaWNTY29wZShuYW1lczogbnVtYmVyW10pIHtcbiAgICBsZXQgc2NvcGUgPSB0aGlzLmR5bmFtaWNTY29wZSgpO1xuXG4gICAgZm9yIChsZXQgaSA9IG5hbWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBsZXQgbmFtZSA9IHRoaXNbQ09OU1RBTlRTXS5nZXRTdHJpbmcobmFtZXNbaV0pO1xuICAgICAgc2NvcGUuc2V0KG5hbWUsIHRoaXMuc3RhY2sucG9wPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4+KCkpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB2bVN0YXRlPEMgZXh0ZW5kcyBKaXRPckFvdEJsb2NrPihcbiAgcGM6IG51bWJlcixcbiAgc2NvcGU6IFNjb3BlPEM+ID0gU2NvcGVJbXBsLnJvb3Q8Qz4oVU5ERUZJTkVEX1JFRkVSRU5DRSwgMCksXG4gIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlXG4pIHtcbiAgcmV0dXJuIHtcbiAgICBwYyxcbiAgICBzY29wZSxcbiAgICBkeW5hbWljU2NvcGUsXG4gICAgc3RhY2s6IFtdLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pbmltYWxJbml0T3B0aW9ucyB7XG4gIGhhbmRsZTogbnVtYmVyO1xuICB0cmVlQnVpbGRlcjogRWxlbWVudEJ1aWxkZXI7XG4gIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluaXRPcHRpb25zIGV4dGVuZHMgTWluaW1hbEluaXRPcHRpb25zIHtcbiAgc2VsZjogUGF0aFJlZmVyZW5jZTx1bmtub3duPjtcbn1cblxuZXhwb3J0IGNsYXNzIEFvdFZNIGV4dGVuZHMgVk08bnVtYmVyPiBpbXBsZW1lbnRzIEludGVybmFsVk08bnVtYmVyPiB7XG4gIHN0YXRpYyBlbXB0eShcbiAgICBydW50aW1lOiBBb3RSdW50aW1lQ29udGV4dCxcbiAgICB7IGhhbmRsZSwgdHJlZUJ1aWxkZXIsIGR5bmFtaWNTY29wZSB9OiBNaW5pbWFsSW5pdE9wdGlvbnNcbiAgKTogSW50ZXJuYWxWTTxudW1iZXI+IHtcbiAgICBsZXQgdm0gPSBpbml0QU9UKFxuICAgICAgcnVudGltZSxcbiAgICAgIHZtU3RhdGUoXG4gICAgICAgIHJ1bnRpbWUucHJvZ3JhbS5oZWFwLmdldGFkZHIoaGFuZGxlKSxcbiAgICAgICAgU2NvcGVJbXBsLnJvb3Q8bnVtYmVyPihVTkRFRklORURfUkVGRVJFTkNFLCAwKSxcbiAgICAgICAgZHluYW1pY1Njb3BlXG4gICAgICApLFxuICAgICAgdHJlZUJ1aWxkZXJcbiAgICApO1xuICAgIHZtLnB1c2hVcGRhdGluZygpO1xuICAgIHJldHVybiB2bTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0aWFsKFxuICAgIHJ1bnRpbWU6IEFvdFJ1bnRpbWVDb250ZXh0LFxuICAgIHsgaGFuZGxlLCBzZWxmLCB0cmVlQnVpbGRlciwgZHluYW1pY1Njb3BlIH06IEluaXRPcHRpb25zXG4gICkge1xuICAgIGxldCBzY29wZVNpemUgPSBydW50aW1lLnByb2dyYW0uaGVhcC5zY29wZXNpemVvZihoYW5kbGUpO1xuICAgIGxldCBzY29wZSA9IFNjb3BlSW1wbC5yb290KHNlbGYsIHNjb3BlU2l6ZSk7XG4gICAgbGV0IHBjID0gY2hlY2socnVudGltZS5wcm9ncmFtLmhlYXAuZ2V0YWRkcihoYW5kbGUpLCBDaGVja051bWJlcik7XG4gICAgbGV0IHN0YXRlID0gdm1TdGF0ZShwYywgc2NvcGUsIGR5bmFtaWNTY29wZSk7XG4gICAgbGV0IHZtID0gaW5pdEFPVChydW50aW1lLCBzdGF0ZSwgdHJlZUJ1aWxkZXIpO1xuICAgIHZtLnB1c2hVcGRhdGluZygpO1xuICAgIHJldHVybiB2bTtcbiAgfVxuXG4gIGNhcHR1cmUoYXJnczogbnVtYmVyLCBwYyA9IHRoaXNbSU5ORVJfVk1dLmZldGNoUmVnaXN0ZXIoJHBjKSk6IFJlc3VtYWJsZVZNU3RhdGU8QW90Vk0+IHtcbiAgICByZXR1cm4gbmV3IFJlc3VtYWJsZVZNU3RhdGVJbXBsKHRoaXMuY2FwdHVyZVN0YXRlKGFyZ3MsIHBjKSwgaW5pdEFPVCk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgVm1Jbml0Q2FsbGJhY2s8ViBleHRlbmRzIEludGVybmFsVk0gPSBJbnRlcm5hbFZNPiA9IChcbiAgdGhpczogdm9pZCxcbiAgcnVudGltZTogViBleHRlbmRzIEppdFZNID8gSml0UnVudGltZUNvbnRleHQgOiBBb3RSdW50aW1lQ29udGV4dCxcbiAgc3RhdGU6IFZNU3RhdGUsXG4gIGJ1aWxkZXI6IEVsZW1lbnRCdWlsZGVyXG4pID0+IFY7XG5cbmV4cG9ydCB0eXBlIEppdFZtSW5pdENhbGxiYWNrPFYgZXh0ZW5kcyBJbnRlcm5hbFZNPiA9IChcbiAgdGhpczogdm9pZCxcbiAgcnVudGltZTogSml0UnVudGltZUNvbnRleHQsXG4gIHN0YXRlOiBWTVN0YXRlLFxuICBidWlsZGVyOiBFbGVtZW50QnVpbGRlclxuKSA9PiBWO1xuXG5mdW5jdGlvbiBpbml0QU9UKHJ1bnRpbWU6IEFvdFJ1bnRpbWVDb250ZXh0LCBzdGF0ZTogVk1TdGF0ZSwgYnVpbGRlcjogRWxlbWVudEJ1aWxkZXIpOiBBb3RWTSB7XG4gIHJldHVybiBuZXcgQW90Vk0ocnVudGltZSwgc3RhdGUsIGJ1aWxkZXIpO1xufVxuXG5mdW5jdGlvbiBpbml0SklUKGNvbnRleHQ6IFN5bnRheENvbXBpbGF0aW9uQ29udGV4dCk6IEppdFZtSW5pdENhbGxiYWNrPEppdFZNPiB7XG4gIHJldHVybiAocnVudGltZSwgc3RhdGUsIGJ1aWxkZXIpID0+IG5ldyBKaXRWTShydW50aW1lLCBzdGF0ZSwgYnVpbGRlciwgY29udGV4dCk7XG59XG5cbmV4cG9ydCBjbGFzcyBKaXRWTSBleHRlbmRzIFZNPENvbXBpbGFibGVCbG9jaz4gaW1wbGVtZW50cyBJbnRlcm5hbEppdFZNIHtcbiAgc3RhdGljIGluaXRpYWwoXG4gICAgcnVudGltZTogSml0UnVudGltZUNvbnRleHQsXG4gICAgY29udGV4dDogU3ludGF4Q29tcGlsYXRpb25Db250ZXh0LFxuICAgIHsgaGFuZGxlLCBzZWxmLCBkeW5hbWljU2NvcGUsIHRyZWVCdWlsZGVyIH06IEluaXRPcHRpb25zXG4gICkge1xuICAgIGxldCBzY29wZVNpemUgPSBydW50aW1lLnByb2dyYW0uaGVhcC5zY29wZXNpemVvZihoYW5kbGUpO1xuICAgIGxldCBzY29wZSA9IFNjb3BlSW1wbC5yb290KHNlbGYsIHNjb3BlU2l6ZSk7XG4gICAgbGV0IHN0YXRlID0gdm1TdGF0ZShydW50aW1lLnByb2dyYW0uaGVhcC5nZXRhZGRyKGhhbmRsZSksIHNjb3BlLCBkeW5hbWljU2NvcGUpO1xuICAgIGxldCB2bSA9IGluaXRKSVQoY29udGV4dCkocnVudGltZSwgc3RhdGUsIHRyZWVCdWlsZGVyKTtcbiAgICB2bS5wdXNoVXBkYXRpbmcoKTtcbiAgICByZXR1cm4gdm07XG4gIH1cblxuICBzdGF0aWMgZW1wdHkoXG4gICAgcnVudGltZTogSml0UnVudGltZUNvbnRleHQsXG4gICAgeyBoYW5kbGUsIHRyZWVCdWlsZGVyLCBkeW5hbWljU2NvcGUgfTogTWluaW1hbEluaXRPcHRpb25zLFxuICAgIGNvbnRleHQ6IFN5bnRheENvbXBpbGF0aW9uQ29udGV4dFxuICApIHtcbiAgICBsZXQgdm0gPSBpbml0SklUKGNvbnRleHQpKFxuICAgICAgcnVudGltZSxcbiAgICAgIHZtU3RhdGUoXG4gICAgICAgIHJ1bnRpbWUucHJvZ3JhbS5oZWFwLmdldGFkZHIoaGFuZGxlKSxcbiAgICAgICAgU2NvcGVJbXBsLnJvb3Q8Q29tcGlsYWJsZUJsb2NrPihVTkRFRklORURfUkVGRVJFTkNFLCAwKSxcbiAgICAgICAgZHluYW1pY1Njb3BlXG4gICAgICApLFxuICAgICAgdHJlZUJ1aWxkZXJcbiAgICApO1xuICAgIHZtLnB1c2hVcGRhdGluZygpO1xuICAgIHJldHVybiB2bTtcbiAgfVxuXG4gIHJlYWRvbmx5IHJ1bnRpbWUhOiBKaXRSdW50aW1lQ29udGV4dDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBydW50aW1lOiBKaXRSdW50aW1lQ29udGV4dCxcbiAgICBzdGF0ZTogVk1TdGF0ZSxcbiAgICBlbGVtZW50U3RhY2s6IEVsZW1lbnRCdWlsZGVyLFxuICAgIHJlYWRvbmx5IGNvbnRleHQ6IFN5bnRheENvbXBpbGF0aW9uQ29udGV4dFxuICApIHtcbiAgICBzdXBlcihydW50aW1lLCBzdGF0ZSwgZWxlbWVudFN0YWNrKTtcbiAgfVxuXG4gIGNhcHR1cmUoYXJnczogbnVtYmVyLCBwYyA9IHRoaXNbSU5ORVJfVk1dLmZldGNoUmVnaXN0ZXIoJHBjKSk6IFJlc3VtYWJsZVZNU3RhdGU8Sml0Vk0+IHtcbiAgICByZXR1cm4gbmV3IFJlc3VtYWJsZVZNU3RhdGVJbXBsKHRoaXMuY2FwdHVyZVN0YXRlKGFyZ3MsIHBjKSwgdGhpcy5yZXN1bWUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXN1bWU6IFZtSW5pdENhbGxiYWNrPEppdFZNPiA9IGluaXRKSVQodGhpcy5jb250ZXh0KTtcblxuICBjb21waWxlKGJsb2NrOiBDb21waWxhYmxlVGVtcGxhdGUpOiBudW1iZXIge1xuICAgIGxldCBoYW5kbGUgPSB1bndyYXBIYW5kbGUoYmxvY2suY29tcGlsZSh0aGlzLmNvbnRleHQpKTtcblxuICAgIHJldHVybiBoYW5kbGU7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2FwcGVuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBMEJBOztBQVdBOztBQWdCQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWtGQSxNLEdBQUEsU0FBQSxNQUFBLEdBQUE7QUFDVyxPQUFBLEtBQUEsR0FBUSxJQUFSLFdBQVEsRUFBUjtBQUNBLE9BQUEsWUFBQSxHQUFlLElBQWYsV0FBZSxFQUFmO0FBQ0EsT0FBQSxRQUFBLEdBQVcsSUFBWCxXQUFXLEVBQVg7QUFDQSxPQUFBLEtBQUEsR0FBUSxJQUFSLFdBQVEsRUFBUjtBQUNBLE9BQUEsSUFBQSxHQUFPLElBQVAsV0FBTyxFQUFQOzs7SUFHRyxFOzs7QUF1SFo7OztBQUlBLFdBQUEsRUFBQSxDQUFBLE9BQUEsRUFBQSxJQUFBLEVBQUEsWUFBQSxFQUcrQztBQUFBLFFBQUEsS0FBQSxHQUFBLElBQUE7O0FBQUEsUUFEN0MsRUFDNkMsR0FBQSxJQUFBLENBRDdDLEVBQzZDO0FBQUEsUUFEN0MsS0FDNkMsR0FBQSxJQUFBLENBRDdDLEtBQzZDO0FBQUEsUUFEN0MsWUFDNkMsR0FBQSxJQUFBLENBRDdDLFlBQzZDO0FBQUEsUUFEbEIsS0FDa0IsR0FBQSxJQUFBLENBRGxCLEtBQ2tCO0FBRnBDLFNBQUEsT0FBQSxHQUFBLE9BQUE7QUFFUSxTQUFBLFlBQUEsR0FBQSxZQUFBO0FBN0hGLFNBQUEsRUFBQSxJQUFXLElBQVgsTUFBVyxFQUFYO0FBR0EsU0FBQSxFQUFBLElBQXFCLElBQXJCLFdBQXFCLEVBQXJCO0FBZVYsU0FBQSxFQUFBLEdBQUEsSUFBQTtBQUNBLFNBQUEsRUFBQSxHQUFBLElBQUE7QUFDQSxTQUFBLEVBQUEsR0FBQSxJQUFBO0FBQ0EsU0FBQSxFQUFBLEdBQUEsSUFB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QSxNQUFBLE9BQUEsR0FBQSxLQUFBLENBQUEsU0FBQTs7QUFBQSxFQUFBLE9BQUEsQ0FBQSxPQUFBLEdBMkNFLFNBQUEsT0FBQSxDQUFBLElBQUEsRUFBQSxFQUFBLEVBQTREO0FBQUEsUUFBdEMsRUFBc0MsS0FBQSxLQUFBLENBQUEsRUFBQTtBQUF0QyxNQUFBLEVBQXNDLEdBQWpDLEtBQUEsaUJBQUEsRUFBQSxhQUFBLENBQXBCLE9BQW9CLENBQUw7QUFBc0M7O0FBQzFELFdBQU8sSUFBQSw0QkFBQSxDQUF5QixLQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQXpCLEVBQXlCLENBQXpCLEVBQXNELEtBQTdELE1BQU8sQ0FBUDtBQTVDSixHQUFBOztBQUFBLEVBQUEsT0FBQSxDQUFBLE9BQUEsR0FpREUsU0FBQSxPQUFBLENBQUEsS0FBQSxFQUFpQztBQUMvQixRQUFJLE1BQU0sR0FBRyx3QkFBYSxLQUFLLENBQUwsT0FBQSxDQUFjLEtBQXhDLE9BQTBCLENBQWIsQ0FBYjtBQUVBLFdBQUEsTUFBQTtBQXBESixHQUFBOztBQUFBLFNBQUEsS0FBQTtBQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21waWxhYmxlQmxvY2ssXG4gIENvbXBpbGFibGVUZW1wbGF0ZSxcbiAgRGVzdHJveWFibGUsXG4gIERyb3AsXG4gIER5bmFtaWNTY29wZSxcbiAgRW52aXJvbm1lbnQsXG4gIEppdE9yQW90QmxvY2ssXG4gIFBhcnRpYWxTY29wZSxcbiAgUmVuZGVyUmVzdWx0LFxuICBSaWNoSXRlcmF0b3JSZXN1bHQsXG4gIFJ1bnRpbWVDb250ZXh0LFxuICBSdW50aW1lQ29uc3RhbnRzLFxuICBSdW50aW1lSGVhcCxcbiAgUnVudGltZVByb2dyYW0sXG4gIFNjb3BlLFxuICBTeW1ib2xEZXN0cm95YWJsZSxcbiAgU3ludGF4Q29tcGlsYXRpb25Db250ZXh0LFxuICBWTSBhcyBQdWJsaWNWTSxcbiAgSml0UnVudGltZUNvbnRleHQsXG4gIEFvdFJ1bnRpbWVDb250ZXh0LFxuICBFbGVtZW50QnVpbGRlcixcbn0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBMT0NBTF9TSE9VTERfTE9HIH0gZnJvbSAnQGdsaW1tZXIvbG9jYWwtZGVidWctZmxhZ3MnO1xuaW1wb3J0IHsgUnVudGltZU9wSW1wbCB9IGZyb20gJ0BnbGltbWVyL3Byb2dyYW0nO1xuaW1wb3J0IHsgUGF0aFJlZmVyZW5jZSwgUmVmZXJlbmNlSXRlcmF0b3IsIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHtcbiAgYXNzb2NpYXRlRGVzdHJ1Y3RvcixcbiAgZGVzdHJ1Y3RvcixcbiAgZXhwZWN0LFxuICBpc0Ryb3AsXG4gIExpbmtlZExpc3QsXG4gIExpc3RTbGljZSxcbiAgT3B0aW9uLFxuICBTdGFjayxcbiAgYXNzZXJ0LFxufSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gICRmcCxcbiAgJHBjLFxuICAkczAsXG4gICRzMSxcbiAgJHNwLFxuICAkdDAsXG4gICR0MSxcbiAgJHYwLFxuICBpc0xvd0xldmVsUmVnaXN0ZXIsXG4gIE1hY2hpbmVSZWdpc3RlcixcbiAgUmVnaXN0ZXIsXG4gIFN5c2NhbGxSZWdpc3Rlcixcbn0gZnJvbSAnQGdsaW1tZXIvdm0nO1xuaW1wb3J0IHsgQ2hlY2tOdW1iZXIsIGNoZWNrIH0gZnJvbSAnQGdsaW1tZXIvZGVidWcnO1xuaW1wb3J0IHsgdW53cmFwSGFuZGxlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBjb21iaW5lU2xpY2UgfSBmcm9tICcuLi91dGlscy90YWdzJztcbmltcG9ydCB7IERpZE1vZGlmeU9wY29kZSwgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUsIExhYmVsT3Bjb2RlIH0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy92bSc7XG5pbXBvcnQgeyBTY29wZUltcGwgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgRGVidWdTdGF0ZSwgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi9vcGNvZGVzJztcbmltcG9ydCB7IFVOREVGSU5FRF9SRUZFUkVOQ0UgfSBmcm9tICcuLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IEFSR1MsIENPTlNUQU5UUywgREVTVFJVQ1RPUl9TVEFDSywgSEVBUCwgSU5ORVJfVk0sIFJFR0lTVEVSUywgU1RBQ0tTIH0gZnJvbSAnLi4vc3ltYm9scyc7XG5pbXBvcnQgeyBWTUFyZ3VtZW50c0ltcGwgfSBmcm9tICcuL2FyZ3VtZW50cyc7XG5pbXBvcnQgTG93TGV2ZWxWTSBmcm9tICcuL2xvdy1sZXZlbCc7XG5pbXBvcnQgUmVuZGVyUmVzdWx0SW1wbCBmcm9tICcuL3JlbmRlci1yZXN1bHQnO1xuaW1wb3J0IEV2YWx1YXRpb25TdGFja0ltcGwsIHsgRXZhbHVhdGlvblN0YWNrIH0gZnJvbSAnLi9zdGFjayc7XG5pbXBvcnQge1xuICBCbG9ja09wY29kZSxcbiAgTGlzdEJsb2NrT3Bjb2RlLFxuICBSZXN1bWFibGVWTVN0YXRlLFxuICBSZXN1bWFibGVWTVN0YXRlSW1wbCxcbiAgVHJ5T3Bjb2RlLFxuICBWTVN0YXRlLFxufSBmcm9tICcuL3VwZGF0ZSc7XG5cbi8qKlxuICogVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieSBpbnRlcm5hbCBvcGNvZGVzLCBhbmQgaXMgbW9yZSBzdGFibGUgdGhhblxuICogdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBBcHBlbmQgVk0gaXRzZWxmLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVybmFsVk08QyBleHRlbmRzIEppdE9yQW90QmxvY2sgPSBKaXRPckFvdEJsb2NrPiB7XG4gIHJlYWRvbmx5IFtDT05TVEFOVFNdOiBSdW50aW1lQ29uc3RhbnRzO1xuICByZWFkb25seSBbQVJHU106IFZNQXJndW1lbnRzSW1wbDtcblxuICByZWFkb25seSBlbnY6IEVudmlyb25tZW50O1xuICByZWFkb25seSBzdGFjazogRXZhbHVhdGlvblN0YWNrO1xuICByZWFkb25seSBydW50aW1lOiBSdW50aW1lQ29udGV4dDtcblxuICBsb2FkVmFsdWUocmVnaXN0ZXI6IE1hY2hpbmVSZWdpc3RlciwgdmFsdWU6IG51bWJlcik6IHZvaWQ7XG4gIGxvYWRWYWx1ZShyZWdpc3RlcjogUmVnaXN0ZXIsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgbG9hZFZhbHVlKHJlZ2lzdGVyOiBSZWdpc3RlciB8IE1hY2hpbmVSZWdpc3RlciwgdmFsdWU6IHVua25vd24pOiB2b2lkO1xuXG4gIGZldGNoVmFsdWUocmVnaXN0ZXI6IE1hY2hpbmVSZWdpc3Rlci5yYSB8IE1hY2hpbmVSZWdpc3Rlci5wYyk6IG51bWJlcjtcbiAgLy8gVE9ETzogU29tZXRoaW5nIGJldHRlciB0aGFuIGEgdHlwZSBhc3NlcnRpb24/XG4gIGZldGNoVmFsdWU8VD4ocmVnaXN0ZXI6IFJlZ2lzdGVyKTogVDtcbiAgZmV0Y2hWYWx1ZShyZWdpc3RlcjogUmVnaXN0ZXIpOiB1bmtub3duO1xuXG4gIGxvYWQocmVnaXN0ZXI6IFJlZ2lzdGVyKTogdm9pZDtcbiAgZmV0Y2gocmVnaXN0ZXI6IFJlZ2lzdGVyKTogdm9pZDtcblxuICBzY29wZSgpOiBTY29wZTxDPjtcbiAgZWxlbWVudHMoKTogRWxlbWVudEJ1aWxkZXI7XG5cbiAgZ2V0U2VsZigpOiBQYXRoUmVmZXJlbmNlPHVua25vd24+O1xuXG4gIHVwZGF0ZVdpdGgob3Bjb2RlOiBVcGRhdGluZ09wY29kZSk6IHZvaWQ7XG5cbiAgYXNzb2NpYXRlRGVzdHJveWFibGUoZDogU3ltYm9sRGVzdHJveWFibGUgfCBEZXN0cm95YWJsZSk6IHZvaWQ7XG5cbiAgYmVnaW5DYWNoZUdyb3VwKCk6IHZvaWQ7XG4gIGNvbW1pdENhY2hlR3JvdXAoKTogdm9pZDtcblxuICAvLy8gSXRlcmF0aW9uIC8vL1xuXG4gIGVudGVyTGlzdChvZmZzZXQ6IG51bWJlcik6IHZvaWQ7XG4gIGV4aXRMaXN0KCk6IHZvaWQ7XG4gIGl0ZXJhdGUobWVtbzogUGF0aFJlZmVyZW5jZTx1bmtub3duPiwgaXRlbTogUGF0aFJlZmVyZW5jZTx1bmtub3duPik6IFRyeU9wY29kZTtcbiAgZW50ZXJJdGVtKGtleTogdW5rbm93biwgb3Bjb2RlOiBUcnlPcGNvZGUpOiB2b2lkO1xuXG4gIHB1c2hSb290U2NvcGUoc2l6ZTogbnVtYmVyKTogUGFydGlhbFNjb3BlPEM+O1xuICBwdXNoQ2hpbGRTY29wZSgpOiB2b2lkO1xuICBwb3BTY29wZSgpOiB2b2lkO1xuICBwdXNoU2NvcGUoc2NvcGU6IFNjb3BlPEM+KTogdm9pZDtcblxuICBkeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlO1xuICBiaW5kRHluYW1pY1Njb3BlKG5hbWVzOiBudW1iZXJbXSk6IHZvaWQ7XG4gIHB1c2hEeW5hbWljU2NvcGUoKTogdm9pZDtcbiAgcG9wRHluYW1pY1Njb3BlKCk6IHZvaWQ7XG5cbiAgZW50ZXIoYXJnczogbnVtYmVyKTogdm9pZDtcbiAgZXhpdCgpOiB2b2lkO1xuXG4gIGdvdG8ocGM6IG51bWJlcik6IHZvaWQ7XG4gIGNhbGwoaGFuZGxlOiBudW1iZXIpOiB2b2lkO1xuICBwdXNoRnJhbWUoKTogdm9pZDtcblxuICByZWZlcmVuY2VGb3JTeW1ib2woc3ltYm9sOiBudW1iZXIpOiBQYXRoUmVmZXJlbmNlPHVua25vd24+O1xuXG4gIGV4ZWN1dGUoaW5pdGlhbGl6ZT86ICh2bTogdGhpcykgPT4gdm9pZCk6IFJlbmRlclJlc3VsdDtcbiAgcHVzaFVwZGF0aW5nKGxpc3Q/OiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPik6IHZvaWQ7XG4gIG5leHQoKTogUmljaEl0ZXJhdG9yUmVzdWx0PG51bGwsIFJlbmRlclJlc3VsdD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYWxKaXRWTSBleHRlbmRzIEludGVybmFsVk08Q29tcGlsYWJsZUJsb2NrPiB7XG4gIGNvbXBpbGUoYmxvY2s6IENvbXBpbGFibGVUZW1wbGF0ZSk6IG51bWJlcjtcbiAgcmVhZG9ubHkgcnVudGltZTogSml0UnVudGltZUNvbnRleHQ7XG4gIHJlYWRvbmx5IGNvbnRleHQ6IFN5bnRheENvbXBpbGF0aW9uQ29udGV4dDtcbn1cblxuY2xhc3MgU3RhY2tzPEMgZXh0ZW5kcyBKaXRPckFvdEJsb2NrPiB7XG4gIHJlYWRvbmx5IHNjb3BlID0gbmV3IFN0YWNrPFNjb3BlPEM+PigpO1xuICByZWFkb25seSBkeW5hbWljU2NvcGUgPSBuZXcgU3RhY2s8RHluYW1pY1Njb3BlPigpO1xuICByZWFkb25seSB1cGRhdGluZyA9IG5ldyBTdGFjazxMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPj4oKTtcbiAgcmVhZG9ubHkgY2FjaGUgPSBuZXcgU3RhY2s8T3B0aW9uPFVwZGF0aW5nT3Bjb2RlPj4oKTtcbiAgcmVhZG9ubHkgbGlzdCA9IG5ldyBTdGFjazxMaXN0QmxvY2tPcGNvZGU+KCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFic3RyYWN0IGNsYXNzIFZNPEMgZXh0ZW5kcyBKaXRPckFvdEJsb2NrPiBpbXBsZW1lbnRzIFB1YmxpY1ZNLCBJbnRlcm5hbFZNPEM+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBbU1RBQ0tTXSA9IG5ldyBTdGFja3M8Qz4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBbSEVBUF06IFJ1bnRpbWVIZWFwO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3RydWN0b3I6IG9iamVjdDtcbiAgcHJpdmF0ZSByZWFkb25seSBbREVTVFJVQ1RPUl9TVEFDS10gPSBuZXcgU3RhY2s8b2JqZWN0PigpO1xuICByZWFkb25seSBbQ09OU1RBTlRTXTogUnVudGltZUNvbnN0YW50cztcbiAgcmVhZG9ubHkgW0FSR1NdOiBWTUFyZ3VtZW50c0ltcGw7XG4gIHJlYWRvbmx5IFtJTk5FUl9WTV06IExvd0xldmVsVk07XG5cbiAgZ2V0IHN0YWNrKCk6IEV2YWx1YXRpb25TdGFjayB7XG4gICAgcmV0dXJuIHRoaXNbSU5ORVJfVk1dLnN0YWNrIGFzIEV2YWx1YXRpb25TdGFjaztcbiAgfVxuXG4gIC8qIFJlZ2lzdGVycyAqL1xuXG4gIGdldCBwYygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzW0lOTkVSX1ZNXS5mZXRjaFJlZ2lzdGVyKCRwYyk7XG4gIH1cblxuICBwdWJsaWMgczA6IHVua25vd24gPSBudWxsO1xuICBwdWJsaWMgczE6IHVua25vd24gPSBudWxsO1xuICBwdWJsaWMgdDA6IHVua25vd24gPSBudWxsO1xuICBwdWJsaWMgdDE6IHVua25vd24gPSBudWxsO1xuICBwdWJsaWMgdjA6IHVua25vd24gPSBudWxsO1xuXG4gIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyIG9udG8gdGhlIHN0YWNrXG4gIGZldGNoKHJlZ2lzdGVyOiBTeXNjYWxsUmVnaXN0ZXIpOiB2b2lkIHtcbiAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5mZXRjaFZhbHVlKHJlZ2lzdGVyKSk7XG4gIH1cblxuICAvLyBMb2FkIGEgdmFsdWUgZnJvbSB0aGUgc3RhY2sgaW50byBhIHJlZ2lzdGVyXG4gIGxvYWQocmVnaXN0ZXI6IFN5c2NhbGxSZWdpc3Rlcikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuc3RhY2sucG9wKCk7XG5cbiAgICB0aGlzLmxvYWRWYWx1ZShyZWdpc3RlciwgdmFsdWUpO1xuICB9XG5cbiAgLy8gRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgZmV0Y2hWYWx1ZShyZWdpc3RlcjogTWFjaGluZVJlZ2lzdGVyKTogbnVtYmVyO1xuICBmZXRjaFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3Rlcik6IFQ7XG4gIGZldGNoVmFsdWUocmVnaXN0ZXI6IFJlZ2lzdGVyIHwgTWFjaGluZVJlZ2lzdGVyKTogdW5rbm93biB7XG4gICAgaWYgKGlzTG93TGV2ZWxSZWdpc3RlcihyZWdpc3RlcikpIHtcbiAgICAgIHJldHVybiB0aGlzW0lOTkVSX1ZNXS5mZXRjaFJlZ2lzdGVyKHJlZ2lzdGVyKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlZ2lzdGVyKSB7XG4gICAgICBjYXNlICRzMDpcbiAgICAgICAgcmV0dXJuIHRoaXMuczA7XG4gICAgICBjYXNlICRzMTpcbiAgICAgICAgcmV0dXJuIHRoaXMuczE7XG4gICAgICBjYXNlICR0MDpcbiAgICAgICAgcmV0dXJuIHRoaXMudDA7XG4gICAgICBjYXNlICR0MTpcbiAgICAgICAgcmV0dXJuIHRoaXMudDE7XG4gICAgICBjYXNlICR2MDpcbiAgICAgICAgcmV0dXJuIHRoaXMudjA7XG4gICAgfVxuICB9XG5cbiAgLy8gTG9hZCBhIHZhbHVlIGludG8gYSByZWdpc3RlclxuXG4gIGxvYWRWYWx1ZTxUPihyZWdpc3RlcjogUmVnaXN0ZXIgfCBNYWNoaW5lUmVnaXN0ZXIsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgaWYgKGlzTG93TGV2ZWxSZWdpc3RlcihyZWdpc3RlcikpIHtcbiAgICAgIHRoaXNbSU5ORVJfVk1dLmxvYWRSZWdpc3RlcihyZWdpc3RlciwgKHZhbHVlIGFzIGFueSkgYXMgbnVtYmVyKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlZ2lzdGVyKSB7XG4gICAgICBjYXNlICRzMDpcbiAgICAgICAgdGhpcy5zMCA9IHZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJHMxOlxuICAgICAgICB0aGlzLnMxID0gdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAkdDA6XG4gICAgICAgIHRoaXMudDAgPSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICR0MTpcbiAgICAgICAgdGhpcy50MSA9IHZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJHYwOlxuICAgICAgICB0aGlzLnYwID0gdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNaWdyYXRlZCB0byBJbm5lclxuICAgKi9cblxuICAvLyBTdGFydCBhIG5ldyBmcmFtZSBhbmQgc2F2ZSAkcmEgYW5kICRmcCBvbiB0aGUgc3RhY2tcbiAgcHVzaEZyYW1lKCkge1xuICAgIHRoaXNbSU5ORVJfVk1dLnB1c2hGcmFtZSgpO1xuICB9XG5cbiAgLy8gUmVzdG9yZSAkcmEsICRzcCBhbmQgJGZwXG4gIHBvcEZyYW1lKCkge1xuICAgIHRoaXNbSU5ORVJfVk1dLnBvcEZyYW1lKCk7XG4gIH1cblxuICAvLyBKdW1wIHRvIGFuIGFkZHJlc3MgaW4gYHByb2dyYW1gXG4gIGdvdG8ob2Zmc2V0OiBudW1iZXIpIHtcbiAgICB0aGlzW0lOTkVSX1ZNXS5nb3RvKG9mZnNldCk7XG4gIH1cblxuICAvLyBTYXZlICRwYyBpbnRvICRyYSwgdGhlbiBqdW1wIHRvIGEgbmV3IGFkZHJlc3MgaW4gYHByb2dyYW1gIChqYWwgaW4gTUlQUylcbiAgY2FsbChoYW5kbGU6IG51bWJlcikge1xuICAgIHRoaXNbSU5ORVJfVk1dLmNhbGwoaGFuZGxlKTtcbiAgfVxuXG4gIC8vIFB1dCBhIHNwZWNpZmljIGBwcm9ncmFtYCBhZGRyZXNzIGluICRyYVxuICByZXR1cm5UbyhvZmZzZXQ6IG51bWJlcikge1xuICAgIHRoaXNbSU5ORVJfVk1dLnJldHVyblRvKG9mZnNldCk7XG4gIH1cblxuICAvLyBSZXR1cm4gdG8gdGhlIGBwcm9ncmFtYCBhZGRyZXNzIHN0b3JlZCBpbiAkcmFcbiAgcmV0dXJuKCkge1xuICAgIHRoaXNbSU5ORVJfVk1dLnJldHVybigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuZCBvZiBtaWdyYXRlZC5cbiAgICovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgcnVudGltZTogUnVudGltZUNvbnRleHQsXG4gICAgeyBwYywgc2NvcGUsIGR5bmFtaWNTY29wZSwgc3RhY2sgfTogVk1TdGF0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRTdGFjazogRWxlbWVudEJ1aWxkZXJcbiAgKSB7XG4gICAgbGV0IGV2YWxTdGFjayA9IEV2YWx1YXRpb25TdGFja0ltcGwucmVzdG9yZShzdGFjayk7XG5cbiAgICBhc3NlcnQodHlwZW9mIHBjID09PSAnbnVtYmVyJywgJ3BjIGlzIGEgbnVtYmVyJyk7XG5cbiAgICBldmFsU3RhY2tbUkVHSVNURVJTXVskcGNdID0gcGM7XG4gICAgZXZhbFN0YWNrW1JFR0lTVEVSU11bJHNwXSA9IHN0YWNrLmxlbmd0aCAtIDE7XG4gICAgZXZhbFN0YWNrW1JFR0lTVEVSU11bJGZwXSA9IC0xO1xuXG4gICAgdGhpc1tIRUFQXSA9IHRoaXMucHJvZ3JhbS5oZWFwO1xuICAgIHRoaXNbQ09OU1RBTlRTXSA9IHRoaXMucHJvZ3JhbS5jb25zdGFudHM7XG4gICAgdGhpcy5lbGVtZW50U3RhY2sgPSBlbGVtZW50U3RhY2s7XG4gICAgdGhpc1tTVEFDS1NdLnNjb3BlLnB1c2goc2NvcGUpO1xuICAgIHRoaXNbU1RBQ0tTXS5keW5hbWljU2NvcGUucHVzaChkeW5hbWljU2NvcGUpO1xuICAgIHRoaXNbQVJHU10gPSBuZXcgVk1Bcmd1bWVudHNJbXBsKCk7XG4gICAgdGhpc1tJTk5FUl9WTV0gPSBuZXcgTG93TGV2ZWxWTShcbiAgICAgIGV2YWxTdGFjayxcbiAgICAgIHRoaXNbSEVBUF0sXG4gICAgICBydW50aW1lLnByb2dyYW0sXG4gICAgICB7XG4gICAgICAgIGRlYnVnQmVmb3JlOiAob3Bjb2RlOiBSdW50aW1lT3BJbXBsKTogRGVidWdTdGF0ZSA9PiB7XG4gICAgICAgICAgcmV0dXJuIEFQUEVORF9PUENPREVTLmRlYnVnQmVmb3JlKHRoaXMsIG9wY29kZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVidWdBZnRlcjogKHN0YXRlOiBEZWJ1Z1N0YXRlKTogdm9pZCA9PiB7XG4gICAgICAgICAgQVBQRU5EX09QQ09ERVMuZGVidWdBZnRlcih0aGlzLCBzdGF0ZSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZXZhbFN0YWNrW1JFR0lTVEVSU11cbiAgICApO1xuXG4gICAgdGhpcy5kZXN0cnVjdG9yID0ge307XG4gICAgdGhpc1tERVNUUlVDVE9SX1NUQUNLXS5wdXNoKHRoaXMuZGVzdHJ1Y3Rvcik7XG4gIH1cblxuICBnZXQgcHJvZ3JhbSgpOiBSdW50aW1lUHJvZ3JhbSB7XG4gICAgcmV0dXJuIHRoaXMucnVudGltZS5wcm9ncmFtO1xuICB9XG5cbiAgZ2V0IGVudigpOiBFbnZpcm9ubWVudCB7XG4gICAgcmV0dXJuIHRoaXMucnVudGltZS5lbnY7XG4gIH1cblxuICBjYXB0dXJlU3RhdGUoYXJnczogbnVtYmVyLCBwYyA9IHRoaXNbSU5ORVJfVk1dLmZldGNoUmVnaXN0ZXIoJHBjKSk6IFZNU3RhdGUge1xuICAgIHJldHVybiB7XG4gICAgICBwYyxcbiAgICAgIGR5bmFtaWNTY29wZTogdGhpcy5keW5hbWljU2NvcGUoKSxcbiAgICAgIHNjb3BlOiB0aGlzLnNjb3BlKCksXG4gICAgICBzdGFjazogdGhpcy5zdGFjay5jYXB0dXJlKGFyZ3MpLFxuICAgIH07XG4gIH1cblxuICBhYnN0cmFjdCBjYXB0dXJlKGFyZ3M6IG51bWJlciwgcGM/OiBudW1iZXIpOiBSZXN1bWFibGVWTVN0YXRlPEludGVybmFsVk0+O1xuXG4gIGJlZ2luQ2FjaGVHcm91cCgpIHtcbiAgICB0aGlzW1NUQUNLU10uY2FjaGUucHVzaCh0aGlzLnVwZGF0aW5nKCkudGFpbCgpKTtcbiAgfVxuXG4gIGNvbW1pdENhY2hlR3JvdXAoKSB7XG4gICAgbGV0IEVORCA9IG5ldyBMYWJlbE9wY29kZSgnRU5EJyk7XG5cbiAgICBsZXQgb3Bjb2RlcyA9IHRoaXMudXBkYXRpbmcoKTtcbiAgICBsZXQgbWFya2VyID0gdGhpc1tTVEFDS1NdLmNhY2hlLnBvcCgpO1xuICAgIGxldCBoZWFkID0gbWFya2VyID8gb3Bjb2Rlcy5uZXh0Tm9kZShtYXJrZXIpIDogb3Bjb2Rlcy5oZWFkKCk7XG4gICAgbGV0IHRhaWwgPSBvcGNvZGVzLnRhaWwoKTtcbiAgICBsZXQgdGFnID0gY29tYmluZVNsaWNlKG5ldyBMaXN0U2xpY2UoaGVhZCwgdGFpbCkpO1xuXG4gICAgbGV0IGd1YXJkID0gbmV3IEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlKHRhZywgRU5EKTtcblxuICAgIG9wY29kZXMuaW5zZXJ0QmVmb3JlKGd1YXJkLCBoZWFkKTtcbiAgICBvcGNvZGVzLmFwcGVuZChuZXcgRGlkTW9kaWZ5T3Bjb2RlKGd1YXJkKSk7XG4gICAgb3Bjb2Rlcy5hcHBlbmQoRU5EKTtcbiAgfVxuXG4gIGVudGVyKGFyZ3M6IG51bWJlcikge1xuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpO1xuXG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKGFyZ3MpO1xuICAgIGxldCBibG9jayA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcblxuICAgIGxldCB0cnlPcGNvZGUgPSBuZXcgVHJ5T3Bjb2RlKHN0YXRlLCB0aGlzLnJ1bnRpbWUsIGJsb2NrLCB1cGRhdGluZyk7XG5cbiAgICB0aGlzLmRpZEVudGVyKHRyeU9wY29kZSk7XG4gIH1cblxuICBpdGVyYXRlKFxuICAgIG1lbW86IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4sXG4gICAgdmFsdWU6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj5cbiAgKTogVHJ5T3Bjb2RlIHtcbiAgICBsZXQgc3RhY2sgPSB0aGlzLnN0YWNrO1xuICAgIHN0YWNrLnB1c2godmFsdWUpO1xuICAgIHN0YWNrLnB1c2gobWVtbyk7XG5cbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMik7XG4gICAgbGV0IGJsb2NrID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuXG4gICAgLy8gbGV0IGlwID0gdGhpcy5pcDtcbiAgICAvLyB0aGlzLmlwID0gZW5kICsgNDtcbiAgICAvLyB0aGlzLmZyYW1lcy5wdXNoKGlwKTtcblxuICAgIHJldHVybiBuZXcgVHJ5T3Bjb2RlKHN0YXRlLCB0aGlzLnJ1bnRpbWUsIGJsb2NrLCBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKSk7XG4gIH1cblxuICBlbnRlckl0ZW0oa2V5OiBzdHJpbmcsIG9wY29kZTogVHJ5T3Bjb2RlKSB7XG4gICAgdGhpcy5saXN0QmxvY2soKS5tYXAuc2V0KGtleSwgb3Bjb2RlKTtcbiAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gIH1cblxuICBlbnRlckxpc3Qob2Zmc2V0OiBudW1iZXIpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxCbG9ja09wY29kZT4oKTtcblxuICAgIGxldCBhZGRyID0gdGhpc1tJTk5FUl9WTV0udGFyZ2V0KG9mZnNldCk7XG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDAsIGFkZHIpO1xuICAgIGxldCBsaXN0ID0gdGhpcy5lbGVtZW50cygpLnB1c2hCbG9ja0xpc3QodXBkYXRpbmcpO1xuICAgIGxldCBhcnRpZmFjdHMgPSB0aGlzLnN0YWNrLnBlZWs8UmVmZXJlbmNlSXRlcmF0b3I+KCkuYXJ0aWZhY3RzO1xuXG4gICAgbGV0IG9wY29kZSA9IG5ldyBMaXN0QmxvY2tPcGNvZGUoc3RhdGUsIHRoaXMucnVudGltZSwgbGlzdCwgdXBkYXRpbmcsIGFydGlmYWN0cyk7XG5cbiAgICB0aGlzW1NUQUNLU10ubGlzdC5wdXNoKG9wY29kZSk7XG5cbiAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gIH1cblxuICBwcml2YXRlIGRpZEVudGVyKG9wY29kZTogQmxvY2tPcGNvZGUpIHtcbiAgICB0aGlzLmFzc29jaWF0ZURlc3RydWN0b3IoZGVzdHJ1Y3RvcihvcGNvZGUpKTtcbiAgICB0aGlzW0RFU1RSVUNUT1JfU1RBQ0tdLnB1c2gob3Bjb2RlKTtcbiAgICB0aGlzLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICB0aGlzLnB1c2hVcGRhdGluZyhvcGNvZGUuY2hpbGRyZW4pO1xuICB9XG5cbiAgZXhpdCgpIHtcbiAgICB0aGlzW0RFU1RSVUNUT1JfU1RBQ0tdLnBvcCgpO1xuICAgIHRoaXMuZWxlbWVudHMoKS5wb3BCbG9jaygpO1xuICAgIHRoaXMucG9wVXBkYXRpbmcoKTtcblxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnVwZGF0aW5nKCkudGFpbCgpIGFzIEJsb2NrT3Bjb2RlO1xuXG4gICAgcGFyZW50LmRpZEluaXRpYWxpemVDaGlsZHJlbigpO1xuICB9XG5cbiAgZXhpdExpc3QoKSB7XG4gICAgdGhpcy5leGl0KCk7XG4gICAgdGhpc1tTVEFDS1NdLmxpc3QucG9wKCk7XG4gIH1cblxuICBwdXNoVXBkYXRpbmcobGlzdCA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpKTogdm9pZCB7XG4gICAgdGhpc1tTVEFDS1NdLnVwZGF0aW5nLnB1c2gobGlzdCk7XG4gIH1cblxuICBwb3BVcGRhdGluZygpOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzW1NUQUNLU10udXBkYXRpbmcucG9wKCksIFwiY2FuJ3QgcG9wIGFuIGVtcHR5IHN0YWNrXCIpO1xuICB9XG5cbiAgdXBkYXRlV2l0aChvcGNvZGU6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgdGhpcy51cGRhdGluZygpLmFwcGVuZChvcGNvZGUpO1xuICB9XG5cbiAgbGlzdEJsb2NrKCk6IExpc3RCbG9ja09wY29kZSB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzW1NUQUNLU10ubGlzdC5jdXJyZW50LCAnZXhwZWN0ZWQgYSBsaXN0IGJsb2NrJyk7XG4gIH1cblxuICBhc3NvY2lhdGVEZXN0cnVjdG9yKGNoaWxkOiBEcm9wKTogdm9pZCB7XG4gICAgaWYgKCFpc0Ryb3AoY2hpbGQpKSByZXR1cm47XG4gICAgbGV0IHBhcmVudCA9IGV4cGVjdCh0aGlzW0RFU1RSVUNUT1JfU1RBQ0tdLmN1cnJlbnQsICdFeHBlY3RlZCBkZXN0cnVjdG9yIHBhcmVudCcpO1xuICAgIGFzc29jaWF0ZURlc3RydWN0b3IocGFyZW50LCBjaGlsZCk7XG4gIH1cblxuICBhc3NvY2lhdGVEZXN0cm95YWJsZShjaGlsZDogU3ltYm9sRGVzdHJveWFibGUgfCBEZXN0cm95YWJsZSk6IHZvaWQge1xuICAgIHRoaXMuYXNzb2NpYXRlRGVzdHJ1Y3RvcihkZXN0cnVjdG9yKGNoaWxkKSk7XG4gIH1cblxuICB0cnlVcGRhdGluZygpOiBPcHRpb248TGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4+IHtcbiAgICByZXR1cm4gdGhpc1tTVEFDS1NdLnVwZGF0aW5nLmN1cnJlbnQ7XG4gIH1cblxuICB1cGRhdGluZygpOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgcmV0dXJuIGV4cGVjdChcbiAgICAgIHRoaXNbU1RBQ0tTXS51cGRhdGluZy5jdXJyZW50LFxuICAgICAgJ2V4cGVjdGVkIHVwZGF0aW5nIG9wY29kZSBvbiB0aGUgdXBkYXRpbmcgb3Bjb2RlIHN0YWNrJ1xuICAgICk7XG4gIH1cblxuICBlbGVtZW50cygpOiBFbGVtZW50QnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrO1xuICB9XG5cbiAgc2NvcGUoKTogU2NvcGU8Qz4ge1xuICAgIHJldHVybiBleHBlY3QodGhpc1tTVEFDS1NdLnNjb3BlLmN1cnJlbnQsICdleHBlY3RlZCBzY29wZSBvbiB0aGUgc2NvcGUgc3RhY2snKTtcbiAgfVxuXG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIHJldHVybiBleHBlY3QoXG4gICAgICB0aGlzW1NUQUNLU10uZHluYW1pY1Njb3BlLmN1cnJlbnQsXG4gICAgICAnZXhwZWN0ZWQgZHluYW1pYyBzY29wZSBvbiB0aGUgZHluYW1pYyBzY29wZSBzdGFjaydcbiAgICApO1xuICB9XG5cbiAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgdGhpc1tTVEFDS1NdLnNjb3BlLnB1c2godGhpcy5zY29wZSgpLmNoaWxkKCkpO1xuICB9XG5cbiAgcHVzaER5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIGxldCBjaGlsZCA9IHRoaXMuZHluYW1pY1Njb3BlKCkuY2hpbGQoKTtcbiAgICB0aGlzW1NUQUNLU10uZHluYW1pY1Njb3BlLnB1c2goY2hpbGQpO1xuICAgIHJldHVybiBjaGlsZDtcbiAgfVxuXG4gIHB1c2hSb290U2NvcGUoc2l6ZTogbnVtYmVyKTogUGFydGlhbFNjb3BlPEM+IHtcbiAgICBsZXQgc2NvcGUgPSBTY29wZUltcGwuc2l6ZWQ8Qz4oc2l6ZSk7XG4gICAgdGhpc1tTVEFDS1NdLnNjb3BlLnB1c2goc2NvcGUpO1xuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIHB1c2hTY29wZShzY29wZTogU2NvcGU8Qz4pIHtcbiAgICB0aGlzW1NUQUNLU10uc2NvcGUucHVzaChzY29wZSk7XG4gIH1cblxuICBwb3BTY29wZSgpIHtcbiAgICB0aGlzW1NUQUNLU10uc2NvcGUucG9wKCk7XG4gIH1cblxuICBwb3BEeW5hbWljU2NvcGUoKSB7XG4gICAgdGhpc1tTVEFDS1NdLmR5bmFtaWNTY29wZS5wb3AoKTtcbiAgfVxuXG4gIC8vLyBTQ09QRSBIRUxQRVJTXG5cbiAgZ2V0U2VsZigpOiBQYXRoUmVmZXJlbmNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U2VsZigpO1xuICB9XG5cbiAgcmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbDogbnVtYmVyKTogUGF0aFJlZmVyZW5jZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTeW1ib2woc3ltYm9sKTtcbiAgfVxuXG4gIC8vLyBFWEVDVVRJT05cblxuICBleGVjdXRlKGluaXRpYWxpemU/OiAodm06IHRoaXMpID0+IHZvaWQpOiBSZW5kZXJSZXN1bHQge1xuICAgIGlmIChMT0NBTF9TSE9VTERfTE9HKSB7XG4gICAgICBjb25zb2xlLmxvZyhgRVhFQ1VUSU5HIEZST00gJHt0aGlzW0lOTkVSX1ZNXS5mZXRjaFJlZ2lzdGVyKCRwYyl9YCk7XG4gICAgfVxuXG4gICAgaWYgKGluaXRpYWxpemUpIGluaXRpYWxpemUodGhpcyk7XG5cbiAgICBsZXQgcmVzdWx0OiBSaWNoSXRlcmF0b3JSZXN1bHQ8bnVsbCwgUmVuZGVyUmVzdWx0PjtcblxuICAgIHRyeSB7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICByZXN1bHQgPSB0aGlzLm5leHQoKTtcbiAgICAgICAgaWYgKHJlc3VsdC5kb25lKSBicmVhaztcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gSWYgYW55IGV4aXN0aW5nIGJsb2NrcyBhcmUgb3BlbiwgZHVlIHRvIGFuIGVycm9yIG9yIHNvbWV0aGluZyBsaWtlXG4gICAgICAvLyB0aGF0LCB3ZSBuZWVkIHRvIGNsb3NlIHRoZW0gYWxsIGFuZCBjbGVhbiB0aGluZ3MgdXAgcHJvcGVybHkuXG4gICAgICBsZXQgZWxlbWVudHMgPSB0aGlzLmVsZW1lbnRzKCk7XG5cbiAgICAgIHdoaWxlIChlbGVtZW50cy5oYXNCbG9ja3MpIHtcbiAgICAgICAgZWxlbWVudHMucG9wQmxvY2soKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LnZhbHVlO1xuICB9XG5cbiAgbmV4dCgpOiBSaWNoSXRlcmF0b3JSZXN1bHQ8bnVsbCwgUmVuZGVyUmVzdWx0PiB7XG4gICAgbGV0IHsgZW52LCBlbGVtZW50U3RhY2sgfSA9IHRoaXM7XG4gICAgbGV0IG9wY29kZSA9IHRoaXNbSU5ORVJfVk1dLm5leHRTdGF0ZW1lbnQoKTtcbiAgICBsZXQgcmVzdWx0OiBSaWNoSXRlcmF0b3JSZXN1bHQ8bnVsbCwgUmVuZGVyUmVzdWx0PjtcbiAgICBpZiAob3Bjb2RlICE9PSBudWxsKSB7XG4gICAgICB0aGlzW0lOTkVSX1ZNXS5ldmFsdWF0ZU91dGVyKG9wY29kZSwgdGhpcyk7XG4gICAgICByZXN1bHQgPSB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogbnVsbCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBVbmxvYWQgdGhlIHN0YWNrXG4gICAgICB0aGlzLnN0YWNrLnJlc2V0KCk7XG5cbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgZG9uZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IG5ldyBSZW5kZXJSZXN1bHRJbXBsKFxuICAgICAgICAgIGVudixcbiAgICAgICAgICB0aGlzLnBvcFVwZGF0aW5nKCksXG4gICAgICAgICAgZWxlbWVudFN0YWNrLnBvcEJsb2NrKCksXG4gICAgICAgICAgdGhpcy5kZXN0cnVjdG9yXG4gICAgICAgICksXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYmluZER5bmFtaWNTY29wZShuYW1lczogbnVtYmVyW10pIHtcbiAgICBsZXQgc2NvcGUgPSB0aGlzLmR5bmFtaWNTY29wZSgpO1xuXG4gICAgZm9yIChsZXQgaSA9IG5hbWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBsZXQgbmFtZSA9IHRoaXNbQ09OU1RBTlRTXS5nZXRTdHJpbmcobmFtZXNbaV0pO1xuICAgICAgc2NvcGUuc2V0KG5hbWUsIHRoaXMuc3RhY2sucG9wPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4+KCkpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB2bVN0YXRlPEMgZXh0ZW5kcyBKaXRPckFvdEJsb2NrPihcbiAgcGM6IG51bWJlcixcbiAgc2NvcGU6IFNjb3BlPEM+ID0gU2NvcGVJbXBsLnJvb3Q8Qz4oVU5ERUZJTkVEX1JFRkVSRU5DRSwgMCksXG4gIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlXG4pIHtcbiAgcmV0dXJuIHtcbiAgICBwYyxcbiAgICBzY29wZSxcbiAgICBkeW5hbWljU2NvcGUsXG4gICAgc3RhY2s6IFtdLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pbmltYWxJbml0T3B0aW9ucyB7XG4gIGhhbmRsZTogbnVtYmVyO1xuICB0cmVlQnVpbGRlcjogRWxlbWVudEJ1aWxkZXI7XG4gIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluaXRPcHRpb25zIGV4dGVuZHMgTWluaW1hbEluaXRPcHRpb25zIHtcbiAgc2VsZjogUGF0aFJlZmVyZW5jZTx1bmtub3duPjtcbn1cblxuZXhwb3J0IGNsYXNzIEFvdFZNIGV4dGVuZHMgVk08bnVtYmVyPiBpbXBsZW1lbnRzIEludGVybmFsVk08bnVtYmVyPiB7XG4gIHN0YXRpYyBlbXB0eShcbiAgICBydW50aW1lOiBBb3RSdW50aW1lQ29udGV4dCxcbiAgICB7IGhhbmRsZSwgdHJlZUJ1aWxkZXIsIGR5bmFtaWNTY29wZSB9OiBNaW5pbWFsSW5pdE9wdGlvbnNcbiAgKTogSW50ZXJuYWxWTTxudW1iZXI+IHtcbiAgICBsZXQgdm0gPSBpbml0QU9UKFxuICAgICAgcnVudGltZSxcbiAgICAgIHZtU3RhdGUoXG4gICAgICAgIHJ1bnRpbWUucHJvZ3JhbS5oZWFwLmdldGFkZHIoaGFuZGxlKSxcbiAgICAgICAgU2NvcGVJbXBsLnJvb3Q8bnVtYmVyPihVTkRFRklORURfUkVGRVJFTkNFLCAwKSxcbiAgICAgICAgZHluYW1pY1Njb3BlXG4gICAgICApLFxuICAgICAgdHJlZUJ1aWxkZXJcbiAgICApO1xuICAgIHZtLnB1c2hVcGRhdGluZygpO1xuICAgIHJldHVybiB2bTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0aWFsKFxuICAgIHJ1bnRpbWU6IEFvdFJ1bnRpbWVDb250ZXh0LFxuICAgIHsgaGFuZGxlLCBzZWxmLCB0cmVlQnVpbGRlciwgZHluYW1pY1Njb3BlIH06IEluaXRPcHRpb25zXG4gICkge1xuICAgIGxldCBzY29wZVNpemUgPSBydW50aW1lLnByb2dyYW0uaGVhcC5zY29wZXNpemVvZihoYW5kbGUpO1xuICAgIGxldCBzY29wZSA9IFNjb3BlSW1wbC5yb290KHNlbGYsIHNjb3BlU2l6ZSk7XG4gICAgbGV0IHBjID0gY2hlY2socnVudGltZS5wcm9ncmFtLmhlYXAuZ2V0YWRkcihoYW5kbGUpLCBDaGVja051bWJlcik7XG4gICAgbGV0IHN0YXRlID0gdm1TdGF0ZShwYywgc2NvcGUsIGR5bmFtaWNTY29wZSk7XG4gICAgbGV0IHZtID0gaW5pdEFPVChydW50aW1lLCBzdGF0ZSwgdHJlZUJ1aWxkZXIpO1xuICAgIHZtLnB1c2hVcGRhdGluZygpO1xuICAgIHJldHVybiB2bTtcbiAgfVxuXG4gIGNhcHR1cmUoYXJnczogbnVtYmVyLCBwYyA9IHRoaXNbSU5ORVJfVk1dLmZldGNoUmVnaXN0ZXIoJHBjKSk6IFJlc3VtYWJsZVZNU3RhdGU8QW90Vk0+IHtcbiAgICByZXR1cm4gbmV3IFJlc3VtYWJsZVZNU3RhdGVJbXBsKHRoaXMuY2FwdHVyZVN0YXRlKGFyZ3MsIHBjKSwgaW5pdEFPVCk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgVm1Jbml0Q2FsbGJhY2s8ViBleHRlbmRzIEludGVybmFsVk0gPSBJbnRlcm5hbFZNPiA9IChcbiAgdGhpczogdm9pZCxcbiAgcnVudGltZTogViBleHRlbmRzIEppdFZNID8gSml0UnVudGltZUNvbnRleHQgOiBBb3RSdW50aW1lQ29udGV4dCxcbiAgc3RhdGU6IFZNU3RhdGUsXG4gIGJ1aWxkZXI6IEVsZW1lbnRCdWlsZGVyXG4pID0+IFY7XG5cbmV4cG9ydCB0eXBlIEppdFZtSW5pdENhbGxiYWNrPFYgZXh0ZW5kcyBJbnRlcm5hbFZNPiA9IChcbiAgdGhpczogdm9pZCxcbiAgcnVudGltZTogSml0UnVudGltZUNvbnRleHQsXG4gIHN0YXRlOiBWTVN0YXRlLFxuICBidWlsZGVyOiBFbGVtZW50QnVpbGRlclxuKSA9PiBWO1xuXG5mdW5jdGlvbiBpbml0QU9UKHJ1bnRpbWU6IEFvdFJ1bnRpbWVDb250ZXh0LCBzdGF0ZTogVk1TdGF0ZSwgYnVpbGRlcjogRWxlbWVudEJ1aWxkZXIpOiBBb3RWTSB7XG4gIHJldHVybiBuZXcgQW90Vk0ocnVudGltZSwgc3RhdGUsIGJ1aWxkZXIpO1xufVxuXG5mdW5jdGlvbiBpbml0SklUKGNvbnRleHQ6IFN5bnRheENvbXBpbGF0aW9uQ29udGV4dCk6IEppdFZtSW5pdENhbGxiYWNrPEppdFZNPiB7XG4gIHJldHVybiAocnVudGltZSwgc3RhdGUsIGJ1aWxkZXIpID0+IG5ldyBKaXRWTShydW50aW1lLCBzdGF0ZSwgYnVpbGRlciwgY29udGV4dCk7XG59XG5cbmV4cG9ydCBjbGFzcyBKaXRWTSBleHRlbmRzIFZNPENvbXBpbGFibGVCbG9jaz4gaW1wbGVtZW50cyBJbnRlcm5hbEppdFZNIHtcbiAgc3RhdGljIGluaXRpYWwoXG4gICAgcnVudGltZTogSml0UnVudGltZUNvbnRleHQsXG4gICAgY29udGV4dDogU3ludGF4Q29tcGlsYXRpb25Db250ZXh0LFxuICAgIHsgaGFuZGxlLCBzZWxmLCBkeW5hbWljU2NvcGUsIHRyZWVCdWlsZGVyIH06IEluaXRPcHRpb25zXG4gICkge1xuICAgIGxldCBzY29wZVNpemUgPSBydW50aW1lLnByb2dyYW0uaGVhcC5zY29wZXNpemVvZihoYW5kbGUpO1xuICAgIGxldCBzY29wZSA9IFNjb3BlSW1wbC5yb290KHNlbGYsIHNjb3BlU2l6ZSk7XG4gICAgbGV0IHN0YXRlID0gdm1TdGF0ZShydW50aW1lLnByb2dyYW0uaGVhcC5nZXRhZGRyKGhhbmRsZSksIHNjb3BlLCBkeW5hbWljU2NvcGUpO1xuICAgIGxldCB2bSA9IGluaXRKSVQoY29udGV4dCkocnVudGltZSwgc3RhdGUsIHRyZWVCdWlsZGVyKTtcbiAgICB2bS5wdXNoVXBkYXRpbmcoKTtcbiAgICByZXR1cm4gdm07XG4gIH1cblxuICBzdGF0aWMgZW1wdHkoXG4gICAgcnVudGltZTogSml0UnVudGltZUNvbnRleHQsXG4gICAgeyBoYW5kbGUsIHRyZWVCdWlsZGVyLCBkeW5hbWljU2NvcGUgfTogTWluaW1hbEluaXRPcHRpb25zLFxuICAgIGNvbnRleHQ6IFN5bnRheENvbXBpbGF0aW9uQ29udGV4dFxuICApIHtcbiAgICBsZXQgdm0gPSBpbml0SklUKGNvbnRleHQpKFxuICAgICAgcnVudGltZSxcbiAgICAgIHZtU3RhdGUoXG4gICAgICAgIHJ1bnRpbWUucHJvZ3JhbS5oZWFwLmdldGFkZHIoaGFuZGxlKSxcbiAgICAgICAgU2NvcGVJbXBsLnJvb3Q8Q29tcGlsYWJsZUJsb2NrPihVTkRFRklORURfUkVGRVJFTkNFLCAwKSxcbiAgICAgICAgZHluYW1pY1Njb3BlXG4gICAgICApLFxuICAgICAgdHJlZUJ1aWxkZXJcbiAgICApO1xuICAgIHZtLnB1c2hVcGRhdGluZygpO1xuICAgIHJldHVybiB2bTtcbiAgfVxuXG4gIHJlYWRvbmx5IHJ1bnRpbWUhOiBKaXRSdW50aW1lQ29udGV4dDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBydW50aW1lOiBKaXRSdW50aW1lQ29udGV4dCxcbiAgICBzdGF0ZTogVk1TdGF0ZSxcbiAgICBlbGVtZW50U3RhY2s6IEVsZW1lbnRCdWlsZGVyLFxuICAgIHJlYWRvbmx5IGNvbnRleHQ6IFN5bnRheENvbXBpbGF0aW9uQ29udGV4dFxuICApIHtcbiAgICBzdXBlcihydW50aW1lLCBzdGF0ZSwgZWxlbWVudFN0YWNrKTtcbiAgfVxuXG4gIGNhcHR1cmUoYXJnczogbnVtYmVyLCBwYyA9IHRoaXNbSU5ORVJfVk1dLmZldGNoUmVnaXN0ZXIoJHBjKSk6IFJlc3VtYWJsZVZNU3RhdGU8Sml0Vk0+IHtcbiAgICByZXR1cm4gbmV3IFJlc3VtYWJsZVZNU3RhdGVJbXBsKHRoaXMuY2FwdHVyZVN0YXRlKGFyZ3MsIHBjKSwgdGhpcy5yZXN1bWUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXN1bWU6IFZtSW5pdENhbGxiYWNrPEppdFZNPiA9IGluaXRKSVQodGhpcy5jb250ZXh0KTtcblxuICBjb21waWxlKGJsb2NrOiBDb21waWxhYmxlVGVtcGxhdGUpOiBudW1iZXIge1xuICAgIGxldCBoYW5kbGUgPSB1bndyYXBIYW5kbGUoYmxvY2suY29tcGlsZSh0aGlzLmNvbnRleHQpKTtcblxuICAgIHJldHVybiBoYW5kbGU7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= |
@@ -389,2 +389,7 @@ "use strict"; | ||
} | ||
}, { | ||
key: "hasBlocks", | ||
get: function get() { | ||
return this.blockStack.size > 0; | ||
} | ||
}]); | ||
@@ -588,2 +593,2 @@ | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2VsZW1lbnQtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQWNBOztBQW1CQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFXQSxLOzs7QUFDRSxXQUFBLEtBQUEsQ0FBQSxJQUFBLEVBQW9DO0FBQWhCLFNBQUEsSUFBQSxHQUFBLElBQUE7QUFBb0I7Ozs7U0FFeEMsUyxHQUFBLFNBQUEsU0FBQSxHQUFTO0FBQ1AsV0FBTyxLQUFQLElBQUE7Ozs7OztJQUlKLEk7OztBQUNFLFdBQUEsSUFBQSxDQUFBLElBQUEsRUFBb0M7QUFBaEIsU0FBQSxJQUFBLEdBQUEsSUFBQTtBQUFvQjs7OztVQUV4QyxRLEdBQUEsU0FBQSxRQUFBLEdBQVE7QUFDTixXQUFPLEtBQVAsSUFBQTs7Ozs7O0FBSUosSUFBTSxRQUFOO0FBQUE7QUFBQSxZQUFBO0FBR0UsV0FBQSxRQUFBLENBQUEsTUFBQSxFQUEwQjtBQUN4QixTQUFBLE1BQUEsR0FBQSxNQUFBO0FBQ0Q7O0FBTEgsTUFBQSxPQUFBLEdBQUEsUUFBQSxDQUFBLFNBQUE7O0FBQUEsRUFBQSxPQUFBLENBQUEsYUFBQSxHQU9FLFNBQUEsYUFBQSxHQUFhO0FBQ1gsV0FBTyxLQUFBLE1BQUEsQ0FBUCxhQUFPLEVBQVA7QUFSSixHQUFBOztBQUFBLEVBQUEsT0FBQSxDQUFBLFNBQUEsR0FXRSxTQUFBLFNBQUEsR0FBUztBQUNQLFdBQU8sS0FBQSxNQUFBLENBQVAsU0FBTyxFQUFQO0FBWkosR0FBQTs7QUFBQSxFQUFBLE9BQUEsQ0FBQSxRQUFBLEdBZUUsU0FBQSxRQUFBLEdBQVE7QUFDTixXQUFPLEtBQUEsTUFBQSxDQUFQLFFBQU8sRUFBUDtBQWhCSixHQUFBOztBQUFBLFNBQUEsUUFBQTtBQUFBLENBQUEsRUFBQTs7O0FBb0JPLElBQU0sWUFBWSxHQUFzQixrQkFBeEMsY0FBd0MsQ0FBeEM7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QUEsU0FBQSxXQUFBLENBQUEsUUFBQSxFQUFtQztBQUFBLGFBQ2pDLGtCQUFNLEtBQU4sRUFEaUMsaURBQ2pDLENBRGlDOzs7VUFJbkMsWSxHQUFBLFNBQUEsWUFBQSxHQUFZO0FBQUEsYUFDVixrQkFBTSxLQUFOLEVBRFUsa0RBQ1YsQ0FEVTs7O1VBSVosYSxHQUFBLFNBQUEsYUFBQSxDQUFBLEtBQUEsRUFBK0I7QUFBQSxhQUM3QixrQkFBTSxLQUFOLEVBRDZCLHVEQUM3QixDQUQ2Qjs7O1VBSS9CLGUsR0FBQSxTQUFBLGVBQUEsQ0FBQSxPQUFBLEVBQStCLEM7O1VBRS9CLFEsR0FBQSxTQUFBLFFBQUEsQ0FBQSxNQUFBLEVBQStCO0FBQUEsYUFDN0Isa0JBQU8sS0FBQSxTQUFBLENBQUEsSUFBQSxPQUFELElBQU4sRUFENkIsNEJBQzdCLENBRDZCOzs7Ozs7QUFLM0IsU0FBQSxhQUFBLENBQUEsR0FBQSxFQUFBLE1BQUEsRUFBNEQ7QUFDaEUsU0FBTyxpQkFBaUIsQ0FBakIsZ0JBQUEsQ0FBQSxHQUFBLEVBQVAsTUFBTyxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCb3VuZHMsXG4gIEVsZW1lbnRPcGVyYXRpb25zLFxuICBFbnZpcm9ubWVudCxcbiAgR2xpbW1lclRyZWVDaGFuZ2VzLFxuICBHbGltbWVyVHJlZUNvbnN0cnVjdGlvbixcbiAgU3ltYm9sRGVzdHJveWFibGUsXG4gIEVsZW1lbnRCdWlsZGVyLFxuICBMaXZlQmxvY2ssXG4gIEN1cnNvclN0YWNrU3ltYm9sLFxuICBVcGRhdGFibGVCbG9jayxcbiAgQ3Vyc29yLFxuICBNb2RpZmllck1hbmFnZXIsXG59IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgYXNzZXJ0LFxuICBERVNUUk9ZLFxuICBleHBlY3QsXG4gIExpbmtlZExpc3QsXG4gIExpbmtlZExpc3ROb2RlLFxuICBPcHRpb24sXG4gIFN0YWNrLFxuICBNYXliZSxcbiAgc3ltYm9sLFxufSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIEF0dHJOYW1lc3BhY2UsXG4gIFNpbXBsZUNvbW1lbnQsXG4gIFNpbXBsZURvY3VtZW50RnJhZ21lbnQsXG4gIFNpbXBsZUVsZW1lbnQsXG4gIFNpbXBsZU5vZGUsXG4gIFNpbXBsZVRleHQsXG59IGZyb20gJ0BzaW1wbGUtZG9tL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBjbGVhciwgQ29uY3JldGVCb3VuZHMsIEN1cnNvckltcGwsIFNpbmdsZU5vZGVCb3VuZHMgfSBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0IHsgZGV0YWNoQ2hpbGRyZW4gfSBmcm9tICcuLi9saWZldGltZSc7XG5pbXBvcnQgeyBEeW5hbWljQXR0cmlidXRlIH0gZnJvbSAnLi9hdHRyaWJ1dGVzL2R5bmFtaWMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpcnN0Tm9kZSB7XG4gIGZpcnN0Tm9kZSgpOiBTaW1wbGVOb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhc3ROb2RlIHtcbiAgbGFzdE5vZGUoKTogU2ltcGxlTm9kZTtcbn1cblxuY2xhc3MgRmlyc3Qge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5vZGU6IFNpbXBsZU5vZGUpIHt9XG5cbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cbn1cblxuY2xhc3MgTGFzdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbm9kZTogU2ltcGxlTm9kZSkge31cblxuICBsYXN0Tm9kZSgpOiBTaW1wbGVOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGcmFnbWVudCBpbXBsZW1lbnRzIEJvdW5kcyB7XG4gIHByaXZhdGUgYm91bmRzOiBCb3VuZHM7XG5cbiAgY29uc3RydWN0b3IoYm91bmRzOiBCb3VuZHMpIHtcbiAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgfVxuXG4gIHBhcmVudEVsZW1lbnQoKTogU2ltcGxlRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpOiBTaW1wbGVOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpOiBTaW1wbGVOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMubGFzdE5vZGUoKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgQ1VSU09SX1NUQUNLOiBDdXJzb3JTdGFja1N5bWJvbCA9IHN5bWJvbCgnQ1VSU09SX1NUQUNLJyk7XG5cbmV4cG9ydCBjbGFzcyBOZXdFbGVtZW50QnVpbGRlciBpbXBsZW1lbnRzIEVsZW1lbnRCdWlsZGVyIHtcbiAgcHVibGljIGRvbTogR2xpbW1lclRyZWVDb25zdHJ1Y3Rpb247XG4gIHB1YmxpYyB1cGRhdGVPcGVyYXRpb25zOiBHbGltbWVyVHJlZUNoYW5nZXM7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rpbmc6IE9wdGlvbjxTaW1wbGVFbGVtZW50PiA9IG51bGw7XG4gIHB1YmxpYyBvcGVyYXRpb25zOiBPcHRpb248RWxlbWVudE9wZXJhdGlvbnM+ID0gbnVsbDtcbiAgcHJpdmF0ZSBlbnY6IEVudmlyb25tZW50O1xuXG4gIFtDVVJTT1JfU1RBQ0tdID0gbmV3IFN0YWNrPEN1cnNvcj4oKTtcbiAgcHJpdmF0ZSBtb2RpZmllclN0YWNrID0gbmV3IFN0YWNrPE9wdGlvbjxbTW9kaWZpZXJNYW5hZ2VyLCB1bmtub3duXVtdPj4oKTtcbiAgcHJpdmF0ZSBibG9ja1N0YWNrID0gbmV3IFN0YWNrPExpdmVCbG9jaz4oKTtcblxuICBzdGF0aWMgZm9ySW5pdGlhbFJlbmRlcihlbnY6IEVudmlyb25tZW50LCBjdXJzb3I6IEN1cnNvckltcGwpIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoZW52LCBjdXJzb3IuZWxlbWVudCwgY3Vyc29yLm5leHRTaWJsaW5nKS5pbml0aWFsaXplKCk7XG4gIH1cblxuICBzdGF0aWMgcmVzdW1lKGVudjogRW52aXJvbm1lbnQsIGJsb2NrOiBVcGRhdGFibGVCbG9jayk6IE5ld0VsZW1lbnRCdWlsZGVyIHtcbiAgICBsZXQgcGFyZW50Tm9kZSA9IGJsb2NrLnBhcmVudEVsZW1lbnQoKTtcbiAgICBsZXQgbmV4dFNpYmxpbmcgPSBibG9jay5yZXNldChlbnYpO1xuXG4gICAgbGV0IHN0YWNrID0gbmV3IHRoaXMoZW52LCBwYXJlbnROb2RlLCBuZXh0U2libGluZykuaW5pdGlhbGl6ZSgpO1xuICAgIHN0YWNrLnB1c2hMaXZlQmxvY2soYmxvY2spO1xuXG4gICAgcmV0dXJuIHN0YWNrO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZW52OiBFbnZpcm9ubWVudCwgcGFyZW50Tm9kZTogU2ltcGxlRWxlbWVudCwgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGVOb2RlPikge1xuICAgIHRoaXMucHVzaEVsZW1lbnQocGFyZW50Tm9kZSwgbmV4dFNpYmxpbmcpO1xuXG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5kb20gPSBlbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpO1xuICAgIHRoaXMudXBkYXRlT3BlcmF0aW9ucyA9IGVudi5nZXRET00oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0aWFsaXplKCk6IHRoaXMge1xuICAgIHRoaXMucHVzaFNpbXBsZUJsb2NrKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBkZWJ1Z0Jsb2NrcygpOiBMaXZlQmxvY2tbXSB7XG4gICAgcmV0dXJuIHRoaXMuYmxvY2tTdGFjay50b0FycmF5KCk7XG4gIH1cblxuICBnZXQgZWxlbWVudCgpOiBTaW1wbGVFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpc1tDVVJTT1JfU1RBQ0tdLmN1cnJlbnQhLmVsZW1lbnQ7XG4gIH1cblxuICBnZXQgbmV4dFNpYmxpbmcoKTogT3B0aW9uPFNpbXBsZU5vZGU+IHtcbiAgICByZXR1cm4gdGhpc1tDVVJTT1JfU1RBQ0tdLmN1cnJlbnQhLm5leHRTaWJsaW5nO1xuICB9XG5cbiAgYmxvY2soKTogTGl2ZUJsb2NrIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuYmxvY2tTdGFjay5jdXJyZW50LCAnRXhwZWN0ZWQgYSBjdXJyZW50IGxpdmUgYmxvY2snKTtcbiAgfVxuXG4gIHBvcEVsZW1lbnQoKSB7XG4gICAgdGhpc1tDVVJTT1JfU1RBQ0tdLnBvcCgpO1xuICAgIGV4cGVjdCh0aGlzW0NVUlNPUl9TVEFDS10uY3VycmVudCwgXCJjYW4ndCBwb3AgcGFzdCB0aGUgbGFzdCBlbGVtZW50XCIpO1xuICB9XG5cbiAgcHVzaFNpbXBsZUJsb2NrKCk6IExpdmVCbG9jayB7XG4gICAgcmV0dXJuIHRoaXMucHVzaExpdmVCbG9jayhuZXcgU2ltcGxlTGl2ZUJsb2NrKHRoaXMuZWxlbWVudCkpO1xuICB9XG5cbiAgcHVzaFVwZGF0YWJsZUJsb2NrKCk6IFVwZGF0YWJsZUJsb2NrSW1wbCB7XG4gICAgcmV0dXJuIHRoaXMucHVzaExpdmVCbG9jayhuZXcgVXBkYXRhYmxlQmxvY2tJbXBsKHRoaXMuZWxlbWVudCkpO1xuICB9XG5cbiAgcHVzaEJsb2NrTGlzdChsaXN0OiBMaW5rZWRMaXN0PExpbmtlZExpc3ROb2RlICYgTGl2ZUJsb2NrPik6IExpdmVCbG9ja0xpc3Qge1xuICAgIHJldHVybiB0aGlzLnB1c2hMaXZlQmxvY2sobmV3IExpdmVCbG9ja0xpc3QodGhpcy5lbGVtZW50LCBsaXN0KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHVzaExpdmVCbG9jazxUIGV4dGVuZHMgTGl2ZUJsb2NrPihibG9jazogVCwgaXNSZW1vdGUgPSBmYWxzZSk6IFQge1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQ7XG5cbiAgICBpZiAoY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgaWYgKCFpc1JlbW90ZSkge1xuICAgICAgICBjdXJyZW50LmRpZEFwcGVuZEJvdW5kcyhibG9jayk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fX29wZW5CbG9jaygpO1xuICAgIHRoaXMuYmxvY2tTdGFjay5wdXNoKGJsb2NrKTtcbiAgICByZXR1cm4gYmxvY2s7XG4gIH1cblxuICBwb3BCbG9jaygpOiBMaXZlQmxvY2sge1xuICAgIHRoaXMuYmxvY2soKS5maW5hbGl6ZSh0aGlzKTtcbiAgICB0aGlzLl9fY2xvc2VCbG9jaygpO1xuICAgIHJldHVybiBleHBlY3QodGhpcy5ibG9ja1N0YWNrLnBvcCgpLCAnRXhwZWN0ZWQgcG9wQmxvY2sgdG8gcmV0dXJuIGEgYmxvY2snKTtcbiAgfVxuXG4gIF9fb3BlbkJsb2NrKCk6IHZvaWQge31cbiAgX19jbG9zZUJsb2NrKCk6IHZvaWQge31cblxuICAvLyB0b2RvIHJldHVybiBzZWVtcyB1bnVzZWRcbiAgb3BlbkVsZW1lbnQodGFnOiBzdHJpbmcpOiBTaW1wbGVFbGVtZW50IHtcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuX19vcGVuRWxlbWVudCh0YWcpO1xuICAgIHRoaXMuY29uc3RydWN0aW5nID0gZWxlbWVudDtcblxuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgX19vcGVuRWxlbWVudCh0YWc6IHN0cmluZyk6IFNpbXBsZUVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmRvbS5jcmVhdGVFbGVtZW50KHRhZywgdGhpcy5lbGVtZW50KTtcbiAgfVxuXG4gIGZsdXNoRWxlbWVudChtb2RpZmllcnM6IE9wdGlvbjxbTW9kaWZpZXJNYW5hZ2VyLCB1bmtub3duXVtdPikge1xuICAgIGxldCBwYXJlbnQgPSB0aGlzLmVsZW1lbnQ7XG4gICAgbGV0IGVsZW1lbnQgPSBleHBlY3QoXG4gICAgICB0aGlzLmNvbnN0cnVjdGluZyxcbiAgICAgIGBmbHVzaEVsZW1lbnQgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gY29uc3RydWN0aW5nIGFuIGVsZW1lbnRgXG4gICAgKTtcblxuICAgIHRoaXMuX19mbHVzaEVsZW1lbnQocGFyZW50LCBlbGVtZW50KTtcblxuICAgIHRoaXMuY29uc3RydWN0aW5nID0gbnVsbDtcbiAgICB0aGlzLm9wZXJhdGlvbnMgPSBudWxsO1xuXG4gICAgdGhpcy5wdXNoTW9kaWZpZXJzKG1vZGlmaWVycyk7XG4gICAgdGhpcy5wdXNoRWxlbWVudChlbGVtZW50LCBudWxsKTtcbiAgICB0aGlzLmRpZE9wZW5FbGVtZW50KGVsZW1lbnQpO1xuICB9XG5cbiAgX19mbHVzaEVsZW1lbnQocGFyZW50OiBTaW1wbGVFbGVtZW50LCBjb25zdHJ1Y3Rpbmc6IFNpbXBsZUVsZW1lbnQpIHtcbiAgICB0aGlzLmRvbS5pbnNlcnRCZWZvcmUocGFyZW50LCBjb25zdHJ1Y3RpbmcsIHRoaXMubmV4dFNpYmxpbmcpO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCk6IE9wdGlvbjxbTW9kaWZpZXJNYW5hZ2VyLCB1bmtub3duXVtdPiB7XG4gICAgdGhpcy53aWxsQ2xvc2VFbGVtZW50KCk7XG4gICAgdGhpcy5wb3BFbGVtZW50KCk7XG4gICAgcmV0dXJuIHRoaXMucG9wTW9kaWZpZXJzKCk7XG4gIH1cblxuICBwdXNoUmVtb3RlRWxlbWVudChcbiAgICBlbGVtZW50OiBTaW1wbGVFbGVtZW50LFxuICAgIGd1aWQ6IHN0cmluZyxcbiAgICBpbnNlcnRCZWZvcmU6IE1heWJlPFNpbXBsZU5vZGU+XG4gICk6IE9wdGlvbjxSZW1vdGVMaXZlQmxvY2s+IHtcbiAgICByZXR1cm4gdGhpcy5fX3B1c2hSZW1vdGVFbGVtZW50KGVsZW1lbnQsIGd1aWQsIGluc2VydEJlZm9yZSk7XG4gIH1cblxuICBfX3B1c2hSZW1vdGVFbGVtZW50KFxuICAgIGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQsXG4gICAgX2d1aWQ6IHN0cmluZyxcbiAgICBpbnNlcnRCZWZvcmU6IE1heWJlPFNpbXBsZU5vZGU+XG4gICk6IE9wdGlvbjxSZW1vdGVMaXZlQmxvY2s+IHtcbiAgICB0aGlzLnB1c2hFbGVtZW50KGVsZW1lbnQsIGluc2VydEJlZm9yZSk7XG5cbiAgICBpZiAoaW5zZXJ0QmVmb3JlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHdoaWxlIChlbGVtZW50Lmxhc3RDaGlsZCkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUNoaWxkKGVsZW1lbnQubGFzdENoaWxkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgYmxvY2sgPSBuZXcgUmVtb3RlTGl2ZUJsb2NrKGVsZW1lbnQpO1xuXG4gICAgcmV0dXJuIHRoaXMucHVzaExpdmVCbG9jayhibG9jaywgdHJ1ZSk7XG4gIH1cblxuICBwb3BSZW1vdGVFbGVtZW50KCkge1xuICAgIHRoaXMucG9wQmxvY2soKTtcbiAgICB0aGlzLnBvcEVsZW1lbnQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwdXNoRWxlbWVudChlbGVtZW50OiBTaW1wbGVFbGVtZW50LCBuZXh0U2libGluZzogTWF5YmU8U2ltcGxlTm9kZT4gPSBudWxsKSB7XG4gICAgdGhpc1tDVVJTT1JfU1RBQ0tdLnB1c2gobmV3IEN1cnNvckltcGwoZWxlbWVudCwgbmV4dFNpYmxpbmcpKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaE1vZGlmaWVycyhtb2RpZmllcnM6IE9wdGlvbjxbTW9kaWZpZXJNYW5hZ2VyLCB1bmtub3duXVtdPik6IHZvaWQge1xuICAgIHRoaXMubW9kaWZpZXJTdGFjay5wdXNoKG1vZGlmaWVycyk7XG4gIH1cblxuICBwcml2YXRlIHBvcE1vZGlmaWVycygpOiBPcHRpb248W01vZGlmaWVyTWFuYWdlciwgdW5rbm93bl1bXT4ge1xuICAgIHJldHVybiB0aGlzLm1vZGlmaWVyU3RhY2sucG9wKCk7XG4gIH1cblxuICBkaWRBcHBlbmRCb3VuZHMoYm91bmRzOiBCb3VuZHMpOiBCb3VuZHMge1xuICAgIHRoaXMuYmxvY2soKS5kaWRBcHBlbmRCb3VuZHMoYm91bmRzKTtcbiAgICByZXR1cm4gYm91bmRzO1xuICB9XG5cbiAgZGlkQXBwZW5kTm9kZTxUIGV4dGVuZHMgU2ltcGxlTm9kZT4obm9kZTogVCk6IFQge1xuICAgIHRoaXMuYmxvY2soKS5kaWRBcHBlbmROb2RlKG5vZGUpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgZGlkT3BlbkVsZW1lbnQoZWxlbWVudDogU2ltcGxlRWxlbWVudCk6IFNpbXBsZUVsZW1lbnQge1xuICAgIHRoaXMuYmxvY2soKS5vcGVuRWxlbWVudChlbGVtZW50KTtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIHdpbGxDbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5ibG9jaygpLmNsb3NlRWxlbWVudCgpO1xuICB9XG5cbiAgYXBwZW5kVGV4dChzdHJpbmc6IHN0cmluZyk6IFNpbXBsZVRleHQge1xuICAgIHJldHVybiB0aGlzLmRpZEFwcGVuZE5vZGUodGhpcy5fX2FwcGVuZFRleHQoc3RyaW5nKSk7XG4gIH1cblxuICBfX2FwcGVuZFRleHQodGV4dDogc3RyaW5nKTogU2ltcGxlVGV4dCB7XG4gICAgbGV0IHsgZG9tLCBlbGVtZW50LCBuZXh0U2libGluZyB9ID0gdGhpcztcbiAgICBsZXQgbm9kZSA9IGRvbS5jcmVhdGVUZXh0Tm9kZSh0ZXh0KTtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIG5vZGUsIG5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIF9fYXBwZW5kTm9kZShub2RlOiBTaW1wbGVOb2RlKTogU2ltcGxlTm9kZSB7XG4gICAgdGhpcy5kb20uaW5zZXJ0QmVmb3JlKHRoaXMuZWxlbWVudCwgbm9kZSwgdGhpcy5uZXh0U2libGluZyk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBfX2FwcGVuZEZyYWdtZW50KGZyYWdtZW50OiBTaW1wbGVEb2N1bWVudEZyYWdtZW50KTogQm91bmRzIHtcbiAgICBsZXQgZmlyc3QgPSBmcmFnbWVudC5maXJzdENoaWxkO1xuXG4gICAgaWYgKGZpcnN0KSB7XG4gICAgICBsZXQgcmV0ID0gbmV3IENvbmNyZXRlQm91bmRzKHRoaXMuZWxlbWVudCwgZmlyc3QsIGZyYWdtZW50Lmxhc3RDaGlsZCEpO1xuICAgICAgdGhpcy5kb20uaW5zZXJ0QmVmb3JlKHRoaXMuZWxlbWVudCwgZnJhZ21lbnQsIHRoaXMubmV4dFNpYmxpbmcpO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBTaW5nbGVOb2RlQm91bmRzKHRoaXMuZWxlbWVudCwgdGhpcy5fX2FwcGVuZENvbW1lbnQoJycpKTtcbiAgICB9XG4gIH1cblxuICBfX2FwcGVuZEhUTUwoaHRtbDogc3RyaW5nKTogQm91bmRzIHtcbiAgICByZXR1cm4gdGhpcy5kb20uaW5zZXJ0SFRNTEJlZm9yZSh0aGlzLmVsZW1lbnQsIHRoaXMubmV4dFNpYmxpbmcsIGh0bWwpO1xuICB9XG5cbiAgYXBwZW5kRHluYW1pY0hUTUwodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBib3VuZHMgPSB0aGlzLnRydXN0ZWRDb250ZW50KHZhbHVlKTtcbiAgICB0aGlzLmRpZEFwcGVuZEJvdW5kcyhib3VuZHMpO1xuICB9XG5cbiAgYXBwZW5kRHluYW1pY1RleHQodmFsdWU6IHN0cmluZyk6IFNpbXBsZVRleHQge1xuICAgIGxldCBub2RlID0gdGhpcy51bnRydXN0ZWRDb250ZW50KHZhbHVlKTtcbiAgICB0aGlzLmRpZEFwcGVuZE5vZGUobm9kZSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBhcHBlbmREeW5hbWljRnJhZ21lbnQodmFsdWU6IFNpbXBsZURvY3VtZW50RnJhZ21lbnQpOiB2b2lkIHtcbiAgICBsZXQgYm91bmRzID0gdGhpcy5fX2FwcGVuZEZyYWdtZW50KHZhbHVlKTtcbiAgICB0aGlzLmRpZEFwcGVuZEJvdW5kcyhib3VuZHMpO1xuICB9XG5cbiAgYXBwZW5kRHluYW1pY05vZGUodmFsdWU6IFNpbXBsZU5vZGUpOiB2b2lkIHtcbiAgICBsZXQgbm9kZSA9IHRoaXMuX19hcHBlbmROb2RlKHZhbHVlKTtcbiAgICBsZXQgYm91bmRzID0gbmV3IFNpbmdsZU5vZGVCb3VuZHModGhpcy5lbGVtZW50LCBub2RlKTtcbiAgICB0aGlzLmRpZEFwcGVuZEJvdW5kcyhib3VuZHMpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cnVzdGVkQ29udGVudCh2YWx1ZTogc3RyaW5nKTogQm91bmRzIHtcbiAgICByZXR1cm4gdGhpcy5fX2FwcGVuZEhUTUwodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSB1bnRydXN0ZWRDb250ZW50KHZhbHVlOiBzdHJpbmcpOiBTaW1wbGVUZXh0IHtcbiAgICByZXR1cm4gdGhpcy5fX2FwcGVuZFRleHQodmFsdWUpO1xuICB9XG5cbiAgYXBwZW5kQ29tbWVudChzdHJpbmc6IHN0cmluZyk6IFNpbXBsZUNvbW1lbnQge1xuICAgIHJldHVybiB0aGlzLmRpZEFwcGVuZE5vZGUodGhpcy5fX2FwcGVuZENvbW1lbnQoc3RyaW5nKSk7XG4gIH1cblxuICBfX2FwcGVuZENvbW1lbnQoc3RyaW5nOiBzdHJpbmcpOiBTaW1wbGVDb21tZW50IHtcbiAgICBsZXQgeyBkb20sIGVsZW1lbnQsIG5leHRTaWJsaW5nIH0gPSB0aGlzO1xuICAgIGxldCBub2RlID0gZG9tLmNyZWF0ZUNvbW1lbnQoc3RyaW5nKTtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIG5vZGUsIG5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIF9fc2V0QXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbmFtZXNwYWNlOiBPcHRpb248QXR0ck5hbWVzcGFjZT4pOiB2b2lkIHtcbiAgICB0aGlzLmRvbS5zZXRBdHRyaWJ1dGUodGhpcy5jb25zdHJ1Y3RpbmchLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKTtcbiAgfVxuXG4gIF9fc2V0UHJvcGVydHkobmFtZTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgICh0aGlzLmNvbnN0cnVjdGluZyEgYXMgYW55KVtuYW1lXSA9IHZhbHVlO1xuICB9XG5cbiAgc2V0U3RhdGljQXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbmFtZXNwYWNlOiBPcHRpb248QXR0ck5hbWVzcGFjZT4pOiB2b2lkIHtcbiAgICB0aGlzLl9fc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICB9XG5cbiAgc2V0RHluYW1pY0F0dHJpYnV0ZShcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgdmFsdWU6IHVua25vd24sXG4gICAgdHJ1c3Rpbmc6IGJvb2xlYW4sXG4gICAgbmFtZXNwYWNlOiBPcHRpb248QXR0ck5hbWVzcGFjZT5cbiAgKTogRHluYW1pY0F0dHJpYnV0ZSB7XG4gICAgbGV0IGVsZW1lbnQgPSB0aGlzLmNvbnN0cnVjdGluZyE7XG4gICAgbGV0IGF0dHJpYnV0ZSA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCB0cnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICBhdHRyaWJ1dGUuc2V0KHRoaXMsIHZhbHVlLCB0aGlzLmVudik7XG4gICAgcmV0dXJuIGF0dHJpYnV0ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlTGl2ZUJsb2NrIGltcGxlbWVudHMgTGl2ZUJsb2NrIHtcbiAgcHJvdGVjdGVkIGZpcnN0OiBPcHRpb248Rmlyc3ROb2RlPiA9IG51bGw7XG4gIHByb3RlY3RlZCBsYXN0OiBPcHRpb248TGFzdE5vZGU+ID0gbnVsbDtcbiAgcHJvdGVjdGVkIGRlc3Ryb3lhYmxlczogT3B0aW9uPFN5bWJvbERlc3Ryb3lhYmxlW10+ID0gbnVsbDtcbiAgcHJvdGVjdGVkIG5lc3RpbmcgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyZW50OiBTaW1wbGVFbGVtZW50KSB7fVxuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIGxldCBmaXJzdCA9IGV4cGVjdChcbiAgICAgIHRoaXMuZmlyc3QsXG4gICAgICAnY2Fubm90IGNhbGwgYGZpcnN0Tm9kZSgpYCB3aGlsZSBgU2ltcGxlTGl2ZUJsb2NrYCBpcyBzdGlsbCBpbml0aWFsaXppbmcnXG4gICAgKTtcblxuICAgIHJldHVybiBmaXJzdC5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIGxldCBsYXN0ID0gZXhwZWN0KFxuICAgICAgdGhpcy5sYXN0LFxuICAgICAgJ2Nhbm5vdCBjYWxsIGBsYXN0Tm9kZSgpYCB3aGlsZSBgU2ltcGxlTGl2ZUJsb2NrYCBpcyBzdGlsbCBpbml0aWFsaXppbmcnXG4gICAgKTtcblxuICAgIHJldHVybiBsYXN0Lmxhc3ROb2RlKCk7XG4gIH1cblxuICBvcGVuRWxlbWVudChlbGVtZW50OiBTaW1wbGVFbGVtZW50KSB7XG4gICAgdGhpcy5kaWRBcHBlbmROb2RlKGVsZW1lbnQpO1xuICAgIHRoaXMubmVzdGluZysrO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIHRoaXMubmVzdGluZy0tO1xuICB9XG5cbiAgZGlkQXBwZW5kTm9kZShub2RlOiBTaW1wbGVOb2RlKSB7XG4gICAgaWYgKHRoaXMubmVzdGluZyAhPT0gMCkgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLmZpcnN0KSB7XG4gICAgICB0aGlzLmZpcnN0ID0gbmV3IEZpcnN0KG5vZGUpO1xuICAgIH1cblxuICAgIHRoaXMubGFzdCA9IG5ldyBMYXN0KG5vZGUpO1xuICB9XG5cbiAgZGlkQXBwZW5kQm91bmRzKGJvdW5kczogQm91bmRzKSB7XG4gICAgaWYgKHRoaXMubmVzdGluZyAhPT0gMCkgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLmZpcnN0KSB7XG4gICAgICB0aGlzLmZpcnN0ID0gYm91bmRzO1xuICAgIH1cblxuICAgIHRoaXMubGFzdCA9IGJvdW5kcztcbiAgfVxuXG4gIGZpbmFsaXplKHN0YWNrOiBFbGVtZW50QnVpbGRlcikge1xuICAgIGlmICh0aGlzLmZpcnN0ID09PSBudWxsKSB7XG4gICAgICBzdGFjay5hcHBlbmRDb21tZW50KCcnKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlbW90ZUxpdmVCbG9jayBleHRlbmRzIFNpbXBsZUxpdmVCbG9jayBpbXBsZW1lbnRzIFN5bWJvbERlc3Ryb3lhYmxlIHtcbiAgW0RFU1RST1ldKCkge1xuICAgIC8vIEluIGdlbmVyYWwsIHlvdSBvbmx5IG5lZWQgdG8gY2xlYXIgdGhlIHJvb3Qgb2YgYSBoaWVyYXJjaHksIGFuZCBzaG91bGQgbmV2ZXJcbiAgICAvLyBuZWVkIHRvIGNsZWFyIGFueSBjaGlsZCBub2Rlcy4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgY29uc3RyYWludCB0aGF0IGdpdmVzIHVzXG4gICAgLy8gYSBzdHJvbmcgZ3VhcmFudGVlIHRoYXQgY2xlYXJpbmcgYSBzdWJ0cmVlIGlzIGEgc2luZ2xlIERPTSBvcGVyYXRpb24uXG4gICAgLy9cbiAgICAvLyBCZWNhdXNlIHJlbW90ZSBibG9ja3MgYXJlIG5vdCBub3JtYWxseSBwaHlzaWNhbGx5IG5lc3RlZCBpbnNpZGUgb2YgdGhlIHRyZWVcbiAgICAvLyB0aGF0IHRoZXkgYXJlIGxvZ2ljYWxseSBuZXN0ZWQgaW5zaWRlLCB3ZSBtYW51YWxseSBjbGVhciByZW1vdGUgYmxvY2tzIHdoZW5cbiAgICAvLyBhIGxvZ2ljYWwgcGFyZW50IGlzIGNsZWFyZWQuXG4gICAgLy9cbiAgICAvLyBIT1dFVkVSLCBpdCBpcyBjdXJyZW50bHkgcG9zc2libGUgZm9yIGEgcmVtb3RlIGJsb2NrIHRvIGJlIHBoeXNpY2FsbHkgbmVzdGVkXG4gICAgLy8gaW5zaWRlIG9mIHRoZSBibG9jayBpdCBpcyBsb2dpY2FsbHkgY29udGFpbmVkIGluc2lkZSBvZi4gVGhpcyBoYXBwZW5zIHdoZW5cbiAgICAvLyB0aGUgcmVtb3RlIGJsb2NrIGlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGFwcGxpY2F0aW9uJ3MgZW50aXJlIGVsZW1lbnQuXG4gICAgLy9cbiAgICAvLyBUaGUgcHJvYmxlbSB3aXRoIHRoYXQgc2NlbmFyaW8gaXMgdGhhdCBHbGltbWVyIGJlbGlldmVzIHRoYXQgaXQgb3ducyBtb3JlIG9mXG4gICAgLy8gdGhlIERPTSB0aGFuIGl0IGFjdHVhbGx5IGRvZXMuIFRoZSBjb2RlIGlzIGF0dGVtcHRpbmcgdG8gd3JpdGUgcGFzdCB0aGUgZW5kXG4gICAgLy8gb2YgdGhlIEdsaW1tZXItbWFuYWdlZCByb290LCBidXQgR2xpbW1lciBpc24ndCBhd2FyZSBvZiB0aGF0LlxuICAgIC8vXG4gICAgLy8gVGhlIGNvcnJlY3Qgc29sdXRpb24gdG8gdGhhdCBwcm9ibGVtIGlzIGZvciBHbGltbWVyIHRvIGJlIGF3YXJlIG9mIHRoZSBlbmRcbiAgICAvLyBvZiB0aGUgYm91bmRzIHRoYXQgaXQgb3ducywgYW5kIG9uY2Ugd2UgbWFrZSB0aGF0IGNoYW5nZSwgdGhpcyBjaGVjayBjb3VsZFxuICAgIC8vIGJlIHJlbW92ZWQuXG4gICAgLy9cbiAgICAvLyBGb3Igbm93LCBhIG1vcmUgdGFyZ2V0ZWQgZml4IGlzIHRvIGNoZWNrIHdoZXRoZXIgdGhlIG5vZGUgd2FzIGFscmVhZHkgcmVtb3ZlZFxuICAgIC8vIGFuZCBhdm9pZCBjbGVhcmluZyB0aGUgbm9kZSBpZiBpdCB3YXMuIEluIG1vc3QgY2FzZXMgdGhpcyBzaG91bGRuJ3QgaGFwcGVuLFxuICAgIC8vIHNvIHRoaXMgbWlnaHQgaGlkZSBidWdzIHdoZXJlIHRoZSBjb2RlIGNsZWFycyBuZXN0ZWQgbm9kZXMgdW5uZWNlc3NhcmlseSxcbiAgICAvLyBzbyB3ZSBzaG91bGQgZXZlbnR1YWxseSB0cnkgdG8gZG8gdGhlIGNvcnJlY3QgZml4LlxuICAgIGlmICh0aGlzLnBhcmVudEVsZW1lbnQoKSA9PT0gdGhpcy5maXJzdE5vZGUoKS5wYXJlbnROb2RlKSB7XG4gICAgICBjbGVhcih0aGlzKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0YWJsZUJsb2NrSW1wbCBleHRlbmRzIFNpbXBsZUxpdmVCbG9jayBpbXBsZW1lbnRzIFVwZGF0YWJsZUJsb2NrIHtcbiAgcmVzZXQoZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxTaW1wbGVOb2RlPiB7XG4gICAgbGV0IG5leHRTaWJsaW5nID0gZGV0YWNoQ2hpbGRyZW4odGhpcywgZW52KTtcblxuICAgIC8vIGxldCBuZXh0U2libGluZyA9IGNsZWFyKHRoaXMpO1xuXG4gICAgdGhpcy5maXJzdCA9IG51bGw7XG4gICAgdGhpcy5sYXN0ID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3lhYmxlcyA9IG51bGw7XG4gICAgdGhpcy5uZXN0aW5nID0gMDtcblxuICAgIHJldHVybiBuZXh0U2libGluZztcbiAgfVxufVxuXG4vLyBGSVhNRTogQWxsIHRoZSBub29wcyBpbiBoZXJlIGluZGljYXRlIGEgbW9kZWxsaW5nIHByb2JsZW1cbmNsYXNzIExpdmVCbG9ja0xpc3QgaW1wbGVtZW50cyBMaXZlQmxvY2sge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhcmVudDogU2ltcGxlRWxlbWVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJvdW5kTGlzdDogTGlua2VkTGlzdDxMaW5rZWRMaXN0Tm9kZSAmIExpdmVCbG9jaz5cbiAgKSB7XG4gICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgdGhpcy5ib3VuZExpc3QgPSBib3VuZExpc3Q7XG4gIH1cblxuICBwYXJlbnRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudDtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpOiBTaW1wbGVOb2RlIHtcbiAgICBsZXQgaGVhZCA9IGV4cGVjdChcbiAgICAgIHRoaXMuYm91bmRMaXN0LmhlYWQoKSxcbiAgICAgICdjYW5ub3QgY2FsbCBgZmlyc3ROb2RlKClgIHdoaWxlIGBMaXZlQmxvY2tMaXN0YCBpcyBzdGlsbCBpbml0aWFsaXppbmcnXG4gICAgKTtcblxuICAgIHJldHVybiBoZWFkLmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgbGV0IHRhaWwgPSBleHBlY3QoXG4gICAgICB0aGlzLmJvdW5kTGlzdC50YWlsKCksXG4gICAgICAnY2Fubm90IGNhbGwgYGxhc3ROb2RlKClgIHdoaWxlIGBMaXZlQmxvY2tMaXN0YCBpcyBzdGlsbCBpbml0aWFsaXppbmcnXG4gICAgKTtcblxuICAgIHJldHVybiB0YWlsLmxhc3ROb2RlKCk7XG4gIH1cblxuICBvcGVuRWxlbWVudChfZWxlbWVudDogU2ltcGxlRWxlbWVudCkge1xuICAgIGFzc2VydChmYWxzZSwgJ0Nhbm5vdCBvcGVuRWxlbWVudCBkaXJlY3RseSBpbnNpZGUgYSBibG9jayBsaXN0Jyk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgYXNzZXJ0KGZhbHNlLCAnQ2Fubm90IGNsb3NlRWxlbWVudCBkaXJlY3RseSBpbnNpZGUgYSBibG9jayBsaXN0Jyk7XG4gIH1cblxuICBkaWRBcHBlbmROb2RlKF9ub2RlOiBTaW1wbGVOb2RlKSB7XG4gICAgYXNzZXJ0KGZhbHNlLCAnQ2Fubm90IGNyZWF0ZSBhIG5ldyBub2RlIGRpcmVjdGx5IGluc2lkZSBhIGJsb2NrIGxpc3QnKTtcbiAgfVxuXG4gIGRpZEFwcGVuZEJvdW5kcyhfYm91bmRzOiBCb3VuZHMpIHt9XG5cbiAgZmluYWxpemUoX3N0YWNrOiBFbGVtZW50QnVpbGRlcikge1xuICAgIGFzc2VydCh0aGlzLmJvdW5kTGlzdC5oZWFkKCkgIT09IG51bGwsICdib3VuZHNMaXN0IGNhbm5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGllbnRCdWlsZGVyKGVudjogRW52aXJvbm1lbnQsIGN1cnNvcjogQ3Vyc29ySW1wbCk6IEVsZW1lbnRCdWlsZGVyIHtcbiAgcmV0dXJuIE5ld0VsZW1lbnRCdWlsZGVyLmZvckluaXRpYWxSZW5kZXIoZW52LCBjdXJzb3IpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2VsZW1lbnQtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQWNBOztBQW1CQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFXQSxLOzs7QUFDRSxXQUFBLEtBQUEsQ0FBQSxJQUFBLEVBQW9DO0FBQWhCLFNBQUEsSUFBQSxHQUFBLElBQUE7QUFBb0I7Ozs7U0FFeEMsUyxHQUFBLFNBQUEsU0FBQSxHQUFTO0FBQ1AsV0FBTyxLQUFQLElBQUE7Ozs7OztJQUlKLEk7OztBQUNFLFdBQUEsSUFBQSxDQUFBLElBQUEsRUFBb0M7QUFBaEIsU0FBQSxJQUFBLEdBQUEsSUFBQTtBQUFvQjs7OztVQUV4QyxRLEdBQUEsU0FBQSxRQUFBLEdBQVE7QUFDTixXQUFPLEtBQVAsSUFBQTs7Ozs7O0FBSUosSUFBTSxRQUFOO0FBQUE7QUFBQSxZQUFBO0FBR0UsV0FBQSxRQUFBLENBQUEsTUFBQSxFQUEwQjtBQUN4QixTQUFBLE1BQUEsR0FBQSxNQUFBO0FBQ0Q7O0FBTEgsTUFBQSxPQUFBLEdBQUEsUUFBQSxDQUFBLFNBQUE7O0FBQUEsRUFBQSxPQUFBLENBQUEsYUFBQSxHQU9FLFNBQUEsYUFBQSxHQUFhO0FBQ1gsV0FBTyxLQUFBLE1BQUEsQ0FBUCxhQUFPLEVBQVA7QUFSSixHQUFBOztBQUFBLEVBQUEsT0FBQSxDQUFBLFNBQUEsR0FXRSxTQUFBLFNBQUEsR0FBUztBQUNQLFdBQU8sS0FBQSxNQUFBLENBQVAsU0FBTyxFQUFQO0FBWkosR0FBQTs7QUFBQSxFQUFBLE9BQUEsQ0FBQSxRQUFBLEdBZUUsU0FBQSxRQUFBLEdBQVE7QUFDTixXQUFPLEtBQUEsTUFBQSxDQUFQLFFBQU8sRUFBUDtBQWhCSixHQUFBOztBQUFBLFNBQUEsUUFBQTtBQUFBLENBQUEsRUFBQTs7O0FBb0JPLElBQU0sWUFBWSxHQUFzQixrQkFBeEMsY0FBd0MsQ0FBeEM7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TyxFQUFQOzs7VUFHRixRLEdBQUEsU0FBQSxRQUFBLEdBQVE7QUFDTixRQUFJLElBQUksR0FDTixLQUFBLFNBQUEsQ0FERixJQUNFLEVBREY7QUFLQSxXQUFPLElBQUksQ0FBWCxRQUFPLEVBQVA7OztVQUdGLFcsR0FBQSxTQUFBLFdBQUEsQ0FBQSxRQUFBLEVBQW1DO0FBQUEsYUFDakMsa0JBQU0sS0FBTixFQURpQyxpREFDakMsQ0FEaUM7OztVQUluQyxZLEdBQUEsU0FBQSxZQUFBLEdBQVk7QUFBQSxhQUNWLGtCQUFNLEtBQU4sRUFEVSxrREFDVixDQURVOzs7VUFJWixhLEdBQUEsU0FBQSxhQUFBLENBQUEsS0FBQSxFQUErQjtBQUFBLGFBQzdCLGtCQUFNLEtBQU4sRUFENkIsdURBQzdCLENBRDZCOzs7VUFJL0IsZSxHQUFBLFNBQUEsZUFBQSxDQUFBLE9BQUEsRUFBK0IsQzs7VUFFL0IsUSxHQUFBLFNBQUEsUUFBQSxDQUFBLE1BQUEsRUFBK0I7QUFBQSxhQUM3QixrQkFBTyxLQUFBLFNBQUEsQ0FBQSxJQUFBLE9BQUQsSUFBTixFQUQ2Qiw0QkFDN0IsQ0FENkI7Ozs7OztBQUszQixTQUFBLGFBQUEsQ0FBQSxHQUFBLEVBQUEsTUFBQSxFQUE0RDtBQUNoRSxTQUFPLGlCQUFpQixDQUFqQixnQkFBQSxDQUFBLEdBQUEsRUFBUCxNQUFPLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJvdW5kcyxcbiAgRWxlbWVudE9wZXJhdGlvbnMsXG4gIEVudmlyb25tZW50LFxuICBHbGltbWVyVHJlZUNoYW5nZXMsXG4gIEdsaW1tZXJUcmVlQ29uc3RydWN0aW9uLFxuICBTeW1ib2xEZXN0cm95YWJsZSxcbiAgRWxlbWVudEJ1aWxkZXIsXG4gIExpdmVCbG9jayxcbiAgQ3Vyc29yU3RhY2tTeW1ib2wsXG4gIFVwZGF0YWJsZUJsb2NrLFxuICBDdXJzb3IsXG4gIE1vZGlmaWVyTWFuYWdlcixcbn0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIERFU1RST1ksXG4gIGV4cGVjdCxcbiAgTGlua2VkTGlzdCxcbiAgTGlua2VkTGlzdE5vZGUsXG4gIE9wdGlvbixcbiAgU3RhY2ssXG4gIE1heWJlLFxuICBzeW1ib2wsXG59IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgQXR0ck5hbWVzcGFjZSxcbiAgU2ltcGxlQ29tbWVudCxcbiAgU2ltcGxlRG9jdW1lbnRGcmFnbWVudCxcbiAgU2ltcGxlRWxlbWVudCxcbiAgU2ltcGxlTm9kZSxcbiAgU2ltcGxlVGV4dCxcbn0gZnJvbSAnQHNpbXBsZS1kb20vaW50ZXJmYWNlJztcbmltcG9ydCB7IGNsZWFyLCBDb25jcmV0ZUJvdW5kcywgQ3Vyc29ySW1wbCwgU2luZ2xlTm9kZUJvdW5kcyB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBkZXRhY2hDaGlsZHJlbiB9IGZyb20gJy4uL2xpZmV0aW1lJztcbmltcG9ydCB7IER5bmFtaWNBdHRyaWJ1dGUgfSBmcm9tICcuL2F0dHJpYnV0ZXMvZHluYW1pYyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlyc3ROb2RlIHtcbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFzdE5vZGUge1xuICBsYXN0Tm9kZSgpOiBTaW1wbGVOb2RlO1xufVxuXG5jbGFzcyBGaXJzdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbm9kZTogU2ltcGxlTm9kZSkge31cblxuICBmaXJzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxufVxuXG5jbGFzcyBMYXN0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlOiBTaW1wbGVOb2RlKSB7fVxuXG4gIGxhc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZyYWdtZW50IGltcGxlbWVudHMgQm91bmRzIHtcbiAgcHJpdmF0ZSBib3VuZHM6IEJvdW5kcztcblxuICBjb25zdHJ1Y3Rvcihib3VuZHM6IEJvdW5kcykge1xuICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICB9XG5cbiAgcGFyZW50RWxlbWVudCgpOiBTaW1wbGVFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5sYXN0Tm9kZSgpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBDVVJTT1JfU1RBQ0s6IEN1cnNvclN0YWNrU3ltYm9sID0gc3ltYm9sKCdDVVJTT1JfU1RBQ0snKTtcblxuZXhwb3J0IGNsYXNzIE5ld0VsZW1lbnRCdWlsZGVyIGltcGxlbWVudHMgRWxlbWVudEJ1aWxkZXIge1xuICBwdWJsaWMgZG9tOiBHbGltbWVyVHJlZUNvbnN0cnVjdGlvbjtcbiAgcHVibGljIHVwZGF0ZU9wZXJhdGlvbnM6IEdsaW1tZXJUcmVlQ2hhbmdlcztcbiAgcHVibGljIGNvbnN0cnVjdGluZzogT3B0aW9uPFNpbXBsZUVsZW1lbnQ+ID0gbnVsbDtcbiAgcHVibGljIG9wZXJhdGlvbnM6IE9wdGlvbjxFbGVtZW50T3BlcmF0aW9ucz4gPSBudWxsO1xuICBwcml2YXRlIGVudjogRW52aXJvbm1lbnQ7XG5cbiAgW0NVUlNPUl9TVEFDS10gPSBuZXcgU3RhY2s8Q3Vyc29yPigpO1xuICBwcml2YXRlIG1vZGlmaWVyU3RhY2sgPSBuZXcgU3RhY2s8T3B0aW9uPFtNb2RpZmllck1hbmFnZXIsIHVua25vd25dW10+PigpO1xuICBwcml2YXRlIGJsb2NrU3RhY2sgPSBuZXcgU3RhY2s8TGl2ZUJsb2NrPigpO1xuXG4gIHN0YXRpYyBmb3JJbml0aWFsUmVuZGVyKGVudjogRW52aXJvbm1lbnQsIGN1cnNvcjogQ3Vyc29ySW1wbCkge1xuICAgIHJldHVybiBuZXcgdGhpcyhlbnYsIGN1cnNvci5lbGVtZW50LCBjdXJzb3IubmV4dFNpYmxpbmcpLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIHN0YXRpYyByZXN1bWUoZW52OiBFbnZpcm9ubWVudCwgYmxvY2s6IFVwZGF0YWJsZUJsb2NrKTogTmV3RWxlbWVudEJ1aWxkZXIge1xuICAgIGxldCBwYXJlbnROb2RlID0gYmxvY2sucGFyZW50RWxlbWVudCgpO1xuICAgIGxldCBuZXh0U2libGluZyA9IGJsb2NrLnJlc2V0KGVudik7XG5cbiAgICBsZXQgc3RhY2sgPSBuZXcgdGhpcyhlbnYsIHBhcmVudE5vZGUsIG5leHRTaWJsaW5nKS5pbml0aWFsaXplKCk7XG4gICAgc3RhY2sucHVzaExpdmVCbG9jayhibG9jayk7XG5cbiAgICByZXR1cm4gc3RhY2s7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCBwYXJlbnROb2RlOiBTaW1wbGVFbGVtZW50LCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZU5vZGU+KSB7XG4gICAgdGhpcy5wdXNoRWxlbWVudChwYXJlbnROb2RlLCBuZXh0U2libGluZyk7XG5cbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLmRvbSA9IGVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCk7XG4gICAgdGhpcy51cGRhdGVPcGVyYXRpb25zID0gZW52LmdldERPTSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRpYWxpemUoKTogdGhpcyB7XG4gICAgdGhpcy5wdXNoU2ltcGxlQmxvY2soKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRlYnVnQmxvY2tzKCk6IExpdmVCbG9ja1tdIHtcbiAgICByZXR1cm4gdGhpcy5ibG9ja1N0YWNrLnRvQXJyYXkoKTtcbiAgfVxuXG4gIGdldCBlbGVtZW50KCk6IFNpbXBsZUVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzW0NVUlNPUl9TVEFDS10uY3VycmVudCEuZWxlbWVudDtcbiAgfVxuXG4gIGdldCBuZXh0U2libGluZygpOiBPcHRpb248U2ltcGxlTm9kZT4ge1xuICAgIHJldHVybiB0aGlzW0NVUlNPUl9TVEFDS10uY3VycmVudCEubmV4dFNpYmxpbmc7XG4gIH1cblxuICBnZXQgaGFzQmxvY2tzKCkge1xuICAgIHJldHVybiB0aGlzLmJsb2NrU3RhY2suc2l6ZSA+IDA7XG4gIH1cblxuICBwcm90ZWN0ZWQgYmxvY2soKTogTGl2ZUJsb2NrIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuYmxvY2tTdGFjay5jdXJyZW50LCAnRXhwZWN0ZWQgYSBjdXJyZW50IGxpdmUgYmxvY2snKTtcbiAgfVxuXG4gIHBvcEVsZW1lbnQoKSB7XG4gICAgdGhpc1tDVVJTT1JfU1RBQ0tdLnBvcCgpO1xuICAgIGV4cGVjdCh0aGlzW0NVUlNPUl9TVEFDS10uY3VycmVudCwgXCJjYW4ndCBwb3AgcGFzdCB0aGUgbGFzdCBlbGVtZW50XCIpO1xuICB9XG5cbiAgcHVzaFNpbXBsZUJsb2NrKCk6IExpdmVCbG9jayB7XG4gICAgcmV0dXJuIHRoaXMucHVzaExpdmVCbG9jayhuZXcgU2ltcGxlTGl2ZUJsb2NrKHRoaXMuZWxlbWVudCkpO1xuICB9XG5cbiAgcHVzaFVwZGF0YWJsZUJsb2NrKCk6IFVwZGF0YWJsZUJsb2NrSW1wbCB7XG4gICAgcmV0dXJuIHRoaXMucHVzaExpdmVCbG9jayhuZXcgVXBkYXRhYmxlQmxvY2tJbXBsKHRoaXMuZWxlbWVudCkpO1xuICB9XG5cbiAgcHVzaEJsb2NrTGlzdChsaXN0OiBMaW5rZWRMaXN0PExpbmtlZExpc3ROb2RlICYgTGl2ZUJsb2NrPik6IExpdmVCbG9ja0xpc3Qge1xuICAgIHJldHVybiB0aGlzLnB1c2hMaXZlQmxvY2sobmV3IExpdmVCbG9ja0xpc3QodGhpcy5lbGVtZW50LCBsaXN0KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHVzaExpdmVCbG9jazxUIGV4dGVuZHMgTGl2ZUJsb2NrPihibG9jazogVCwgaXNSZW1vdGUgPSBmYWxzZSk6IFQge1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQ7XG5cbiAgICBpZiAoY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgaWYgKCFpc1JlbW90ZSkge1xuICAgICAgICBjdXJyZW50LmRpZEFwcGVuZEJvdW5kcyhibG9jayk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fX29wZW5CbG9jaygpO1xuICAgIHRoaXMuYmxvY2tTdGFjay5wdXNoKGJsb2NrKTtcbiAgICByZXR1cm4gYmxvY2s7XG4gIH1cblxuICBwb3BCbG9jaygpOiBMaXZlQmxvY2sge1xuICAgIHRoaXMuYmxvY2soKS5maW5hbGl6ZSh0aGlzKTtcbiAgICB0aGlzLl9fY2xvc2VCbG9jaygpO1xuICAgIHJldHVybiBleHBlY3QodGhpcy5ibG9ja1N0YWNrLnBvcCgpLCAnRXhwZWN0ZWQgcG9wQmxvY2sgdG8gcmV0dXJuIGEgYmxvY2snKTtcbiAgfVxuXG4gIF9fb3BlbkJsb2NrKCk6IHZvaWQge31cbiAgX19jbG9zZUJsb2NrKCk6IHZvaWQge31cblxuICAvLyB0b2RvIHJldHVybiBzZWVtcyB1bnVzZWRcbiAgb3BlbkVsZW1lbnQodGFnOiBzdHJpbmcpOiBTaW1wbGVFbGVtZW50IHtcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuX19vcGVuRWxlbWVudCh0YWcpO1xuICAgIHRoaXMuY29uc3RydWN0aW5nID0gZWxlbWVudDtcblxuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgX19vcGVuRWxlbWVudCh0YWc6IHN0cmluZyk6IFNpbXBsZUVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmRvbS5jcmVhdGVFbGVtZW50KHRhZywgdGhpcy5lbGVtZW50KTtcbiAgfVxuXG4gIGZsdXNoRWxlbWVudChtb2RpZmllcnM6IE9wdGlvbjxbTW9kaWZpZXJNYW5hZ2VyLCB1bmtub3duXVtdPikge1xuICAgIGxldCBwYXJlbnQgPSB0aGlzLmVsZW1lbnQ7XG4gICAgbGV0IGVsZW1lbnQgPSBleHBlY3QoXG4gICAgICB0aGlzLmNvbnN0cnVjdGluZyxcbiAgICAgIGBmbHVzaEVsZW1lbnQgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gY29uc3RydWN0aW5nIGFuIGVsZW1lbnRgXG4gICAgKTtcblxuICAgIHRoaXMuX19mbHVzaEVsZW1lbnQocGFyZW50LCBlbGVtZW50KTtcblxuICAgIHRoaXMuY29uc3RydWN0aW5nID0gbnVsbDtcbiAgICB0aGlzLm9wZXJhdGlvbnMgPSBudWxsO1xuXG4gICAgdGhpcy5wdXNoTW9kaWZpZXJzKG1vZGlmaWVycyk7XG4gICAgdGhpcy5wdXNoRWxlbWVudChlbGVtZW50LCBudWxsKTtcbiAgICB0aGlzLmRpZE9wZW5FbGVtZW50KGVsZW1lbnQpO1xuICB9XG5cbiAgX19mbHVzaEVsZW1lbnQocGFyZW50OiBTaW1wbGVFbGVtZW50LCBjb25zdHJ1Y3Rpbmc6IFNpbXBsZUVsZW1lbnQpIHtcbiAgICB0aGlzLmRvbS5pbnNlcnRCZWZvcmUocGFyZW50LCBjb25zdHJ1Y3RpbmcsIHRoaXMubmV4dFNpYmxpbmcpO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCk6IE9wdGlvbjxbTW9kaWZpZXJNYW5hZ2VyLCB1bmtub3duXVtdPiB7XG4gICAgdGhpcy53aWxsQ2xvc2VFbGVtZW50KCk7XG4gICAgdGhpcy5wb3BFbGVtZW50KCk7XG4gICAgcmV0dXJuIHRoaXMucG9wTW9kaWZpZXJzKCk7XG4gIH1cblxuICBwdXNoUmVtb3RlRWxlbWVudChcbiAgICBlbGVtZW50OiBTaW1wbGVFbGVtZW50LFxuICAgIGd1aWQ6IHN0cmluZyxcbiAgICBpbnNlcnRCZWZvcmU6IE1heWJlPFNpbXBsZU5vZGU+XG4gICk6IE9wdGlvbjxSZW1vdGVMaXZlQmxvY2s+IHtcbiAgICByZXR1cm4gdGhpcy5fX3B1c2hSZW1vdGVFbGVtZW50KGVsZW1lbnQsIGd1aWQsIGluc2VydEJlZm9yZSk7XG4gIH1cblxuICBfX3B1c2hSZW1vdGVFbGVtZW50KFxuICAgIGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQsXG4gICAgX2d1aWQ6IHN0cmluZyxcbiAgICBpbnNlcnRCZWZvcmU6IE1heWJlPFNpbXBsZU5vZGU+XG4gICk6IE9wdGlvbjxSZW1vdGVMaXZlQmxvY2s+IHtcbiAgICB0aGlzLnB1c2hFbGVtZW50KGVsZW1lbnQsIGluc2VydEJlZm9yZSk7XG5cbiAgICBpZiAoaW5zZXJ0QmVmb3JlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHdoaWxlIChlbGVtZW50Lmxhc3RDaGlsZCkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUNoaWxkKGVsZW1lbnQubGFzdENoaWxkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgYmxvY2sgPSBuZXcgUmVtb3RlTGl2ZUJsb2NrKGVsZW1lbnQpO1xuXG4gICAgcmV0dXJuIHRoaXMucHVzaExpdmVCbG9jayhibG9jaywgdHJ1ZSk7XG4gIH1cblxuICBwb3BSZW1vdGVFbGVtZW50KCkge1xuICAgIHRoaXMucG9wQmxvY2soKTtcbiAgICB0aGlzLnBvcEVsZW1lbnQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwdXNoRWxlbWVudChlbGVtZW50OiBTaW1wbGVFbGVtZW50LCBuZXh0U2libGluZzogTWF5YmU8U2ltcGxlTm9kZT4gPSBudWxsKSB7XG4gICAgdGhpc1tDVVJTT1JfU1RBQ0tdLnB1c2gobmV3IEN1cnNvckltcGwoZWxlbWVudCwgbmV4dFNpYmxpbmcpKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaE1vZGlmaWVycyhtb2RpZmllcnM6IE9wdGlvbjxbTW9kaWZpZXJNYW5hZ2VyLCB1bmtub3duXVtdPik6IHZvaWQge1xuICAgIHRoaXMubW9kaWZpZXJTdGFjay5wdXNoKG1vZGlmaWVycyk7XG4gIH1cblxuICBwcml2YXRlIHBvcE1vZGlmaWVycygpOiBPcHRpb248W01vZGlmaWVyTWFuYWdlciwgdW5rbm93bl1bXT4ge1xuICAgIHJldHVybiB0aGlzLm1vZGlmaWVyU3RhY2sucG9wKCk7XG4gIH1cblxuICBkaWRBcHBlbmRCb3VuZHMoYm91bmRzOiBCb3VuZHMpOiBCb3VuZHMge1xuICAgIHRoaXMuYmxvY2soKS5kaWRBcHBlbmRCb3VuZHMoYm91bmRzKTtcbiAgICByZXR1cm4gYm91bmRzO1xuICB9XG5cbiAgZGlkQXBwZW5kTm9kZTxUIGV4dGVuZHMgU2ltcGxlTm9kZT4obm9kZTogVCk6IFQge1xuICAgIHRoaXMuYmxvY2soKS5kaWRBcHBlbmROb2RlKG5vZGUpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgZGlkT3BlbkVsZW1lbnQoZWxlbWVudDogU2ltcGxlRWxlbWVudCk6IFNpbXBsZUVsZW1lbnQge1xuICAgIHRoaXMuYmxvY2soKS5vcGVuRWxlbWVudChlbGVtZW50KTtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIHdpbGxDbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5ibG9jaygpLmNsb3NlRWxlbWVudCgpO1xuICB9XG5cbiAgYXBwZW5kVGV4dChzdHJpbmc6IHN0cmluZyk6IFNpbXBsZVRleHQge1xuICAgIHJldHVybiB0aGlzLmRpZEFwcGVuZE5vZGUodGhpcy5fX2FwcGVuZFRleHQoc3RyaW5nKSk7XG4gIH1cblxuICBfX2FwcGVuZFRleHQodGV4dDogc3RyaW5nKTogU2ltcGxlVGV4dCB7XG4gICAgbGV0IHsgZG9tLCBlbGVtZW50LCBuZXh0U2libGluZyB9ID0gdGhpcztcbiAgICBsZXQgbm9kZSA9IGRvbS5jcmVhdGVUZXh0Tm9kZSh0ZXh0KTtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIG5vZGUsIG5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIF9fYXBwZW5kTm9kZShub2RlOiBTaW1wbGVOb2RlKTogU2ltcGxlTm9kZSB7XG4gICAgdGhpcy5kb20uaW5zZXJ0QmVmb3JlKHRoaXMuZWxlbWVudCwgbm9kZSwgdGhpcy5uZXh0U2libGluZyk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBfX2FwcGVuZEZyYWdtZW50KGZyYWdtZW50OiBTaW1wbGVEb2N1bWVudEZyYWdtZW50KTogQm91bmRzIHtcbiAgICBsZXQgZmlyc3QgPSBmcmFnbWVudC5maXJzdENoaWxkO1xuXG4gICAgaWYgKGZpcnN0KSB7XG4gICAgICBsZXQgcmV0ID0gbmV3IENvbmNyZXRlQm91bmRzKHRoaXMuZWxlbWVudCwgZmlyc3QsIGZyYWdtZW50Lmxhc3RDaGlsZCEpO1xuICAgICAgdGhpcy5kb20uaW5zZXJ0QmVmb3JlKHRoaXMuZWxlbWVudCwgZnJhZ21lbnQsIHRoaXMubmV4dFNpYmxpbmcpO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBTaW5nbGVOb2RlQm91bmRzKHRoaXMuZWxlbWVudCwgdGhpcy5fX2FwcGVuZENvbW1lbnQoJycpKTtcbiAgICB9XG4gIH1cblxuICBfX2FwcGVuZEhUTUwoaHRtbDogc3RyaW5nKTogQm91bmRzIHtcbiAgICByZXR1cm4gdGhpcy5kb20uaW5zZXJ0SFRNTEJlZm9yZSh0aGlzLmVsZW1lbnQsIHRoaXMubmV4dFNpYmxpbmcsIGh0bWwpO1xuICB9XG5cbiAgYXBwZW5kRHluYW1pY0hUTUwodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBib3VuZHMgPSB0aGlzLnRydXN0ZWRDb250ZW50KHZhbHVlKTtcbiAgICB0aGlzLmRpZEFwcGVuZEJvdW5kcyhib3VuZHMpO1xuICB9XG5cbiAgYXBwZW5kRHluYW1pY1RleHQodmFsdWU6IHN0cmluZyk6IFNpbXBsZVRleHQge1xuICAgIGxldCBub2RlID0gdGhpcy51bnRydXN0ZWRDb250ZW50KHZhbHVlKTtcbiAgICB0aGlzLmRpZEFwcGVuZE5vZGUobm9kZSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBhcHBlbmREeW5hbWljRnJhZ21lbnQodmFsdWU6IFNpbXBsZURvY3VtZW50RnJhZ21lbnQpOiB2b2lkIHtcbiAgICBsZXQgYm91bmRzID0gdGhpcy5fX2FwcGVuZEZyYWdtZW50KHZhbHVlKTtcbiAgICB0aGlzLmRpZEFwcGVuZEJvdW5kcyhib3VuZHMpO1xuICB9XG5cbiAgYXBwZW5kRHluYW1pY05vZGUodmFsdWU6IFNpbXBsZU5vZGUpOiB2b2lkIHtcbiAgICBsZXQgbm9kZSA9IHRoaXMuX19hcHBlbmROb2RlKHZhbHVlKTtcbiAgICBsZXQgYm91bmRzID0gbmV3IFNpbmdsZU5vZGVCb3VuZHModGhpcy5lbGVtZW50LCBub2RlKTtcbiAgICB0aGlzLmRpZEFwcGVuZEJvdW5kcyhib3VuZHMpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cnVzdGVkQ29udGVudCh2YWx1ZTogc3RyaW5nKTogQm91bmRzIHtcbiAgICByZXR1cm4gdGhpcy5fX2FwcGVuZEhUTUwodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSB1bnRydXN0ZWRDb250ZW50KHZhbHVlOiBzdHJpbmcpOiBTaW1wbGVUZXh0IHtcbiAgICByZXR1cm4gdGhpcy5fX2FwcGVuZFRleHQodmFsdWUpO1xuICB9XG5cbiAgYXBwZW5kQ29tbWVudChzdHJpbmc6IHN0cmluZyk6IFNpbXBsZUNvbW1lbnQge1xuICAgIHJldHVybiB0aGlzLmRpZEFwcGVuZE5vZGUodGhpcy5fX2FwcGVuZENvbW1lbnQoc3RyaW5nKSk7XG4gIH1cblxuICBfX2FwcGVuZENvbW1lbnQoc3RyaW5nOiBzdHJpbmcpOiBTaW1wbGVDb21tZW50IHtcbiAgICBsZXQgeyBkb20sIGVsZW1lbnQsIG5leHRTaWJsaW5nIH0gPSB0aGlzO1xuICAgIGxldCBub2RlID0gZG9tLmNyZWF0ZUNvbW1lbnQoc3RyaW5nKTtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIG5vZGUsIG5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIF9fc2V0QXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbmFtZXNwYWNlOiBPcHRpb248QXR0ck5hbWVzcGFjZT4pOiB2b2lkIHtcbiAgICB0aGlzLmRvbS5zZXRBdHRyaWJ1dGUodGhpcy5jb25zdHJ1Y3RpbmchLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKTtcbiAgfVxuXG4gIF9fc2V0UHJvcGVydHkobmFtZTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgICh0aGlzLmNvbnN0cnVjdGluZyEgYXMgYW55KVtuYW1lXSA9IHZhbHVlO1xuICB9XG5cbiAgc2V0U3RhdGljQXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbmFtZXNwYWNlOiBPcHRpb248QXR0ck5hbWVzcGFjZT4pOiB2b2lkIHtcbiAgICB0aGlzLl9fc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICB9XG5cbiAgc2V0RHluYW1pY0F0dHJpYnV0ZShcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgdmFsdWU6IHVua25vd24sXG4gICAgdHJ1c3Rpbmc6IGJvb2xlYW4sXG4gICAgbmFtZXNwYWNlOiBPcHRpb248QXR0ck5hbWVzcGFjZT5cbiAgKTogRHluYW1pY0F0dHJpYnV0ZSB7XG4gICAgbGV0IGVsZW1lbnQgPSB0aGlzLmNvbnN0cnVjdGluZyE7XG4gICAgbGV0IGF0dHJpYnV0ZSA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCB0cnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICBhdHRyaWJ1dGUuc2V0KHRoaXMsIHZhbHVlLCB0aGlzLmVudik7XG4gICAgcmV0dXJuIGF0dHJpYnV0ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlTGl2ZUJsb2NrIGltcGxlbWVudHMgTGl2ZUJsb2NrIHtcbiAgcHJvdGVjdGVkIGZpcnN0OiBPcHRpb248Rmlyc3ROb2RlPiA9IG51bGw7XG4gIHByb3RlY3RlZCBsYXN0OiBPcHRpb248TGFzdE5vZGU+ID0gbnVsbDtcbiAgcHJvdGVjdGVkIGRlc3Ryb3lhYmxlczogT3B0aW9uPFN5bWJvbERlc3Ryb3lhYmxlW10+ID0gbnVsbDtcbiAgcHJvdGVjdGVkIG5lc3RpbmcgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyZW50OiBTaW1wbGVFbGVtZW50KSB7fVxuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIGxldCBmaXJzdCA9IGV4cGVjdChcbiAgICAgIHRoaXMuZmlyc3QsXG4gICAgICAnY2Fubm90IGNhbGwgYGZpcnN0Tm9kZSgpYCB3aGlsZSBgU2ltcGxlTGl2ZUJsb2NrYCBpcyBzdGlsbCBpbml0aWFsaXppbmcnXG4gICAgKTtcblxuICAgIHJldHVybiBmaXJzdC5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIGxldCBsYXN0ID0gZXhwZWN0KFxuICAgICAgdGhpcy5sYXN0LFxuICAgICAgJ2Nhbm5vdCBjYWxsIGBsYXN0Tm9kZSgpYCB3aGlsZSBgU2ltcGxlTGl2ZUJsb2NrYCBpcyBzdGlsbCBpbml0aWFsaXppbmcnXG4gICAgKTtcblxuICAgIHJldHVybiBsYXN0Lmxhc3ROb2RlKCk7XG4gIH1cblxuICBvcGVuRWxlbWVudChlbGVtZW50OiBTaW1wbGVFbGVtZW50KSB7XG4gICAgdGhpcy5kaWRBcHBlbmROb2RlKGVsZW1lbnQpO1xuICAgIHRoaXMubmVzdGluZysrO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIHRoaXMubmVzdGluZy0tO1xuICB9XG5cbiAgZGlkQXBwZW5kTm9kZShub2RlOiBTaW1wbGVOb2RlKSB7XG4gICAgaWYgKHRoaXMubmVzdGluZyAhPT0gMCkgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLmZpcnN0KSB7XG4gICAgICB0aGlzLmZpcnN0ID0gbmV3IEZpcnN0KG5vZGUpO1xuICAgIH1cblxuICAgIHRoaXMubGFzdCA9IG5ldyBMYXN0KG5vZGUpO1xuICB9XG5cbiAgZGlkQXBwZW5kQm91bmRzKGJvdW5kczogQm91bmRzKSB7XG4gICAgaWYgKHRoaXMubmVzdGluZyAhPT0gMCkgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLmZpcnN0KSB7XG4gICAgICB0aGlzLmZpcnN0ID0gYm91bmRzO1xuICAgIH1cblxuICAgIHRoaXMubGFzdCA9IGJvdW5kcztcbiAgfVxuXG4gIGZpbmFsaXplKHN0YWNrOiBFbGVtZW50QnVpbGRlcikge1xuICAgIGlmICh0aGlzLmZpcnN0ID09PSBudWxsKSB7XG4gICAgICBzdGFjay5hcHBlbmRDb21tZW50KCcnKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlbW90ZUxpdmVCbG9jayBleHRlbmRzIFNpbXBsZUxpdmVCbG9jayBpbXBsZW1lbnRzIFN5bWJvbERlc3Ryb3lhYmxlIHtcbiAgW0RFU1RST1ldKCkge1xuICAgIC8vIEluIGdlbmVyYWwsIHlvdSBvbmx5IG5lZWQgdG8gY2xlYXIgdGhlIHJvb3Qgb2YgYSBoaWVyYXJjaHksIGFuZCBzaG91bGQgbmV2ZXJcbiAgICAvLyBuZWVkIHRvIGNsZWFyIGFueSBjaGlsZCBub2Rlcy4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgY29uc3RyYWludCB0aGF0IGdpdmVzIHVzXG4gICAgLy8gYSBzdHJvbmcgZ3VhcmFudGVlIHRoYXQgY2xlYXJpbmcgYSBzdWJ0cmVlIGlzIGEgc2luZ2xlIERPTSBvcGVyYXRpb24uXG4gICAgLy9cbiAgICAvLyBCZWNhdXNlIHJlbW90ZSBibG9ja3MgYXJlIG5vdCBub3JtYWxseSBwaHlzaWNhbGx5IG5lc3RlZCBpbnNpZGUgb2YgdGhlIHRyZWVcbiAgICAvLyB0aGF0IHRoZXkgYXJlIGxvZ2ljYWxseSBuZXN0ZWQgaW5zaWRlLCB3ZSBtYW51YWxseSBjbGVhciByZW1vdGUgYmxvY2tzIHdoZW5cbiAgICAvLyBhIGxvZ2ljYWwgcGFyZW50IGlzIGNsZWFyZWQuXG4gICAgLy9cbiAgICAvLyBIT1dFVkVSLCBpdCBpcyBjdXJyZW50bHkgcG9zc2libGUgZm9yIGEgcmVtb3RlIGJsb2NrIHRvIGJlIHBoeXNpY2FsbHkgbmVzdGVkXG4gICAgLy8gaW5zaWRlIG9mIHRoZSBibG9jayBpdCBpcyBsb2dpY2FsbHkgY29udGFpbmVkIGluc2lkZSBvZi4gVGhpcyBoYXBwZW5zIHdoZW5cbiAgICAvLyB0aGUgcmVtb3RlIGJsb2NrIGlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGFwcGxpY2F0aW9uJ3MgZW50aXJlIGVsZW1lbnQuXG4gICAgLy9cbiAgICAvLyBUaGUgcHJvYmxlbSB3aXRoIHRoYXQgc2NlbmFyaW8gaXMgdGhhdCBHbGltbWVyIGJlbGlldmVzIHRoYXQgaXQgb3ducyBtb3JlIG9mXG4gICAgLy8gdGhlIERPTSB0aGFuIGl0IGFjdHVhbGx5IGRvZXMuIFRoZSBjb2RlIGlzIGF0dGVtcHRpbmcgdG8gd3JpdGUgcGFzdCB0aGUgZW5kXG4gICAgLy8gb2YgdGhlIEdsaW1tZXItbWFuYWdlZCByb290LCBidXQgR2xpbW1lciBpc24ndCBhd2FyZSBvZiB0aGF0LlxuICAgIC8vXG4gICAgLy8gVGhlIGNvcnJlY3Qgc29sdXRpb24gdG8gdGhhdCBwcm9ibGVtIGlzIGZvciBHbGltbWVyIHRvIGJlIGF3YXJlIG9mIHRoZSBlbmRcbiAgICAvLyBvZiB0aGUgYm91bmRzIHRoYXQgaXQgb3ducywgYW5kIG9uY2Ugd2UgbWFrZSB0aGF0IGNoYW5nZSwgdGhpcyBjaGVjayBjb3VsZFxuICAgIC8vIGJlIHJlbW92ZWQuXG4gICAgLy9cbiAgICAvLyBGb3Igbm93LCBhIG1vcmUgdGFyZ2V0ZWQgZml4IGlzIHRvIGNoZWNrIHdoZXRoZXIgdGhlIG5vZGUgd2FzIGFscmVhZHkgcmVtb3ZlZFxuICAgIC8vIGFuZCBhdm9pZCBjbGVhcmluZyB0aGUgbm9kZSBpZiBpdCB3YXMuIEluIG1vc3QgY2FzZXMgdGhpcyBzaG91bGRuJ3QgaGFwcGVuLFxuICAgIC8vIHNvIHRoaXMgbWlnaHQgaGlkZSBidWdzIHdoZXJlIHRoZSBjb2RlIGNsZWFycyBuZXN0ZWQgbm9kZXMgdW5uZWNlc3NhcmlseSxcbiAgICAvLyBzbyB3ZSBzaG91bGQgZXZlbnR1YWxseSB0cnkgdG8gZG8gdGhlIGNvcnJlY3QgZml4LlxuICAgIGlmICh0aGlzLnBhcmVudEVsZW1lbnQoKSA9PT0gdGhpcy5maXJzdE5vZGUoKS5wYXJlbnROb2RlKSB7XG4gICAgICBjbGVhcih0aGlzKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0YWJsZUJsb2NrSW1wbCBleHRlbmRzIFNpbXBsZUxpdmVCbG9jayBpbXBsZW1lbnRzIFVwZGF0YWJsZUJsb2NrIHtcbiAgcmVzZXQoZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxTaW1wbGVOb2RlPiB7XG4gICAgbGV0IG5leHRTaWJsaW5nID0gZGV0YWNoQ2hpbGRyZW4odGhpcywgZW52KTtcblxuICAgIC8vIGxldCBuZXh0U2libGluZyA9IGNsZWFyKHRoaXMpO1xuXG4gICAgdGhpcy5maXJzdCA9IG51bGw7XG4gICAgdGhpcy5sYXN0ID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3lhYmxlcyA9IG51bGw7XG4gICAgdGhpcy5uZXN0aW5nID0gMDtcblxuICAgIHJldHVybiBuZXh0U2libGluZztcbiAgfVxufVxuXG4vLyBGSVhNRTogQWxsIHRoZSBub29wcyBpbiBoZXJlIGluZGljYXRlIGEgbW9kZWxsaW5nIHByb2JsZW1cbmNsYXNzIExpdmVCbG9ja0xpc3QgaW1wbGVtZW50cyBMaXZlQmxvY2sge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhcmVudDogU2ltcGxlRWxlbWVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJvdW5kTGlzdDogTGlua2VkTGlzdDxMaW5rZWRMaXN0Tm9kZSAmIExpdmVCbG9jaz5cbiAgKSB7XG4gICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgdGhpcy5ib3VuZExpc3QgPSBib3VuZExpc3Q7XG4gIH1cblxuICBwYXJlbnRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudDtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpOiBTaW1wbGVOb2RlIHtcbiAgICBsZXQgaGVhZCA9IGV4cGVjdChcbiAgICAgIHRoaXMuYm91bmRMaXN0LmhlYWQoKSxcbiAgICAgICdjYW5ub3QgY2FsbCBgZmlyc3ROb2RlKClgIHdoaWxlIGBMaXZlQmxvY2tMaXN0YCBpcyBzdGlsbCBpbml0aWFsaXppbmcnXG4gICAgKTtcblxuICAgIHJldHVybiBoZWFkLmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgbGV0IHRhaWwgPSBleHBlY3QoXG4gICAgICB0aGlzLmJvdW5kTGlzdC50YWlsKCksXG4gICAgICAnY2Fubm90IGNhbGwgYGxhc3ROb2RlKClgIHdoaWxlIGBMaXZlQmxvY2tMaXN0YCBpcyBzdGlsbCBpbml0aWFsaXppbmcnXG4gICAgKTtcblxuICAgIHJldHVybiB0YWlsLmxhc3ROb2RlKCk7XG4gIH1cblxuICBvcGVuRWxlbWVudChfZWxlbWVudDogU2ltcGxlRWxlbWVudCkge1xuICAgIGFzc2VydChmYWxzZSwgJ0Nhbm5vdCBvcGVuRWxlbWVudCBkaXJlY3RseSBpbnNpZGUgYSBibG9jayBsaXN0Jyk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgYXNzZXJ0KGZhbHNlLCAnQ2Fubm90IGNsb3NlRWxlbWVudCBkaXJlY3RseSBpbnNpZGUgYSBibG9jayBsaXN0Jyk7XG4gIH1cblxuICBkaWRBcHBlbmROb2RlKF9ub2RlOiBTaW1wbGVOb2RlKSB7XG4gICAgYXNzZXJ0KGZhbHNlLCAnQ2Fubm90IGNyZWF0ZSBhIG5ldyBub2RlIGRpcmVjdGx5IGluc2lkZSBhIGJsb2NrIGxpc3QnKTtcbiAgfVxuXG4gIGRpZEFwcGVuZEJvdW5kcyhfYm91bmRzOiBCb3VuZHMpIHt9XG5cbiAgZmluYWxpemUoX3N0YWNrOiBFbGVtZW50QnVpbGRlcikge1xuICAgIGFzc2VydCh0aGlzLmJvdW5kTGlzdC5oZWFkKCkgIT09IG51bGwsICdib3VuZHNMaXN0IGNhbm5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGllbnRCdWlsZGVyKGVudjogRW52aXJvbm1lbnQsIGN1cnNvcjogQ3Vyc29ySW1wbCk6IEVsZW1lbnRCdWlsZGVyIHtcbiAgcmV0dXJuIE5ld0VsZW1lbnRCdWlsZGVyLmZvckluaXRpYWxSZW5kZXIoZW52LCBjdXJzb3IpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== |
@@ -74,6 +74,2 @@ var _a, _b; | ||
} | ||
currentBlock() { | ||
return this.elements().block(); | ||
} | ||
/* Registers */ | ||
@@ -367,5 +363,15 @@ | ||
while (true) { | ||
result = this.next(); | ||
if (result.done) break; | ||
try { | ||
while (true) { | ||
result = this.next(); | ||
if (result.done) break; | ||
} | ||
} finally { | ||
// If any existing blocks are open, due to an error or something like | ||
// that, we need to close them all and clean things up properly. | ||
let elements = this.elements(); | ||
while (elements.hasBlocks) { | ||
elements.popBlock(); | ||
} | ||
} | ||
@@ -504,2 +510,2 @@ | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2FwcGVuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTJCQSxTQUNFLG1CQURGLEVBRUUsVUFGRixFQUlFLE1BSkYsRUFLRSxVQUxGLEVBTUUsU0FORixFQVFFLEtBUkYsRUFTRSxNQVRGLFFBVU8sZUFWUDtBQVdBLFNBQ0UsR0FERixFQUVFLEdBRkYsRUFHRSxHQUhGLEVBSUUsR0FKRixFQUtFLEdBTEYsRUFNRSxHQU5GLEVBT0UsR0FQRixFQVFFLEdBUkYsRUFTRSxrQkFURixRQWFPLGFBYlA7QUFlQSxTQUFTLFlBQVQsUUFBNkIsZUFBN0I7QUFDQSxTQUFTLFlBQVQsUUFBNkIsZUFBN0I7QUFDQSxTQUFTLGVBQVQsRUFBMEIsdUJBQTFCLEVBQW1ELFdBQW5ELFFBQXNFLHdCQUF0RTtBQUNBLFNBQVMsU0FBVCxRQUEwQixnQkFBMUI7QUFDQSxTQUFTLGNBQVQsUUFBMkQsWUFBM0Q7QUFDQSxTQUFTLG1CQUFULFFBQW9DLGVBQXBDO0FBQ0EsU0FBUyxJQUFULEVBQWUsU0FBZixFQUEwQixnQkFBMUIsRUFBNEMsSUFBNUMsRUFBa0QsUUFBbEQsRUFBNEQsU0FBNUQsRUFBdUUsTUFBdkUsUUFBcUYsWUFBckY7QUFDQSxTQUFTLGVBQVQsUUFBZ0MsYUFBaEM7QUFDQSxPQUFPLFVBQVAsTUFBdUIsYUFBdkI7QUFDQSxPQUFPLGdCQUFQLE1BQTZCLGlCQUE3QjtBQUNBLE9BQU8sbUJBQVAsTUFBcUQsU0FBckQ7QUFDQSxTQUVFLGVBRkYsRUFJRSxvQkFKRixFQUtFLFNBTEYsUUFPTyxVQVBQOztBQWtGQSxNQUFNLE1BQU4sQ0FBWTtBQUFaLEVBQUEsV0FBQSxHQUFBO0FBQ1csU0FBQSxLQUFBLEdBQVEsSUFBSSxLQUFKLEVBQVI7QUFDQSxTQUFBLFlBQUEsR0FBZSxJQUFJLEtBQUosRUFBZjtBQUNBLFNBQUEsUUFBQSxHQUFXLElBQUksS0FBSixFQUFYO0FBQ0Es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QVQ7QUFDQSxJQUFBLEVBQUUsQ0FBQyxZQUFIO0FBQ0EsV0FBTyxFQUFQO0FBQ0Q7O0FBRUQsU0FBTyxLQUFQLENBQ0UsT0FERixFQUVFO0FBQUUsSUFBQSxNQUFGO0FBQVUsSUFBQSxXQUFWO0FBQXVCLElBQUE7QUFBdkIsR0FGRixFQUdFLE9BSEYsRUFHbUM7QUFFakMsUUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQUQsQ0FBUCxDQUNQLE9BRE8sRUFFUCxPQUFPLENBQ0wsT0FBTyxDQUFDLE9BQVIsQ0FBZ0IsSUFBaEIsQ0FBcUIsT0FBckIsQ0FBNkIsTUFBN0IsQ0FESyxFQUVMLFNBQVMsQ0FBQyxJQUFWLENBQWdDLG1CQUFoQyxFQUFxRCxDQUFyRCxDQUZLLEVBR0wsWUFISyxDQUZBLEVBT1AsV0FQTyxDQUFUO0FBU0EsSUFBQSxFQUFFLENBQUMsWUFBSDtBQUNBLFdBQU8sRUFBUDtBQUNEOztBQWFELEVBQUEsT0FBTyxDQUFDLElBQUQsRUFBZSxFQUFFLEdBQUcsS0FBSyxRQUFMLEVBQWUsYUFBZixDQUE2QixHQUE3QixDQUFwQixFQUFxRDtBQUMxRCxXQUFPLElBQUksb0JBQUosQ0FBeUIsS0FBSyxZQUFMLENBQWtCLElBQWxCLEVBQXdCLEVBQXhCLENBQXpCLEVBQXNELEtBQUssTUFBM0QsQ0FBUDtBQUNEOztBQUlELEVBQUEsT0FBTyxDQUFDLEtBQUQsRUFBMEI7QUFDL0IsUUFBSSxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFOLENBQWMsS0FBSyxPQUFuQixDQUFELENBQXpCO0FBRUEsV0FBTyxNQUFQO0FBQ0Q7O0FBckQyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBpbGFibGVCbG9jayxcbiAgQ29tcGlsYWJsZVRlbXBsYXRlLFxuICBEZXN0cm95YWJsZSxcbiAgRHJvcCxcbiAgRHluYW1pY1Njb3BlLFxuICBFbnZpcm9ubWVudCxcbiAgSml0T3JBb3RCbG9jayxcbiAgUGFydGlhbFNjb3BlLFxuICBSZW5kZXJSZXN1bHQsXG4gIFJpY2hJdGVyYXRvclJlc3VsdCxcbiAgUnVudGltZUNvbnRleHQsXG4gIFJ1bnRpbWVDb25zdGFudHMsXG4gIFJ1bnRpbWVIZWFwLFxuICBSdW50aW1lUHJvZ3JhbSxcbiAgU2NvcGUsXG4gIFN5bWJvbERlc3Ryb3lhYmxlLFxuICBTeW50YXhDb21waWxhdGlvbkNvbnRleHQsXG4gIFZNIGFzIFB1YmxpY1ZNLFxuICBKaXRSdW50aW1lQ29udGV4dCxcbiAgQW90UnVudGltZUNvbnRleHQsXG4gIExpdmVCbG9jayxcbiAgRWxlbWVudEJ1aWxkZXIsXG59IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTE9DQUxfU0hPVUxEX0xPRyB9IGZyb20gJ0BnbGltbWVyL2xvY2FsLWRlYnVnLWZsYWdzJztcbmltcG9ydCB7IFJ1bnRpbWVPcEltcGwgfSBmcm9tICdAZ2xpbW1lci9wcm9ncmFtJztcbmltcG9ydCB7IFBhdGhSZWZlcmVuY2UsIFJlZmVyZW5jZUl0ZXJhdG9yLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7XG4gIGFzc29jaWF0ZURlc3RydWN0b3IsXG4gIGRlc3RydWN0b3IsXG4gIGV4cGVjdCxcbiAgaXNEcm9wLFxuICBMaW5rZWRMaXN0LFxuICBMaXN0U2xpY2UsXG4gIE9wdGlvbixcbiAgU3RhY2ssXG4gIGFzc2VydCxcbn0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICAkZnAsXG4gICRwYyxcbiAgJHMwLFxuICAkczEsXG4gICRzcCxcbiAgJHQwLFxuICAkdDEsXG4gICR2MCxcbiAgaXNMb3dMZXZlbFJlZ2lzdGVyLFxuICBNYWNoaW5lUmVnaXN0ZXIsXG4gIFJlZ2lzdGVyLFxuICBTeXNjYWxsUmVnaXN0ZXIsXG59IGZyb20gJ0BnbGltbWVyL3ZtJztcbmltcG9ydCB7IENoZWNrTnVtYmVyLCBjaGVjayB9IGZyb20gJ0BnbGltbWVyL2RlYnVnJztcbmltcG9ydCB7IHVud3JhcEhhbmRsZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgY29tYmluZVNsaWNlIH0gZnJvbSAnLi4vdXRpbHMvdGFncyc7XG5pbXBvcnQgeyBEaWRNb2RpZnlPcGNvZGUsIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlLCBMYWJlbE9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgU2NvcGVJbXBsIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMsIERlYnVnU3RhdGUsIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBBUkdTLCBDT05TVEFOVFMsIERFU1RSVUNUT1JfU1RBQ0ssIEhFQVAsIElOTkVSX1ZNLCBSRUdJU1RFUlMsIFNUQUNLUyB9IGZyb20gJy4uL3N5bWJvbHMnO1xuaW1wb3J0IHsgVk1Bcmd1bWVudHNJbXBsIH0gZnJvbSAnLi9hcmd1bWVudHMnO1xuaW1wb3J0IExvd0xldmVsVk0gZnJvbSAnLi9sb3ctbGV2ZWwnO1xuaW1wb3J0IFJlbmRlclJlc3VsdEltcGwgZnJvbSAnLi9yZW5kZXItcmVzdWx0JztcbmltcG9ydCBFdmFsdWF0aW9uU3RhY2tJbXBsLCB7IEV2YWx1YXRpb25TdGFjayB9IGZyb20gJy4vc3RhY2snO1xuaW1wb3J0IHtcbiAgQmxvY2tPcGNvZGUsXG4gIExpc3RCbG9ja09wY29kZSxcbiAgUmVzdW1hYmxlVk1TdGF0ZSxcbiAgUmVzdW1hYmxlVk1TdGF0ZUltcGwsXG4gIFRyeU9wY29kZSxcbiAgVk1TdGF0ZSxcbn0gZnJvbSAnLi91cGRhdGUnO1xuXG4vKipcbiAqIFRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgYnkgaW50ZXJuYWwgb3Bjb2RlcywgYW5kIGlzIG1vcmUgc3RhYmxlIHRoYW5cbiAqIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQXBwZW5kIFZNIGl0c2VsZi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbFZNPEMgZXh0ZW5kcyBKaXRPckFvdEJsb2NrID0gSml0T3JBb3RCbG9jaz4ge1xuICByZWFkb25seSBbQ09OU1RBTlRTXTogUnVudGltZUNvbnN0YW50cztcbiAgcmVhZG9ubHkgW0FSR1NdOiBWTUFyZ3VtZW50c0ltcGw7XG5cbiAgcmVhZG9ubHkgZW52OiBFbnZpcm9ubWVudDtcbiAgcmVhZG9ubHkgc3RhY2s6IEV2YWx1YXRpb25TdGFjaztcbiAgcmVhZG9ubHkgcnVudGltZTogUnVudGltZUNvbnRleHQ7XG5cbiAgbG9hZFZhbHVlKHJlZ2lzdGVyOiBNYWNoaW5lUmVnaXN0ZXIsIHZhbHVlOiBudW1iZXIpOiB2b2lkO1xuICBsb2FkVmFsdWUocmVnaXN0ZXI6IFJlZ2lzdGVyLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIGxvYWRWYWx1ZShyZWdpc3RlcjogUmVnaXN0ZXIgfCBNYWNoaW5lUmVnaXN0ZXIsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcblxuICBmZXRjaFZhbHVlKHJlZ2lzdGVyOiBNYWNoaW5lUmVnaXN0ZXIucmEgfCBNYWNoaW5lUmVnaXN0ZXIucGMpOiBudW1iZXI7XG4gIC8vIFRPRE86IFNvbWV0aGluZyBiZXR0ZXIgdGhhbiBhIHR5cGUgYXNzZXJ0aW9uP1xuICBmZXRjaFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3Rlcik6IFQ7XG4gIGZldGNoVmFsdWUocmVnaXN0ZXI6IFJlZ2lzdGVyKTogdW5rbm93bjtcblxuICBsb2FkKHJlZ2lzdGVyOiBSZWdpc3Rlcik6IHZvaWQ7XG4gIGZldGNoKHJlZ2lzdGVyOiBSZWdpc3Rlcik6IHZvaWQ7XG5cbiAgc2NvcGUoKTogU2NvcGU8Qz47XG4gIGVsZW1lbnRzKCk6IEVsZW1lbnRCdWlsZGVyO1xuXG4gIGdldFNlbGYoKTogUGF0aFJlZmVyZW5jZTx1bmtub3duPjtcblxuICB1cGRhdGVXaXRoKG9wY29kZTogVXBkYXRpbmdPcGNvZGUpOiB2b2lkO1xuXG4gIGFzc29jaWF0ZURlc3Ryb3lhYmxlKGQ6IFN5bWJvbERlc3Ryb3lhYmxlIHwgRGVzdHJveWFibGUpOiB2b2lkO1xuXG4gIGJlZ2luQ2FjaGVHcm91cCgpOiB2b2lkO1xuICBjb21taXRDYWNoZUdyb3VwKCk6IHZvaWQ7XG5cbiAgLy8vIEl0ZXJhdGlvbiAvLy9cblxuICBlbnRlckxpc3Qob2Zmc2V0OiBudW1iZXIpOiB2b2lkO1xuICBleGl0TGlzdCgpOiB2b2lkO1xuICBpdGVyYXRlKG1lbW86IFBhdGhSZWZlcmVuY2U8dW5rbm93bj4sIGl0ZW06IFBhdGhSZWZlcmVuY2U8dW5rbm93bj4pOiBUcnlPcGNvZGU7XG4gIGVudGVySXRlbShrZXk6IHVua25vd24sIG9wY29kZTogVHJ5T3Bjb2RlKTogdm9pZDtcblxuICBwdXNoUm9vdFNjb3BlKHNpemU6IG51bWJlcik6IFBhcnRpYWxTY29wZTxDPjtcbiAgcHVzaENoaWxkU2NvcGUoKTogdm9pZDtcbiAgcG9wU2NvcGUoKTogdm9pZDtcbiAgcHVzaFNjb3BlKHNjb3BlOiBTY29wZTxDPik6IHZvaWQ7XG5cbiAgZHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZTtcbiAgYmluZER5bmFtaWNTY29wZShuYW1lczogbnVtYmVyW10pOiB2b2lkO1xuICBwdXNoRHluYW1pY1Njb3BlKCk6IHZvaWQ7XG4gIHBvcER5bmFtaWNTY29wZSgpOiB2b2lkO1xuXG4gIGVudGVyKGFyZ3M6IG51bWJlcik6IHZvaWQ7XG4gIGV4aXQoKTogdm9pZDtcblxuICBnb3RvKHBjOiBudW1iZXIpOiB2b2lkO1xuICBjYWxsKGhhbmRsZTogbnVtYmVyKTogdm9pZDtcbiAgcHVzaEZyYW1lKCk6IHZvaWQ7XG5cbiAgcmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbDogbnVtYmVyKTogUGF0aFJlZmVyZW5jZTx1bmtub3duPjtcblxuICBleGVjdXRlKGluaXRpYWxpemU/OiAodm06IHRoaXMpID0+IHZvaWQpOiBSZW5kZXJSZXN1bHQ7XG4gIHB1c2hVcGRhdGluZyhsaXN0PzogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4pOiB2b2lkO1xuICBuZXh0KCk6IFJpY2hJdGVyYXRvclJlc3VsdDxudWxsLCBSZW5kZXJSZXN1bHQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVybmFsSml0Vk0gZXh0ZW5kcyBJbnRlcm5hbFZNPENvbXBpbGFibGVCbG9jaz4ge1xuICBjb21waWxlKGJsb2NrOiBDb21waWxhYmxlVGVtcGxhdGUpOiBudW1iZXI7XG4gIHJlYWRvbmx5IHJ1bnRpbWU6IEppdFJ1bnRpbWVDb250ZXh0O1xuICByZWFkb25seSBjb250ZXh0OiBTeW50YXhDb21waWxhdGlvbkNvbnRleHQ7XG59XG5cbmNsYXNzIFN0YWNrczxDIGV4dGVuZHMgSml0T3JBb3RCbG9jaz4ge1xuICByZWFkb25seSBzY29wZSA9IG5ldyBTdGFjazxTY29wZTxDPj4oKTtcbiAgcmVhZG9ubHkgZHluYW1pY1Njb3BlID0gbmV3IFN0YWNrPER5bmFtaWNTY29wZT4oKTtcbiAgcmVhZG9ubHkgdXBkYXRpbmcgPSBuZXcgU3RhY2s8TGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4+KCk7XG4gIHJlYWRvbmx5IGNhY2hlID0gbmV3IFN0YWNrPE9wdGlvbjxVcGRhdGluZ09wY29kZT4+KCk7XG4gIHJlYWRvbmx5IGxpc3QgPSBuZXcgU3RhY2s8TGlzdEJsb2NrT3Bjb2RlPigpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhYnN0cmFjdCBjbGFzcyBWTTxDIGV4dGVuZHMgSml0T3JBb3RCbG9jaz4gaW1wbGVtZW50cyBQdWJsaWNWTSwgSW50ZXJuYWxWTTxDPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgW1NUQUNLU10gPSBuZXcgU3RhY2tzPEM+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgW0hFQVBdOiBSdW50aW1lSGVhcDtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cnVjdG9yOiBvYmplY3Q7XG4gIHByaXZhdGUgcmVhZG9ubHkgW0RFU1RSVUNUT1JfU1RBQ0tdID0gbmV3IFN0YWNrPG9iamVjdD4oKTtcbiAgcmVhZG9ubHkgW0NPTlNUQU5UU106IFJ1bnRpbWVDb25zdGFudHM7XG4gIHJlYWRvbmx5IFtBUkdTXTogVk1Bcmd1bWVudHNJbXBsO1xuICByZWFkb25seSBbSU5ORVJfVk1dOiBMb3dMZXZlbFZNO1xuXG4gIGdldCBzdGFjaygpOiBFdmFsdWF0aW9uU3RhY2sge1xuICAgIHJldHVybiB0aGlzW0lOTkVSX1ZNXS5zdGFjayBhcyBFdmFsdWF0aW9uU3RhY2s7XG4gIH1cblxuICBjdXJyZW50QmxvY2soKTogTGl2ZUJsb2NrIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50cygpLmJsb2NrKCk7XG4gIH1cblxuICAvKiBSZWdpc3RlcnMgKi9cblxuICBnZXQgcGMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpc1tJTk5FUl9WTV0uZmV0Y2hSZWdpc3RlcigkcGMpO1xuICB9XG5cbiAgcHVibGljIHMwOiB1bmtub3duID0gbnVsbDtcbiAgcHVibGljIHMxOiB1bmtub3duID0gbnVsbDtcbiAgcHVibGljIHQwOiB1bmtub3duID0gbnVsbDtcbiAgcHVibGljIHQxOiB1bmtub3duID0gbnVsbDtcbiAgcHVibGljIHYwOiB1bmtub3duID0gbnVsbDtcblxuICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlciBvbnRvIHRoZSBzdGFja1xuICBmZXRjaChyZWdpc3RlcjogU3lzY2FsbFJlZ2lzdGVyKTogdm9pZCB7XG4gICAgdGhpcy5zdGFjay5wdXNoKHRoaXMuZmV0Y2hWYWx1ZShyZWdpc3RlcikpO1xuICB9XG5cbiAgLy8gTG9hZCBhIHZhbHVlIGZyb20gdGhlIHN0YWNrIGludG8gYSByZWdpc3RlclxuICBsb2FkKHJlZ2lzdGVyOiBTeXNjYWxsUmVnaXN0ZXIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnN0YWNrLnBvcCgpO1xuXG4gICAgdGhpcy5sb2FkVmFsdWUocmVnaXN0ZXIsIHZhbHVlKTtcbiAgfVxuXG4gIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyXG4gIGZldGNoVmFsdWUocmVnaXN0ZXI6IE1hY2hpbmVSZWdpc3Rlcik6IG51bWJlcjtcbiAgZmV0Y2hWYWx1ZTxUPihyZWdpc3RlcjogUmVnaXN0ZXIpOiBUO1xuICBmZXRjaFZhbHVlKHJlZ2lzdGVyOiBSZWdpc3RlciB8IE1hY2hpbmVSZWdpc3Rlcik6IHVua25vd24ge1xuICAgIGlmIChpc0xvd0xldmVsUmVnaXN0ZXIocmVnaXN0ZXIpKSB7XG4gICAgICByZXR1cm4gdGhpc1tJTk5FUl9WTV0uZmV0Y2hSZWdpc3RlcihyZWdpc3Rlcik7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZWdpc3Rlcikge1xuICAgICAgY2FzZSAkczA6XG4gICAgICAgIHJldHVybiB0aGlzLnMwO1xuICAgICAgY2FzZSAkczE6XG4gICAgICAgIHJldHVybiB0aGlzLnMxO1xuICAgICAgY2FzZSAkdDA6XG4gICAgICAgIHJldHVybiB0aGlzLnQwO1xuICAgICAgY2FzZSAkdDE6XG4gICAgICAgIHJldHVybiB0aGlzLnQxO1xuICAgICAgY2FzZSAkdjA6XG4gICAgICAgIHJldHVybiB0aGlzLnYwO1xuICAgIH1cbiAgfVxuXG4gIC8vIExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcblxuICBsb2FkVmFsdWU8VD4ocmVnaXN0ZXI6IFJlZ2lzdGVyIHwgTWFjaGluZVJlZ2lzdGVyLCB2YWx1ZTogVCk6IHZvaWQge1xuICAgIGlmIChpc0xvd0xldmVsUmVnaXN0ZXIocmVnaXN0ZXIpKSB7XG4gICAgICB0aGlzW0lOTkVSX1ZNXS5sb2FkUmVnaXN0ZXIocmVnaXN0ZXIsICh2YWx1ZSBhcyBhbnkpIGFzIG51bWJlcik7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZWdpc3Rlcikge1xuICAgICAgY2FzZSAkczA6XG4gICAgICAgIHRoaXMuczAgPSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICRzMTpcbiAgICAgICAgdGhpcy5zMSA9IHZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJHQwOlxuICAgICAgICB0aGlzLnQwID0gdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAkdDE6XG4gICAgICAgIHRoaXMudDEgPSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICR2MDpcbiAgICAgICAgdGhpcy52MCA9IHZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWlncmF0ZWQgdG8gSW5uZXJcbiAgICovXG5cbiAgLy8gU3RhcnQgYSBuZXcgZnJhbWUgYW5kIHNhdmUgJHJhIGFuZCAkZnAgb24gdGhlIHN0YWNrXG4gIHB1c2hGcmFtZSgpIHtcbiAgICB0aGlzW0lOTkVSX1ZNXS5wdXNoRnJhbWUoKTtcbiAgfVxuXG4gIC8vIFJlc3RvcmUgJHJhLCAkc3AgYW5kICRmcFxuICBwb3BGcmFtZSgpIHtcbiAgICB0aGlzW0lOTkVSX1ZNXS5wb3BGcmFtZSgpO1xuICB9XG5cbiAgLy8gSnVtcCB0byBhbiBhZGRyZXNzIGluIGBwcm9ncmFtYFxuICBnb3RvKG9mZnNldDogbnVtYmVyKSB7XG4gICAgdGhpc1tJTk5FUl9WTV0uZ290byhvZmZzZXQpO1xuICB9XG5cbiAgLy8gU2F2ZSAkcGMgaW50byAkcmEsIHRoZW4ganVtcCB0byBhIG5ldyBhZGRyZXNzIGluIGBwcm9ncmFtYCAoamFsIGluIE1JUFMpXG4gIGNhbGwoaGFuZGxlOiBudW1iZXIpIHtcbiAgICB0aGlzW0lOTkVSX1ZNXS5jYWxsKGhhbmRsZSk7XG4gIH1cblxuICAvLyBQdXQgYSBzcGVjaWZpYyBgcHJvZ3JhbWAgYWRkcmVzcyBpbiAkcmFcbiAgcmV0dXJuVG8ob2Zmc2V0OiBudW1iZXIpIHtcbiAgICB0aGlzW0lOTkVSX1ZNXS5yZXR1cm5UbyhvZmZzZXQpO1xuICB9XG5cbiAgLy8gUmV0dXJuIHRvIHRoZSBgcHJvZ3JhbWAgYWRkcmVzcyBzdG9yZWQgaW4gJHJhXG4gIHJldHVybigpIHtcbiAgICB0aGlzW0lOTkVSX1ZNXS5yZXR1cm4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmQgb2YgbWlncmF0ZWQuXG4gICAqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IHJ1bnRpbWU6IFJ1bnRpbWVDb250ZXh0LFxuICAgIHsgcGMsIHNjb3BlLCBkeW5hbWljU2NvcGUsIHN0YWNrIH06IFZNU3RhdGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50U3RhY2s6IEVsZW1lbnRCdWlsZGVyXG4gICkge1xuICAgIGxldCBldmFsU3RhY2sgPSBFdmFsdWF0aW9uU3RhY2tJbXBsLnJlc3RvcmUoc3RhY2spO1xuXG4gICAgYXNzZXJ0KHR5cGVvZiBwYyA9PT0gJ251bWJlcicsICdwYyBpcyBhIG51bWJlcicpO1xuXG4gICAgZXZhbFN0YWNrW1JFR0lTVEVSU11bJHBjXSA9IHBjO1xuICAgIGV2YWxTdGFja1tSRUdJU1RFUlNdWyRzcF0gPSBzdGFjay5sZW5ndGggLSAxO1xuICAgIGV2YWxTdGFja1tSRUdJU1RFUlNdWyRmcF0gPSAtMTtcblxuICAgIHRoaXNbSEVBUF0gPSB0aGlzLnByb2dyYW0uaGVhcDtcbiAgICB0aGlzW0NPTlNUQU5UU10gPSB0aGlzLnByb2dyYW0uY29uc3RhbnRzO1xuICAgIHRoaXMuZWxlbWVudFN0YWNrID0gZWxlbWVudFN0YWNrO1xuICAgIHRoaXNbU1RBQ0tTXS5zY29wZS5wdXNoKHNjb3BlKTtcbiAgICB0aGlzW1NUQUNLU10uZHluYW1pY1Njb3BlLnB1c2goZHluYW1pY1Njb3BlKTtcbiAgICB0aGlzW0FSR1NdID0gbmV3IFZNQXJndW1lbnRzSW1wbCgpO1xuICAgIHRoaXNbSU5ORVJfVk1dID0gbmV3IExvd0xldmVsVk0oXG4gICAgICBldmFsU3RhY2ssXG4gICAgICB0aGlzW0hFQVBdLFxuICAgICAgcnVudGltZS5wcm9ncmFtLFxuICAgICAge1xuICAgICAgICBkZWJ1Z0JlZm9yZTogKG9wY29kZTogUnVudGltZU9wSW1wbCk6IERlYnVnU3RhdGUgPT4ge1xuICAgICAgICAgIHJldHVybiBBUFBFTkRfT1BDT0RFUy5kZWJ1Z0JlZm9yZSh0aGlzLCBvcGNvZGUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlYnVnQWZ0ZXI6IChzdGF0ZTogRGVidWdTdGF0ZSk6IHZvaWQgPT4ge1xuICAgICAgICAgIEFQUEVORF9PUENPREVTLmRlYnVnQWZ0ZXIodGhpcywgc3RhdGUpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGV2YWxTdGFja1tSRUdJU1RFUlNdXG4gICAgKTtcblxuICAgIHRoaXMuZGVzdHJ1Y3RvciA9IHt9O1xuICAgIHRoaXNbREVTVFJVQ1RPUl9TVEFDS10ucHVzaCh0aGlzLmRlc3RydWN0b3IpO1xuICB9XG5cbiAgZ2V0IHByb2dyYW0oKTogUnVudGltZVByb2dyYW0ge1xuICAgIHJldHVybiB0aGlzLnJ1bnRpbWUucHJvZ3JhbTtcbiAgfVxuXG4gIGdldCBlbnYoKTogRW52aXJvbm1lbnQge1xuICAgIHJldHVybiB0aGlzLnJ1bnRpbWUuZW52O1xuICB9XG5cbiAgY2FwdHVyZVN0YXRlKGFyZ3M6IG51bWJlciwgcGMgPSB0aGlzW0lOTkVSX1ZNXS5mZXRjaFJlZ2lzdGVyKCRwYykpOiBWTVN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGMsXG4gICAgICBkeW5hbWljU2NvcGU6IHRoaXMuZHluYW1pY1Njb3BlKCksXG4gICAgICBzY29wZTogdGhpcy5zY29wZSgpLFxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2suY2FwdHVyZShhcmdzKSxcbiAgICB9O1xuICB9XG5cbiAgYWJzdHJhY3QgY2FwdHVyZShhcmdzOiBudW1iZXIsIHBjPzogbnVtYmVyKTogUmVzdW1hYmxlVk1TdGF0ZTxJbnRlcm5hbFZNPjtcblxuICBiZWdpbkNhY2hlR3JvdXAoKSB7XG4gICAgdGhpc1tTVEFDS1NdLmNhY2hlLnB1c2godGhpcy51cGRhdGluZygpLnRhaWwoKSk7XG4gIH1cblxuICBjb21taXRDYWNoZUdyb3VwKCkge1xuICAgIGxldCBFTkQgPSBuZXcgTGFiZWxPcGNvZGUoJ0VORCcpO1xuXG4gICAgbGV0IG9wY29kZXMgPSB0aGlzLnVwZGF0aW5nKCk7XG4gICAgbGV0IG1hcmtlciA9IHRoaXNbU1RBQ0tTXS5jYWNoZS5wb3AoKTtcbiAgICBsZXQgaGVhZCA9IG1hcmtlciA/IG9wY29kZXMubmV4dE5vZGUobWFya2VyKSA6IG9wY29kZXMuaGVhZCgpO1xuICAgIGxldCB0YWlsID0gb3Bjb2Rlcy50YWlsKCk7XG4gICAgbGV0IHRhZyA9IGNvbWJpbmVTbGljZShuZXcgTGlzdFNsaWNlKGhlYWQsIHRhaWwpKTtcblxuICAgIGxldCBndWFyZCA9IG5ldyBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSh0YWcsIEVORCk7XG5cbiAgICBvcGNvZGVzLmluc2VydEJlZm9yZShndWFyZCwgaGVhZCk7XG4gICAgb3Bjb2Rlcy5hcHBlbmQobmV3IERpZE1vZGlmeU9wY29kZShndWFyZCkpO1xuICAgIG9wY29kZXMuYXBwZW5kKEVORCk7XG4gIH1cblxuICBlbnRlcihhcmdzOiBudW1iZXIpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZShhcmdzKTtcbiAgICBsZXQgYmxvY2sgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG5cbiAgICBsZXQgdHJ5T3Bjb2RlID0gbmV3IFRyeU9wY29kZShzdGF0ZSwgdGhpcy5ydW50aW1lLCBibG9jaywgdXBkYXRpbmcpO1xuXG4gICAgdGhpcy5kaWRFbnRlcih0cnlPcGNvZGUpO1xuICB9XG5cbiAgaXRlcmF0ZShcbiAgICBtZW1vOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+LFxuICAgIHZhbHVlOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+XG4gICk6IFRyeU9wY29kZSB7XG4gICAgbGV0IHN0YWNrID0gdGhpcy5zdGFjaztcbiAgICBzdGFjay5wdXNoKHZhbHVlKTtcbiAgICBzdGFjay5wdXNoKG1lbW8pO1xuXG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDIpO1xuICAgIGxldCBibG9jayA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcblxuICAgIC8vIGxldCBpcCA9IHRoaXMuaXA7XG4gICAgLy8gdGhpcy5pcCA9IGVuZCArIDQ7XG4gICAgLy8gdGhpcy5mcmFtZXMucHVzaChpcCk7XG5cbiAgICByZXR1cm4gbmV3IFRyeU9wY29kZShzdGF0ZSwgdGhpcy5ydW50aW1lLCBibG9jaywgbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpO1xuICB9XG5cbiAgZW50ZXJJdGVtKGtleTogc3RyaW5nLCBvcGNvZGU6IFRyeU9wY29kZSkge1xuICAgIHRoaXMubGlzdEJsb2NrKCkubWFwLnNldChrZXksIG9wY29kZSk7XG4gICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICB9XG5cbiAgZW50ZXJMaXN0KG9mZnNldDogbnVtYmVyKSB7XG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8QmxvY2tPcGNvZGU+KCk7XG5cbiAgICBsZXQgYWRkciA9IHRoaXNbSU5ORVJfVk1dLnRhcmdldChvZmZzZXQpO1xuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgwLCBhZGRyKTtcbiAgICBsZXQgbGlzdCA9IHRoaXMuZWxlbWVudHMoKS5wdXNoQmxvY2tMaXN0KHVwZGF0aW5nKTtcbiAgICBsZXQgYXJ0aWZhY3RzID0gdGhpcy5zdGFjay5wZWVrPFJlZmVyZW5jZUl0ZXJhdG9yPigpLmFydGlmYWN0cztcblxuICAgIGxldCBvcGNvZGUgPSBuZXcgTGlzdEJsb2NrT3Bjb2RlKHN0YXRlLCB0aGlzLnJ1bnRpbWUsIGxpc3QsIHVwZGF0aW5nLCBhcnRpZmFjdHMpO1xuXG4gICAgdGhpc1tTVEFDS1NdLmxpc3QucHVzaChvcGNvZGUpO1xuXG4gICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaWRFbnRlcihvcGNvZGU6IEJsb2NrT3Bjb2RlKSB7XG4gICAgdGhpcy5hc3NvY2lhdGVEZXN0cnVjdG9yKGRlc3RydWN0b3Iob3Bjb2RlKSk7XG4gICAgdGhpc1tERVNUUlVDVE9SX1NUQUNLXS5wdXNoKG9wY29kZSk7XG4gICAgdGhpcy51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgdGhpcy5wdXNoVXBkYXRpbmcob3Bjb2RlLmNoaWxkcmVuKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpc1tERVNUUlVDVE9SX1NUQUNLXS5wb3AoKTtcbiAgICB0aGlzLmVsZW1lbnRzKCkucG9wQmxvY2soKTtcbiAgICB0aGlzLnBvcFVwZGF0aW5nKCk7XG5cbiAgICBsZXQgcGFyZW50ID0gdGhpcy51cGRhdGluZygpLnRhaWwoKSBhcyBCbG9ja09wY29kZTtcblxuICAgIHBhcmVudC5kaWRJbml0aWFsaXplQ2hpbGRyZW4oKTtcbiAgfVxuXG4gIGV4aXRMaXN0KCkge1xuICAgIHRoaXMuZXhpdCgpO1xuICAgIHRoaXNbU1RBQ0tTXS5saXN0LnBvcCgpO1xuICB9XG5cbiAgcHVzaFVwZGF0aW5nKGxpc3QgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKSk6IHZvaWQge1xuICAgIHRoaXNbU1RBQ0tTXS51cGRhdGluZy5wdXNoKGxpc3QpO1xuICB9XG5cbiAgcG9wVXBkYXRpbmcoKTogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4ge1xuICAgIHJldHVybiBleHBlY3QodGhpc1tTVEFDS1NdLnVwZGF0aW5nLnBvcCgpLCBcImNhbid0IHBvcCBhbiBlbXB0eSBzdGFja1wiKTtcbiAgfVxuXG4gIHVwZGF0ZVdpdGgob3Bjb2RlOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMudXBkYXRpbmcoKS5hcHBlbmQob3Bjb2RlKTtcbiAgfVxuXG4gIGxpc3RCbG9jaygpOiBMaXN0QmxvY2tPcGNvZGUge1xuICAgIHJldHVybiBleHBlY3QodGhpc1tTVEFDS1NdLmxpc3QuY3VycmVudCwgJ2V4cGVjdGVkIGEgbGlzdCBibG9jaycpO1xuICB9XG5cbiAgYXNzb2NpYXRlRGVzdHJ1Y3RvcihjaGlsZDogRHJvcCk6IHZvaWQge1xuICAgIGlmICghaXNEcm9wKGNoaWxkKSkgcmV0dXJuO1xuICAgIGxldCBwYXJlbnQgPSBleHBlY3QodGhpc1tERVNUUlVDVE9SX1NUQUNLXS5jdXJyZW50LCAnRXhwZWN0ZWQgZGVzdHJ1Y3RvciBwYXJlbnQnKTtcbiAgICBhc3NvY2lhdGVEZXN0cnVjdG9yKHBhcmVudCwgY2hpbGQpO1xuICB9XG5cbiAgYXNzb2NpYXRlRGVzdHJveWFibGUoY2hpbGQ6IFN5bWJvbERlc3Ryb3lhYmxlIHwgRGVzdHJveWFibGUpOiB2b2lkIHtcbiAgICB0aGlzLmFzc29jaWF0ZURlc3RydWN0b3IoZGVzdHJ1Y3RvcihjaGlsZCkpO1xuICB9XG5cbiAgdHJ5VXBkYXRpbmcoKTogT3B0aW9uPExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+PiB7XG4gICAgcmV0dXJuIHRoaXNbU1RBQ0tTXS51cGRhdGluZy5jdXJyZW50O1xuICB9XG5cbiAgdXBkYXRpbmcoKTogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4ge1xuICAgIHJldHVybiBleHBlY3QoXG4gICAgICB0aGlzW1NUQUNLU10udXBkYXRpbmcuY3VycmVudCxcbiAgICAgICdleHBlY3RlZCB1cGRhdGluZyBvcGNvZGUgb24gdGhlIHVwZGF0aW5nIG9wY29kZSBzdGFjaydcbiAgICApO1xuICB9XG5cbiAgZWxlbWVudHMoKTogRWxlbWVudEJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRTdGFjaztcbiAgfVxuXG4gIHNjb3BlKCk6IFNjb3BlPEM+IHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXNbU1RBQ0tTXS5zY29wZS5jdXJyZW50LCAnZXhwZWN0ZWQgc2NvcGUgb24gdGhlIHNjb3BlIHN0YWNrJyk7XG4gIH1cblxuICBkeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlIHtcbiAgICByZXR1cm4gZXhwZWN0KFxuICAgICAgdGhpc1tTVEFDS1NdLmR5bmFtaWNTY29wZS5jdXJyZW50LFxuICAgICAgJ2V4cGVjdGVkIGR5bmFtaWMgc2NvcGUgb24gdGhlIGR5bmFtaWMgc2NvcGUgc3RhY2snXG4gICAgKTtcbiAgfVxuXG4gIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgIHRoaXNbU1RBQ0tTXS5zY29wZS5wdXNoKHRoaXMuc2NvcGUoKS5jaGlsZCgpKTtcbiAgfVxuXG4gIHB1c2hEeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlIHtcbiAgICBsZXQgY2hpbGQgPSB0aGlzLmR5bmFtaWNTY29wZSgpLmNoaWxkKCk7XG4gICAgdGhpc1tTVEFDS1NdLmR5bmFtaWNTY29wZS5wdXNoKGNoaWxkKTtcbiAgICByZXR1cm4gY2hpbGQ7XG4gIH1cblxuICBwdXNoUm9vdFNjb3BlKHNpemU6IG51bWJlcik6IFBhcnRpYWxTY29wZTxDPiB7XG4gICAgbGV0IHNjb3BlID0gU2NvcGVJbXBsLnNpemVkPEM+KHNpemUpO1xuICAgIHRoaXNbU1RBQ0tTXS5zY29wZS5wdXNoKHNjb3BlKTtcbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwdXNoU2NvcGUoc2NvcGU6IFNjb3BlPEM+KSB7XG4gICAgdGhpc1tTVEFDS1NdLnNjb3BlLnB1c2goc2NvcGUpO1xuICB9XG5cbiAgcG9wU2NvcGUoKSB7XG4gICAgdGhpc1tTVEFDS1NdLnNjb3BlLnBvcCgpO1xuICB9XG5cbiAgcG9wRHluYW1pY1Njb3BlKCkge1xuICAgIHRoaXNbU1RBQ0tTXS5keW5hbWljU2NvcGUucG9wKCk7XG4gIH1cblxuICAvLy8gU0NPUEUgSEVMUEVSU1xuXG4gIGdldFNlbGYoKTogUGF0aFJlZmVyZW5jZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFNlbGYoKTtcbiAgfVxuXG4gIHJlZmVyZW5jZUZvclN5bWJvbChzeW1ib2w6IG51bWJlcik6IFBhdGhSZWZlcmVuY2U8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U3ltYm9sKHN5bWJvbCk7XG4gIH1cblxuICAvLy8gRVhFQ1VUSU9OXG5cbiAgZXhlY3V0ZShpbml0aWFsaXplPzogKHZtOiB0aGlzKSA9PiB2b2lkKTogUmVuZGVyUmVzdWx0IHtcbiAgICBpZiAoTE9DQUxfU0hPVUxEX0xPRykge1xuICAgICAgY29uc29sZS5sb2coYEVYRUNVVElORyBGUk9NICR7dGhpc1tJTk5FUl9WTV0uZmV0Y2hSZWdpc3RlcigkcGMpfWApO1xuICAgIH1cblxuICAgIGlmIChpbml0aWFsaXplKSBpbml0aWFsaXplKHRoaXMpO1xuXG4gICAgbGV0IHJlc3VsdDogUmljaEl0ZXJhdG9yUmVzdWx0PG51bGwsIFJlbmRlclJlc3VsdD47XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5uZXh0KCk7XG4gICAgICBpZiAocmVzdWx0LmRvbmUpIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gIH1cblxuICBuZXh0KCk6IFJpY2hJdGVyYXRvclJlc3VsdDxudWxsLCBSZW5kZXJSZXN1bHQ+IHtcbiAgICBsZXQgeyBlbnYsIGVsZW1lbnRTdGFjayB9ID0gdGhpcztcbiAgICBsZXQgb3Bjb2RlID0gdGhpc1tJTk5FUl9WTV0ubmV4dFN0YXRlbWVudCgpO1xuICAgIGxldCByZXN1bHQ6IFJpY2hJdGVyYXRvclJlc3VsdDxudWxsLCBSZW5kZXJSZXN1bHQ+O1xuICAgIGlmIChvcGNvZGUgIT09IG51bGwpIHtcbiAgICAgIHRoaXNbSU5ORVJfVk1dLmV2YWx1YXRlT3V0ZXIob3Bjb2RlLCB0aGlzKTtcbiAgICAgIHJlc3VsdCA9IHsgZG9uZTogZmFsc2UsIHZhbHVlOiBudWxsIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFVubG9hZCB0aGUgc3RhY2tcbiAgICAgIHRoaXMuc3RhY2sucmVzZXQoKTtcblxuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBkb25lOiB0cnVlLFxuICAgICAgICB2YWx1ZTogbmV3IFJlbmRlclJlc3VsdEltcGwoXG4gICAgICAgICAgZW52LFxuICAgICAgICAgIHRoaXMucG9wVXBkYXRpbmcoKSxcbiAgICAgICAgICBlbGVtZW50U3RhY2sucG9wQmxvY2soKSxcbiAgICAgICAgICB0aGlzLmRlc3RydWN0b3JcbiAgICAgICAgKSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBiaW5kRHluYW1pY1Njb3BlKG5hbWVzOiBudW1iZXJbXSkge1xuICAgIGxldCBzY29wZSA9IHRoaXMuZHluYW1pY1Njb3BlKCk7XG5cbiAgICBmb3IgKGxldCBpID0gbmFtZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCBuYW1lID0gdGhpc1tDT05TVEFOVFNdLmdldFN0cmluZyhuYW1lc1tpXSk7XG4gICAgICBzY29wZS5zZXQobmFtZSwgdGhpcy5zdGFjay5wb3A8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4oKSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHZtU3RhdGU8QyBleHRlbmRzIEppdE9yQW90QmxvY2s+KFxuICBwYzogbnVtYmVyLFxuICBzY29wZTogU2NvcGU8Qz4gPSBTY29wZUltcGwucm9vdDxDPihVTkRFRklORURfUkVGRVJFTkNFLCAwKSxcbiAgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGVcbikge1xuICByZXR1cm4ge1xuICAgIHBjLFxuICAgIHNjb3BlLFxuICAgIGR5bmFtaWNTY29wZSxcbiAgICBzdGFjazogW10sXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWluaW1hbEluaXRPcHRpb25zIHtcbiAgaGFuZGxlOiBudW1iZXI7XG4gIHRyZWVCdWlsZGVyOiBFbGVtZW50QnVpbGRlcjtcbiAgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5pdE9wdGlvbnMgZXh0ZW5kcyBNaW5pbWFsSW5pdE9wdGlvbnMge1xuICBzZWxmOiBQYXRoUmVmZXJlbmNlPHVua25vd24+O1xufVxuXG5leHBvcnQgY2xhc3MgQW90Vk0gZXh0ZW5kcyBWTTxudW1iZXI+IGltcGxlbWVudHMgSW50ZXJuYWxWTTxudW1iZXI+IHtcbiAgc3RhdGljIGVtcHR5KFxuICAgIHJ1bnRpbWU6IEFvdFJ1bnRpbWVDb250ZXh0LFxuICAgIHsgaGFuZGxlLCB0cmVlQnVpbGRlciwgZHluYW1pY1Njb3BlIH06IE1pbmltYWxJbml0T3B0aW9uc1xuICApOiBJbnRlcm5hbFZNPG51bWJlcj4ge1xuICAgIGxldCB2bSA9IGluaXRBT1QoXG4gICAgICBydW50aW1lLFxuICAgICAgdm1TdGF0ZShcbiAgICAgICAgcnVudGltZS5wcm9ncmFtLmhlYXAuZ2V0YWRkcihoYW5kbGUpLFxuICAgICAgICBTY29wZUltcGwucm9vdDxudW1iZXI+KFVOREVGSU5FRF9SRUZFUkVOQ0UsIDApLFxuICAgICAgICBkeW5hbWljU2NvcGVcbiAgICAgICksXG4gICAgICB0cmVlQnVpbGRlclxuICAgICk7XG4gICAgdm0ucHVzaFVwZGF0aW5nKCk7XG4gICAgcmV0dXJuIHZtO1xuICB9XG5cbiAgc3RhdGljIGluaXRpYWwoXG4gICAgcnVudGltZTogQW90UnVudGltZUNvbnRleHQsXG4gICAgeyBoYW5kbGUsIHNlbGYsIHRyZWVCdWlsZGVyLCBkeW5hbWljU2NvcGUgfTogSW5pdE9wdGlvbnNcbiAgKSB7XG4gICAgbGV0IHNjb3BlU2l6ZSA9IHJ1bnRpbWUucHJvZ3JhbS5oZWFwLnNjb3Blc2l6ZW9mKGhhbmRsZSk7XG4gICAgbGV0IHNjb3BlID0gU2NvcGVJbXBsLnJvb3Qoc2VsZiwgc2NvcGVTaXplKTtcbiAgICBsZXQgcGMgPSBjaGVjayhydW50aW1lLnByb2dyYW0uaGVhcC5nZXRhZGRyKGhhbmRsZSksIENoZWNrTnVtYmVyKTtcbiAgICBsZXQgc3RhdGUgPSB2bVN0YXRlKHBjLCBzY29wZSwgZHluYW1pY1Njb3BlKTtcbiAgICBsZXQgdm0gPSBpbml0QU9UKHJ1bnRpbWUsIHN0YXRlLCB0cmVlQnVpbGRlcik7XG4gICAgdm0ucHVzaFVwZGF0aW5nKCk7XG4gICAgcmV0dXJuIHZtO1xuICB9XG5cbiAgY2FwdHVyZShhcmdzOiBudW1iZXIsIHBjID0gdGhpc1tJTk5FUl9WTV0uZmV0Y2hSZWdpc3RlcigkcGMpKTogUmVzdW1hYmxlVk1TdGF0ZTxBb3RWTT4ge1xuICAgIHJldHVybiBuZXcgUmVzdW1hYmxlVk1TdGF0ZUltcGwodGhpcy5jYXB0dXJlU3RhdGUoYXJncywgcGMpLCBpbml0QU9UKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBWbUluaXRDYWxsYmFjazxWIGV4dGVuZHMgSW50ZXJuYWxWTSA9IEludGVybmFsVk0+ID0gKFxuICB0aGlzOiB2b2lkLFxuICBydW50aW1lOiBWIGV4dGVuZHMgSml0Vk0gPyBKaXRSdW50aW1lQ29udGV4dCA6IEFvdFJ1bnRpbWVDb250ZXh0LFxuICBzdGF0ZTogVk1TdGF0ZSxcbiAgYnVpbGRlcjogRWxlbWVudEJ1aWxkZXJcbikgPT4gVjtcblxuZXhwb3J0IHR5cGUgSml0Vm1Jbml0Q2FsbGJhY2s8ViBleHRlbmRzIEludGVybmFsVk0+ID0gKFxuICB0aGlzOiB2b2lkLFxuICBydW50aW1lOiBKaXRSdW50aW1lQ29udGV4dCxcbiAgc3RhdGU6IFZNU3RhdGUsXG4gIGJ1aWxkZXI6IEVsZW1lbnRCdWlsZGVyXG4pID0+IFY7XG5cbmZ1bmN0aW9uIGluaXRBT1QocnVudGltZTogQW90UnVudGltZUNvbnRleHQsIHN0YXRlOiBWTVN0YXRlLCBidWlsZGVyOiBFbGVtZW50QnVpbGRlcik6IEFvdFZNIHtcbiAgcmV0dXJuIG5ldyBBb3RWTShydW50aW1lLCBzdGF0ZSwgYnVpbGRlcik7XG59XG5cbmZ1bmN0aW9uIGluaXRKSVQoY29udGV4dDogU3ludGF4Q29tcGlsYXRpb25Db250ZXh0KTogSml0Vm1Jbml0Q2FsbGJhY2s8Sml0Vk0+IHtcbiAgcmV0dXJuIChydW50aW1lLCBzdGF0ZSwgYnVpbGRlcikgPT4gbmV3IEppdFZNKHJ1bnRpbWUsIHN0YXRlLCBidWlsZGVyLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGNsYXNzIEppdFZNIGV4dGVuZHMgVk08Q29tcGlsYWJsZUJsb2NrPiBpbXBsZW1lbnRzIEludGVybmFsSml0Vk0ge1xuICBzdGF0aWMgaW5pdGlhbChcbiAgICBydW50aW1lOiBKaXRSdW50aW1lQ29udGV4dCxcbiAgICBjb250ZXh0OiBTeW50YXhDb21waWxhdGlvbkNvbnRleHQsXG4gICAgeyBoYW5kbGUsIHNlbGYsIGR5bmFtaWNTY29wZSwgdHJlZUJ1aWxkZXIgfTogSW5pdE9wdGlvbnNcbiAgKSB7XG4gICAgbGV0IHNjb3BlU2l6ZSA9IHJ1bnRpbWUucHJvZ3JhbS5oZWFwLnNjb3Blc2l6ZW9mKGhhbmRsZSk7XG4gICAgbGV0IHNjb3BlID0gU2NvcGVJbXBsLnJvb3Qoc2VsZiwgc2NvcGVTaXplKTtcbiAgICBsZXQgc3RhdGUgPSB2bVN0YXRlKHJ1bnRpbWUucHJvZ3JhbS5oZWFwLmdldGFkZHIoaGFuZGxlKSwgc2NvcGUsIGR5bmFtaWNTY29wZSk7XG4gICAgbGV0IHZtID0gaW5pdEpJVChjb250ZXh0KShydW50aW1lLCBzdGF0ZSwgdHJlZUJ1aWxkZXIpO1xuICAgIHZtLnB1c2hVcGRhdGluZygpO1xuICAgIHJldHVybiB2bTtcbiAgfVxuXG4gIHN0YXRpYyBlbXB0eShcbiAgICBydW50aW1lOiBKaXRSdW50aW1lQ29udGV4dCxcbiAgICB7IGhhbmRsZSwgdHJlZUJ1aWxkZXIsIGR5bmFtaWNTY29wZSB9OiBNaW5pbWFsSW5pdE9wdGlvbnMsXG4gICAgY29udGV4dDogU3ludGF4Q29tcGlsYXRpb25Db250ZXh0XG4gICkge1xuICAgIGxldCB2bSA9IGluaXRKSVQoY29udGV4dCkoXG4gICAgICBydW50aW1lLFxuICAgICAgdm1TdGF0ZShcbiAgICAgICAgcnVudGltZS5wcm9ncmFtLmhlYXAuZ2V0YWRkcihoYW5kbGUpLFxuICAgICAgICBTY29wZUltcGwucm9vdDxDb21waWxhYmxlQmxvY2s+KFVOREVGSU5FRF9SRUZFUkVOQ0UsIDApLFxuICAgICAgICBkeW5hbWljU2NvcGVcbiAgICAgICksXG4gICAgICB0cmVlQnVpbGRlclxuICAgICk7XG4gICAgdm0ucHVzaFVwZGF0aW5nKCk7XG4gICAgcmV0dXJuIHZtO1xuICB9XG5cbiAgcmVhZG9ubHkgcnVudGltZSE6IEppdFJ1bnRpbWVDb250ZXh0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJ1bnRpbWU6IEppdFJ1bnRpbWVDb250ZXh0LFxuICAgIHN0YXRlOiBWTVN0YXRlLFxuICAgIGVsZW1lbnRTdGFjazogRWxlbWVudEJ1aWxkZXIsXG4gICAgcmVhZG9ubHkgY29udGV4dDogU3ludGF4Q29tcGlsYXRpb25Db250ZXh0XG4gICkge1xuICAgIHN1cGVyKHJ1bnRpbWUsIHN0YXRlLCBlbGVtZW50U3RhY2spO1xuICB9XG5cbiAgY2FwdHVyZShhcmdzOiBudW1iZXIsIHBjID0gdGhpc1tJTk5FUl9WTV0uZmV0Y2hSZWdpc3RlcigkcGMpKTogUmVzdW1hYmxlVk1TdGF0ZTxKaXRWTT4ge1xuICAgIHJldHVybiBuZXcgUmVzdW1hYmxlVk1TdGF0ZUltcGwodGhpcy5jYXB0dXJlU3RhdGUoYXJncywgcGMpLCB0aGlzLnJlc3VtZSk7XG4gIH1cblxuICBwcml2YXRlIHJlc3VtZTogVm1Jbml0Q2FsbGJhY2s8Sml0Vk0+ID0gaW5pdEpJVCh0aGlzLmNvbnRleHQpO1xuXG4gIGNvbXBpbGUoYmxvY2s6IENvbXBpbGFibGVUZW1wbGF0ZSk6IG51bWJlciB7XG4gICAgbGV0IGhhbmRsZSA9IHVud3JhcEhhbmRsZShibG9jay5jb21waWxlKHRoaXMuY29udGV4dCkpO1xuXG4gICAgcmV0dXJuIGhhbmRsZTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2FwcGVuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTBCQSxTQUNFLG1CQURGLEVBRUUsVUFGRixFQUlFLE1BSkYsRUFLRSxVQUxGLEVBTUUsU0FORixFQVFFLEtBUkYsRUFTRSxNQVRGLFFBVU8sZUFWUDtBQVdBLFNBQ0UsR0FERixFQUVFLEdBRkYsRUFHRSxHQUhGLEVBSUUsR0FKRixFQUtFLEdBTEYsRUFNRSxHQU5GLEVBT0UsR0FQRixFQVFFLEdBUkYsRUFTRSxrQkFURixRQWFPLGFBYlA7QUFlQSxTQUFTLFlBQVQsUUFBNkIsZUFBN0I7QUFDQSxTQUFTLFlBQVQsUUFBNkIsZUFBN0I7QUFDQSxTQUFTLGVBQVQsRUFBMEIsdUJBQTFCLEVBQW1ELFdBQW5ELFFBQXNFLHdCQUF0RTtBQUNBLFNBQVMsU0FBVCxRQUEwQixnQkFBMUI7QUFDQSxTQUFTLGNBQVQsUUFBMkQsWUFBM0Q7QUFDQSxTQUFTLG1CQUFULFFBQW9DLGVBQXBDO0FBQ0EsU0FBUyxJQUFULEVBQWUsU0FBZixFQUEwQixnQkFBMUIsRUFBNEMsSUFBNUMsRUFBa0QsUUFBbEQsRUFBNEQsU0FBNUQsRUFBdUUsTUFBdkUsUUFBcUYsWUFBckY7QUFDQSxTQUFTLGVBQVQsUUFBZ0MsYUFBaEM7QUFDQSxPQUFPLFVBQVAsTUFBdUIsYUFBdkI7QUFDQSxPQUFPLGdCQUFQLE1BQTZCLGlCQUE3QjtBQUNBLE9BQU8sbUJBQVAsTUFBcUQsU0FBckQ7QUFDQSxTQUVFLGVBRkYsRUFJRSxvQkFKRixFQUtFLFNBTEYsUUFPTyxVQVBQOztBQWtGQSxNQUFNLE1BQU4sQ0FBWTtBQUFaLEVBQUEsV0FBQSxHQUFBO0FBQ1csU0FBQSxLQUFBLEdBQVEsSUFBSSxLQUFKLEVBQVI7QUFDQSxTQUFBLFlBQUEsR0FBZSxJQUFJLEtBQUosRUFBZjtBQUNBLFNBQUEsUUFBQSxHQUFXLElBQUksS0FBSixFQUFYO0FBQ0Es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QSxRQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBRCxDQUFQLENBQWlCLE9BQWpCLEVBQTBCLEtBQTFCLEVBQWlDLFdBQWpDLENBQVQ7QUFDQSxJQUFBLEVBQUUsQ0FBQyxZQUFIO0FBQ0EsV0FBTyxFQUFQO0FBQ0Q7O0FBRUQsU0FBTyxLQUFQLENBQ0UsT0FERixFQUVFO0FBQUUsSUFBQSxNQUFGO0FBQVUsSUFBQSxXQUFWO0FBQXVCLElBQUE7QUFBdkIsR0FGRixFQUdFLE9BSEYsRUFHbUM7QUFFakMsUUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQUQsQ0FBUCxDQUNQLE9BRE8sRUFFUCxPQUFPLENBQ0wsT0FBTyxDQUFDLE9BQVIsQ0FBZ0IsSUFBaEIsQ0FBcUIsT0FBckIsQ0FBNkIsTUFBN0IsQ0FESyxFQUVMLFNBQVMsQ0FBQyxJQUFWLENBQWdDLG1CQUFoQyxFQUFxRCxDQUFyRCxDQUZLLEVBR0wsWUFISyxDQUZBLEVBT1AsV0FQTyxDQUFUO0FBU0EsSUFBQSxFQUFFLENBQUMsWUFBSDtBQUNBLFdBQU8sRUFBUDtBQUNEOztBQWFELEVBQUEsT0FBTyxDQUFDLElBQUQsRUFBZSxFQUFFLEdBQUcsS0FBSyxRQUFMLEVBQWUsYUFBZixDQUE2QixHQUE3QixDQUFwQixFQUFxRDtBQUMxRCxXQUFPLElBQUksb0JBQUosQ0FBeUIsS0FBSyxZQUFMLENBQWtCLElBQWxCLEVBQXdCLEVBQXhCLENBQXpCLEVBQXNELEtBQUssTUFBM0QsQ0FBUDtBQUNEOztBQUlELEVBQUEsT0FBTyxDQUFDLEtBQUQsRUFBMEI7QUFDL0IsUUFBSSxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFOLENBQWMsS0FBSyxPQUFuQixDQUFELENBQXpCO0FBRUEsV0FBTyxNQUFQO0FBQ0Q7O0FBckQyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBpbGFibGVCbG9jayxcbiAgQ29tcGlsYWJsZVRlbXBsYXRlLFxuICBEZXN0cm95YWJsZSxcbiAgRHJvcCxcbiAgRHluYW1pY1Njb3BlLFxuICBFbnZpcm9ubWVudCxcbiAgSml0T3JBb3RCbG9jayxcbiAgUGFydGlhbFNjb3BlLFxuICBSZW5kZXJSZXN1bHQsXG4gIFJpY2hJdGVyYXRvclJlc3VsdCxcbiAgUnVudGltZUNvbnRleHQsXG4gIFJ1bnRpbWVDb25zdGFudHMsXG4gIFJ1bnRpbWVIZWFwLFxuICBSdW50aW1lUHJvZ3JhbSxcbiAgU2NvcGUsXG4gIFN5bWJvbERlc3Ryb3lhYmxlLFxuICBTeW50YXhDb21waWxhdGlvbkNvbnRleHQsXG4gIFZNIGFzIFB1YmxpY1ZNLFxuICBKaXRSdW50aW1lQ29udGV4dCxcbiAgQW90UnVudGltZUNvbnRleHQsXG4gIEVsZW1lbnRCdWlsZGVyLFxufSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IExPQ0FMX1NIT1VMRF9MT0cgfSBmcm9tICdAZ2xpbW1lci9sb2NhbC1kZWJ1Zy1mbGFncyc7XG5pbXBvcnQgeyBSdW50aW1lT3BJbXBsIH0gZnJvbSAnQGdsaW1tZXIvcHJvZ3JhbSc7XG5pbXBvcnQgeyBQYXRoUmVmZXJlbmNlLCBSZWZlcmVuY2VJdGVyYXRvciwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQge1xuICBhc3NvY2lhdGVEZXN0cnVjdG9yLFxuICBkZXN0cnVjdG9yLFxuICBleHBlY3QsXG4gIGlzRHJvcCxcbiAgTGlua2VkTGlzdCxcbiAgTGlzdFNsaWNlLFxuICBPcHRpb24sXG4gIFN0YWNrLFxuICBhc3NlcnQsXG59IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgJGZwLFxuICAkcGMsXG4gICRzMCxcbiAgJHMxLFxuICAkc3AsXG4gICR0MCxcbiAgJHQxLFxuICAkdjAsXG4gIGlzTG93TGV2ZWxSZWdpc3RlcixcbiAgTWFjaGluZVJlZ2lzdGVyLFxuICBSZWdpc3RlcixcbiAgU3lzY2FsbFJlZ2lzdGVyLFxufSBmcm9tICdAZ2xpbW1lci92bSc7XG5pbXBvcnQgeyBDaGVja051bWJlciwgY2hlY2sgfSBmcm9tICdAZ2xpbW1lci9kZWJ1Zyc7XG5pbXBvcnQgeyB1bndyYXBIYW5kbGUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IGNvbWJpbmVTbGljZSB9IGZyb20gJy4uL3V0aWxzL3RhZ3MnO1xuaW1wb3J0IHsgRGlkTW9kaWZ5T3Bjb2RlLCBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSwgTGFiZWxPcGNvZGUgfSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcbmltcG9ydCB7IFNjb3BlSW1wbCB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBEZWJ1Z1N0YXRlLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgVU5ERUZJTkVEX1JFRkVSRU5DRSB9IGZyb20gJy4uL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHsgQVJHUywgQ09OU1RBTlRTLCBERVNUUlVDVE9SX1NUQUNLLCBIRUFQLCBJTk5FUl9WTSwgUkVHSVNURVJTLCBTVEFDS1MgfSBmcm9tICcuLi9zeW1ib2xzJztcbmltcG9ydCB7IFZNQXJndW1lbnRzSW1wbCB9IGZyb20gJy4vYXJndW1lbnRzJztcbmltcG9ydCBMb3dMZXZlbFZNIGZyb20gJy4vbG93LWxldmVsJztcbmltcG9ydCBSZW5kZXJSZXN1bHRJbXBsIGZyb20gJy4vcmVuZGVyLXJlc3VsdCc7XG5pbXBvcnQgRXZhbHVhdGlvblN0YWNrSW1wbCwgeyBFdmFsdWF0aW9uU3RhY2sgfSBmcm9tICcuL3N0YWNrJztcbmltcG9ydCB7XG4gIEJsb2NrT3Bjb2RlLFxuICBMaXN0QmxvY2tPcGNvZGUsXG4gIFJlc3VtYWJsZVZNU3RhdGUsXG4gIFJlc3VtYWJsZVZNU3RhdGVJbXBsLFxuICBUcnlPcGNvZGUsXG4gIFZNU3RhdGUsXG59IGZyb20gJy4vdXBkYXRlJztcblxuLyoqXG4gKiBUaGlzIGludGVyZmFjZSBpcyB1c2VkIGJ5IGludGVybmFsIG9wY29kZXMsIGFuZCBpcyBtb3JlIHN0YWJsZSB0aGFuXG4gKiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEFwcGVuZCBWTSBpdHNlbGYuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYWxWTTxDIGV4dGVuZHMgSml0T3JBb3RCbG9jayA9IEppdE9yQW90QmxvY2s+IHtcbiAgcmVhZG9ubHkgW0NPTlNUQU5UU106IFJ1bnRpbWVDb25zdGFudHM7XG4gIHJlYWRvbmx5IFtBUkdTXTogVk1Bcmd1bWVudHNJbXBsO1xuXG4gIHJlYWRvbmx5IGVudjogRW52aXJvbm1lbnQ7XG4gIHJlYWRvbmx5IHN0YWNrOiBFdmFsdWF0aW9uU3RhY2s7XG4gIHJlYWRvbmx5IHJ1bnRpbWU6IFJ1bnRpbWVDb250ZXh0O1xuXG4gIGxvYWRWYWx1ZShyZWdpc3RlcjogTWFjaGluZVJlZ2lzdGVyLCB2YWx1ZTogbnVtYmVyKTogdm9pZDtcbiAgbG9hZFZhbHVlKHJlZ2lzdGVyOiBSZWdpc3RlciwgdmFsdWU6IHVua25vd24pOiB2b2lkO1xuICBsb2FkVmFsdWUocmVnaXN0ZXI6IFJlZ2lzdGVyIHwgTWFjaGluZVJlZ2lzdGVyLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG5cbiAgZmV0Y2hWYWx1ZShyZWdpc3RlcjogTWFjaGluZVJlZ2lzdGVyLnJhIHwgTWFjaGluZVJlZ2lzdGVyLnBjKTogbnVtYmVyO1xuICAvLyBUT0RPOiBTb21ldGhpbmcgYmV0dGVyIHRoYW4gYSB0eXBlIGFzc2VydGlvbj9cbiAgZmV0Y2hWYWx1ZTxUPihyZWdpc3RlcjogUmVnaXN0ZXIpOiBUO1xuICBmZXRjaFZhbHVlKHJlZ2lzdGVyOiBSZWdpc3Rlcik6IHVua25vd247XG5cbiAgbG9hZChyZWdpc3RlcjogUmVnaXN0ZXIpOiB2b2lkO1xuICBmZXRjaChyZWdpc3RlcjogUmVnaXN0ZXIpOiB2b2lkO1xuXG4gIHNjb3BlKCk6IFNjb3BlPEM+O1xuICBlbGVtZW50cygpOiBFbGVtZW50QnVpbGRlcjtcblxuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8dW5rbm93bj47XG5cbiAgdXBkYXRlV2l0aChvcGNvZGU6IFVwZGF0aW5nT3Bjb2RlKTogdm9pZDtcblxuICBhc3NvY2lhdGVEZXN0cm95YWJsZShkOiBTeW1ib2xEZXN0cm95YWJsZSB8IERlc3Ryb3lhYmxlKTogdm9pZDtcblxuICBiZWdpbkNhY2hlR3JvdXAoKTogdm9pZDtcbiAgY29tbWl0Q2FjaGVHcm91cCgpOiB2b2lkO1xuXG4gIC8vLyBJdGVyYXRpb24gLy8vXG5cbiAgZW50ZXJMaXN0KG9mZnNldDogbnVtYmVyKTogdm9pZDtcbiAgZXhpdExpc3QoKTogdm9pZDtcbiAgaXRlcmF0ZShtZW1vOiBQYXRoUmVmZXJlbmNlPHVua25vd24+LCBpdGVtOiBQYXRoUmVmZXJlbmNlPHVua25vd24+KTogVHJ5T3Bjb2RlO1xuICBlbnRlckl0ZW0oa2V5OiB1bmtub3duLCBvcGNvZGU6IFRyeU9wY29kZSk6IHZvaWQ7XG5cbiAgcHVzaFJvb3RTY29wZShzaXplOiBudW1iZXIpOiBQYXJ0aWFsU2NvcGU8Qz47XG4gIHB1c2hDaGlsZFNjb3BlKCk6IHZvaWQ7XG4gIHBvcFNjb3BlKCk6IHZvaWQ7XG4gIHB1c2hTY29wZShzY29wZTogU2NvcGU8Qz4pOiB2b2lkO1xuXG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGU7XG4gIGJpbmREeW5hbWljU2NvcGUobmFtZXM6IG51bWJlcltdKTogdm9pZDtcbiAgcHVzaER5bmFtaWNTY29wZSgpOiB2b2lkO1xuICBwb3BEeW5hbWljU2NvcGUoKTogdm9pZDtcblxuICBlbnRlcihhcmdzOiBudW1iZXIpOiB2b2lkO1xuICBleGl0KCk6IHZvaWQ7XG5cbiAgZ290byhwYzogbnVtYmVyKTogdm9pZDtcbiAgY2FsbChoYW5kbGU6IG51bWJlcik6IHZvaWQ7XG4gIHB1c2hGcmFtZSgpOiB2b2lkO1xuXG4gIHJlZmVyZW5jZUZvclN5bWJvbChzeW1ib2w6IG51bWJlcik6IFBhdGhSZWZlcmVuY2U8dW5rbm93bj47XG5cbiAgZXhlY3V0ZShpbml0aWFsaXplPzogKHZtOiB0aGlzKSA9PiB2b2lkKTogUmVuZGVyUmVzdWx0O1xuICBwdXNoVXBkYXRpbmcobGlzdD86IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KTogdm9pZDtcbiAgbmV4dCgpOiBSaWNoSXRlcmF0b3JSZXN1bHQ8bnVsbCwgUmVuZGVyUmVzdWx0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbEppdFZNIGV4dGVuZHMgSW50ZXJuYWxWTTxDb21waWxhYmxlQmxvY2s+IHtcbiAgY29tcGlsZShibG9jazogQ29tcGlsYWJsZVRlbXBsYXRlKTogbnVtYmVyO1xuICByZWFkb25seSBydW50aW1lOiBKaXRSdW50aW1lQ29udGV4dDtcbiAgcmVhZG9ubHkgY29udGV4dDogU3ludGF4Q29tcGlsYXRpb25Db250ZXh0O1xufVxuXG5jbGFzcyBTdGFja3M8QyBleHRlbmRzIEppdE9yQW90QmxvY2s+IHtcbiAgcmVhZG9ubHkgc2NvcGUgPSBuZXcgU3RhY2s8U2NvcGU8Qz4+KCk7XG4gIHJlYWRvbmx5IGR5bmFtaWNTY29wZSA9IG5ldyBTdGFjazxEeW5hbWljU2NvcGU+KCk7XG4gIHJlYWRvbmx5IHVwZGF0aW5nID0gbmV3IFN0YWNrPExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+PigpO1xuICByZWFkb25seSBjYWNoZSA9IG5ldyBTdGFjazxPcHRpb248VXBkYXRpbmdPcGNvZGU+PigpO1xuICByZWFkb25seSBsaXN0ID0gbmV3IFN0YWNrPExpc3RCbG9ja09wY29kZT4oKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYWJzdHJhY3QgY2xhc3MgVk08QyBleHRlbmRzIEppdE9yQW90QmxvY2s+IGltcGxlbWVudHMgUHVibGljVk0sIEludGVybmFsVk08Qz4ge1xuICBwcml2YXRlIHJlYWRvbmx5IFtTVEFDS1NdID0gbmV3IFN0YWNrczxDPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IFtIRUFQXTogUnVudGltZUhlYXA7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJ1Y3Rvcjogb2JqZWN0O1xuICBwcml2YXRlIHJlYWRvbmx5IFtERVNUUlVDVE9SX1NUQUNLXSA9IG5ldyBTdGFjazxvYmplY3Q+KCk7XG4gIHJlYWRvbmx5IFtDT05TVEFOVFNdOiBSdW50aW1lQ29uc3RhbnRzO1xuICByZWFkb25seSBbQVJHU106IFZNQXJndW1lbnRzSW1wbDtcbiAgcmVhZG9ubHkgW0lOTkVSX1ZNXTogTG93TGV2ZWxWTTtcblxuICBnZXQgc3RhY2soKTogRXZhbHVhdGlvblN0YWNrIHtcbiAgICByZXR1cm4gdGhpc1tJTk5FUl9WTV0uc3RhY2sgYXMgRXZhbHVhdGlvblN0YWNrO1xuICB9XG5cbiAgLyogUmVnaXN0ZXJzICovXG5cbiAgZ2V0IHBjKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXNbSU5ORVJfVk1dLmZldGNoUmVnaXN0ZXIoJHBjKTtcbiAgfVxuXG4gIHB1YmxpYyBzMDogdW5rbm93biA9IG51bGw7XG4gIHB1YmxpYyBzMTogdW5rbm93biA9IG51bGw7XG4gIHB1YmxpYyB0MDogdW5rbm93biA9IG51bGw7XG4gIHB1YmxpYyB0MTogdW5rbm93biA9IG51bGw7XG4gIHB1YmxpYyB2MDogdW5rbm93biA9IG51bGw7XG5cbiAgLy8gRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXIgb250byB0aGUgc3RhY2tcbiAgZmV0Y2gocmVnaXN0ZXI6IFN5c2NhbGxSZWdpc3Rlcik6IHZvaWQge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLmZldGNoVmFsdWUocmVnaXN0ZXIpKTtcbiAgfVxuXG4gIC8vIExvYWQgYSB2YWx1ZSBmcm9tIHRoZSBzdGFjayBpbnRvIGEgcmVnaXN0ZXJcbiAgbG9hZChyZWdpc3RlcjogU3lzY2FsbFJlZ2lzdGVyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5zdGFjay5wb3AoKTtcblxuICAgIHRoaXMubG9hZFZhbHVlKHJlZ2lzdGVyLCB2YWx1ZSk7XG4gIH1cblxuICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlclxuICBmZXRjaFZhbHVlKHJlZ2lzdGVyOiBNYWNoaW5lUmVnaXN0ZXIpOiBudW1iZXI7XG4gIGZldGNoVmFsdWU8VD4ocmVnaXN0ZXI6IFJlZ2lzdGVyKTogVDtcbiAgZmV0Y2hWYWx1ZShyZWdpc3RlcjogUmVnaXN0ZXIgfCBNYWNoaW5lUmVnaXN0ZXIpOiB1bmtub3duIHtcbiAgICBpZiAoaXNMb3dMZXZlbFJlZ2lzdGVyKHJlZ2lzdGVyKSkge1xuICAgICAgcmV0dXJuIHRoaXNbSU5ORVJfVk1dLmZldGNoUmVnaXN0ZXIocmVnaXN0ZXIpO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVnaXN0ZXIpIHtcbiAgICAgIGNhc2UgJHMwOlxuICAgICAgICByZXR1cm4gdGhpcy5zMDtcbiAgICAgIGNhc2UgJHMxOlxuICAgICAgICByZXR1cm4gdGhpcy5zMTtcbiAgICAgIGNhc2UgJHQwOlxuICAgICAgICByZXR1cm4gdGhpcy50MDtcbiAgICAgIGNhc2UgJHQxOlxuICAgICAgICByZXR1cm4gdGhpcy50MTtcbiAgICAgIGNhc2UgJHYwOlxuICAgICAgICByZXR1cm4gdGhpcy52MDtcbiAgICB9XG4gIH1cblxuICAvLyBMb2FkIGEgdmFsdWUgaW50byBhIHJlZ2lzdGVyXG5cbiAgbG9hZFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3RlciB8IE1hY2hpbmVSZWdpc3RlciwgdmFsdWU6IFQpOiB2b2lkIHtcbiAgICBpZiAoaXNMb3dMZXZlbFJlZ2lzdGVyKHJlZ2lzdGVyKSkge1xuICAgICAgdGhpc1tJTk5FUl9WTV0ubG9hZFJlZ2lzdGVyKHJlZ2lzdGVyLCAodmFsdWUgYXMgYW55KSBhcyBudW1iZXIpO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVnaXN0ZXIpIHtcbiAgICAgIGNhc2UgJHMwOlxuICAgICAgICB0aGlzLnMwID0gdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAkczE6XG4gICAgICAgIHRoaXMuczEgPSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICR0MDpcbiAgICAgICAgdGhpcy50MCA9IHZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJHQxOlxuICAgICAgICB0aGlzLnQxID0gdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAkdjA6XG4gICAgICAgIHRoaXMudjAgPSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1pZ3JhdGVkIHRvIElubmVyXG4gICAqL1xuXG4gIC8vIFN0YXJ0IGEgbmV3IGZyYW1lIGFuZCBzYXZlICRyYSBhbmQgJGZwIG9uIHRoZSBzdGFja1xuICBwdXNoRnJhbWUoKSB7XG4gICAgdGhpc1tJTk5FUl9WTV0ucHVzaEZyYW1lKCk7XG4gIH1cblxuICAvLyBSZXN0b3JlICRyYSwgJHNwIGFuZCAkZnBcbiAgcG9wRnJhbWUoKSB7XG4gICAgdGhpc1tJTk5FUl9WTV0ucG9wRnJhbWUoKTtcbiAgfVxuXG4gIC8vIEp1bXAgdG8gYW4gYWRkcmVzcyBpbiBgcHJvZ3JhbWBcbiAgZ290byhvZmZzZXQ6IG51bWJlcikge1xuICAgIHRoaXNbSU5ORVJfVk1dLmdvdG8ob2Zmc2V0KTtcbiAgfVxuXG4gIC8vIFNhdmUgJHBjIGludG8gJHJhLCB0aGVuIGp1bXAgdG8gYSBuZXcgYWRkcmVzcyBpbiBgcHJvZ3JhbWAgKGphbCBpbiBNSVBTKVxuICBjYWxsKGhhbmRsZTogbnVtYmVyKSB7XG4gICAgdGhpc1tJTk5FUl9WTV0uY2FsbChoYW5kbGUpO1xuICB9XG5cbiAgLy8gUHV0IGEgc3BlY2lmaWMgYHByb2dyYW1gIGFkZHJlc3MgaW4gJHJhXG4gIHJldHVyblRvKG9mZnNldDogbnVtYmVyKSB7XG4gICAgdGhpc1tJTk5FUl9WTV0ucmV0dXJuVG8ob2Zmc2V0KTtcbiAgfVxuXG4gIC8vIFJldHVybiB0byB0aGUgYHByb2dyYW1gIGFkZHJlc3Mgc3RvcmVkIGluICRyYVxuICByZXR1cm4oKSB7XG4gICAgdGhpc1tJTk5FUl9WTV0ucmV0dXJuKCk7XG4gIH1cblxuICAvKipcbiAgICogRW5kIG9mIG1pZ3JhdGVkLlxuICAgKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBydW50aW1lOiBSdW50aW1lQ29udGV4dCxcbiAgICB7IHBjLCBzY29wZSwgZHluYW1pY1Njb3BlLCBzdGFjayB9OiBWTVN0YXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFN0YWNrOiBFbGVtZW50QnVpbGRlclxuICApIHtcbiAgICBsZXQgZXZhbFN0YWNrID0gRXZhbHVhdGlvblN0YWNrSW1wbC5yZXN0b3JlKHN0YWNrKTtcblxuICAgIGFzc2VydCh0eXBlb2YgcGMgPT09ICdudW1iZXInLCAncGMgaXMgYSBudW1iZXInKTtcblxuICAgIGV2YWxTdGFja1tSRUdJU1RFUlNdWyRwY10gPSBwYztcbiAgICBldmFsU3RhY2tbUkVHSVNURVJTXVskc3BdID0gc3RhY2subGVuZ3RoIC0gMTtcbiAgICBldmFsU3RhY2tbUkVHSVNURVJTXVskZnBdID0gLTE7XG5cbiAgICB0aGlzW0hFQVBdID0gdGhpcy5wcm9ncmFtLmhlYXA7XG4gICAgdGhpc1tDT05TVEFOVFNdID0gdGhpcy5wcm9ncmFtLmNvbnN0YW50cztcbiAgICB0aGlzLmVsZW1lbnRTdGFjayA9IGVsZW1lbnRTdGFjaztcbiAgICB0aGlzW1NUQUNLU10uc2NvcGUucHVzaChzY29wZSk7XG4gICAgdGhpc1tTVEFDS1NdLmR5bmFtaWNTY29wZS5wdXNoKGR5bmFtaWNTY29wZSk7XG4gICAgdGhpc1tBUkdTXSA9IG5ldyBWTUFyZ3VtZW50c0ltcGwoKTtcbiAgICB0aGlzW0lOTkVSX1ZNXSA9IG5ldyBMb3dMZXZlbFZNKFxuICAgICAgZXZhbFN0YWNrLFxuICAgICAgdGhpc1tIRUFQXSxcbiAgICAgIHJ1bnRpbWUucHJvZ3JhbSxcbiAgICAgIHtcbiAgICAgICAgZGVidWdCZWZvcmU6IChvcGNvZGU6IFJ1bnRpbWVPcEltcGwpOiBEZWJ1Z1N0YXRlID0+IHtcbiAgICAgICAgICByZXR1cm4gQVBQRU5EX09QQ09ERVMuZGVidWdCZWZvcmUodGhpcywgb3Bjb2RlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBkZWJ1Z0FmdGVyOiAoc3RhdGU6IERlYnVnU3RhdGUpOiB2b2lkID0+IHtcbiAgICAgICAgICBBUFBFTkRfT1BDT0RFUy5kZWJ1Z0FmdGVyKHRoaXMsIHN0YXRlKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBldmFsU3RhY2tbUkVHSVNURVJTXVxuICAgICk7XG5cbiAgICB0aGlzLmRlc3RydWN0b3IgPSB7fTtcbiAgICB0aGlzW0RFU1RSVUNUT1JfU1RBQ0tdLnB1c2godGhpcy5kZXN0cnVjdG9yKTtcbiAgfVxuXG4gIGdldCBwcm9ncmFtKCk6IFJ1bnRpbWVQcm9ncmFtIHtcbiAgICByZXR1cm4gdGhpcy5ydW50aW1lLnByb2dyYW07XG4gIH1cblxuICBnZXQgZW52KCk6IEVudmlyb25tZW50IHtcbiAgICByZXR1cm4gdGhpcy5ydW50aW1lLmVudjtcbiAgfVxuXG4gIGNhcHR1cmVTdGF0ZShhcmdzOiBudW1iZXIsIHBjID0gdGhpc1tJTk5FUl9WTV0uZmV0Y2hSZWdpc3RlcigkcGMpKTogVk1TdGF0ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBjLFxuICAgICAgZHluYW1pY1Njb3BlOiB0aGlzLmR5bmFtaWNTY29wZSgpLFxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGUoKSxcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLmNhcHR1cmUoYXJncyksXG4gICAgfTtcbiAgfVxuXG4gIGFic3RyYWN0IGNhcHR1cmUoYXJnczogbnVtYmVyLCBwYz86IG51bWJlcik6IFJlc3VtYWJsZVZNU3RhdGU8SW50ZXJuYWxWTT47XG5cbiAgYmVnaW5DYWNoZUdyb3VwKCkge1xuICAgIHRoaXNbU1RBQ0tTXS5jYWNoZS5wdXNoKHRoaXMudXBkYXRpbmcoKS50YWlsKCkpO1xuICB9XG5cbiAgY29tbWl0Q2FjaGVHcm91cCgpIHtcbiAgICBsZXQgRU5EID0gbmV3IExhYmVsT3Bjb2RlKCdFTkQnKTtcblxuICAgIGxldCBvcGNvZGVzID0gdGhpcy51cGRhdGluZygpO1xuICAgIGxldCBtYXJrZXIgPSB0aGlzW1NUQUNLU10uY2FjaGUucG9wKCk7XG4gICAgbGV0IGhlYWQgPSBtYXJrZXIgPyBvcGNvZGVzLm5leHROb2RlKG1hcmtlcikgOiBvcGNvZGVzLmhlYWQoKTtcbiAgICBsZXQgdGFpbCA9IG9wY29kZXMudGFpbCgpO1xuICAgIGxldCB0YWcgPSBjb21iaW5lU2xpY2UobmV3IExpc3RTbGljZShoZWFkLCB0YWlsKSk7XG5cbiAgICBsZXQgZ3VhcmQgPSBuZXcgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUodGFnLCBFTkQpO1xuXG4gICAgb3Bjb2Rlcy5pbnNlcnRCZWZvcmUoZ3VhcmQsIGhlYWQpO1xuICAgIG9wY29kZXMuYXBwZW5kKG5ldyBEaWRNb2RpZnlPcGNvZGUoZ3VhcmQpKTtcbiAgICBvcGNvZGVzLmFwcGVuZChFTkQpO1xuICB9XG5cbiAgZW50ZXIoYXJnczogbnVtYmVyKSB7XG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCk7XG5cbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoYXJncyk7XG4gICAgbGV0IGJsb2NrID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuXG4gICAgbGV0IHRyeU9wY29kZSA9IG5ldyBUcnlPcGNvZGUoc3RhdGUsIHRoaXMucnVudGltZSwgYmxvY2ssIHVwZGF0aW5nKTtcblxuICAgIHRoaXMuZGlkRW50ZXIodHJ5T3Bjb2RlKTtcbiAgfVxuXG4gIGl0ZXJhdGUoXG4gICAgbWVtbzogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPixcbiAgICB2YWx1ZTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPlxuICApOiBUcnlPcGNvZGUge1xuICAgIGxldCBzdGFjayA9IHRoaXMuc3RhY2s7XG4gICAgc3RhY2sucHVzaCh2YWx1ZSk7XG4gICAgc3RhY2sucHVzaChtZW1vKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgyKTtcbiAgICBsZXQgYmxvY2sgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG5cbiAgICAvLyBsZXQgaXAgPSB0aGlzLmlwO1xuICAgIC8vIHRoaXMuaXAgPSBlbmQgKyA0O1xuICAgIC8vIHRoaXMuZnJhbWVzLnB1c2goaXApO1xuXG4gICAgcmV0dXJuIG5ldyBUcnlPcGNvZGUoc3RhdGUsIHRoaXMucnVudGltZSwgYmxvY2ssIG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpKTtcbiAgfVxuXG4gIGVudGVySXRlbShrZXk6IHN0cmluZywgb3Bjb2RlOiBUcnlPcGNvZGUpIHtcbiAgICB0aGlzLmxpc3RCbG9jaygpLm1hcC5zZXQoa2V5LCBvcGNvZGUpO1xuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgfVxuXG4gIGVudGVyTGlzdChvZmZzZXQ6IG51bWJlcikge1xuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PEJsb2NrT3Bjb2RlPigpO1xuXG4gICAgbGV0IGFkZHIgPSB0aGlzW0lOTkVSX1ZNXS50YXJnZXQob2Zmc2V0KTtcbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMCwgYWRkcik7XG4gICAgbGV0IGxpc3QgPSB0aGlzLmVsZW1lbnRzKCkucHVzaEJsb2NrTGlzdCh1cGRhdGluZyk7XG4gICAgbGV0IGFydGlmYWN0cyA9IHRoaXMuc3RhY2sucGVlazxSZWZlcmVuY2VJdGVyYXRvcj4oKS5hcnRpZmFjdHM7XG5cbiAgICBsZXQgb3Bjb2RlID0gbmV3IExpc3RCbG9ja09wY29kZShzdGF0ZSwgdGhpcy5ydW50aW1lLCBsaXN0LCB1cGRhdGluZywgYXJ0aWZhY3RzKTtcblxuICAgIHRoaXNbU1RBQ0tTXS5saXN0LnB1c2gob3Bjb2RlKTtcblxuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlkRW50ZXIob3Bjb2RlOiBCbG9ja09wY29kZSkge1xuICAgIHRoaXMuYXNzb2NpYXRlRGVzdHJ1Y3RvcihkZXN0cnVjdG9yKG9wY29kZSkpO1xuICAgIHRoaXNbREVTVFJVQ1RPUl9TVEFDS10ucHVzaChvcGNvZGUpO1xuICAgIHRoaXMudXBkYXRlV2l0aChvcGNvZGUpO1xuICAgIHRoaXMucHVzaFVwZGF0aW5nKG9wY29kZS5jaGlsZHJlbik7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXNbREVTVFJVQ1RPUl9TVEFDS10ucG9wKCk7XG4gICAgdGhpcy5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgdGhpcy5wb3BVcGRhdGluZygpO1xuXG4gICAgbGV0IHBhcmVudCA9IHRoaXMudXBkYXRpbmcoKS50YWlsKCkgYXMgQmxvY2tPcGNvZGU7XG5cbiAgICBwYXJlbnQuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gIH1cblxuICBleGl0TGlzdCgpIHtcbiAgICB0aGlzLmV4aXQoKTtcbiAgICB0aGlzW1NUQUNLU10ubGlzdC5wb3AoKTtcbiAgfVxuXG4gIHB1c2hVcGRhdGluZyhsaXN0ID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpOiB2b2lkIHtcbiAgICB0aGlzW1NUQUNLU10udXBkYXRpbmcucHVzaChsaXN0KTtcbiAgfVxuXG4gIHBvcFVwZGF0aW5nKCk6IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+IHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXNbU1RBQ0tTXS51cGRhdGluZy5wb3AoKSwgXCJjYW4ndCBwb3AgYW4gZW1wdHkgc3RhY2tcIik7XG4gIH1cblxuICB1cGRhdGVXaXRoKG9wY29kZTogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICB0aGlzLnVwZGF0aW5nKCkuYXBwZW5kKG9wY29kZSk7XG4gIH1cblxuICBsaXN0QmxvY2soKTogTGlzdEJsb2NrT3Bjb2RlIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXNbU1RBQ0tTXS5saXN0LmN1cnJlbnQsICdleHBlY3RlZCBhIGxpc3QgYmxvY2snKTtcbiAgfVxuXG4gIGFzc29jaWF0ZURlc3RydWN0b3IoY2hpbGQ6IERyb3ApOiB2b2lkIHtcbiAgICBpZiAoIWlzRHJvcChjaGlsZCkpIHJldHVybjtcbiAgICBsZXQgcGFyZW50ID0gZXhwZWN0KHRoaXNbREVTVFJVQ1RPUl9TVEFDS10uY3VycmVudCwgJ0V4cGVjdGVkIGRlc3RydWN0b3IgcGFyZW50Jyk7XG4gICAgYXNzb2NpYXRlRGVzdHJ1Y3RvcihwYXJlbnQsIGNoaWxkKTtcbiAgfVxuXG4gIGFzc29jaWF0ZURlc3Ryb3lhYmxlKGNoaWxkOiBTeW1ib2xEZXN0cm95YWJsZSB8IERlc3Ryb3lhYmxlKTogdm9pZCB7XG4gICAgdGhpcy5hc3NvY2lhdGVEZXN0cnVjdG9yKGRlc3RydWN0b3IoY2hpbGQpKTtcbiAgfVxuXG4gIHRyeVVwZGF0aW5nKCk6IE9wdGlvbjxMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPj4ge1xuICAgIHJldHVybiB0aGlzW1NUQUNLU10udXBkYXRpbmcuY3VycmVudDtcbiAgfVxuXG4gIHVwZGF0aW5nKCk6IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+IHtcbiAgICByZXR1cm4gZXhwZWN0KFxuICAgICAgdGhpc1tTVEFDS1NdLnVwZGF0aW5nLmN1cnJlbnQsXG4gICAgICAnZXhwZWN0ZWQgdXBkYXRpbmcgb3Bjb2RlIG9uIHRoZSB1cGRhdGluZyBvcGNvZGUgc3RhY2snXG4gICAgKTtcbiAgfVxuXG4gIGVsZW1lbnRzKCk6IEVsZW1lbnRCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50U3RhY2s7XG4gIH1cblxuICBzY29wZSgpOiBTY29wZTxDPiB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzW1NUQUNLU10uc2NvcGUuY3VycmVudCwgJ2V4cGVjdGVkIHNjb3BlIG9uIHRoZSBzY29wZSBzdGFjaycpO1xuICB9XG5cbiAgZHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZSB7XG4gICAgcmV0dXJuIGV4cGVjdChcbiAgICAgIHRoaXNbU1RBQ0tTXS5keW5hbWljU2NvcGUuY3VycmVudCxcbiAgICAgICdleHBlY3RlZCBkeW5hbWljIHNjb3BlIG9uIHRoZSBkeW5hbWljIHNjb3BlIHN0YWNrJ1xuICAgICk7XG4gIH1cblxuICBwdXNoQ2hpbGRTY29wZSgpIHtcbiAgICB0aGlzW1NUQUNLU10uc2NvcGUucHVzaCh0aGlzLnNjb3BlKCkuY2hpbGQoKSk7XG4gIH1cblxuICBwdXNoRHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZSB7XG4gICAgbGV0IGNoaWxkID0gdGhpcy5keW5hbWljU2NvcGUoKS5jaGlsZCgpO1xuICAgIHRoaXNbU1RBQ0tTXS5keW5hbWljU2NvcGUucHVzaChjaGlsZCk7XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9XG5cbiAgcHVzaFJvb3RTY29wZShzaXplOiBudW1iZXIpOiBQYXJ0aWFsU2NvcGU8Qz4ge1xuICAgIGxldCBzY29wZSA9IFNjb3BlSW1wbC5zaXplZDxDPihzaXplKTtcbiAgICB0aGlzW1NUQUNLU10uc2NvcGUucHVzaChzY29wZSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcHVzaFNjb3BlKHNjb3BlOiBTY29wZTxDPikge1xuICAgIHRoaXNbU1RBQ0tTXS5zY29wZS5wdXNoKHNjb3BlKTtcbiAgfVxuXG4gIHBvcFNjb3BlKCkge1xuICAgIHRoaXNbU1RBQ0tTXS5zY29wZS5wb3AoKTtcbiAgfVxuXG4gIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzW1NUQUNLU10uZHluYW1pY1Njb3BlLnBvcCgpO1xuICB9XG5cbiAgLy8vIFNDT1BFIEhFTFBFUlNcblxuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTZWxmKCk7XG4gIH1cblxuICByZWZlcmVuY2VGb3JTeW1ib2woc3ltYm9sOiBudW1iZXIpOiBQYXRoUmVmZXJlbmNlPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFN5bWJvbChzeW1ib2wpO1xuICB9XG5cbiAgLy8vIEVYRUNVVElPTlxuXG4gIGV4ZWN1dGUoaW5pdGlhbGl6ZT86ICh2bTogdGhpcykgPT4gdm9pZCk6IFJlbmRlclJlc3VsdCB7XG4gICAgaWYgKExPQ0FMX1NIT1VMRF9MT0cpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBFWEVDVVRJTkcgRlJPTSAke3RoaXNbSU5ORVJfVk1dLmZldGNoUmVnaXN0ZXIoJHBjKX1gKTtcbiAgICB9XG5cbiAgICBpZiAoaW5pdGlhbGl6ZSkgaW5pdGlhbGl6ZSh0aGlzKTtcblxuICAgIGxldCByZXN1bHQ6IFJpY2hJdGVyYXRvclJlc3VsdDxudWxsLCBSZW5kZXJSZXN1bHQ+O1xuXG4gICAgdHJ5IHtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHJlc3VsdCA9IHRoaXMubmV4dCgpO1xuICAgICAgICBpZiAocmVzdWx0LmRvbmUpIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBJZiBhbnkgZXhpc3RpbmcgYmxvY2tzIGFyZSBvcGVuLCBkdWUgdG8gYW4gZXJyb3Igb3Igc29tZXRoaW5nIGxpa2VcbiAgICAgIC8vIHRoYXQsIHdlIG5lZWQgdG8gY2xvc2UgdGhlbSBhbGwgYW5kIGNsZWFuIHRoaW5ncyB1cCBwcm9wZXJseS5cbiAgICAgIGxldCBlbGVtZW50cyA9IHRoaXMuZWxlbWVudHMoKTtcblxuICAgICAgd2hpbGUgKGVsZW1lbnRzLmhhc0Jsb2Nrcykge1xuICAgICAgICBlbGVtZW50cy5wb3BCbG9jaygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gIH1cblxuICBuZXh0KCk6IFJpY2hJdGVyYXRvclJlc3VsdDxudWxsLCBSZW5kZXJSZXN1bHQ+IHtcbiAgICBsZXQgeyBlbnYsIGVsZW1lbnRTdGFjayB9ID0gdGhpcztcbiAgICBsZXQgb3Bjb2RlID0gdGhpc1tJTk5FUl9WTV0ubmV4dFN0YXRlbWVudCgpO1xuICAgIGxldCByZXN1bHQ6IFJpY2hJdGVyYXRvclJlc3VsdDxudWxsLCBSZW5kZXJSZXN1bHQ+O1xuICAgIGlmIChvcGNvZGUgIT09IG51bGwpIHtcbiAgICAgIHRoaXNbSU5ORVJfVk1dLmV2YWx1YXRlT3V0ZXIob3Bjb2RlLCB0aGlzKTtcbiAgICAgIHJlc3VsdCA9IHsgZG9uZTogZmFsc2UsIHZhbHVlOiBudWxsIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFVubG9hZCB0aGUgc3RhY2tcbiAgICAgIHRoaXMuc3RhY2sucmVzZXQoKTtcblxuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBkb25lOiB0cnVlLFxuICAgICAgICB2YWx1ZTogbmV3IFJlbmRlclJlc3VsdEltcGwoXG4gICAgICAgICAgZW52LFxuICAgICAgICAgIHRoaXMucG9wVXBkYXRpbmcoKSxcbiAgICAgICAgICBlbGVtZW50U3RhY2sucG9wQmxvY2soKSxcbiAgICAgICAgICB0aGlzLmRlc3RydWN0b3JcbiAgICAgICAgKSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBiaW5kRHluYW1pY1Njb3BlKG5hbWVzOiBudW1iZXJbXSkge1xuICAgIGxldCBzY29wZSA9IHRoaXMuZHluYW1pY1Njb3BlKCk7XG5cbiAgICBmb3IgKGxldCBpID0gbmFtZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCBuYW1lID0gdGhpc1tDT05TVEFOVFNdLmdldFN0cmluZyhuYW1lc1tpXSk7XG4gICAgICBzY29wZS5zZXQobmFtZSwgdGhpcy5zdGFjay5wb3A8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTx1bmtub3duPj4oKSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHZtU3RhdGU8QyBleHRlbmRzIEppdE9yQW90QmxvY2s+KFxuICBwYzogbnVtYmVyLFxuICBzY29wZTogU2NvcGU8Qz4gPSBTY29wZUltcGwucm9vdDxDPihVTkRFRklORURfUkVGRVJFTkNFLCAwKSxcbiAgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGVcbikge1xuICByZXR1cm4ge1xuICAgIHBjLFxuICAgIHNjb3BlLFxuICAgIGR5bmFtaWNTY29wZSxcbiAgICBzdGFjazogW10sXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWluaW1hbEluaXRPcHRpb25zIHtcbiAgaGFuZGxlOiBudW1iZXI7XG4gIHRyZWVCdWlsZGVyOiBFbGVtZW50QnVpbGRlcjtcbiAgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5pdE9wdGlvbnMgZXh0ZW5kcyBNaW5pbWFsSW5pdE9wdGlvbnMge1xuICBzZWxmOiBQYXRoUmVmZXJlbmNlPHVua25vd24+O1xufVxuXG5leHBvcnQgY2xhc3MgQW90Vk0gZXh0ZW5kcyBWTTxudW1iZXI+IGltcGxlbWVudHMgSW50ZXJuYWxWTTxudW1iZXI+IHtcbiAgc3RhdGljIGVtcHR5KFxuICAgIHJ1bnRpbWU6IEFvdFJ1bnRpbWVDb250ZXh0LFxuICAgIHsgaGFuZGxlLCB0cmVlQnVpbGRlciwgZHluYW1pY1Njb3BlIH06IE1pbmltYWxJbml0T3B0aW9uc1xuICApOiBJbnRlcm5hbFZNPG51bWJlcj4ge1xuICAgIGxldCB2bSA9IGluaXRBT1QoXG4gICAgICBydW50aW1lLFxuICAgICAgdm1TdGF0ZShcbiAgICAgICAgcnVudGltZS5wcm9ncmFtLmhlYXAuZ2V0YWRkcihoYW5kbGUpLFxuICAgICAgICBTY29wZUltcGwucm9vdDxudW1iZXI+KFVOREVGSU5FRF9SRUZFUkVOQ0UsIDApLFxuICAgICAgICBkeW5hbWljU2NvcGVcbiAgICAgICksXG4gICAgICB0cmVlQnVpbGRlclxuICAgICk7XG4gICAgdm0ucHVzaFVwZGF0aW5nKCk7XG4gICAgcmV0dXJuIHZtO1xuICB9XG5cbiAgc3RhdGljIGluaXRpYWwoXG4gICAgcnVudGltZTogQW90UnVudGltZUNvbnRleHQsXG4gICAgeyBoYW5kbGUsIHNlbGYsIHRyZWVCdWlsZGVyLCBkeW5hbWljU2NvcGUgfTogSW5pdE9wdGlvbnNcbiAgKSB7XG4gICAgbGV0IHNjb3BlU2l6ZSA9IHJ1bnRpbWUucHJvZ3JhbS5oZWFwLnNjb3Blc2l6ZW9mKGhhbmRsZSk7XG4gICAgbGV0IHNjb3BlID0gU2NvcGVJbXBsLnJvb3Qoc2VsZiwgc2NvcGVTaXplKTtcbiAgICBsZXQgcGMgPSBjaGVjayhydW50aW1lLnByb2dyYW0uaGVhcC5nZXRhZGRyKGhhbmRsZSksIENoZWNrTnVtYmVyKTtcbiAgICBsZXQgc3RhdGUgPSB2bVN0YXRlKHBjLCBzY29wZSwgZHluYW1pY1Njb3BlKTtcbiAgICBsZXQgdm0gPSBpbml0QU9UKHJ1bnRpbWUsIHN0YXRlLCB0cmVlQnVpbGRlcik7XG4gICAgdm0ucHVzaFVwZGF0aW5nKCk7XG4gICAgcmV0dXJuIHZtO1xuICB9XG5cbiAgY2FwdHVyZShhcmdzOiBudW1iZXIsIHBjID0gdGhpc1tJTk5FUl9WTV0uZmV0Y2hSZWdpc3RlcigkcGMpKTogUmVzdW1hYmxlVk1TdGF0ZTxBb3RWTT4ge1xuICAgIHJldHVybiBuZXcgUmVzdW1hYmxlVk1TdGF0ZUltcGwodGhpcy5jYXB0dXJlU3RhdGUoYXJncywgcGMpLCBpbml0QU9UKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBWbUluaXRDYWxsYmFjazxWIGV4dGVuZHMgSW50ZXJuYWxWTSA9IEludGVybmFsVk0+ID0gKFxuICB0aGlzOiB2b2lkLFxuICBydW50aW1lOiBWIGV4dGVuZHMgSml0Vk0gPyBKaXRSdW50aW1lQ29udGV4dCA6IEFvdFJ1bnRpbWVDb250ZXh0LFxuICBzdGF0ZTogVk1TdGF0ZSxcbiAgYnVpbGRlcjogRWxlbWVudEJ1aWxkZXJcbikgPT4gVjtcblxuZXhwb3J0IHR5cGUgSml0Vm1Jbml0Q2FsbGJhY2s8ViBleHRlbmRzIEludGVybmFsVk0+ID0gKFxuICB0aGlzOiB2b2lkLFxuICBydW50aW1lOiBKaXRSdW50aW1lQ29udGV4dCxcbiAgc3RhdGU6IFZNU3RhdGUsXG4gIGJ1aWxkZXI6IEVsZW1lbnRCdWlsZGVyXG4pID0+IFY7XG5cbmZ1bmN0aW9uIGluaXRBT1QocnVudGltZTogQW90UnVudGltZUNvbnRleHQsIHN0YXRlOiBWTVN0YXRlLCBidWlsZGVyOiBFbGVtZW50QnVpbGRlcik6IEFvdFZNIHtcbiAgcmV0dXJuIG5ldyBBb3RWTShydW50aW1lLCBzdGF0ZSwgYnVpbGRlcik7XG59XG5cbmZ1bmN0aW9uIGluaXRKSVQoY29udGV4dDogU3ludGF4Q29tcGlsYXRpb25Db250ZXh0KTogSml0Vm1Jbml0Q2FsbGJhY2s8Sml0Vk0+IHtcbiAgcmV0dXJuIChydW50aW1lLCBzdGF0ZSwgYnVpbGRlcikgPT4gbmV3IEppdFZNKHJ1bnRpbWUsIHN0YXRlLCBidWlsZGVyLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGNsYXNzIEppdFZNIGV4dGVuZHMgVk08Q29tcGlsYWJsZUJsb2NrPiBpbXBsZW1lbnRzIEludGVybmFsSml0Vk0ge1xuICBzdGF0aWMgaW5pdGlhbChcbiAgICBydW50aW1lOiBKaXRSdW50aW1lQ29udGV4dCxcbiAgICBjb250ZXh0OiBTeW50YXhDb21waWxhdGlvbkNvbnRleHQsXG4gICAgeyBoYW5kbGUsIHNlbGYsIGR5bmFtaWNTY29wZSwgdHJlZUJ1aWxkZXIgfTogSW5pdE9wdGlvbnNcbiAgKSB7XG4gICAgbGV0IHNjb3BlU2l6ZSA9IHJ1bnRpbWUucHJvZ3JhbS5oZWFwLnNjb3Blc2l6ZW9mKGhhbmRsZSk7XG4gICAgbGV0IHNjb3BlID0gU2NvcGVJbXBsLnJvb3Qoc2VsZiwgc2NvcGVTaXplKTtcbiAgICBsZXQgc3RhdGUgPSB2bVN0YXRlKHJ1bnRpbWUucHJvZ3JhbS5oZWFwLmdldGFkZHIoaGFuZGxlKSwgc2NvcGUsIGR5bmFtaWNTY29wZSk7XG4gICAgbGV0IHZtID0gaW5pdEpJVChjb250ZXh0KShydW50aW1lLCBzdGF0ZSwgdHJlZUJ1aWxkZXIpO1xuICAgIHZtLnB1c2hVcGRhdGluZygpO1xuICAgIHJldHVybiB2bTtcbiAgfVxuXG4gIHN0YXRpYyBlbXB0eShcbiAgICBydW50aW1lOiBKaXRSdW50aW1lQ29udGV4dCxcbiAgICB7IGhhbmRsZSwgdHJlZUJ1aWxkZXIsIGR5bmFtaWNTY29wZSB9OiBNaW5pbWFsSW5pdE9wdGlvbnMsXG4gICAgY29udGV4dDogU3ludGF4Q29tcGlsYXRpb25Db250ZXh0XG4gICkge1xuICAgIGxldCB2bSA9IGluaXRKSVQoY29udGV4dCkoXG4gICAgICBydW50aW1lLFxuICAgICAgdm1TdGF0ZShcbiAgICAgICAgcnVudGltZS5wcm9ncmFtLmhlYXAuZ2V0YWRkcihoYW5kbGUpLFxuICAgICAgICBTY29wZUltcGwucm9vdDxDb21waWxhYmxlQmxvY2s+KFVOREVGSU5FRF9SRUZFUkVOQ0UsIDApLFxuICAgICAgICBkeW5hbWljU2NvcGVcbiAgICAgICksXG4gICAgICB0cmVlQnVpbGRlclxuICAgICk7XG4gICAgdm0ucHVzaFVwZGF0aW5nKCk7XG4gICAgcmV0dXJuIHZtO1xuICB9XG5cbiAgcmVhZG9ubHkgcnVudGltZSE6IEppdFJ1bnRpbWVDb250ZXh0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJ1bnRpbWU6IEppdFJ1bnRpbWVDb250ZXh0LFxuICAgIHN0YXRlOiBWTVN0YXRlLFxuICAgIGVsZW1lbnRTdGFjazogRWxlbWVudEJ1aWxkZXIsXG4gICAgcmVhZG9ubHkgY29udGV4dDogU3ludGF4Q29tcGlsYXRpb25Db250ZXh0XG4gICkge1xuICAgIHN1cGVyKHJ1bnRpbWUsIHN0YXRlLCBlbGVtZW50U3RhY2spO1xuICB9XG5cbiAgY2FwdHVyZShhcmdzOiBudW1iZXIsIHBjID0gdGhpc1tJTk5FUl9WTV0uZmV0Y2hSZWdpc3RlcigkcGMpKTogUmVzdW1hYmxlVk1TdGF0ZTxKaXRWTT4ge1xuICAgIHJldHVybiBuZXcgUmVzdW1hYmxlVk1TdGF0ZUltcGwodGhpcy5jYXB0dXJlU3RhdGUoYXJncywgcGMpLCB0aGlzLnJlc3VtZSk7XG4gIH1cblxuICBwcml2YXRlIHJlc3VtZTogVm1Jbml0Q2FsbGJhY2s8Sml0Vk0+ID0gaW5pdEpJVCh0aGlzLmNvbnRleHQpO1xuXG4gIGNvbXBpbGUoYmxvY2s6IENvbXBpbGFibGVUZW1wbGF0ZSk6IG51bWJlciB7XG4gICAgbGV0IGhhbmRsZSA9IHVud3JhcEhhbmRsZShibG9jay5jb21waWxlKHRoaXMuY29udGV4dCkpO1xuXG4gICAgcmV0dXJuIGhhbmRsZTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== |
@@ -90,2 +90,6 @@ var _a; | ||
get hasBlocks() { | ||
return this.blockStack.size > 0; | ||
} | ||
block() { | ||
@@ -480,2 +484,2 @@ return this.blockStack.current; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2VsZW1lbnQtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWNBLFNBQ0UsTUFERixFQUVFLE9BRkYsRUFPRSxLQVBGLEVBU0UsTUFURixRQVVPLGVBVlA7QUFtQkEsU0FBUyxLQUFULEVBQWdCLGNBQWhCLEVBQWdDLFVBQWhDLEVBQTRDLGdCQUE1QyxRQUFvRSxXQUFwRTtBQUNBLFNBQVMsY0FBVCxRQUErQixhQUEvQjs7QUFXQSxNQUFNLEtBQU4sQ0FBVztBQUNULEVBQUEsV0FBQSxDQUFvQixJQUFwQixFQUFvQztBQUFoQixTQUFBLElBQUEsR0FBQSxJQUFBO0FBQW9COztBQUV4QyxFQUFBLFNBQVMsR0FBQTtBQUNQLFdBQU8sS0FBSyxJQUFaO0FBQ0Q7O0FBTFE7O0FBUVgsTUFBTSxJQUFOLENBQVU7QUFDUixFQUFBLFdBQUEsQ0FBb0IsSUFBcEIsRUFBb0M7QUFBaEIsU0FBQSxJQUFBLEdBQUEsSUFBQTtBQUFvQjs7QUFFeEMsRUFBQSxRQUFRLEdBQUE7QUFDTixXQUFPLEtBQUssSUFBWjtBQUNEOztBQUxPOztBQVFWLE9BQU0sTUFBTyxRQUFQLENBQWU7QUFHbkIsRUFBQSxXQUFBLENBQVksTUFBWixFQUEwQjtBQUN4QixTQUFLLE1BQUwsR0FBYyxNQUFkO0FBQ0Q7O0FBRUQsRUFBQSxhQUFhLEdBQUE7QUFDWCxXQUFPLEtBQUssTUFBTCxDQUFZLGFBQVosRUFBUDtBQUNEOztBQUVELEVBQUEsU0FBUyxHQUFBO0FBQ1AsV0FBTyxLQUFLLE1BQUwsQ0FBWSxTQUFaLEVBQVA7QUFDRDs7QUFFRCxFQUFBLFFBQVEsR0FBQTtBQUNOLFdBQU8sS0FBSyxNQUFMLENBQVksUUFBWixFQUFQO0FBQ0Q7O0FBakJrQjtBQW9CckIsT0FBTyxNQUFNLFlBQVksR0FBc0IsTUFBTSxDQUFDLGNBQUQsQ0FBOUM7QUFFUCxPQUFNLE1BQU8saUJBQVAsQ0FBd0I7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Q0EsU0FBSyxTQUFMLEdBQWlCLFNBQWpCO0FBQ0Q7O0FBRUQsRUFBQSxhQUFhLEdBQUE7QUFDWCxXQUFPLEtBQUssTUFBWjtBQUNEOztBQUVELEVBQUEsU0FBUyxHQUFBO0FBQ1AsUUFBSSxJQUFJLEdBQ04sS0FBSyxTQUFMLENBQWUsSUFBZixFQURGO0FBS0EsV0FBTyxJQUFJLENBQUMsU0FBTCxFQUFQO0FBQ0Q7O0FBRUQsRUFBQSxRQUFRLEdBQUE7QUFDTixRQUFJLElBQUksR0FDTixLQUFLLFNBQUwsQ0FBZSxJQUFmLEVBREY7QUFLQSxXQUFPLElBQUksQ0FBQyxRQUFMLEVBQVA7QUFDRDs7QUFFRCxFQUFBLFdBQVcsQ0FBQyxRQUFELEVBQXdCO0FBQUEsY0FDakMsTUFBTSxDQUFDLEtBQUQsRUFBUSxpREFBUixDQUQyQjtBQUVsQzs7QUFFRCxFQUFBLFlBQVksR0FBQTtBQUFBLGNBQ1YsTUFBTSxDQUFDLEtBQUQsRUFBUSxrREFBUixDQURJO0FBRVg7O0FBRUQsRUFBQSxhQUFhLENBQUMsS0FBRCxFQUFrQjtBQUFBLGNBQzdCLE1BQU0sQ0FBQyxLQUFELEVBQVEsdURBQVIsQ0FEdUI7QUFFOUI7O0FBRUQsRUFBQSxlQUFlLENBQUMsT0FBRCxFQUFnQixDQUFJOztBQUVuQyxFQUFBLFFBQVEsQ0FBQyxNQUFELEVBQXVCO0FBQUEsY0FDN0IsTUFBTSxDQUFDLEtBQUssU0FBTCxDQUFlLElBQWYsT0FBMEIsSUFBM0IsRUFBaUMsNEJBQWpDLENBRHVCO0FBRTlCOztBQS9DZ0I7O0FBa0RuQixPQUFNLFNBQVUsYUFBVixDQUF3QixHQUF4QixFQUEwQyxNQUExQyxFQUE0RDtBQUNoRSxTQUFPLGlCQUFpQixDQUFDLGdCQUFsQixDQUFtQyxHQUFuQyxFQUF3QyxNQUF4QyxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCb3VuZHMsXG4gIEVsZW1lbnRPcGVyYXRpb25zLFxuICBFbnZpcm9ubWVudCxcbiAgR2xpbW1lclRyZWVDaGFuZ2VzLFxuICBHbGltbWVyVHJlZUNvbnN0cnVjdGlvbixcbiAgU3ltYm9sRGVzdHJveWFibGUsXG4gIEVsZW1lbnRCdWlsZGVyLFxuICBMaXZlQmxvY2ssXG4gIEN1cnNvclN0YWNrU3ltYm9sLFxuICBVcGRhdGFibGVCbG9jayxcbiAgQ3Vyc29yLFxuICBNb2RpZmllck1hbmFnZXIsXG59IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgYXNzZXJ0LFxuICBERVNUUk9ZLFxuICBleHBlY3QsXG4gIExpbmtlZExpc3QsXG4gIExpbmtlZExpc3ROb2RlLFxuICBPcHRpb24sXG4gIFN0YWNrLFxuICBNYXliZSxcbiAgc3ltYm9sLFxufSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIEF0dHJOYW1lc3BhY2UsXG4gIFNpbXBsZUNvbW1lbnQsXG4gIFNpbXBsZURvY3VtZW50RnJhZ21lbnQsXG4gIFNpbXBsZUVsZW1lbnQsXG4gIFNpbXBsZU5vZGUsXG4gIFNpbXBsZVRleHQsXG59IGZyb20gJ0BzaW1wbGUtZG9tL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBjbGVhciwgQ29uY3JldGVCb3VuZHMsIEN1cnNvckltcGwsIFNpbmdsZU5vZGVCb3VuZHMgfSBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0IHsgZGV0YWNoQ2hpbGRyZW4gfSBmcm9tICcuLi9saWZldGltZSc7XG5pbXBvcnQgeyBEeW5hbWljQXR0cmlidXRlIH0gZnJvbSAnLi9hdHRyaWJ1dGVzL2R5bmFtaWMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpcnN0Tm9kZSB7XG4gIGZpcnN0Tm9kZSgpOiBTaW1wbGVOb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhc3ROb2RlIHtcbiAgbGFzdE5vZGUoKTogU2ltcGxlTm9kZTtcbn1cblxuY2xhc3MgRmlyc3Qge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5vZGU6IFNpbXBsZU5vZGUpIHt9XG5cbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cbn1cblxuY2xhc3MgTGFzdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbm9kZTogU2ltcGxlTm9kZSkge31cblxuICBsYXN0Tm9kZSgpOiBTaW1wbGVOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGcmFnbWVudCBpbXBsZW1lbnRzIEJvdW5kcyB7XG4gIHByaXZhdGUgYm91bmRzOiBCb3VuZHM7XG5cbiAgY29uc3RydWN0b3IoYm91bmRzOiBCb3VuZHMpIHtcbiAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgfVxuXG4gIHBhcmVudEVsZW1lbnQoKTogU2ltcGxlRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpOiBTaW1wbGVOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpOiBTaW1wbGVOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMubGFzdE5vZGUoKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgQ1VSU09SX1NUQUNLOiBDdXJzb3JTdGFja1N5bWJvbCA9IHN5bWJvbCgnQ1VSU09SX1NUQUNLJyk7XG5cbmV4cG9ydCBjbGFzcyBOZXdFbGVtZW50QnVpbGRlciBpbXBsZW1lbnRzIEVsZW1lbnRCdWlsZGVyIHtcbiAgcHVibGljIGRvbTogR2xpbW1lclRyZWVDb25zdHJ1Y3Rpb247XG4gIHB1YmxpYyB1cGRhdGVPcGVyYXRpb25zOiBHbGltbWVyVHJlZUNoYW5nZXM7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rpbmc6IE9wdGlvbjxTaW1wbGVFbGVtZW50PiA9IG51bGw7XG4gIHB1YmxpYyBvcGVyYXRpb25zOiBPcHRpb248RWxlbWVudE9wZXJhdGlvbnM+ID0gbnVsbDtcbiAgcHJpdmF0ZSBlbnY6IEVudmlyb25tZW50O1xuXG4gIFtDVVJTT1JfU1RBQ0tdID0gbmV3IFN0YWNrPEN1cnNvcj4oKTtcbiAgcHJpdmF0ZSBtb2RpZmllclN0YWNrID0gbmV3IFN0YWNrPE9wdGlvbjxbTW9kaWZpZXJNYW5hZ2VyLCB1bmtub3duXVtdPj4oKTtcbiAgcHJpdmF0ZSBibG9ja1N0YWNrID0gbmV3IFN0YWNrPExpdmVCbG9jaz4oKTtcblxuICBzdGF0aWMgZm9ySW5pdGlhbFJlbmRlcihlbnY6IEVudmlyb25tZW50LCBjdXJzb3I6IEN1cnNvckltcGwpIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoZW52LCBjdXJzb3IuZWxlbWVudCwgY3Vyc29yLm5leHRTaWJsaW5nKS5pbml0aWFsaXplKCk7XG4gIH1cblxuICBzdGF0aWMgcmVzdW1lKGVudjogRW52aXJvbm1lbnQsIGJsb2NrOiBVcGRhdGFibGVCbG9jayk6IE5ld0VsZW1lbnRCdWlsZGVyIHtcbiAgICBsZXQgcGFyZW50Tm9kZSA9IGJsb2NrLnBhcmVudEVsZW1lbnQoKTtcbiAgICBsZXQgbmV4dFNpYmxpbmcgPSBibG9jay5yZXNldChlbnYpO1xuXG4gICAgbGV0IHN0YWNrID0gbmV3IHRoaXMoZW52LCBwYXJlbnROb2RlLCBuZXh0U2libGluZykuaW5pdGlhbGl6ZSgpO1xuICAgIHN0YWNrLnB1c2hMaXZlQmxvY2soYmxvY2spO1xuXG4gICAgcmV0dXJuIHN0YWNrO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZW52OiBFbnZpcm9ubWVudCwgcGFyZW50Tm9kZTogU2ltcGxlRWxlbWVudCwgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGVOb2RlPikge1xuICAgIHRoaXMucHVzaEVsZW1lbnQocGFyZW50Tm9kZSwgbmV4dFNpYmxpbmcpO1xuXG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5kb20gPSBlbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpO1xuICAgIHRoaXMudXBkYXRlT3BlcmF0aW9ucyA9IGVudi5nZXRET00oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0aWFsaXplKCk6IHRoaXMge1xuICAgIHRoaXMucHVzaFNpbXBsZUJsb2NrKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBkZWJ1Z0Jsb2NrcygpOiBMaXZlQmxvY2tbXSB7XG4gICAgcmV0dXJuIHRoaXMuYmxvY2tTdGFjay50b0FycmF5KCk7XG4gIH1cblxuICBnZXQgZWxlbWVudCgpOiBTaW1wbGVFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpc1tDVVJTT1JfU1RBQ0tdLmN1cnJlbnQhLmVsZW1lbnQ7XG4gIH1cblxuICBnZXQgbmV4dFNpYmxpbmcoKTogT3B0aW9uPFNpbXBsZU5vZGU+IHtcbiAgICByZXR1cm4gdGhpc1tDVVJTT1JfU1RBQ0tdLmN1cnJlbnQhLm5leHRTaWJsaW5nO1xuICB9XG5cbiAgYmxvY2soKTogTGl2ZUJsb2NrIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuYmxvY2tTdGFjay5jdXJyZW50LCAnRXhwZWN0ZWQgYSBjdXJyZW50IGxpdmUgYmxvY2snKTtcbiAgfVxuXG4gIHBvcEVsZW1lbnQoKSB7XG4gICAgdGhpc1tDVVJTT1JfU1RBQ0tdLnBvcCgpO1xuICAgIGV4cGVjdCh0aGlzW0NVUlNPUl9TVEFDS10uY3VycmVudCwgXCJjYW4ndCBwb3AgcGFzdCB0aGUgbGFzdCBlbGVtZW50XCIpO1xuICB9XG5cbiAgcHVzaFNpbXBsZUJsb2NrKCk6IExpdmVCbG9jayB7XG4gICAgcmV0dXJuIHRoaXMucHVzaExpdmVCbG9jayhuZXcgU2ltcGxlTGl2ZUJsb2NrKHRoaXMuZWxlbWVudCkpO1xuICB9XG5cbiAgcHVzaFVwZGF0YWJsZUJsb2NrKCk6IFVwZGF0YWJsZUJsb2NrSW1wbCB7XG4gICAgcmV0dXJuIHRoaXMucHVzaExpdmVCbG9jayhuZXcgVXBkYXRhYmxlQmxvY2tJbXBsKHRoaXMuZWxlbWVudCkpO1xuICB9XG5cbiAgcHVzaEJsb2NrTGlzdChsaXN0OiBMaW5rZWRMaXN0PExpbmtlZExpc3ROb2RlICYgTGl2ZUJsb2NrPik6IExpdmVCbG9ja0xpc3Qge1xuICAgIHJldHVybiB0aGlzLnB1c2hMaXZlQmxvY2sobmV3IExpdmVCbG9ja0xpc3QodGhpcy5lbGVtZW50LCBsaXN0KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHVzaExpdmVCbG9jazxUIGV4dGVuZHMgTGl2ZUJsb2NrPihibG9jazogVCwgaXNSZW1vdGUgPSBmYWxzZSk6IFQge1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQ7XG5cbiAgICBpZiAoY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgaWYgKCFpc1JlbW90ZSkge1xuICAgICAgICBjdXJyZW50LmRpZEFwcGVuZEJvdW5kcyhibG9jayk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fX29wZW5CbG9jaygpO1xuICAgIHRoaXMuYmxvY2tTdGFjay5wdXNoKGJsb2NrKTtcbiAgICByZXR1cm4gYmxvY2s7XG4gIH1cblxuICBwb3BCbG9jaygpOiBMaXZlQmxvY2sge1xuICAgIHRoaXMuYmxvY2soKS5maW5hbGl6ZSh0aGlzKTtcbiAgICB0aGlzLl9fY2xvc2VCbG9jaygpO1xuICAgIHJldHVybiBleHBlY3QodGhpcy5ibG9ja1N0YWNrLnBvcCgpLCAnRXhwZWN0ZWQgcG9wQmxvY2sgdG8gcmV0dXJuIGEgYmxvY2snKTtcbiAgfVxuXG4gIF9fb3BlbkJsb2NrKCk6IHZvaWQge31cbiAgX19jbG9zZUJsb2NrKCk6IHZvaWQge31cblxuICAvLyB0b2RvIHJldHVybiBzZWVtcyB1bnVzZWRcbiAgb3BlbkVsZW1lbnQodGFnOiBzdHJpbmcpOiBTaW1wbGVFbGVtZW50IHtcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuX19vcGVuRWxlbWVudCh0YWcpO1xuICAgIHRoaXMuY29uc3RydWN0aW5nID0gZWxlbWVudDtcblxuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgX19vcGVuRWxlbWVudCh0YWc6IHN0cmluZyk6IFNpbXBsZUVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmRvbS5jcmVhdGVFbGVtZW50KHRhZywgdGhpcy5lbGVtZW50KTtcbiAgfVxuXG4gIGZsdXNoRWxlbWVudChtb2RpZmllcnM6IE9wdGlvbjxbTW9kaWZpZXJNYW5hZ2VyLCB1bmtub3duXVtdPikge1xuICAgIGxldCBwYXJlbnQgPSB0aGlzLmVsZW1lbnQ7XG4gICAgbGV0IGVsZW1lbnQgPSBleHBlY3QoXG4gICAgICB0aGlzLmNvbnN0cnVjdGluZyxcbiAgICAgIGBmbHVzaEVsZW1lbnQgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gY29uc3RydWN0aW5nIGFuIGVsZW1lbnRgXG4gICAgKTtcblxuICAgIHRoaXMuX19mbHVzaEVsZW1lbnQocGFyZW50LCBlbGVtZW50KTtcblxuICAgIHRoaXMuY29uc3RydWN0aW5nID0gbnVsbDtcbiAgICB0aGlzLm9wZXJhdGlvbnMgPSBudWxsO1xuXG4gICAgdGhpcy5wdXNoTW9kaWZpZXJzKG1vZGlmaWVycyk7XG4gICAgdGhpcy5wdXNoRWxlbWVudChlbGVtZW50LCBudWxsKTtcbiAgICB0aGlzLmRpZE9wZW5FbGVtZW50KGVsZW1lbnQpO1xuICB9XG5cbiAgX19mbHVzaEVsZW1lbnQocGFyZW50OiBTaW1wbGVFbGVtZW50LCBjb25zdHJ1Y3Rpbmc6IFNpbXBsZUVsZW1lbnQpIHtcbiAgICB0aGlzLmRvbS5pbnNlcnRCZWZvcmUocGFyZW50LCBjb25zdHJ1Y3RpbmcsIHRoaXMubmV4dFNpYmxpbmcpO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCk6IE9wdGlvbjxbTW9kaWZpZXJNYW5hZ2VyLCB1bmtub3duXVtdPiB7XG4gICAgdGhpcy53aWxsQ2xvc2VFbGVtZW50KCk7XG4gICAgdGhpcy5wb3BFbGVtZW50KCk7XG4gICAgcmV0dXJuIHRoaXMucG9wTW9kaWZpZXJzKCk7XG4gIH1cblxuICBwdXNoUmVtb3RlRWxlbWVudChcbiAgICBlbGVtZW50OiBTaW1wbGVFbGVtZW50LFxuICAgIGd1aWQ6IHN0cmluZyxcbiAgICBpbnNlcnRCZWZvcmU6IE1heWJlPFNpbXBsZU5vZGU+XG4gICk6IE9wdGlvbjxSZW1vdGVMaXZlQmxvY2s+IHtcbiAgICByZXR1cm4gdGhpcy5fX3B1c2hSZW1vdGVFbGVtZW50KGVsZW1lbnQsIGd1aWQsIGluc2VydEJlZm9yZSk7XG4gIH1cblxuICBfX3B1c2hSZW1vdGVFbGVtZW50KFxuICAgIGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQsXG4gICAgX2d1aWQ6IHN0cmluZyxcbiAgICBpbnNlcnRCZWZvcmU6IE1heWJlPFNpbXBsZU5vZGU+XG4gICk6IE9wdGlvbjxSZW1vdGVMaXZlQmxvY2s+IHtcbiAgICB0aGlzLnB1c2hFbGVtZW50KGVsZW1lbnQsIGluc2VydEJlZm9yZSk7XG5cbiAgICBpZiAoaW5zZXJ0QmVmb3JlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHdoaWxlIChlbGVtZW50Lmxhc3RDaGlsZCkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUNoaWxkKGVsZW1lbnQubGFzdENoaWxkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgYmxvY2sgPSBuZXcgUmVtb3RlTGl2ZUJsb2NrKGVsZW1lbnQpO1xuXG4gICAgcmV0dXJuIHRoaXMucHVzaExpdmVCbG9jayhibG9jaywgdHJ1ZSk7XG4gIH1cblxuICBwb3BSZW1vdGVFbGVtZW50KCkge1xuICAgIHRoaXMucG9wQmxvY2soKTtcbiAgICB0aGlzLnBvcEVsZW1lbnQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwdXNoRWxlbWVudChlbGVtZW50OiBTaW1wbGVFbGVtZW50LCBuZXh0U2libGluZzogTWF5YmU8U2ltcGxlTm9kZT4gPSBudWxsKSB7XG4gICAgdGhpc1tDVVJTT1JfU1RBQ0tdLnB1c2gobmV3IEN1cnNvckltcGwoZWxlbWVudCwgbmV4dFNpYmxpbmcpKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaE1vZGlmaWVycyhtb2RpZmllcnM6IE9wdGlvbjxbTW9kaWZpZXJNYW5hZ2VyLCB1bmtub3duXVtdPik6IHZvaWQge1xuICAgIHRoaXMubW9kaWZpZXJTdGFjay5wdXNoKG1vZGlmaWVycyk7XG4gIH1cblxuICBwcml2YXRlIHBvcE1vZGlmaWVycygpOiBPcHRpb248W01vZGlmaWVyTWFuYWdlciwgdW5rbm93bl1bXT4ge1xuICAgIHJldHVybiB0aGlzLm1vZGlmaWVyU3RhY2sucG9wKCk7XG4gIH1cblxuICBkaWRBcHBlbmRCb3VuZHMoYm91bmRzOiBCb3VuZHMpOiBCb3VuZHMge1xuICAgIHRoaXMuYmxvY2soKS5kaWRBcHBlbmRCb3VuZHMoYm91bmRzKTtcbiAgICByZXR1cm4gYm91bmRzO1xuICB9XG5cbiAgZGlkQXBwZW5kTm9kZTxUIGV4dGVuZHMgU2ltcGxlTm9kZT4obm9kZTogVCk6IFQge1xuICAgIHRoaXMuYmxvY2soKS5kaWRBcHBlbmROb2RlKG5vZGUpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgZGlkT3BlbkVsZW1lbnQoZWxlbWVudDogU2ltcGxlRWxlbWVudCk6IFNpbXBsZUVsZW1lbnQge1xuICAgIHRoaXMuYmxvY2soKS5vcGVuRWxlbWVudChlbGVtZW50KTtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIHdpbGxDbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5ibG9jaygpLmNsb3NlRWxlbWVudCgpO1xuICB9XG5cbiAgYXBwZW5kVGV4dChzdHJpbmc6IHN0cmluZyk6IFNpbXBsZVRleHQge1xuICAgIHJldHVybiB0aGlzLmRpZEFwcGVuZE5vZGUodGhpcy5fX2FwcGVuZFRleHQoc3RyaW5nKSk7XG4gIH1cblxuICBfX2FwcGVuZFRleHQodGV4dDogc3RyaW5nKTogU2ltcGxlVGV4dCB7XG4gICAgbGV0IHsgZG9tLCBlbGVtZW50LCBuZXh0U2libGluZyB9ID0gdGhpcztcbiAgICBsZXQgbm9kZSA9IGRvbS5jcmVhdGVUZXh0Tm9kZSh0ZXh0KTtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIG5vZGUsIG5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIF9fYXBwZW5kTm9kZShub2RlOiBTaW1wbGVOb2RlKTogU2ltcGxlTm9kZSB7XG4gICAgdGhpcy5kb20uaW5zZXJ0QmVmb3JlKHRoaXMuZWxlbWVudCwgbm9kZSwgdGhpcy5uZXh0U2libGluZyk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBfX2FwcGVuZEZyYWdtZW50KGZyYWdtZW50OiBTaW1wbGVEb2N1bWVudEZyYWdtZW50KTogQm91bmRzIHtcbiAgICBsZXQgZmlyc3QgPSBmcmFnbWVudC5maXJzdENoaWxkO1xuXG4gICAgaWYgKGZpcnN0KSB7XG4gICAgICBsZXQgcmV0ID0gbmV3IENvbmNyZXRlQm91bmRzKHRoaXMuZWxlbWVudCwgZmlyc3QsIGZyYWdtZW50Lmxhc3RDaGlsZCEpO1xuICAgICAgdGhpcy5kb20uaW5zZXJ0QmVmb3JlKHRoaXMuZWxlbWVudCwgZnJhZ21lbnQsIHRoaXMubmV4dFNpYmxpbmcpO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBTaW5nbGVOb2RlQm91bmRzKHRoaXMuZWxlbWVudCwgdGhpcy5fX2FwcGVuZENvbW1lbnQoJycpKTtcbiAgICB9XG4gIH1cblxuICBfX2FwcGVuZEhUTUwoaHRtbDogc3RyaW5nKTogQm91bmRzIHtcbiAgICByZXR1cm4gdGhpcy5kb20uaW5zZXJ0SFRNTEJlZm9yZSh0aGlzLmVsZW1lbnQsIHRoaXMubmV4dFNpYmxpbmcsIGh0bWwpO1xuICB9XG5cbiAgYXBwZW5kRHluYW1pY0hUTUwodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBib3VuZHMgPSB0aGlzLnRydXN0ZWRDb250ZW50KHZhbHVlKTtcbiAgICB0aGlzLmRpZEFwcGVuZEJvdW5kcyhib3VuZHMpO1xuICB9XG5cbiAgYXBwZW5kRHluYW1pY1RleHQodmFsdWU6IHN0cmluZyk6IFNpbXBsZVRleHQge1xuICAgIGxldCBub2RlID0gdGhpcy51bnRydXN0ZWRDb250ZW50KHZhbHVlKTtcbiAgICB0aGlzLmRpZEFwcGVuZE5vZGUobm9kZSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBhcHBlbmREeW5hbWljRnJhZ21lbnQodmFsdWU6IFNpbXBsZURvY3VtZW50RnJhZ21lbnQpOiB2b2lkIHtcbiAgICBsZXQgYm91bmRzID0gdGhpcy5fX2FwcGVuZEZyYWdtZW50KHZhbHVlKTtcbiAgICB0aGlzLmRpZEFwcGVuZEJvdW5kcyhib3VuZHMpO1xuICB9XG5cbiAgYXBwZW5kRHluYW1pY05vZGUodmFsdWU6IFNpbXBsZU5vZGUpOiB2b2lkIHtcbiAgICBsZXQgbm9kZSA9IHRoaXMuX19hcHBlbmROb2RlKHZhbHVlKTtcbiAgICBsZXQgYm91bmRzID0gbmV3IFNpbmdsZU5vZGVCb3VuZHModGhpcy5lbGVtZW50LCBub2RlKTtcbiAgICB0aGlzLmRpZEFwcGVuZEJvdW5kcyhib3VuZHMpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cnVzdGVkQ29udGVudCh2YWx1ZTogc3RyaW5nKTogQm91bmRzIHtcbiAgICByZXR1cm4gdGhpcy5fX2FwcGVuZEhUTUwodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSB1bnRydXN0ZWRDb250ZW50KHZhbHVlOiBzdHJpbmcpOiBTaW1wbGVUZXh0IHtcbiAgICByZXR1cm4gdGhpcy5fX2FwcGVuZFRleHQodmFsdWUpO1xuICB9XG5cbiAgYXBwZW5kQ29tbWVudChzdHJpbmc6IHN0cmluZyk6IFNpbXBsZUNvbW1lbnQge1xuICAgIHJldHVybiB0aGlzLmRpZEFwcGVuZE5vZGUodGhpcy5fX2FwcGVuZENvbW1lbnQoc3RyaW5nKSk7XG4gIH1cblxuICBfX2FwcGVuZENvbW1lbnQoc3RyaW5nOiBzdHJpbmcpOiBTaW1wbGVDb21tZW50IHtcbiAgICBsZXQgeyBkb20sIGVsZW1lbnQsIG5leHRTaWJsaW5nIH0gPSB0aGlzO1xuICAgIGxldCBub2RlID0gZG9tLmNyZWF0ZUNvbW1lbnQoc3RyaW5nKTtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIG5vZGUsIG5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIF9fc2V0QXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbmFtZXNwYWNlOiBPcHRpb248QXR0ck5hbWVzcGFjZT4pOiB2b2lkIHtcbiAgICB0aGlzLmRvbS5zZXRBdHRyaWJ1dGUodGhpcy5jb25zdHJ1Y3RpbmchLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKTtcbiAgfVxuXG4gIF9fc2V0UHJvcGVydHkobmFtZTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgICh0aGlzLmNvbnN0cnVjdGluZyEgYXMgYW55KVtuYW1lXSA9IHZhbHVlO1xuICB9XG5cbiAgc2V0U3RhdGljQXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbmFtZXNwYWNlOiBPcHRpb248QXR0ck5hbWVzcGFjZT4pOiB2b2lkIHtcbiAgICB0aGlzLl9fc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICB9XG5cbiAgc2V0RHluYW1pY0F0dHJpYnV0ZShcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgdmFsdWU6IHVua25vd24sXG4gICAgdHJ1c3Rpbmc6IGJvb2xlYW4sXG4gICAgbmFtZXNwYWNlOiBPcHRpb248QXR0ck5hbWVzcGFjZT5cbiAgKTogRHluYW1pY0F0dHJpYnV0ZSB7XG4gICAgbGV0IGVsZW1lbnQgPSB0aGlzLmNvbnN0cnVjdGluZyE7XG4gICAgbGV0IGF0dHJpYnV0ZSA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCB0cnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICBhdHRyaWJ1dGUuc2V0KHRoaXMsIHZhbHVlLCB0aGlzLmVudik7XG4gICAgcmV0dXJuIGF0dHJpYnV0ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlTGl2ZUJsb2NrIGltcGxlbWVudHMgTGl2ZUJsb2NrIHtcbiAgcHJvdGVjdGVkIGZpcnN0OiBPcHRpb248Rmlyc3ROb2RlPiA9IG51bGw7XG4gIHByb3RlY3RlZCBsYXN0OiBPcHRpb248TGFzdE5vZGU+ID0gbnVsbDtcbiAgcHJvdGVjdGVkIGRlc3Ryb3lhYmxlczogT3B0aW9uPFN5bWJvbERlc3Ryb3lhYmxlW10+ID0gbnVsbDtcbiAgcHJvdGVjdGVkIG5lc3RpbmcgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyZW50OiBTaW1wbGVFbGVtZW50KSB7fVxuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIGxldCBmaXJzdCA9IGV4cGVjdChcbiAgICAgIHRoaXMuZmlyc3QsXG4gICAgICAnY2Fubm90IGNhbGwgYGZpcnN0Tm9kZSgpYCB3aGlsZSBgU2ltcGxlTGl2ZUJsb2NrYCBpcyBzdGlsbCBpbml0aWFsaXppbmcnXG4gICAgKTtcblxuICAgIHJldHVybiBmaXJzdC5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIGxldCBsYXN0ID0gZXhwZWN0KFxuICAgICAgdGhpcy5sYXN0LFxuICAgICAgJ2Nhbm5vdCBjYWxsIGBsYXN0Tm9kZSgpYCB3aGlsZSBgU2ltcGxlTGl2ZUJsb2NrYCBpcyBzdGlsbCBpbml0aWFsaXppbmcnXG4gICAgKTtcblxuICAgIHJldHVybiBsYXN0Lmxhc3ROb2RlKCk7XG4gIH1cblxuICBvcGVuRWxlbWVudChlbGVtZW50OiBTaW1wbGVFbGVtZW50KSB7XG4gICAgdGhpcy5kaWRBcHBlbmROb2RlKGVsZW1lbnQpO1xuICAgIHRoaXMubmVzdGluZysrO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIHRoaXMubmVzdGluZy0tO1xuICB9XG5cbiAgZGlkQXBwZW5kTm9kZShub2RlOiBTaW1wbGVOb2RlKSB7XG4gICAgaWYgKHRoaXMubmVzdGluZyAhPT0gMCkgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLmZpcnN0KSB7XG4gICAgICB0aGlzLmZpcnN0ID0gbmV3IEZpcnN0KG5vZGUpO1xuICAgIH1cblxuICAgIHRoaXMubGFzdCA9IG5ldyBMYXN0KG5vZGUpO1xuICB9XG5cbiAgZGlkQXBwZW5kQm91bmRzKGJvdW5kczogQm91bmRzKSB7XG4gICAgaWYgKHRoaXMubmVzdGluZyAhPT0gMCkgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLmZpcnN0KSB7XG4gICAgICB0aGlzLmZpcnN0ID0gYm91bmRzO1xuICAgIH1cblxuICAgIHRoaXMubGFzdCA9IGJvdW5kcztcbiAgfVxuXG4gIGZpbmFsaXplKHN0YWNrOiBFbGVtZW50QnVpbGRlcikge1xuICAgIGlmICh0aGlzLmZpcnN0ID09PSBudWxsKSB7XG4gICAgICBzdGFjay5hcHBlbmRDb21tZW50KCcnKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlbW90ZUxpdmVCbG9jayBleHRlbmRzIFNpbXBsZUxpdmVCbG9jayBpbXBsZW1lbnRzIFN5bWJvbERlc3Ryb3lhYmxlIHtcbiAgW0RFU1RST1ldKCkge1xuICAgIC8vIEluIGdlbmVyYWwsIHlvdSBvbmx5IG5lZWQgdG8gY2xlYXIgdGhlIHJvb3Qgb2YgYSBoaWVyYXJjaHksIGFuZCBzaG91bGQgbmV2ZXJcbiAgICAvLyBuZWVkIHRvIGNsZWFyIGFueSBjaGlsZCBub2Rlcy4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgY29uc3RyYWludCB0aGF0IGdpdmVzIHVzXG4gICAgLy8gYSBzdHJvbmcgZ3VhcmFudGVlIHRoYXQgY2xlYXJpbmcgYSBzdWJ0cmVlIGlzIGEgc2luZ2xlIERPTSBvcGVyYXRpb24uXG4gICAgLy9cbiAgICAvLyBCZWNhdXNlIHJlbW90ZSBibG9ja3MgYXJlIG5vdCBub3JtYWxseSBwaHlzaWNhbGx5IG5lc3RlZCBpbnNpZGUgb2YgdGhlIHRyZWVcbiAgICAvLyB0aGF0IHRoZXkgYXJlIGxvZ2ljYWxseSBuZXN0ZWQgaW5zaWRlLCB3ZSBtYW51YWxseSBjbGVhciByZW1vdGUgYmxvY2tzIHdoZW5cbiAgICAvLyBhIGxvZ2ljYWwgcGFyZW50IGlzIGNsZWFyZWQuXG4gICAgLy9cbiAgICAvLyBIT1dFVkVSLCBpdCBpcyBjdXJyZW50bHkgcG9zc2libGUgZm9yIGEgcmVtb3RlIGJsb2NrIHRvIGJlIHBoeXNpY2FsbHkgbmVzdGVkXG4gICAgLy8gaW5zaWRlIG9mIHRoZSBibG9jayBpdCBpcyBsb2dpY2FsbHkgY29udGFpbmVkIGluc2lkZSBvZi4gVGhpcyBoYXBwZW5zIHdoZW5cbiAgICAvLyB0aGUgcmVtb3RlIGJsb2NrIGlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGFwcGxpY2F0aW9uJ3MgZW50aXJlIGVsZW1lbnQuXG4gICAgLy9cbiAgICAvLyBUaGUgcHJvYmxlbSB3aXRoIHRoYXQgc2NlbmFyaW8gaXMgdGhhdCBHbGltbWVyIGJlbGlldmVzIHRoYXQgaXQgb3ducyBtb3JlIG9mXG4gICAgLy8gdGhlIERPTSB0aGFuIGl0IGFjdHVhbGx5IGRvZXMuIFRoZSBjb2RlIGlzIGF0dGVtcHRpbmcgdG8gd3JpdGUgcGFzdCB0aGUgZW5kXG4gICAgLy8gb2YgdGhlIEdsaW1tZXItbWFuYWdlZCByb290LCBidXQgR2xpbW1lciBpc24ndCBhd2FyZSBvZiB0aGF0LlxuICAgIC8vXG4gICAgLy8gVGhlIGNvcnJlY3Qgc29sdXRpb24gdG8gdGhhdCBwcm9ibGVtIGlzIGZvciBHbGltbWVyIHRvIGJlIGF3YXJlIG9mIHRoZSBlbmRcbiAgICAvLyBvZiB0aGUgYm91bmRzIHRoYXQgaXQgb3ducywgYW5kIG9uY2Ugd2UgbWFrZSB0aGF0IGNoYW5nZSwgdGhpcyBjaGVjayBjb3VsZFxuICAgIC8vIGJlIHJlbW92ZWQuXG4gICAgLy9cbiAgICAvLyBGb3Igbm93LCBhIG1vcmUgdGFyZ2V0ZWQgZml4IGlzIHRvIGNoZWNrIHdoZXRoZXIgdGhlIG5vZGUgd2FzIGFscmVhZHkgcmVtb3ZlZFxuICAgIC8vIGFuZCBhdm9pZCBjbGVhcmluZyB0aGUgbm9kZSBpZiBpdCB3YXMuIEluIG1vc3QgY2FzZXMgdGhpcyBzaG91bGRuJ3QgaGFwcGVuLFxuICAgIC8vIHNvIHRoaXMgbWlnaHQgaGlkZSBidWdzIHdoZXJlIHRoZSBjb2RlIGNsZWFycyBuZXN0ZWQgbm9kZXMgdW5uZWNlc3NhcmlseSxcbiAgICAvLyBzbyB3ZSBzaG91bGQgZXZlbnR1YWxseSB0cnkgdG8gZG8gdGhlIGNvcnJlY3QgZml4LlxuICAgIGlmICh0aGlzLnBhcmVudEVsZW1lbnQoKSA9PT0gdGhpcy5maXJzdE5vZGUoKS5wYXJlbnROb2RlKSB7XG4gICAgICBjbGVhcih0aGlzKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0YWJsZUJsb2NrSW1wbCBleHRlbmRzIFNpbXBsZUxpdmVCbG9jayBpbXBsZW1lbnRzIFVwZGF0YWJsZUJsb2NrIHtcbiAgcmVzZXQoZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxTaW1wbGVOb2RlPiB7XG4gICAgbGV0IG5leHRTaWJsaW5nID0gZGV0YWNoQ2hpbGRyZW4odGhpcywgZW52KTtcblxuICAgIC8vIGxldCBuZXh0U2libGluZyA9IGNsZWFyKHRoaXMpO1xuXG4gICAgdGhpcy5maXJzdCA9IG51bGw7XG4gICAgdGhpcy5sYXN0ID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3lhYmxlcyA9IG51bGw7XG4gICAgdGhpcy5uZXN0aW5nID0gMDtcblxuICAgIHJldHVybiBuZXh0U2libGluZztcbiAgfVxufVxuXG4vLyBGSVhNRTogQWxsIHRoZSBub29wcyBpbiBoZXJlIGluZGljYXRlIGEgbW9kZWxsaW5nIHByb2JsZW1cbmNsYXNzIExpdmVCbG9ja0xpc3QgaW1wbGVtZW50cyBMaXZlQmxvY2sge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhcmVudDogU2ltcGxlRWxlbWVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJvdW5kTGlzdDogTGlua2VkTGlzdDxMaW5rZWRMaXN0Tm9kZSAmIExpdmVCbG9jaz5cbiAgKSB7XG4gICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgdGhpcy5ib3VuZExpc3QgPSBib3VuZExpc3Q7XG4gIH1cblxuICBwYXJlbnRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudDtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpOiBTaW1wbGVOb2RlIHtcbiAgICBsZXQgaGVhZCA9IGV4cGVjdChcbiAgICAgIHRoaXMuYm91bmRMaXN0LmhlYWQoKSxcbiAgICAgICdjYW5ub3QgY2FsbCBgZmlyc3ROb2RlKClgIHdoaWxlIGBMaXZlQmxvY2tMaXN0YCBpcyBzdGlsbCBpbml0aWFsaXppbmcnXG4gICAgKTtcblxuICAgIHJldHVybiBoZWFkLmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgbGV0IHRhaWwgPSBleHBlY3QoXG4gICAgICB0aGlzLmJvdW5kTGlzdC50YWlsKCksXG4gICAgICAnY2Fubm90IGNhbGwgYGxhc3ROb2RlKClgIHdoaWxlIGBMaXZlQmxvY2tMaXN0YCBpcyBzdGlsbCBpbml0aWFsaXppbmcnXG4gICAgKTtcblxuICAgIHJldHVybiB0YWlsLmxhc3ROb2RlKCk7XG4gIH1cblxuICBvcGVuRWxlbWVudChfZWxlbWVudDogU2ltcGxlRWxlbWVudCkge1xuICAgIGFzc2VydChmYWxzZSwgJ0Nhbm5vdCBvcGVuRWxlbWVudCBkaXJlY3RseSBpbnNpZGUgYSBibG9jayBsaXN0Jyk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgYXNzZXJ0KGZhbHNlLCAnQ2Fubm90IGNsb3NlRWxlbWVudCBkaXJlY3RseSBpbnNpZGUgYSBibG9jayBsaXN0Jyk7XG4gIH1cblxuICBkaWRBcHBlbmROb2RlKF9ub2RlOiBTaW1wbGVOb2RlKSB7XG4gICAgYXNzZXJ0KGZhbHNlLCAnQ2Fubm90IGNyZWF0ZSBhIG5ldyBub2RlIGRpcmVjdGx5IGluc2lkZSBhIGJsb2NrIGxpc3QnKTtcbiAgfVxuXG4gIGRpZEFwcGVuZEJvdW5kcyhfYm91bmRzOiBCb3VuZHMpIHt9XG5cbiAgZmluYWxpemUoX3N0YWNrOiBFbGVtZW50QnVpbGRlcikge1xuICAgIGFzc2VydCh0aGlzLmJvdW5kTGlzdC5oZWFkKCkgIT09IG51bGwsICdib3VuZHNMaXN0IGNhbm5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGllbnRCdWlsZGVyKGVudjogRW52aXJvbm1lbnQsIGN1cnNvcjogQ3Vyc29ySW1wbCk6IEVsZW1lbnRCdWlsZGVyIHtcbiAgcmV0dXJuIE5ld0VsZW1lbnRCdWlsZGVyLmZvckluaXRpYWxSZW5kZXIoZW52LCBjdXJzb3IpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2VsZW1lbnQtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWNBLFNBQ0UsTUFERixFQUVFLE9BRkYsRUFPRSxLQVBGLEVBU0UsTUFURixRQVVPLGVBVlA7QUFtQkEsU0FBUyxLQUFULEVBQWdCLGNBQWhCLEVBQWdDLFVBQWhDLEVBQTRDLGdCQUE1QyxRQUFvRSxXQUFwRTtBQUNBLFNBQVMsY0FBVCxRQUErQixhQUEvQjs7QUFXQSxNQUFNLEtBQU4sQ0FBVztBQUNULEVBQUEsV0FBQSxDQUFvQixJQUFwQixFQUFvQztBQUFoQixTQUFBLElBQUEsR0FBQSxJQUFBO0FBQW9COztBQUV4QyxFQUFBLFNBQVMsR0FBQTtBQUNQLFdBQU8sS0FBSyxJQUFaO0FBQ0Q7O0FBTFE7O0FBUVgsTUFBTSxJQUFOLENBQVU7QUFDUixFQUFBLFdBQUEsQ0FBb0IsSUFBcEIsRUFBb0M7QUFBaEIsU0FBQSxJQUFBLEdBQUEsSUFBQTtBQUFvQjs7QUFFeEMsRUFBQSxRQUFRLEdBQUE7QUFDTixXQUFPLEtBQUssSUFBWjtBQUNEOztBQUxPOztBQVFWLE9BQU0sTUFBTyxRQUFQLENBQWU7QUFHbkIsRUFBQSxXQUFBLENBQVksTUFBWixFQUEwQjtBQUN4QixTQUFLLE1BQUwsR0FBYyxNQUFkO0FBQ0Q7O0FBRUQsRUFBQSxhQUFhLEdBQUE7QUFDWCxXQUFPLEtBQUssTUFBTCxDQUFZLGFBQVosRUFBUDtBQUNEOztBQUVELEVBQUEsU0FBUyxHQUFBO0FBQ1AsV0FBTyxLQUFLLE1BQUwsQ0FBWSxTQUFaLEVBQVA7QUFDRDs7QUFFRCxFQUFBLFFBQVEsR0FBQTtBQUNOLFdBQU8sS0FBSyxNQUFMLENBQVksUUFBWixFQUFQO0FBQ0Q7O0FBakJrQjtBQW9CckIsT0FBTyxNQUFNLFlBQVksR0FBc0IsTUFBTSxDQUFDLGNBQUQsQ0FBOUM7QUFFUCxPQUFNLE1BQU8saUJBQVAsQ0FBd0I7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T3BlcmF0aW9ucyxcbiAgRW52aXJvbm1lbnQsXG4gIEdsaW1tZXJUcmVlQ2hhbmdlcyxcbiAgR2xpbW1lclRyZWVDb25zdHJ1Y3Rpb24sXG4gIFN5bWJvbERlc3Ryb3lhYmxlLFxuICBFbGVtZW50QnVpbGRlcixcbiAgTGl2ZUJsb2NrLFxuICBDdXJzb3JTdGFja1N5bWJvbCxcbiAgVXBkYXRhYmxlQmxvY2ssXG4gIEN1cnNvcixcbiAgTW9kaWZpZXJNYW5hZ2VyLFxufSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gIGFzc2VydCxcbiAgREVTVFJPWSxcbiAgZXhwZWN0LFxuICBMaW5rZWRMaXN0LFxuICBMaW5rZWRMaXN0Tm9kZSxcbiAgT3B0aW9uLFxuICBTdGFjayxcbiAgTWF5YmUsXG4gIHN5bWJvbCxcbn0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBBdHRyTmFtZXNwYWNlLFxuICBTaW1wbGVDb21tZW50LFxuICBTaW1wbGVEb2N1bWVudEZyYWdtZW50LFxuICBTaW1wbGVFbGVtZW50LFxuICBTaW1wbGVOb2RlLFxuICBTaW1wbGVUZXh0LFxufSBmcm9tICdAc2ltcGxlLWRvbS9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgY2xlYXIsIENvbmNyZXRlQm91bmRzLCBDdXJzb3JJbXBsLCBTaW5nbGVOb2RlQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IGRldGFjaENoaWxkcmVuIH0gZnJvbSAnLi4vbGlmZXRpbWUnO1xuaW1wb3J0IHsgRHluYW1pY0F0dHJpYnV0ZSB9IGZyb20gJy4vYXR0cmlidXRlcy9keW5hbWljJztcblxuZXhwb3J0IGludGVyZmFjZSBGaXJzdE5vZGUge1xuICBmaXJzdE5vZGUoKTogU2ltcGxlTm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYXN0Tm9kZSB7XG4gIGxhc3ROb2RlKCk6IFNpbXBsZU5vZGU7XG59XG5cbmNsYXNzIEZpcnN0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlOiBTaW1wbGVOb2RlKSB7fVxuXG4gIGZpcnN0Tm9kZSgpOiBTaW1wbGVOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG59XG5cbmNsYXNzIExhc3Qge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5vZGU6IFNpbXBsZU5vZGUpIHt9XG5cbiAgbGFzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRnJhZ21lbnQgaW1wbGVtZW50cyBCb3VuZHMge1xuICBwcml2YXRlIGJvdW5kczogQm91bmRzO1xuXG4gIGNvbnN0cnVjdG9yKGJvdW5kczogQm91bmRzKSB7XG4gICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gIH1cblxuICBwYXJlbnRFbGVtZW50KCk6IFNpbXBsZUVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gIH1cblxuICBmaXJzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLmxhc3ROb2RlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IENVUlNPUl9TVEFDSzogQ3Vyc29yU3RhY2tTeW1ib2wgPSBzeW1ib2woJ0NVUlNPUl9TVEFDSycpO1xuXG5leHBvcnQgY2xhc3MgTmV3RWxlbWVudEJ1aWxkZXIgaW1wbGVtZW50cyBFbGVtZW50QnVpbGRlciB7XG4gIHB1YmxpYyBkb206IEdsaW1tZXJUcmVlQ29uc3RydWN0aW9uO1xuICBwdWJsaWMgdXBkYXRlT3BlcmF0aW9uczogR2xpbW1lclRyZWVDaGFuZ2VzO1xuICBwdWJsaWMgY29uc3RydWN0aW5nOiBPcHRpb248U2ltcGxlRWxlbWVudD4gPSBudWxsO1xuICBwdWJsaWMgb3BlcmF0aW9uczogT3B0aW9uPEVsZW1lbnRPcGVyYXRpb25zPiA9IG51bGw7XG4gIHByaXZhdGUgZW52OiBFbnZpcm9ubWVudDtcblxuICBbQ1VSU09SX1NUQUNLXSA9IG5ldyBTdGFjazxDdXJzb3I+KCk7XG4gIHByaXZhdGUgbW9kaWZpZXJTdGFjayA9IG5ldyBTdGFjazxPcHRpb248W01vZGlmaWVyTWFuYWdlciwgdW5rbm93bl1bXT4+KCk7XG4gIHByaXZhdGUgYmxvY2tTdGFjayA9IG5ldyBTdGFjazxMaXZlQmxvY2s+KCk7XG5cbiAgc3RhdGljIGZvckluaXRpYWxSZW5kZXIoZW52OiBFbnZpcm9ubWVudCwgY3Vyc29yOiBDdXJzb3JJbXBsKSB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKGVudiwgY3Vyc29yLmVsZW1lbnQsIGN1cnNvci5uZXh0U2libGluZykuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgc3RhdGljIHJlc3VtZShlbnY6IEVudmlyb25tZW50LCBibG9jazogVXBkYXRhYmxlQmxvY2spOiBOZXdFbGVtZW50QnVpbGRlciB7XG4gICAgbGV0IHBhcmVudE5vZGUgPSBibG9jay5wYXJlbnRFbGVtZW50KCk7XG4gICAgbGV0IG5leHRTaWJsaW5nID0gYmxvY2sucmVzZXQoZW52KTtcblxuICAgIGxldCBzdGFjayA9IG5ldyB0aGlzKGVudiwgcGFyZW50Tm9kZSwgbmV4dFNpYmxpbmcpLmluaXRpYWxpemUoKTtcbiAgICBzdGFjay5wdXNoTGl2ZUJsb2NrKGJsb2NrKTtcblxuICAgIHJldHVybiBzdGFjaztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQsIHBhcmVudE5vZGU6IFNpbXBsZUVsZW1lbnQsIG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlTm9kZT4pIHtcbiAgICB0aGlzLnB1c2hFbGVtZW50KHBhcmVudE5vZGUsIG5leHRTaWJsaW5nKTtcblxuICAgIHRoaXMuZW52ID0gZW52O1xuICAgIHRoaXMuZG9tID0gZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKTtcbiAgICB0aGlzLnVwZGF0ZU9wZXJhdGlvbnMgPSBlbnYuZ2V0RE9NKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5pdGlhbGl6ZSgpOiB0aGlzIHtcbiAgICB0aGlzLnB1c2hTaW1wbGVCbG9jaygpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGVidWdCbG9ja3MoKTogTGl2ZUJsb2NrW10ge1xuICAgIHJldHVybiB0aGlzLmJsb2NrU3RhY2sudG9BcnJheSgpO1xuICB9XG5cbiAgZ2V0IGVsZW1lbnQoKTogU2ltcGxlRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXNbQ1VSU09SX1NUQUNLXS5jdXJyZW50IS5lbGVtZW50O1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nKCk6IE9wdGlvbjxTaW1wbGVOb2RlPiB7XG4gICAgcmV0dXJuIHRoaXNbQ1VSU09SX1NUQUNLXS5jdXJyZW50IS5uZXh0U2libGluZztcbiAgfVxuXG4gIGdldCBoYXNCbG9ja3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuYmxvY2tTdGFjay5zaXplID4gMDtcbiAgfVxuXG4gIHByb3RlY3RlZCBibG9jaygpOiBMaXZlQmxvY2sge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQsICdFeHBlY3RlZCBhIGN1cnJlbnQgbGl2ZSBibG9jaycpO1xuICB9XG5cbiAgcG9wRWxlbWVudCgpIHtcbiAgICB0aGlzW0NVUlNPUl9TVEFDS10ucG9wKCk7XG4gICAgZXhwZWN0KHRoaXNbQ1VSU09SX1NUQUNLXS5jdXJyZW50LCBcImNhbid0IHBvcCBwYXN0IHRoZSBsYXN0IGVsZW1lbnRcIik7XG4gIH1cblxuICBwdXNoU2ltcGxlQmxvY2soKTogTGl2ZUJsb2NrIHtcbiAgICByZXR1cm4gdGhpcy5wdXNoTGl2ZUJsb2NrKG5ldyBTaW1wbGVMaXZlQmxvY2sodGhpcy5lbGVtZW50KSk7XG4gIH1cblxuICBwdXNoVXBkYXRhYmxlQmxvY2soKTogVXBkYXRhYmxlQmxvY2tJbXBsIHtcbiAgICByZXR1cm4gdGhpcy5wdXNoTGl2ZUJsb2NrKG5ldyBVcGRhdGFibGVCbG9ja0ltcGwodGhpcy5lbGVtZW50KSk7XG4gIH1cblxuICBwdXNoQmxvY2tMaXN0KGxpc3Q6IExpbmtlZExpc3Q8TGlua2VkTGlzdE5vZGUgJiBMaXZlQmxvY2s+KTogTGl2ZUJsb2NrTGlzdCB7XG4gICAgcmV0dXJuIHRoaXMucHVzaExpdmVCbG9jayhuZXcgTGl2ZUJsb2NrTGlzdCh0aGlzLmVsZW1lbnQsIGxpc3QpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwdXNoTGl2ZUJsb2NrPFQgZXh0ZW5kcyBMaXZlQmxvY2s+KGJsb2NrOiBULCBpc1JlbW90ZSA9IGZhbHNlKTogVCB7XG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmJsb2NrU3RhY2suY3VycmVudDtcblxuICAgIGlmIChjdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICBpZiAoIWlzUmVtb3RlKSB7XG4gICAgICAgIGN1cnJlbnQuZGlkQXBwZW5kQm91bmRzKGJsb2NrKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9fb3BlbkJsb2NrKCk7XG4gICAgdGhpcy5ibG9ja1N0YWNrLnB1c2goYmxvY2spO1xuICAgIHJldHVybiBibG9jaztcbiAgfVxuXG4gIHBvcEJsb2NrKCk6IExpdmVCbG9jayB7XG4gICAgdGhpcy5ibG9jaygpLmZpbmFsaXplKHRoaXMpO1xuICAgIHRoaXMuX19jbG9zZUJsb2NrKCk7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmJsb2NrU3RhY2sucG9wKCksICdFeHBlY3RlZCBwb3BCbG9jayB0byByZXR1cm4gYSBibG9jaycpO1xuICB9XG5cbiAgX19vcGVuQmxvY2soKTogdm9pZCB7fVxuICBfX2Nsb3NlQmxvY2soKTogdm9pZCB7fVxuXG4gIC8vIHRvZG8gcmV0dXJuIHNlZW1zIHVudXNlZFxuICBvcGVuRWxlbWVudCh0YWc6IHN0cmluZyk6IFNpbXBsZUVsZW1lbnQge1xuICAgIGxldCBlbGVtZW50ID0gdGhpcy5fX29wZW5FbGVtZW50KHRhZyk7XG4gICAgdGhpcy5jb25zdHJ1Y3RpbmcgPSBlbGVtZW50O1xuXG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cblxuICBfX29wZW5FbGVtZW50KHRhZzogc3RyaW5nKTogU2ltcGxlRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZG9tLmNyZWF0ZUVsZW1lbnQodGFnLCB0aGlzLmVsZW1lbnQpO1xuICB9XG5cbiAgZmx1c2hFbGVtZW50KG1vZGlmaWVyczogT3B0aW9uPFtNb2RpZmllck1hbmFnZXIsIHVua25vd25dW10+KSB7XG4gICAgbGV0IHBhcmVudCA9IHRoaXMuZWxlbWVudDtcbiAgICBsZXQgZWxlbWVudCA9IGV4cGVjdChcbiAgICAgIHRoaXMuY29uc3RydWN0aW5nLFxuICAgICAgYGZsdXNoRWxlbWVudCBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiBjb25zdHJ1Y3RpbmcgYW4gZWxlbWVudGBcbiAgICApO1xuXG4gICAgdGhpcy5fX2ZsdXNoRWxlbWVudChwYXJlbnQsIGVsZW1lbnQpO1xuXG4gICAgdGhpcy5jb25zdHJ1Y3RpbmcgPSBudWxsO1xuICAgIHRoaXMub3BlcmF0aW9ucyA9IG51bGw7XG5cbiAgICB0aGlzLnB1c2hNb2RpZmllcnMobW9kaWZpZXJzKTtcbiAgICB0aGlzLnB1c2hFbGVtZW50KGVsZW1lbnQsIG51bGwpO1xuICAgIHRoaXMuZGlkT3BlbkVsZW1lbnQoZWxlbWVudCk7XG4gIH1cblxuICBfX2ZsdXNoRWxlbWVudChwYXJlbnQ6IFNpbXBsZUVsZW1lbnQsIGNvbnN0cnVjdGluZzogU2ltcGxlRWxlbWVudCkge1xuICAgIHRoaXMuZG9tLmluc2VydEJlZm9yZShwYXJlbnQsIGNvbnN0cnVjdGluZywgdGhpcy5uZXh0U2libGluZyk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKTogT3B0aW9uPFtNb2RpZmllck1hbmFnZXIsIHVua25vd25dW10+IHtcbiAgICB0aGlzLndpbGxDbG9zZUVsZW1lbnQoKTtcbiAgICB0aGlzLnBvcEVsZW1lbnQoKTtcbiAgICByZXR1cm4gdGhpcy5wb3BNb2RpZmllcnMoKTtcbiAgfVxuXG4gIHB1c2hSZW1vdGVFbGVtZW50KFxuICAgIGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQsXG4gICAgZ3VpZDogc3RyaW5nLFxuICAgIGluc2VydEJlZm9yZTogTWF5YmU8U2ltcGxlTm9kZT5cbiAgKTogT3B0aW9uPFJlbW90ZUxpdmVCbG9jaz4ge1xuICAgIHJldHVybiB0aGlzLl9fcHVzaFJlbW90ZUVsZW1lbnQoZWxlbWVudCwgZ3VpZCwgaW5zZXJ0QmVmb3JlKTtcbiAgfVxuXG4gIF9fcHVzaFJlbW90ZUVsZW1lbnQoXG4gICAgZWxlbWVudDogU2ltcGxlRWxlbWVudCxcbiAgICBfZ3VpZDogc3RyaW5nLFxuICAgIGluc2VydEJlZm9yZTogTWF5YmU8U2ltcGxlTm9kZT5cbiAgKTogT3B0aW9uPFJlbW90ZUxpdmVCbG9jaz4ge1xuICAgIHRoaXMucHVzaEVsZW1lbnQoZWxlbWVudCwgaW5zZXJ0QmVmb3JlKTtcblxuICAgIGlmIChpbnNlcnRCZWZvcmUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgd2hpbGUgKGVsZW1lbnQubGFzdENoaWxkKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQ2hpbGQoZWxlbWVudC5sYXN0Q2hpbGQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBibG9jayA9IG5ldyBSZW1vdGVMaXZlQmxvY2soZWxlbWVudCk7XG5cbiAgICByZXR1cm4gdGhpcy5wdXNoTGl2ZUJsb2NrKGJsb2NrLCB0cnVlKTtcbiAgfVxuXG4gIHBvcFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5wb3BCbG9jaygpO1xuICAgIHRoaXMucG9wRWxlbWVudCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHB1c2hFbGVtZW50KGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQsIG5leHRTaWJsaW5nOiBNYXliZTxTaW1wbGVOb2RlPiA9IG51bGwpIHtcbiAgICB0aGlzW0NVUlNPUl9TVEFDS10ucHVzaChuZXcgQ3Vyc29ySW1wbChlbGVtZW50LCBuZXh0U2libGluZykpO1xuICB9XG5cbiAgcHJpdmF0ZSBwdXNoTW9kaWZpZXJzKG1vZGlmaWVyczogT3B0aW9uPFtNb2RpZmllck1hbmFnZXIsIHVua25vd25dW10+KTogdm9pZCB7XG4gICAgdGhpcy5tb2RpZmllclN0YWNrLnB1c2gobW9kaWZpZXJzKTtcbiAgfVxuXG4gIHByaXZhdGUgcG9wTW9kaWZpZXJzKCk6IE9wdGlvbjxbTW9kaWZpZXJNYW5hZ2VyLCB1bmtub3duXVtdPiB7XG4gICAgcmV0dXJuIHRoaXMubW9kaWZpZXJTdGFjay5wb3AoKTtcbiAgfVxuXG4gIGRpZEFwcGVuZEJvdW5kcyhib3VuZHM6IEJvdW5kcyk6IEJvdW5kcyB7XG4gICAgdGhpcy5ibG9jaygpLmRpZEFwcGVuZEJvdW5kcyhib3VuZHMpO1xuICAgIHJldHVybiBib3VuZHM7XG4gIH1cblxuICBkaWRBcHBlbmROb2RlPFQgZXh0ZW5kcyBTaW1wbGVOb2RlPihub2RlOiBUKTogVCB7XG4gICAgdGhpcy5ibG9jaygpLmRpZEFwcGVuZE5vZGUobm9kZSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBkaWRPcGVuRWxlbWVudChlbGVtZW50OiBTaW1wbGVFbGVtZW50KTogU2ltcGxlRWxlbWVudCB7XG4gICAgdGhpcy5ibG9jaygpLm9wZW5FbGVtZW50KGVsZW1lbnQpO1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgd2lsbENsb3NlRWxlbWVudCgpIHtcbiAgICB0aGlzLmJsb2NrKCkuY2xvc2VFbGVtZW50KCk7XG4gIH1cblxuICBhcHBlbmRUZXh0KHN0cmluZzogc3RyaW5nKTogU2ltcGxlVGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuZGlkQXBwZW5kTm9kZSh0aGlzLl9fYXBwZW5kVGV4dChzdHJpbmcpKTtcbiAgfVxuXG4gIF9fYXBwZW5kVGV4dCh0ZXh0OiBzdHJpbmcpOiBTaW1wbGVUZXh0IHtcbiAgICBsZXQgeyBkb20sIGVsZW1lbnQsIG5leHRTaWJsaW5nIH0gPSB0aGlzO1xuICAgIGxldCBub2RlID0gZG9tLmNyZWF0ZVRleHROb2RlKHRleHQpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUoZWxlbWVudCwgbm9kZSwgbmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgX19hcHBlbmROb2RlKG5vZGU6IFNpbXBsZU5vZGUpOiBTaW1wbGVOb2RlIHtcbiAgICB0aGlzLmRvbS5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCBub2RlLCB0aGlzLm5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIF9fYXBwZW5kRnJhZ21lbnQoZnJhZ21lbnQ6IFNpbXBsZURvY3VtZW50RnJhZ21lbnQpOiBCb3VuZHMge1xuICAgIGxldCBmaXJzdCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7XG5cbiAgICBpZiAoZmlyc3QpIHtcbiAgICAgIGxldCByZXQgPSBuZXcgQ29uY3JldGVCb3VuZHModGhpcy5lbGVtZW50LCBmaXJzdCwgZnJhZ21lbnQubGFzdENoaWxkISk7XG4gICAgICB0aGlzLmRvbS5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCBmcmFnbWVudCwgdGhpcy5uZXh0U2libGluZyk7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IFNpbmdsZU5vZGVCb3VuZHModGhpcy5lbGVtZW50LCB0aGlzLl9fYXBwZW5kQ29tbWVudCgnJykpO1xuICAgIH1cbiAgfVxuXG4gIF9fYXBwZW5kSFRNTChodG1sOiBzdHJpbmcpOiBCb3VuZHMge1xuICAgIHJldHVybiB0aGlzLmRvbS5pbnNlcnRIVE1MQmVmb3JlKHRoaXMuZWxlbWVudCwgdGhpcy5uZXh0U2libGluZywgaHRtbCk7XG4gIH1cblxuICBhcHBlbmREeW5hbWljSFRNTCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IGJvdW5kcyA9IHRoaXMudHJ1c3RlZENvbnRlbnQodmFsdWUpO1xuICAgIHRoaXMuZGlkQXBwZW5kQm91bmRzKGJvdW5kcyk7XG4gIH1cblxuICBhcHBlbmREeW5hbWljVGV4dCh2YWx1ZTogc3RyaW5nKTogU2ltcGxlVGV4dCB7XG4gICAgbGV0IG5vZGUgPSB0aGlzLnVudHJ1c3RlZENvbnRlbnQodmFsdWUpO1xuICAgIHRoaXMuZGlkQXBwZW5kTm9kZShub2RlKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIGFwcGVuZER5bmFtaWNGcmFnbWVudCh2YWx1ZTogU2ltcGxlRG9jdW1lbnRGcmFnbWVudCk6IHZvaWQge1xuICAgIGxldCBib3VuZHMgPSB0aGlzLl9fYXBwZW5kRnJhZ21lbnQodmFsdWUpO1xuICAgIHRoaXMuZGlkQXBwZW5kQm91bmRzKGJvdW5kcyk7XG4gIH1cblxuICBhcHBlbmREeW5hbWljTm9kZSh2YWx1ZTogU2ltcGxlTm9kZSk6IHZvaWQge1xuICAgIGxldCBub2RlID0gdGhpcy5fX2FwcGVuZE5vZGUodmFsdWUpO1xuICAgIGxldCBib3VuZHMgPSBuZXcgU2luZ2xlTm9kZUJvdW5kcyh0aGlzLmVsZW1lbnQsIG5vZGUpO1xuICAgIHRoaXMuZGlkQXBwZW5kQm91bmRzKGJvdW5kcyk7XG4gIH1cblxuICBwcml2YXRlIHRydXN0ZWRDb250ZW50KHZhbHVlOiBzdHJpbmcpOiBCb3VuZHMge1xuICAgIHJldHVybiB0aGlzLl9fYXBwZW5kSFRNTCh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHVudHJ1c3RlZENvbnRlbnQodmFsdWU6IHN0cmluZyk6IFNpbXBsZVRleHQge1xuICAgIHJldHVybiB0aGlzLl9fYXBwZW5kVGV4dCh2YWx1ZSk7XG4gIH1cblxuICBhcHBlbmRDb21tZW50KHN0cmluZzogc3RyaW5nKTogU2ltcGxlQ29tbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZGlkQXBwZW5kTm9kZSh0aGlzLl9fYXBwZW5kQ29tbWVudChzdHJpbmcpKTtcbiAgfVxuXG4gIF9fYXBwZW5kQ29tbWVudChzdHJpbmc6IHN0cmluZyk6IFNpbXBsZUNvbW1lbnQge1xuICAgIGxldCB7IGRvbSwgZWxlbWVudCwgbmV4dFNpYmxpbmcgfSA9IHRoaXM7XG4gICAgbGV0IG5vZGUgPSBkb20uY3JlYXRlQ29tbWVudChzdHJpbmcpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUoZWxlbWVudCwgbm9kZSwgbmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgX19zZXRBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBuYW1lc3BhY2U6IE9wdGlvbjxBdHRyTmFtZXNwYWNlPik6IHZvaWQge1xuICAgIHRoaXMuZG9tLnNldEF0dHJpYnV0ZSh0aGlzLmNvbnN0cnVjdGluZyEsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICB9XG5cbiAgX19zZXRQcm9wZXJ0eShuYW1lOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gICAgKHRoaXMuY29uc3RydWN0aW5nISBhcyBhbnkpW25hbWVdID0gdmFsdWU7XG4gIH1cblxuICBzZXRTdGF0aWNBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBuYW1lc3BhY2U6IE9wdGlvbjxBdHRyTmFtZXNwYWNlPik6IHZvaWQge1xuICAgIHRoaXMuX19zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gIH1cblxuICBzZXREeW5hbWljQXR0cmlidXRlKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogdW5rbm93bixcbiAgICB0cnVzdGluZzogYm9vbGVhbixcbiAgICBuYW1lc3BhY2U6IE9wdGlvbjxBdHRyTmFtZXNwYWNlPlxuICApOiBEeW5hbWljQXR0cmlidXRlIHtcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuY29uc3RydWN0aW5nITtcbiAgICBsZXQgYXR0cmlidXRlID0gdGhpcy5lbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsIG5hbWUsIHRydXN0aW5nLCBuYW1lc3BhY2UpO1xuICAgIGF0dHJpYnV0ZS5zZXQodGhpcywgdmFsdWUsIHRoaXMuZW52KTtcbiAgICByZXR1cm4gYXR0cmlidXRlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTaW1wbGVMaXZlQmxvY2sgaW1wbGVtZW50cyBMaXZlQmxvY2sge1xuICBwcm90ZWN0ZWQgZmlyc3Q6IE9wdGlvbjxGaXJzdE5vZGU+ID0gbnVsbDtcbiAgcHJvdGVjdGVkIGxhc3Q6IE9wdGlvbjxMYXN0Tm9kZT4gPSBudWxsO1xuICBwcm90ZWN0ZWQgZGVzdHJveWFibGVzOiBPcHRpb248U3ltYm9sRGVzdHJveWFibGVbXT4gPSBudWxsO1xuICBwcm90ZWN0ZWQgbmVzdGluZyA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJlbnQ6IFNpbXBsZUVsZW1lbnQpIHt9XG5cbiAgcGFyZW50RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQ7XG4gIH1cblxuICBmaXJzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgbGV0IGZpcnN0ID0gZXhwZWN0KFxuICAgICAgdGhpcy5maXJzdCxcbiAgICAgICdjYW5ub3QgY2FsbCBgZmlyc3ROb2RlKClgIHdoaWxlIGBTaW1wbGVMaXZlQmxvY2tgIGlzIHN0aWxsIGluaXRpYWxpemluZydcbiAgICApO1xuXG4gICAgcmV0dXJuIGZpcnN0LmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgbGV0IGxhc3QgPSBleHBlY3QoXG4gICAgICB0aGlzLmxhc3QsXG4gICAgICAnY2Fubm90IGNhbGwgYGxhc3ROb2RlKClgIHdoaWxlIGBTaW1wbGVMaXZlQmxvY2tgIGlzIHN0aWxsIGluaXRpYWxpemluZydcbiAgICApO1xuXG4gICAgcmV0dXJuIGxhc3QubGFzdE5vZGUoKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQpIHtcbiAgICB0aGlzLmRpZEFwcGVuZE5vZGUoZWxlbWVudCk7XG4gICAgdGhpcy5uZXN0aW5nKys7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5uZXN0aW5nLS07XG4gIH1cblxuICBkaWRBcHBlbmROb2RlKG5vZGU6IFNpbXBsZU5vZGUpIHtcbiAgICBpZiAodGhpcy5uZXN0aW5nICE9PSAwKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuZmlyc3QpIHtcbiAgICAgIHRoaXMuZmlyc3QgPSBuZXcgRmlyc3Qobm9kZSk7XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0ID0gbmV3IExhc3Qobm9kZSk7XG4gIH1cblxuICBkaWRBcHBlbmRCb3VuZHMoYm91bmRzOiBCb3VuZHMpIHtcbiAgICBpZiAodGhpcy5uZXN0aW5nICE9PSAwKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuZmlyc3QpIHtcbiAgICAgIHRoaXMuZmlyc3QgPSBib3VuZHM7XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0ID0gYm91bmRzO1xuICB9XG5cbiAgZmluYWxpemUoc3RhY2s6IEVsZW1lbnRCdWlsZGVyKSB7XG4gICAgaWYgKHRoaXMuZmlyc3QgPT09IG51bGwpIHtcbiAgICAgIHN0YWNrLmFwcGVuZENvbW1lbnQoJycpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVtb3RlTGl2ZUJsb2NrIGV4dGVuZHMgU2ltcGxlTGl2ZUJsb2NrIGltcGxlbWVudHMgU3ltYm9sRGVzdHJveWFibGUge1xuICBbREVTVFJPWV0oKSB7XG4gICAgLy8gSW4gZ2VuZXJhbCwgeW91IG9ubHkgbmVlZCB0byBjbGVhciB0aGUgcm9vdCBvZiBhIGhpZXJhcmNoeSwgYW5kIHNob3VsZCBuZXZlclxuICAgIC8vIG5lZWQgdG8gY2xlYXIgYW55IGNoaWxkIG5vZGVzLiBUaGlzIGlzIGFuIGltcG9ydGFudCBjb25zdHJhaW50IHRoYXQgZ2l2ZXMgdXNcbiAgICAvLyBhIHN0cm9uZyBndWFyYW50ZWUgdGhhdCBjbGVhcmluZyBhIHN1YnRyZWUgaXMgYSBzaW5nbGUgRE9NIG9wZXJhdGlvbi5cbiAgICAvL1xuICAgIC8vIEJlY2F1c2UgcmVtb3RlIGJsb2NrcyBhcmUgbm90IG5vcm1hbGx5IHBoeXNpY2FsbHkgbmVzdGVkIGluc2lkZSBvZiB0aGUgdHJlZVxuICAgIC8vIHRoYXQgdGhleSBhcmUgbG9naWNhbGx5IG5lc3RlZCBpbnNpZGUsIHdlIG1hbnVhbGx5IGNsZWFyIHJlbW90ZSBibG9ja3Mgd2hlblxuICAgIC8vIGEgbG9naWNhbCBwYXJlbnQgaXMgY2xlYXJlZC5cbiAgICAvL1xuICAgIC8vIEhPV0VWRVIsIGl0IGlzIGN1cnJlbnRseSBwb3NzaWJsZSBmb3IgYSByZW1vdGUgYmxvY2sgdG8gYmUgcGh5c2ljYWxseSBuZXN0ZWRcbiAgICAvLyBpbnNpZGUgb2YgdGhlIGJsb2NrIGl0IGlzIGxvZ2ljYWxseSBjb250YWluZWQgaW5zaWRlIG9mLiBUaGlzIGhhcHBlbnMgd2hlblxuICAgIC8vIHRoZSByZW1vdGUgYmxvY2sgaXMgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgYXBwbGljYXRpb24ncyBlbnRpcmUgZWxlbWVudC5cbiAgICAvL1xuICAgIC8vIFRoZSBwcm9ibGVtIHdpdGggdGhhdCBzY2VuYXJpbyBpcyB0aGF0IEdsaW1tZXIgYmVsaWV2ZXMgdGhhdCBpdCBvd25zIG1vcmUgb2ZcbiAgICAvLyB0aGUgRE9NIHRoYW4gaXQgYWN0dWFsbHkgZG9lcy4gVGhlIGNvZGUgaXMgYXR0ZW1wdGluZyB0byB3cml0ZSBwYXN0IHRoZSBlbmRcbiAgICAvLyBvZiB0aGUgR2xpbW1lci1tYW5hZ2VkIHJvb3QsIGJ1dCBHbGltbWVyIGlzbid0IGF3YXJlIG9mIHRoYXQuXG4gICAgLy9cbiAgICAvLyBUaGUgY29ycmVjdCBzb2x1dGlvbiB0byB0aGF0IHByb2JsZW0gaXMgZm9yIEdsaW1tZXIgdG8gYmUgYXdhcmUgb2YgdGhlIGVuZFxuICAgIC8vIG9mIHRoZSBib3VuZHMgdGhhdCBpdCBvd25zLCBhbmQgb25jZSB3ZSBtYWtlIHRoYXQgY2hhbmdlLCB0aGlzIGNoZWNrIGNvdWxkXG4gICAgLy8gYmUgcmVtb3ZlZC5cbiAgICAvL1xuICAgIC8vIEZvciBub3csIGEgbW9yZSB0YXJnZXRlZCBmaXggaXMgdG8gY2hlY2sgd2hldGhlciB0aGUgbm9kZSB3YXMgYWxyZWFkeSByZW1vdmVkXG4gICAgLy8gYW5kIGF2b2lkIGNsZWFyaW5nIHRoZSBub2RlIGlmIGl0IHdhcy4gSW4gbW9zdCBjYXNlcyB0aGlzIHNob3VsZG4ndCBoYXBwZW4sXG4gICAgLy8gc28gdGhpcyBtaWdodCBoaWRlIGJ1Z3Mgd2hlcmUgdGhlIGNvZGUgY2xlYXJzIG5lc3RlZCBub2RlcyB1bm5lY2Vzc2FyaWx5LFxuICAgIC8vIHNvIHdlIHNob3VsZCBldmVudHVhbGx5IHRyeSB0byBkbyB0aGUgY29ycmVjdCBmaXguXG4gICAgaWYgKHRoaXMucGFyZW50RWxlbWVudCgpID09PSB0aGlzLmZpcnN0Tm9kZSgpLnBhcmVudE5vZGUpIHtcbiAgICAgIGNsZWFyKHRoaXMpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRhYmxlQmxvY2tJbXBsIGV4dGVuZHMgU2ltcGxlTGl2ZUJsb2NrIGltcGxlbWVudHMgVXBkYXRhYmxlQmxvY2sge1xuICByZXNldChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPFNpbXBsZU5vZGU+IHtcbiAgICBsZXQgbmV4dFNpYmxpbmcgPSBkZXRhY2hDaGlsZHJlbih0aGlzLCBlbnYpO1xuXG4gICAgLy8gbGV0IG5leHRTaWJsaW5nID0gY2xlYXIodGhpcyk7XG5cbiAgICB0aGlzLmZpcnN0ID0gbnVsbDtcbiAgICB0aGlzLmxhc3QgPSBudWxsO1xuICAgIHRoaXMuZGVzdHJveWFibGVzID0gbnVsbDtcbiAgICB0aGlzLm5lc3RpbmcgPSAwO1xuXG4gICAgcmV0dXJuIG5leHRTaWJsaW5nO1xuICB9XG59XG5cbi8vIEZJWE1FOiBBbGwgdGhlIG5vb3BzIGluIGhlcmUgaW5kaWNhdGUgYSBtb2RlbGxpbmcgcHJvYmxlbVxuY2xhc3MgTGl2ZUJsb2NrTGlzdCBpbXBsZW1lbnRzIExpdmVCbG9jayB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFyZW50OiBTaW1wbGVFbGVtZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYm91bmRMaXN0OiBMaW5rZWRMaXN0PExpbmtlZExpc3ROb2RlICYgTGl2ZUJsb2NrPlxuICApIHtcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICB0aGlzLmJvdW5kTGlzdCA9IGJvdW5kTGlzdDtcbiAgfVxuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIGxldCBoZWFkID0gZXhwZWN0KFxuICAgICAgdGhpcy5ib3VuZExpc3QuaGVhZCgpLFxuICAgICAgJ2Nhbm5vdCBjYWxsIGBmaXJzdE5vZGUoKWAgd2hpbGUgYExpdmVCbG9ja0xpc3RgIGlzIHN0aWxsIGluaXRpYWxpemluZydcbiAgICApO1xuXG4gICAgcmV0dXJuIGhlYWQuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpOiBTaW1wbGVOb2RlIHtcbiAgICBsZXQgdGFpbCA9IGV4cGVjdChcbiAgICAgIHRoaXMuYm91bmRMaXN0LnRhaWwoKSxcbiAgICAgICdjYW5ub3QgY2FsbCBgbGFzdE5vZGUoKWAgd2hpbGUgYExpdmVCbG9ja0xpc3RgIGlzIHN0aWxsIGluaXRpYWxpemluZydcbiAgICApO1xuXG4gICAgcmV0dXJuIHRhaWwubGFzdE5vZGUoKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KF9lbGVtZW50OiBTaW1wbGVFbGVtZW50KSB7XG4gICAgYXNzZXJ0KGZhbHNlLCAnQ2Fubm90IG9wZW5FbGVtZW50IGRpcmVjdGx5IGluc2lkZSBhIGJsb2NrIGxpc3QnKTtcbiAgfVxuXG4gIGNsb3NlRWxlbWVudCgpIHtcbiAgICBhc3NlcnQoZmFsc2UsICdDYW5ub3QgY2xvc2VFbGVtZW50IGRpcmVjdGx5IGluc2lkZSBhIGJsb2NrIGxpc3QnKTtcbiAgfVxuXG4gIGRpZEFwcGVuZE5vZGUoX25vZGU6IFNpbXBsZU5vZGUpIHtcbiAgICBhc3NlcnQoZmFsc2UsICdDYW5ub3QgY3JlYXRlIGEgbmV3IG5vZGUgZGlyZWN0bHkgaW5zaWRlIGEgYmxvY2sgbGlzdCcpO1xuICB9XG5cbiAgZGlkQXBwZW5kQm91bmRzKF9ib3VuZHM6IEJvdW5kcykge31cblxuICBmaW5hbGl6ZShfc3RhY2s6IEVsZW1lbnRCdWlsZGVyKSB7XG4gICAgYXNzZXJ0KHRoaXMuYm91bmRMaXN0LmhlYWQoKSAhPT0gbnVsbCwgJ2JvdW5kc0xpc3QgY2Fubm90IGJlIGVtcHR5Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsaWVudEJ1aWxkZXIoZW52OiBFbnZpcm9ubWVudCwgY3Vyc29yOiBDdXJzb3JJbXBsKTogRWxlbWVudEJ1aWxkZXIge1xuICByZXR1cm4gTmV3RWxlbWVudEJ1aWxkZXIuZm9ySW5pdGlhbFJlbmRlcihlbnYsIGN1cnNvcik7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9 |
@@ -79,8 +79,2 @@ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } | ||
_proto.currentBlock = function currentBlock() { | ||
return this.elements().block(); | ||
} | ||
/* Registers */ | ||
; | ||
// Fetch a value from a register onto the stack | ||
@@ -368,5 +362,15 @@ _proto.fetch = function fetch(register) { | ||
while (true) { | ||
result = this.next(); | ||
if (result.done) break; | ||
try { | ||
while (true) { | ||
result = this.next(); | ||
if (result.done) break; | ||
} | ||
} finally { | ||
// If any existing blocks are open, due to an error or something like | ||
// that, we need to close them all and clean things up properly. | ||
var elements = this.elements(); | ||
while (elements.hasBlocks) { | ||
elements.popBlock(); | ||
} | ||
} | ||
@@ -415,2 +419,4 @@ | ||
} | ||
/* Registers */ | ||
}, { | ||
@@ -560,2 +566,2 @@ key: "pc", | ||
}(VM); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2FwcGVuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQTJCQSxTQUNFLG1CQURGLElBQ0Usb0JBREYsRUFBQSxVQUFBLEVBQUEsTUFBQSxFQUFBLFVBQUEsRUFBQSxTQUFBLEVBQUEsS0FBQSxFQUFBLE1BQUEsUUFBQSxlQUFBO0FBV0EsU0FBQSxHQUFBLEVBQUEsR0FBQSxFQUFBLEdBQUEsRUFBQSxHQUFBLEVBQUEsR0FBQSxFQUFBLEdBQUEsRUFBQSxHQUFBLEVBQUEsR0FBQSxFQUFBLGtCQUFBLFFBQUEsYUFBQTtBQWVBLFNBQUEsWUFBQSxRQUFBLGVBQUE7QUFDQSxTQUFBLFlBQUEsUUFBQSxlQUFBO0FBQ0EsU0FBQSxlQUFBLEVBQUEsdUJBQUEsRUFBQSxXQUFBLFFBQUEsd0JBQUE7QUFDQSxTQUFBLFNBQUEsUUFBQSxnQkFBQTtBQUNBLFNBQUEsY0FBQSxRQUFBLFlBQUE7QUFDQSxTQUFBLG1CQUFBLFFBQUEsZUFBQTtBQUNBLFNBQUEsSUFBQSxFQUFBLFNBQUEsRUFBQSxnQkFBQSxFQUFBLElBQUEsRUFBQSxRQUFBLEVBQUEsU0FBQSxFQUFBLE1BQUEsUUFBQSxZQUFBO0FBQ0EsU0FBQSxlQUFBLFFBQUEsYUFBQTtBQUNBLE9BQUEsVUFBQSxNQUFBLGFBQUE7QUFDQSxPQUFBLGdCQUFBLE1BQUEsaUJBQUE7QUFDQSxPQUFBLG1CQUFBLE1BQUEsU0FBQTtBQUNBLFNBQUEsZUFBQSxFQUFBLG9CQUFBLEVBQUEsU0FBQSxRQUFBLFVBQUE7O0lBa0ZBLE0sR0FBQSxrQkFBQTtBQUNXLE9BQUEsS0FBQSxHQUFRLElBQVIsS0FBUSxFQUFSO0FBQ0EsT0FBQSxZQUFBLEdBQWUsSUFBZixLQUFlLEVBQWY7QUFDQSxPQUFBLFFBQUEsR0FBVyxJQUFYLEtBQVcsRUFBWDtBQUNBLE9BQUEsS0FBQSxHQUFRLElBQVIsS0FBUSxFQUFSO0FBQ0EsT0FBQSxJ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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcGlsYWJsZUJsb2NrLFxuICBDb21waWxhYmxlVGVtcGxhdGUsXG4gIERlc3Ryb3lhYmxlLFxuICBEcm9wLFxuICBEeW5hbWljU2NvcGUsXG4gIEVudmlyb25tZW50LFxuICBKaXRPckFvdEJsb2NrLFxuICBQYXJ0aWFsU2NvcGUsXG4gIFJlbmRlclJlc3VsdCxcbiAgUmljaEl0ZXJhdG9yUmVzdWx0LFxuICBSdW50aW1lQ29udGV4dCxcbiAgUnVudGltZUNvbnN0YW50cyxcbiAgUnVudGltZUhlYXAsXG4gIFJ1bnRpbWVQcm9ncmFtLFxuICBTY29wZSxcbiAgU3ltYm9sRGVzdHJveWFibGUsXG4gIFN5bnRheENvbXBpbGF0aW9uQ29udGV4dCxcbiAgVk0gYXMgUHVibGljVk0sXG4gIEppdFJ1bnRpbWVDb250ZXh0LFxuICBBb3RSdW50aW1lQ29udGV4dCxcbiAgTGl2ZUJsb2NrLFxuICBFbGVtZW50QnVpbGRlcixcbn0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBMT0NBTF9TSE9VTERfTE9HIH0gZnJvbSAnQGdsaW1tZXIvbG9jYWwtZGVidWctZmxhZ3MnO1xuaW1wb3J0IHsgUnVudGltZU9wSW1wbCB9IGZyb20gJ0BnbGltbWVyL3Byb2dyYW0nO1xuaW1wb3J0IHsgUGF0aFJlZmVyZW5jZSwgUmVmZXJlbmNlSXRlcmF0b3IsIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHtcbiAgYXNzb2NpYXRlRGVzdHJ1Y3RvcixcbiAgZGVzdHJ1Y3RvcixcbiAgZXhwZWN0LFxuICBpc0Ryb3AsXG4gIExpbmtlZExpc3QsXG4gIExpc3RTbGljZSxcbiAgT3B0aW9uLFxuICBTdGFjayxcbiAgYXNzZXJ0LFxufSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gICRmcCxcbiAgJHBjLFxuICAkczAsXG4gICRzMSxcbiAgJHNwLFxuICAkdDAsXG4gICR0MSxcbiAgJHYwLFxuICBpc0xvd0xldmVsUmVnaXN0ZXIsXG4gIE1hY2hpbmVSZWdpc3RlcixcbiAgUmVnaXN0ZXIsXG4gIFN5c2NhbGxSZWdpc3Rlcixcbn0gZnJvbSAnQGdsaW1tZXIvdm0nO1xuaW1wb3J0IHsgQ2hlY2tOdW1iZXIsIGNoZWNrIH0gZnJvbSAnQGdsaW1tZXIvZGVidWcnO1xuaW1wb3J0IHsgdW53cmFwSGFuZGxlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBjb21iaW5lU2xpY2UgfSBmcm9tICcuLi91dGlscy90YWdzJztcbmltcG9ydCB7IERpZE1vZGlmeU9wY29kZSwgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUsIExhYmVsT3Bjb2RlIH0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy92bSc7XG5pbXBvcnQgeyBTY29wZUltcGwgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgRGVidWdTdGF0ZSwgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi9vcGNvZGVzJztcbmltcG9ydCB7IFVOREVGSU5FRF9SRUZFUkVOQ0UgfSBmcm9tICcuLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IEFSR1MsIENPTlNUQU5UUywgREVTVFJVQ1RPUl9TVEFDSywgSEVBUCwgSU5ORVJfVk0sIFJFR0lTVEVSUywgU1RBQ0tTIH0gZnJvbSAnLi4vc3ltYm9scyc7XG5pbXBvcnQgeyBWTUFyZ3VtZW50c0ltcGwgfSBmcm9tICcuL2FyZ3VtZW50cyc7XG5pbXBvcnQgTG93TGV2ZWxWTSBmcm9tICcuL2xvdy1sZXZlbCc7XG5pbXBvcnQgUmVuZGVyUmVzdWx0SW1wbCBmcm9tICcuL3JlbmRlci1yZXN1bHQnO1xuaW1wb3J0IEV2YWx1YXRpb25TdGFja0ltcGwsIHsgRXZhbHVhdGlvblN0YWNrIH0gZnJvbSAnLi9zdGFjayc7XG5pbXBvcnQge1xuICBCbG9ja09wY29kZSxcbiAgTGlzdEJsb2NrT3Bjb2RlLFxuICBSZXN1bWFibGVWTVN0YXRlLFxuICBSZXN1bWFibGVWTVN0YXRlSW1wbCxcbiAgVHJ5T3Bjb2RlLFxuICBWTVN0YXRlLFxufSBmcm9tICcuL3VwZGF0ZSc7XG5cbi8qKlxuICogVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieSBpbnRlcm5hbCBvcGNvZGVzLCBhbmQgaXMgbW9yZSBzdGFibGUgdGhhblxuICogdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBBcHBlbmQgVk0gaXRzZWxmLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVybmFsVk08QyBleHRlbmRzIEppdE9yQW90QmxvY2sgPSBKaXRPckFvdEJsb2NrPiB7XG4gIHJlYWRvbmx5IFtDT05TVEFOVFNdOiBSdW50aW1lQ29uc3RhbnRzO1xuICByZWFkb25seSBbQVJHU106IFZNQXJndW1lbnRzSW1wbDtcblxuICByZWFkb25seSBlbnY6IEVudmlyb25tZW50O1xuICByZWFkb25seSBzdGFjazogRXZhbHVhdGlvblN0YWNrO1xuICByZWFkb25seSBydW50aW1lOiBSdW50aW1lQ29udGV4dDtcblxuICBsb2FkVmFsdWUocmVnaXN0ZXI6IE1hY2hpbmVSZWdpc3RlciwgdmFsdWU6IG51bWJlcik6IHZvaWQ7XG4gIGxvYWRWYWx1ZShyZWdpc3RlcjogUmVnaXN0ZXIsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgbG9hZFZhbHVlKHJlZ2lzdGVyOiBSZWdpc3RlciB8IE1hY2hpbmVSZWdpc3RlciwgdmFsdWU6IHVua25vd24pOiB2b2lkO1xuXG4gIGZldGNoVmFsdWUocmVnaXN0ZXI6IE1hY2hpbmVSZWdpc3Rlci5yYSB8IE1hY2hpbmVSZWdpc3Rlci5wYyk6IG51bWJlcjtcbiAgLy8gVE9ETzogU29tZXRoaW5nIGJldHRlciB0aGFuIGEgdHlwZSBhc3NlcnRpb24/XG4gIGZldGNoVmFsdWU8VD4ocmVnaXN0ZXI6IFJlZ2lzdGVyKTogVDtcbiAgZmV0Y2hWYWx1ZShyZWdpc3RlcjogUmVnaXN0ZXIpOiB1bmtub3duO1xuXG4gIGxvYWQocmVnaXN0ZXI6IFJlZ2lzdGVyKTogdm9pZDtcbiAgZmV0Y2gocmVnaXN0ZXI6IFJlZ2lzdGVyKTogdm9pZDtcblxuICBzY29wZSgpOiBTY29wZTxDPjtcbiAgZWxlbWVudHMoKTogRWxlbWVudEJ1aWxkZXI7XG5cbiAgZ2V0U2VsZigpOiBQYXRoUmVmZXJlbmNlPHVua25vd24+O1xuXG4gIHVwZGF0ZVdpdGgob3Bjb2RlOiBVcGRhdGluZ09wY29kZSk6IHZvaWQ7XG5cbiAgYXNzb2NpYXRlRGVzdHJveWFibGUoZDogU3ltYm9sRGVzdHJveWFibGUgfCBEZXN0cm95YWJsZSk6IHZvaWQ7XG5cbiAgYmVnaW5DYWNoZUdyb3VwKCk6IHZvaWQ7XG4gIGNvbW1pdENhY2hlR3JvdXAoKTogdm9pZDtcblxuICAvLy8gSXRlcmF0aW9uIC8vL1xuXG4gIGVudGVyTGlzdChvZmZzZXQ6IG51bWJlcik6IHZvaWQ7XG4gIGV4aXRMaXN0KCk6IHZvaWQ7XG4gIGl0ZXJhdGUobWVtbzogUGF0aFJlZmVyZW5jZTx1bmtub3duPiwgaXRlbTogUGF0aFJlZmVyZW5jZTx1bmtub3duPik6IFRyeU9wY29kZTtcbiAgZW50ZXJJdGVtKGtleTogdW5rbm93biwgb3Bjb2RlOiBUcnlPcGNvZGUpOiB2b2lkO1xuXG4gIHB1c2hSb290U2NvcGUoc2l6ZTogbnVtYmVyKTogUGFydGlhbFNjb3BlPEM+O1xuICBwdXNoQ2hpbGRTY29wZSgpOiB2b2lkO1xuICBwb3BTY29wZSgpOiB2b2lkO1xuICBwdXNoU2NvcGUoc2NvcGU6IFNjb3BlPEM+KTogdm9pZDtcblxuICBkeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlO1xuICBiaW5kRHluYW1pY1Njb3BlKG5hbWVzOiBudW1iZXJbXSk6IHZvaWQ7XG4gIHB1c2hEeW5hbWljU2NvcGUoKTogdm9pZDtcbiAgcG9wRHluYW1pY1Njb3BlKCk6IHZvaWQ7XG5cbiAgZW50ZXIoYXJnczogbnVtYmVyKTogdm9pZDtcbiAgZXhpdCgpOiB2b2lkO1xuXG4gIGdvdG8ocGM6IG51bWJlcik6IHZvaWQ7XG4gIGNhbGwoaGFuZGxlOiBudW1iZXIpOiB2b2lkO1xuICBwdXNoRnJhbWUoKTogdm9pZDtcblxuICByZWZlcmVuY2VGb3JTeW1ib2woc3ltYm9sOiBudW1iZXIpOiBQYXRoUmVmZXJlbmNlPHVua25vd24+O1xuXG4gIGV4ZWN1dGUoaW5pdGlhbGl6ZT86ICh2bTogdGhpcykgPT4gdm9pZCk6IFJlbmRlclJlc3VsdDtcbiAgcHVzaFVwZGF0aW5nKGxpc3Q/OiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPik6IHZvaWQ7XG4gIG5leHQoKTogUmljaEl0ZXJhdG9yUmVzdWx0PG51bGwsIFJlbmRlclJlc3VsdD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYWxKaXRWTSBleHRlbmRzIEludGVybmFsVk08Q29tcGlsYWJsZUJsb2NrPiB7XG4gIGNvbXBpbGUoYmxvY2s6IENvbXBpbGFibGVUZW1wbGF0ZSk6IG51bWJlcjtcbiAgcmVhZG9ubHkgcnVudGltZTogSml0UnVudGltZUNvbnRleHQ7XG4gIHJlYWRvbmx5IGNvbnRleHQ6IFN5bnRheENvbXBpbGF0aW9uQ29udGV4dDtcbn1cblxuY2xhc3MgU3RhY2tzPEMgZXh0ZW5kcyBKaXRPckFvdEJsb2NrPiB7XG4gIHJlYWRvbmx5IHNjb3BlID0gbmV3IFN0YWNrPFNjb3BlPEM+PigpO1xuICByZWFkb25seSBkeW5hbWljU2NvcGUgPSBuZXcgU3RhY2s8RHluYW1pY1Njb3BlPigpO1xuICByZWFkb25seSB1cGRhdGluZyA9IG5ldyBTdGFjazxMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPj4oKTtcbiAgcmVhZG9ubHkgY2FjaGUgPSBuZXcgU3RhY2s8T3B0aW9uPFVwZGF0aW5nT3Bjb2RlPj4oKTtcbiAgcmVhZG9ubHkgbGlzdCA9IG5ldyBTdGFjazxMaXN0QmxvY2tPcGNvZGU+KCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFic3RyYWN0IGNsYXNzIFZNPEMgZXh0ZW5kcyBKaXRPckFvdEJsb2NrPiBpbXBsZW1lbnRzIFB1YmxpY1ZNLCBJbnRlcm5hbFZNPEM+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBbU1RBQ0tTXSA9IG5ldyBTdGFja3M8Qz4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBbSEVBUF06IFJ1bnRpbWVIZWFwO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3RydWN0b3I6IG9iamVjdDtcbiAgcHJpdmF0ZSByZWFkb25seSBbREVTVFJVQ1RPUl9TVEFDS10gPSBuZXcgU3RhY2s8b2JqZWN0PigpO1xuICByZWFkb25seSBbQ09OU1RBTlRTXTogUnVudGltZUNvbnN0YW50cztcbiAgcmVhZG9ubHkgW0FSR1NdOiBWTUFyZ3VtZW50c0ltcGw7XG4gIHJlYWRvbmx5IFtJTk5FUl9WTV06IExvd0xldmVsVk07XG5cbiAgZ2V0IHN0YWNrKCk6IEV2YWx1YXRpb25TdGFjayB7XG4gICAgcmV0dXJuIHRoaXNbSU5ORVJfVk1dLnN0YWNrIGFzIEV2YWx1YXRpb25TdGFjaztcbiAgfVxuXG4gIGN1cnJlbnRCbG9jaygpOiBMaXZlQmxvY2sge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRzKCkuYmxvY2soKTtcbiAgfVxuXG4gIC8qIFJlZ2lzdGVycyAqL1xuXG4gIGdldCBwYygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzW0lOTkVSX1ZNXS5mZXRjaFJlZ2lzdGVyKCRwYyk7XG4gIH1cblxuICBwdWJsaWMgczA6IHVua25vd24gPSBudWxsO1xuICBwdWJsaWMgczE6IHVua25vd24gPSBudWxsO1xuICBwdWJsaWMgdDA6IHVua25vd24gPSBudWxsO1xuICBwdWJsaWMgdDE6IHVua25vd24gPSBudWxsO1xuICBwdWJsaWMgdjA6IHVua25vd24gPSBudWxsO1xuXG4gIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyIG9udG8gdGhlIHN0YWNrXG4gIGZldGNoKHJlZ2lzdGVyOiBTeXNjYWxsUmVnaXN0ZXIpOiB2b2lkIHtcbiAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5mZXRjaFZhbHVlKHJlZ2lzdGVyKSk7XG4gIH1cblxuICAvLyBMb2FkIGEgdmFsdWUgZnJvbSB0aGUgc3RhY2sgaW50byBhIHJlZ2lzdGVyXG4gIGxvYWQocmVnaXN0ZXI6IFN5c2NhbGxSZWdpc3Rlcikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuc3RhY2sucG9wKCk7XG5cbiAgICB0aGlzLmxvYWRWYWx1ZShyZWdpc3RlciwgdmFsdWUpO1xuICB9XG5cbiAgLy8gRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgZmV0Y2hWYWx1ZShyZWdpc3RlcjogTWFjaGluZVJlZ2lzdGVyKTogbnVtYmVyO1xuICBmZXRjaFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3Rlcik6IFQ7XG4gIGZldGNoVmFsdWUocmVnaXN0ZXI6IFJlZ2lzdGVyIHwgTWFjaGluZVJlZ2lzdGVyKTogdW5rbm93biB7XG4gICAgaWYgKGlzTG93TGV2ZWxSZWdpc3RlcihyZWdpc3RlcikpIHtcbiAgICAgIHJldHVybiB0aGlzW0lOTkVSX1ZNXS5mZXRjaFJlZ2lzdGVyKHJlZ2lzdGVyKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlZ2lzdGVyKSB7XG4gICAgICBjYXNlICRzMDpcbiAgICAgICAgcmV0dXJuIHRoaXMuczA7XG4gICAgICBjYXNlICRzMTpcbiAgICAgICAgcmV0dXJuIHRoaXMuczE7XG4gICAgICBjYXNlICR0MDpcbiAgICAgICAgcmV0dXJuIHRoaXMudDA7XG4gICAgICBjYXNlICR0MTpcbiAgICAgICAgcmV0dXJuIHRoaXMudDE7XG4gICAgICBjYXNlICR2MDpcbiAgICAgICAgcmV0dXJuIHRoaXMudjA7XG4gICAgfVxuICB9XG5cbiAgLy8gTG9hZCBhIHZhbHVlIGludG8gYSByZWdpc3RlclxuXG4gIGxvYWRWYWx1ZTxUPihyZWdpc3RlcjogUmVnaXN0ZXIgfCBNYWNoaW5lUmVnaXN0ZXIsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgaWYgKGlzTG93TGV2ZWxSZWdpc3RlcihyZWdpc3RlcikpIHtcbiAgICAgIHRoaXNbSU5ORVJfVk1dLmxvYWRSZWdpc3RlcihyZWdpc3RlciwgKHZhbHVlIGFzIGFueSkgYXMgbnVtYmVyKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlZ2lzdGVyKSB7XG4gICAgICBjYXNlICRzMDpcbiAgICAgICAgdGhpcy5zMCA9IHZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJHMxOlxuICAgICAgICB0aGlzLnMxID0gdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAkdDA6XG4gICAgICAgIHRoaXMudDAgPSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICR0MTpcbiAgICAgICAgdGhpcy50MSA9IHZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJHYwOlxuICAgICAgICB0aGlzLnYwID0gdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNaWdyYXRlZCB0byBJbm5lclxuICAgKi9cblxuICAvLyBTdGFydCBhIG5ldyBmcmFtZSBhbmQgc2F2ZSAkcmEgYW5kICRmcCBvbiB0aGUgc3RhY2tcbiAgcHVzaEZyYW1lKCkge1xuICAgIHRoaXNbSU5ORVJfVk1dLnB1c2hGcmFtZSgpO1xuICB9XG5cbiAgLy8gUmVzdG9yZSAkcmEsICRzcCBhbmQgJGZwXG4gIHBvcEZyYW1lKCkge1xuICAgIHRoaXNbSU5ORVJfVk1dLnBvcEZyYW1lKCk7XG4gIH1cblxuICAvLyBKdW1wIHRvIGFuIGFkZHJlc3MgaW4gYHByb2dyYW1gXG4gIGdvdG8ob2Zmc2V0OiBudW1iZXIpIHtcbiAgICB0aGlzW0lOTkVSX1ZNXS5nb3RvKG9mZnNldCk7XG4gIH1cblxuICAvLyBTYXZlICRwYyBpbnRvICRyYSwgdGhlbiBqdW1wIHRvIGEgbmV3IGFkZHJlc3MgaW4gYHByb2dyYW1gIChqYWwgaW4gTUlQUylcbiAgY2FsbChoYW5kbGU6IG51bWJlcikge1xuICAgIHRoaXNbSU5ORVJfVk1dLmNhbGwoaGFuZGxlKTtcbiAgfVxuXG4gIC8vIFB1dCBhIHNwZWNpZmljIGBwcm9ncmFtYCBhZGRyZXNzIGluICRyYVxuICByZXR1cm5UbyhvZmZzZXQ6IG51bWJlcikge1xuICAgIHRoaXNbSU5ORVJfVk1dLnJldHVyblRvKG9mZnNldCk7XG4gIH1cblxuICAvLyBSZXR1cm4gdG8gdGhlIGBwcm9ncmFtYCBhZGRyZXNzIHN0b3JlZCBpbiAkcmFcbiAgcmV0dXJuKCkge1xuICAgIHRoaXNbSU5ORVJfVk1dLnJldHVybigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuZCBvZiBtaWdyYXRlZC5cbiAgICovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgcnVudGltZTogUnVudGltZUNvbnRleHQsXG4gICAgeyBwYywgc2NvcGUsIGR5bmFtaWNTY29wZSwgc3RhY2sgfTogVk1TdGF0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRTdGFjazogRWxlbWVudEJ1aWxkZXJcbiAgKSB7XG4gICAgbGV0IGV2YWxTdGFjayA9IEV2YWx1YXRpb25TdGFja0ltcGwucmVzdG9yZShzdGFjayk7XG5cbiAgICBhc3NlcnQodHlwZW9mIHBjID09PSAnbnVtYmVyJywgJ3BjIGlzIGEgbnVtYmVyJyk7XG5cbiAgICBldmFsU3RhY2tbUkVHSVNURVJTXVskcGNdID0gcGM7XG4gICAgZXZhbFN0YWNrW1JFR0lTVEVSU11bJHNwXSA9IHN0YWNrLmxlbmd0aCAtIDE7XG4gICAgZXZhbFN0YWNrW1JFR0lTVEVSU11bJGZwXSA9IC0xO1xuXG4gICAgdGhpc1tIRUFQXSA9IHRoaXMucHJvZ3JhbS5oZWFwO1xuICAgIHRoaXNbQ09OU1RBTlRTXSA9IHRoaXMucHJvZ3JhbS5jb25zdGFudHM7XG4gICAgdGhpcy5lbGVtZW50U3RhY2sgPSBlbGVtZW50U3RhY2s7XG4gICAgdGhpc1tTVEFDS1NdLnNjb3BlLnB1c2goc2NvcGUpO1xuICAgIHRoaXNbU1RBQ0tTXS5keW5hbWljU2NvcGUucHVzaChkeW5hbWljU2NvcGUpO1xuICAgIHRoaXNbQVJHU10gPSBuZXcgVk1Bcmd1bWVudHNJbXBsKCk7XG4gICAgdGhpc1tJTk5FUl9WTV0gPSBuZXcgTG93TGV2ZWxWTShcbiAgICAgIGV2YWxTdGFjayxcbiAgICAgIHRoaXNbSEVBUF0sXG4gICAgICBydW50aW1lLnByb2dyYW0sXG4gICAgICB7XG4gICAgICAgIGRlYnVnQmVmb3JlOiAob3Bjb2RlOiBSdW50aW1lT3BJbXBsKTogRGVidWdTdGF0ZSA9PiB7XG4gICAgICAgICAgcmV0dXJuIEFQUEVORF9PUENPREVTLmRlYnVnQmVmb3JlKHRoaXMsIG9wY29kZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVidWdBZnRlcjogKHN0YXRlOiBEZWJ1Z1N0YXRlKTogdm9pZCA9PiB7XG4gICAgICAgICAgQVBQRU5EX09QQ09ERVMuZGVidWdBZnRlcih0aGlzLCBzdGF0ZSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZXZhbFN0YWNrW1JFR0lTVEVSU11cbiAgICApO1xuXG4gICAgdGhpcy5kZXN0cnVjdG9yID0ge307XG4gICAgdGhpc1tERVNUUlVDVE9SX1NUQUNLXS5wdXNoKHRoaXMuZGVzdHJ1Y3Rvcik7XG4gIH1cblxuICBnZXQgcHJvZ3JhbSgpOiBSdW50aW1lUHJvZ3JhbSB7XG4gICAgcmV0dXJuIHRoaXMucnVudGltZS5wcm9ncmFtO1xuICB9XG5cbiAgZ2V0IGVudigpOiBFbnZpcm9ubWVudCB7XG4gICAgcmV0dXJuIHRoaXMucnVudGltZS5lbnY7XG4gIH1cblxuICBjYXB0dXJlU3RhdGUoYXJnczogbnVtYmVyLCBwYyA9IHRoaXNbSU5ORVJfVk1dLmZldGNoUmVnaXN0ZXIoJHBjKSk6IFZNU3RhdGUge1xuICAgIHJldHVybiB7XG4gICAgICBwYyxcbiAgICAgIGR5bmFtaWNTY29wZTogdGhpcy5keW5hbWljU2NvcGUoKSxcbiAgICAgIHNjb3BlOiB0aGlzLnNjb3BlKCksXG4gICAgICBzdGFjazogdGhpcy5zdGFjay5jYXB0dXJlKGFyZ3MpLFxuICAgIH07XG4gIH1cblxuICBhYnN0cmFjdCBjYXB0dXJlKGFyZ3M6IG51bWJlciwgcGM/OiBudW1iZXIpOiBSZXN1bWFibGVWTVN0YXRlPEludGVybmFsVk0+O1xuXG4gIGJlZ2luQ2FjaGVHcm91cCgpIHtcbiAgICB0aGlzW1NUQUNLU10uY2FjaGUucHVzaCh0aGlzLnVwZGF0aW5nKCkudGFpbCgpKTtcbiAgfVxuXG4gIGNvbW1pdENhY2hlR3JvdXAoKSB7XG4gICAgbGV0IEVORCA9IG5ldyBMYWJlbE9wY29kZSgnRU5EJyk7XG5cbiAgICBsZXQgb3Bjb2RlcyA9IHRoaXMudXBkYXRpbmcoKTtcbiAgICBsZXQgbWFya2VyID0gdGhpc1tTVEFDS1NdLmNhY2hlLnBvcCgpO1xuICAgIGxldCBoZWFkID0gbWFya2VyID8gb3Bjb2Rlcy5uZXh0Tm9kZShtYXJrZXIpIDogb3Bjb2Rlcy5oZWFkKCk7XG4gICAgbGV0IHRhaWwgPSBvcGNvZGVzLnRhaWwoKTtcbiAgICBsZXQgdGFnID0gY29tYmluZVNsaWNlKG5ldyBMaXN0U2xpY2UoaGVhZCwgdGFpbCkpO1xuXG4gICAgbGV0IGd1YXJkID0gbmV3IEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlKHRhZywgRU5EKTtcblxuICAgIG9wY29kZXMuaW5zZXJ0QmVmb3JlKGd1YXJkLCBoZWFkKTtcbiAgICBvcGNvZGVzLmFwcGVuZChuZXcgRGlkTW9kaWZ5T3Bjb2RlKGd1YXJkKSk7XG4gICAgb3Bjb2Rlcy5hcHBlbmQoRU5EKTtcbiAgfVxuXG4gIGVudGVyKGFyZ3M6IG51bWJlcikge1xuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpO1xuXG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKGFyZ3MpO1xuICAgIGxldCBibG9jayA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcblxuICAgIGxldCB0cnlPcGNvZGUgPSBuZXcgVHJ5T3Bjb2RlKHN0YXRlLCB0aGlzLnJ1bnRpbWUsIGJsb2NrLCB1cGRhdGluZyk7XG5cbiAgICB0aGlzLmRpZEVudGVyKHRyeU9wY29kZSk7XG4gIH1cblxuICBpdGVyYXRlKFxuICAgIG1lbW86IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj4sXG4gICAgdmFsdWU6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8dW5rbm93bj5cbiAgKTogVHJ5T3Bjb2RlIHtcbiAgICBsZXQgc3RhY2sgPSB0aGlzLnN0YWNrO1xuICAgIHN0YWNrLnB1c2godmFsdWUpO1xuICAgIHN0YWNrLnB1c2gobWVtbyk7XG5cbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMik7XG4gICAgbGV0IGJsb2NrID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuXG4gICAgLy8gbGV0IGlwID0gdGhpcy5pcDtcbiAgICAvLyB0aGlzLmlwID0gZW5kICsgNDtcbiAgICAvLyB0aGlzLmZyYW1lcy5wdXNoKGlwKTtcblxuICAgIHJldHVybiBuZXcgVHJ5T3Bjb2RlKHN0YXRlLCB0aGlzLnJ1bnRpbWUsIGJsb2NrLCBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKSk7XG4gIH1cblxuICBlbnRlckl0ZW0oa2V5OiBzdHJpbmcsIG9wY29kZTogVHJ5T3Bjb2RlKSB7XG4gICAgdGhpcy5saXN0QmxvY2soKS5tYXAuc2V0KGtleSwgb3Bjb2RlKTtcbiAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gIH1cblxuICBlbnRlckxpc3Qob2Zmc2V0OiBudW1iZXIpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxCbG9ja09wY29kZT4oKTtcblxuICAgIGxldCBhZGRyID0gdGhpc1tJTk5FUl9WTV0udGFyZ2V0KG9mZnNldCk7XG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDAsIGFkZHIpO1xuICAgIGxldCBsaXN0ID0gdGhpcy5lbGVtZW50cygpLnB1c2hCbG9ja0xpc3QodXBkYXRpbmcpO1xuICAgIGxldCBhcnRpZmFjdHMgPSB0aGlzLnN0YWNrLnBlZWs8UmVmZXJlbmNlSXRlcmF0b3I+KCkuYXJ0aWZhY3RzO1xuXG4gICAgbGV0IG9wY29kZSA9IG5ldyBMaXN0QmxvY2tPcGNvZGUoc3RhdGUsIHRoaXMucnVudGltZSwgbGlzdCwgdXBkYXRpbmcsIGFydGlmYWN0cyk7XG5cbiAgICB0aGlzW1NUQUNLU10ubGlzdC5wdXNoKG9wY29kZSk7XG5cbiAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gIH1cblxuICBwcml2YXRlIGRpZEVudGVyKG9wY29kZTogQmxvY2tPcGNvZGUpIHtcbiAgICB0aGlzLmFzc29jaWF0ZURlc3RydWN0b3IoZGVzdHJ1Y3RvcihvcGNvZGUpKTtcbiAgICB0aGlzW0RFU1RSVUNUT1JfU1RBQ0tdLnB1c2gob3Bjb2RlKTtcbiAgICB0aGlzLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICB0aGlzLnB1c2hVcGRhdGluZyhvcGNvZGUuY2hpbGRyZW4pO1xuICB9XG5cbiAgZXhpdCgpIHtcbiAgICB0aGlzW0RFU1RSVUNUT1JfU1RBQ0tdLnBvcCgpO1xuICAgIHRoaXMuZWxlbWVudHMoKS5wb3BCbG9jaygpO1xuICAgIHRoaXMucG9wVXBkYXRpbmcoKTtcblxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnVwZGF0aW5nKCkudGFpbCgpIGFzIEJsb2NrT3Bjb2RlO1xuXG4gICAgcGFyZW50LmRpZEluaXRpYWxpemVDaGlsZHJlbigpO1xuICB9XG5cbiAgZXhpdExpc3QoKSB7XG4gICAgdGhpcy5leGl0KCk7XG4gICAgdGhpc1tTVEFDS1NdLmxpc3QucG9wKCk7XG4gIH1cblxuICBwdXNoVXBkYXRpbmcobGlzdCA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpKTogdm9pZCB7XG4gICAgdGhpc1tTVEFDS1NdLnVwZGF0aW5nLnB1c2gobGlzdCk7XG4gIH1cblxuICBwb3BVcGRhdGluZygpOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzW1NUQUNLU10udXBkYXRpbmcucG9wKCksIFwiY2FuJ3QgcG9wIGFuIGVtcHR5IHN0YWNrXCIpO1xuICB9XG5cbiAgdXBkYXRlV2l0aChvcGNvZGU6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgdGhpcy51cGRhdGluZygpLmFwcGVuZChvcGNvZGUpO1xuICB9XG5cbiAgbGlzdEJsb2NrKCk6IExpc3RCbG9ja09wY29kZSB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzW1NUQUNLU10ubGlzdC5jdXJyZW50LCAnZXhwZWN0ZWQgYSBsaXN0IGJsb2NrJyk7XG4gIH1cblxuICBhc3NvY2lhdGVEZXN0cnVjdG9yKGNoaWxkOiBEcm9wKTogdm9pZCB7XG4gICAgaWYgKCFpc0Ryb3AoY2hpbGQpKSByZXR1cm47XG4gICAgbGV0IHBhcmVudCA9IGV4cGVjdCh0aGlzW0RFU1RSVUNUT1JfU1RBQ0tdLmN1cnJlbnQsICdFeHBlY3RlZCBkZXN0cnVjdG9yIHBhcmVudCcpO1xuICAgIGFzc29jaWF0ZURlc3RydWN0b3IocGFyZW50LCBjaGlsZCk7XG4gIH1cblxuICBhc3NvY2lhdGVEZXN0cm95YWJsZShjaGlsZDogU3ltYm9sRGVzdHJveWFibGUgfCBEZXN0cm95YWJsZSk6IHZvaWQge1xuICAgIHRoaXMuYXNzb2NpYXRlRGVzdHJ1Y3RvcihkZXN0cnVjdG9yKGNoaWxkKSk7XG4gIH1cblxuICB0cnlVcGRhdGluZygpOiBPcHRpb248TGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4+IHtcbiAgICByZXR1cm4gdGhpc1tTVEFDS1NdLnVwZGF0aW5nLmN1cnJlbnQ7XG4gIH1cblxuICB1cGRhdGluZygpOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgcmV0dXJuIGV4cGVjdChcbiAgICAgIHRoaXNbU1RBQ0tTXS51cGRhdGluZy5jdXJyZW50LFxuICAgICAgJ2V4cGVjdGVkIHVwZGF0aW5nIG9wY29kZSBvbiB0aGUgdXBkYXRpbmcgb3Bjb2RlIHN0YWNrJ1xuICAgICk7XG4gIH1cblxuICBlbGVtZW50cygpOiBFbGVtZW50QnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrO1xuICB9XG5cbiAgc2NvcGUoKTogU2NvcGU8Qz4ge1xuICAgIHJldHVybiBleHBlY3QodGhpc1tTVEFDS1NdLnNjb3BlLmN1cnJlbnQsICdleHBlY3RlZCBzY29wZSBvbiB0aGUgc2NvcGUgc3RhY2snKTtcbiAgfVxuXG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIHJldHVybiBleHBlY3QoXG4gICAgICB0aGlzW1NUQUNLU10uZHluYW1pY1Njb3BlLmN1cnJlbnQsXG4gICAgICAnZXhwZWN0ZWQgZHluYW1pYyBzY29wZSBvbiB0aGUgZHluYW1pYyBzY29wZSBzdGFjaydcbiAgICApO1xuICB9XG5cbiAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgdGhpc1tTVEFDS1NdLnNjb3BlLnB1c2godGhpcy5zY29wZSgpLmNoaWxkKCkpO1xuICB9XG5cbiAgcHVzaER5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIGxldCBjaGlsZCA9IHRoaXMuZHluYW1pY1Njb3BlKCkuY2hpbGQoKTtcbiAgICB0aGlzW1NUQUNLU10uZHluYW1pY1Njb3BlLnB1c2goY2hpbGQpO1xuICAgIHJldHVybiBjaGlsZDtcbiAgfVxuXG4gIHB1c2hSb290U2NvcGUoc2l6ZTogbnVtYmVyKTogUGFydGlhbFNjb3BlPEM+IHtcbiAgICBsZXQgc2NvcGUgPSBTY29wZUltcGwuc2l6ZWQ8Qz4oc2l6ZSk7XG4gICAgdGhpc1tTVEFDS1NdLnNjb3BlLnB1c2goc2NvcGUpO1xuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIHB1c2hTY29wZShzY29wZTogU2NvcGU8Qz4pIHtcbiAgICB0aGlzW1NUQUNLU10uc2NvcGUucHVzaChzY29wZSk7XG4gIH1cblxuICBwb3BTY29wZSgpIHtcbiAgICB0aGlzW1NUQUNLU10uc2NvcGUucG9wKCk7XG4gIH1cblxuICBwb3BEeW5hbWljU2NvcGUoKSB7XG4gICAgdGhpc1tTVEFDS1NdLmR5bmFtaWNTY29wZS5wb3AoKTtcbiAgfVxuXG4gIC8vLyBTQ09QRSBIRUxQRVJTXG5cbiAgZ2V0U2VsZigpOiBQYXRoUmVmZXJlbmNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U2VsZigpO1xuICB9XG5cbiAgcmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbDogbnVtYmVyKTogUGF0aFJlZmVyZW5jZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTeW1ib2woc3ltYm9sKTtcbiAgfVxuXG4gIC8vLyBFWEVDVVRJT05cblxuICBleGVjdXRlKGluaXRpYWxpemU/OiAodm06IHRoaXMpID0+IHZvaWQpOiBSZW5kZXJSZXN1bHQge1xuICAgIGlmIChMT0NBTF9TSE9VTERfTE9HKSB7XG4gICAgICBjb25zb2xlLmxvZyhgRVhFQ1VUSU5HIEZST00gJHt0aGlzW0lOTkVSX1ZNXS5mZXRjaFJlZ2lzdGVyKCRwYyl9YCk7XG4gICAgfVxuXG4gICAgaWYgKGluaXRpYWxpemUpIGluaXRpYWxpemUodGhpcyk7XG5cbiAgICBsZXQgcmVzdWx0OiBSaWNoSXRlcmF0b3JSZXN1bHQ8bnVsbCwgUmVuZGVyUmVzdWx0PjtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLm5leHQoKTtcbiAgICAgIGlmIChyZXN1bHQuZG9uZSkgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbiAgfVxuXG4gIG5leHQoKTogUmljaEl0ZXJhdG9yUmVzdWx0PG51bGwsIFJlbmRlclJlc3VsdD4ge1xuICAgIGxldCB7IGVudiwgZWxlbWVudFN0YWNrIH0gPSB0aGlzO1xuICAgIGxldCBvcGNvZGUgPSB0aGlzW0lOTkVSX1ZNXS5uZXh0U3RhdGVtZW50KCk7XG4gICAgbGV0IHJlc3VsdDogUmljaEl0ZXJhdG9yUmVzdWx0PG51bGwsIFJlbmRlclJlc3VsdD47XG4gICAgaWYgKG9wY29kZSAhPT0gbnVsbCkge1xuICAgICAgdGhpc1tJTk5FUl9WTV0uZXZhbHVhdGVPdXRlcihvcGNvZGUsIHRoaXMpO1xuICAgICAgcmVzdWx0ID0geyBkb25lOiBmYWxzZSwgdmFsdWU6IG51bGwgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVW5sb2FkIHRoZSBzdGFja1xuICAgICAgdGhpcy5zdGFjay5yZXNldCgpO1xuXG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIGRvbmU6IHRydWUsXG4gICAgICAgIHZhbHVlOiBuZXcgUmVuZGVyUmVzdWx0SW1wbChcbiAgICAgICAgICBlbnYsXG4gICAgICAgICAgdGhpcy5wb3BVcGRhdGluZygpLFxuICAgICAgICAgIGVsZW1lbnRTdGFjay5wb3BCbG9jaygpLFxuICAgICAgICAgIHRoaXMuZGVzdHJ1Y3RvclxuICAgICAgICApLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGJpbmREeW5hbWljU2NvcGUobmFtZXM6IG51bWJlcltdKSB7XG4gICAgbGV0IHNjb3BlID0gdGhpcy5keW5hbWljU2NvcGUoKTtcblxuICAgIGZvciAobGV0IGkgPSBuYW1lcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgbGV0IG5hbWUgPSB0aGlzW0NPTlNUQU5UU10uZ2V0U3RyaW5nKG5hbWVzW2ldKTtcbiAgICAgIHNjb3BlLnNldChuYW1lLCB0aGlzLnN0YWNrLnBvcDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+PigpKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdm1TdGF0ZTxDIGV4dGVuZHMgSml0T3JBb3RCbG9jaz4oXG4gIHBjOiBudW1iZXIsXG4gIHNjb3BlOiBTY29wZTxDPiA9IFNjb3BlSW1wbC5yb290PEM+KFVOREVGSU5FRF9SRUZFUkVOQ0UsIDApLFxuICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZVxuKSB7XG4gIHJldHVybiB7XG4gICAgcGMsXG4gICAgc2NvcGUsXG4gICAgZHluYW1pY1Njb3BlLFxuICAgIHN0YWNrOiBbXSxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNaW5pbWFsSW5pdE9wdGlvbnMge1xuICBoYW5kbGU6IG51bWJlcjtcbiAgdHJlZUJ1aWxkZXI6IEVsZW1lbnRCdWlsZGVyO1xuICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbml0T3B0aW9ucyBleHRlbmRzIE1pbmltYWxJbml0T3B0aW9ucyB7XG4gIHNlbGY6IFBhdGhSZWZlcmVuY2U8dW5rbm93bj47XG59XG5cbmV4cG9ydCBjbGFzcyBBb3RWTSBleHRlbmRzIFZNPG51bWJlcj4gaW1wbGVtZW50cyBJbnRlcm5hbFZNPG51bWJlcj4ge1xuICBzdGF0aWMgZW1wdHkoXG4gICAgcnVudGltZTogQW90UnVudGltZUNvbnRleHQsXG4gICAgeyBoYW5kbGUsIHRyZWVCdWlsZGVyLCBkeW5hbWljU2NvcGUgfTogTWluaW1hbEluaXRPcHRpb25zXG4gICk6IEludGVybmFsVk08bnVtYmVyPiB7XG4gICAgbGV0IHZtID0gaW5pdEFPVChcbiAgICAgIHJ1bnRpbWUsXG4gICAgICB2bVN0YXRlKFxuICAgICAgICBydW50aW1lLnByb2dyYW0uaGVhcC5nZXRhZGRyKGhhbmRsZSksXG4gICAgICAgIFNjb3BlSW1wbC5yb290PG51bWJlcj4oVU5ERUZJTkVEX1JFRkVSRU5DRSwgMCksXG4gICAgICAgIGR5bmFtaWNTY29wZVxuICAgICAgKSxcbiAgICAgIHRyZWVCdWlsZGVyXG4gICAgKTtcbiAgICB2bS5wdXNoVXBkYXRpbmcoKTtcbiAgICByZXR1cm4gdm07XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhbChcbiAgICBydW50aW1lOiBBb3RSdW50aW1lQ29udGV4dCxcbiAgICB7IGhhbmRsZSwgc2VsZiwgdHJlZUJ1aWxkZXIsIGR5bmFtaWNTY29wZSB9OiBJbml0T3B0aW9uc1xuICApIHtcbiAgICBsZXQgc2NvcGVTaXplID0gcnVudGltZS5wcm9ncmFtLmhlYXAuc2NvcGVzaXplb2YoaGFuZGxlKTtcbiAgICBsZXQgc2NvcGUgPSBTY29wZUltcGwucm9vdChzZWxmLCBzY29wZVNpemUpO1xuICAgIGxldCBwYyA9IGNoZWNrKHJ1bnRpbWUucHJvZ3JhbS5oZWFwLmdldGFkZHIoaGFuZGxlKSwgQ2hlY2tOdW1iZXIpO1xuICAgIGxldCBzdGF0ZSA9IHZtU3RhdGUocGMsIHNjb3BlLCBkeW5hbWljU2NvcGUpO1xuICAgIGxldCB2bSA9IGluaXRBT1QocnVudGltZSwgc3RhdGUsIHRyZWVCdWlsZGVyKTtcbiAgICB2bS5wdXNoVXBkYXRpbmcoKTtcbiAgICByZXR1cm4gdm07XG4gIH1cblxuICBjYXB0dXJlKGFyZ3M6IG51bWJlciwgcGMgPSB0aGlzW0lOTkVSX1ZNXS5mZXRjaFJlZ2lzdGVyKCRwYykpOiBSZXN1bWFibGVWTVN0YXRlPEFvdFZNPiB7XG4gICAgcmV0dXJuIG5ldyBSZXN1bWFibGVWTVN0YXRlSW1wbCh0aGlzLmNhcHR1cmVTdGF0ZShhcmdzLCBwYyksIGluaXRBT1QpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFZtSW5pdENhbGxiYWNrPFYgZXh0ZW5kcyBJbnRlcm5hbFZNID0gSW50ZXJuYWxWTT4gPSAoXG4gIHRoaXM6IHZvaWQsXG4gIHJ1bnRpbWU6IFYgZXh0ZW5kcyBKaXRWTSA/IEppdFJ1bnRpbWVDb250ZXh0IDogQW90UnVudGltZUNvbnRleHQsXG4gIHN0YXRlOiBWTVN0YXRlLFxuICBidWlsZGVyOiBFbGVtZW50QnVpbGRlclxuKSA9PiBWO1xuXG5leHBvcnQgdHlwZSBKaXRWbUluaXRDYWxsYmFjazxWIGV4dGVuZHMgSW50ZXJuYWxWTT4gPSAoXG4gIHRoaXM6IHZvaWQsXG4gIHJ1bnRpbWU6IEppdFJ1bnRpbWVDb250ZXh0LFxuICBzdGF0ZTogVk1TdGF0ZSxcbiAgYnVpbGRlcjogRWxlbWVudEJ1aWxkZXJcbikgPT4gVjtcblxuZnVuY3Rpb24gaW5pdEFPVChydW50aW1lOiBBb3RSdW50aW1lQ29udGV4dCwgc3RhdGU6IFZNU3RhdGUsIGJ1aWxkZXI6IEVsZW1lbnRCdWlsZGVyKTogQW90Vk0ge1xuICByZXR1cm4gbmV3IEFvdFZNKHJ1bnRpbWUsIHN0YXRlLCBidWlsZGVyKTtcbn1cblxuZnVuY3Rpb24gaW5pdEpJVChjb250ZXh0OiBTeW50YXhDb21waWxhdGlvbkNvbnRleHQpOiBKaXRWbUluaXRDYWxsYmFjazxKaXRWTT4ge1xuICByZXR1cm4gKHJ1bnRpbWUsIHN0YXRlLCBidWlsZGVyKSA9PiBuZXcgSml0Vk0ocnVudGltZSwgc3RhdGUsIGJ1aWxkZXIsIGNvbnRleHQpO1xufVxuXG5leHBvcnQgY2xhc3MgSml0Vk0gZXh0ZW5kcyBWTTxDb21waWxhYmxlQmxvY2s+IGltcGxlbWVudHMgSW50ZXJuYWxKaXRWTSB7XG4gIHN0YXRpYyBpbml0aWFsKFxuICAgIHJ1bnRpbWU6IEppdFJ1bnRpbWVDb250ZXh0LFxuICAgIGNvbnRleHQ6IFN5bnRheENvbXBpbGF0aW9uQ29udGV4dCxcbiAgICB7IGhhbmRsZSwgc2VsZiwgZHluYW1pY1Njb3BlLCB0cmVlQnVpbGRlciB9OiBJbml0T3B0aW9uc1xuICApIHtcbiAgICBsZXQgc2NvcGVTaXplID0gcnVudGltZS5wcm9ncmFtLmhlYXAuc2NvcGVzaXplb2YoaGFuZGxlKTtcbiAgICBsZXQgc2NvcGUgPSBTY29wZUltcGwucm9vdChzZWxmLCBzY29wZVNpemUpO1xuICAgIGxldCBzdGF0ZSA9IHZtU3RhdGUocnVudGltZS5wcm9ncmFtLmhlYXAuZ2V0YWRkcihoYW5kbGUpLCBzY29wZSwgZHluYW1pY1Njb3BlKTtcbiAgICBsZXQgdm0gPSBpbml0SklUKGNvbnRleHQpKHJ1bnRpbWUsIHN0YXRlLCB0cmVlQnVpbGRlcik7XG4gICAgdm0ucHVzaFVwZGF0aW5nKCk7XG4gICAgcmV0dXJuIHZtO1xuICB9XG5cbiAgc3RhdGljIGVtcHR5KFxuICAgIHJ1bnRpbWU6IEppdFJ1bnRpbWVDb250ZXh0LFxuICAgIHsgaGFuZGxlLCB0cmVlQnVpbGRlciwgZHluYW1pY1Njb3BlIH06IE1pbmltYWxJbml0T3B0aW9ucyxcbiAgICBjb250ZXh0OiBTeW50YXhDb21waWxhdGlvbkNvbnRleHRcbiAgKSB7XG4gICAgbGV0IHZtID0gaW5pdEpJVChjb250ZXh0KShcbiAgICAgIHJ1bnRpbWUsXG4gICAgICB2bVN0YXRlKFxuICAgICAgICBydW50aW1lLnByb2dyYW0uaGVhcC5nZXRhZGRyKGhhbmRsZSksXG4gICAgICAgIFNjb3BlSW1wbC5yb290PENvbXBpbGFibGVCbG9jaz4oVU5ERUZJTkVEX1JFRkVSRU5DRSwgMCksXG4gICAgICAgIGR5bmFtaWNTY29wZVxuICAgICAgKSxcbiAgICAgIHRyZWVCdWlsZGVyXG4gICAgKTtcbiAgICB2bS5wdXNoVXBkYXRpbmcoKTtcbiAgICByZXR1cm4gdm07XG4gIH1cblxuICByZWFkb25seSBydW50aW1lITogSml0UnVudGltZUNvbnRleHQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcnVudGltZTogSml0UnVudGltZUNvbnRleHQsXG4gICAgc3RhdGU6IFZNU3RhdGUsXG4gICAgZWxlbWVudFN0YWNrOiBFbGVtZW50QnVpbGRlcixcbiAgICByZWFkb25seSBjb250ZXh0OiBTeW50YXhDb21waWxhdGlvbkNvbnRleHRcbiAgKSB7XG4gICAgc3VwZXIocnVudGltZSwgc3RhdGUsIGVsZW1lbnRTdGFjayk7XG4gIH1cblxuICBjYXB0dXJlKGFyZ3M6IG51bWJlciwgcGMgPSB0aGlzW0lOTkVSX1ZNXS5mZXRjaFJlZ2lzdGVyKCRwYykpOiBSZXN1bWFibGVWTVN0YXRlPEppdFZNPiB7XG4gICAgcmV0dXJuIG5ldyBSZXN1bWFibGVWTVN0YXRlSW1wbCh0aGlzLmNhcHR1cmVTdGF0ZShhcmdzLCBwYyksIHRoaXMucmVzdW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzdW1lOiBWbUluaXRDYWxsYmFjazxKaXRWTT4gPSBpbml0SklUKHRoaXMuY29udGV4dCk7XG5cbiAgY29tcGlsZShibG9jazogQ29tcGlsYWJsZVRlbXBsYXRlKTogbnVtYmVyIHtcbiAgICBsZXQgaGFuZGxlID0gdW53cmFwSGFuZGxlKGJsb2NrLmNvbXBpbGUodGhpcy5jb250ZXh0KSk7XG5cbiAgICByZXR1cm4gaGFuZGxlO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2FwcGVuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQTBCQSxTQUNFLG1CQURGLElBQ0Usb0JBREYsRUFBQSxVQUFBLEVBQUEsTUFBQSxFQUFBLFVBQUEsRUFBQSxTQUFBLEVBQUEsS0FBQSxFQUFBLE1BQUEsUUFBQSxlQUFBO0FBV0EsU0FBQSxHQUFBLEVBQUEsR0FBQSxFQUFBLEdBQUEsRUFBQSxHQUFBLEVBQUEsR0FBQSxFQUFBLEdBQUEsRUFBQSxHQUFBLEVBQUEsR0FBQSxFQUFBLGtCQUFBLFFBQUEsYUFBQTtBQWVBLFNBQUEsWUFBQSxRQUFBLGVBQUE7QUFDQSxTQUFBLFlBQUEsUUFBQSxlQUFBO0FBQ0EsU0FBQSxlQUFBLEVBQUEsdUJBQUEsRUFBQSxXQUFBLFFBQUEsd0JBQUE7QUFDQSxTQUFBLFNBQUEsUUFBQSxnQkFBQTtBQUNBLFNBQUEsY0FBQSxRQUFBLFlBQUE7QUFDQSxTQUFBLG1CQUFBLFFBQUEsZUFBQTtBQUNBLFNBQUEsSUFBQSxFQUFBLFNBQUEsRUFBQSxnQkFBQSxFQUFBLElBQUEsRUFBQSxRQUFBLEVBQUEsU0FBQSxFQUFBLE1BQUEsUUFBQSxZQUFBO0FBQ0EsU0FBQSxlQUFBLFFBQUEsYUFBQTtBQUNBLE9BQUEsVUFBQSxNQUFBLGFBQUE7QUFDQSxPQUFBLGdCQUFBLE1BQUEsaUJBQUE7QUFDQSxPQUFBLG1CQUFBLE1BQUEsU0FBQTtBQUNBLFNBQUEsZUFBQSxFQUFBLG9CQUFBLEVBQUEsU0FBQSxRQUFBLFVBQUE7O0lBa0ZBLE0sR0FBQSxrQkFBQTtBQUNXLE9BQUEsS0FBQSxHQUFRLElBQVIsS0FBUSxFQUFSO0FBQ0EsT0FBQSxZQUFBLEdBQWUsSUFBZixLQUFlLEVBQWY7QUFDQSxPQUFBLFFBQUEsR0FBVyxJQUFYLEtBQVcsRUFBWDtBQUNBLE9BQUEsS0FBQSxHQUFRLElBQVIsS0FBUSxFQUFSO0FBQ0EsT0FBQSxJ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QWMsS0FBeEMsT0FBMEIsQ0FBRCxDQUF6QjtBQUVBLFdBQUEsTUFBQTtBQUNELEdBckRIOztBQUFBO0FBQUEsRUFBTSxFQUFOIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcGlsYWJsZUJsb2NrLFxuICBDb21waWxhYmxlVGVtcGxhdGUsXG4gIERlc3Ryb3lhYmxlLFxuICBEcm9wLFxuICBEeW5hbWljU2NvcGUsXG4gIEVudmlyb25tZW50LFxuICBKaXRPckFvdEJsb2NrLFxuICBQYXJ0aWFsU2NvcGUsXG4gIFJlbmRlclJlc3VsdCxcbiAgUmljaEl0ZXJhdG9yUmVzdWx0LFxuICBSdW50aW1lQ29udGV4dCxcbiAgUnVudGltZUNvbnN0YW50cyxcbiAgUnVudGltZUhlYXAsXG4gIFJ1bnRpbWVQcm9ncmFtLFxuICBTY29wZSxcbiAgU3ltYm9sRGVzdHJveWFibGUsXG4gIFN5bnRheENvbXBpbGF0aW9uQ29udGV4dCxcbiAgVk0gYXMgUHVibGljVk0sXG4gIEppdFJ1bnRpbWVDb250ZXh0LFxuICBBb3RSdW50aW1lQ29udGV4dCxcbiAgRWxlbWVudEJ1aWxkZXIsXG59IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTE9DQUxfU0hPVUxEX0xPRyB9IGZyb20gJ0BnbGltbWVyL2xvY2FsLWRlYnVnLWZsYWdzJztcbmltcG9ydCB7IFJ1bnRpbWVPcEltcGwgfSBmcm9tICdAZ2xpbW1lci9wcm9ncmFtJztcbmltcG9ydCB7IFBhdGhSZWZlcmVuY2UsIFJlZmVyZW5jZUl0ZXJhdG9yLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7XG4gIGFzc29jaWF0ZURlc3RydWN0b3IsXG4gIGRlc3RydWN0b3IsXG4gIGV4cGVjdCxcbiAgaXNEcm9wLFxuICBMaW5rZWRMaXN0LFxuICBMaXN0U2xpY2UsXG4gIE9wdGlvbixcbiAgU3RhY2ssXG4gIGFzc2VydCxcbn0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICAkZnAsXG4gICRwYyxcbiAgJHMwLFxuICAkczEsXG4gICRzcCxcbiAgJHQwLFxuICAkdDEsXG4gICR2MCxcbiAgaXNMb3dMZXZlbFJlZ2lzdGVyLFxuICBNYWNoaW5lUmVnaXN0ZXIsXG4gIFJlZ2lzdGVyLFxuICBTeXNjYWxsUmVnaXN0ZXIsXG59IGZyb20gJ0BnbGltbWVyL3ZtJztcbmltcG9ydCB7IENoZWNrTnVtYmVyLCBjaGVjayB9IGZyb20gJ0BnbGltbWVyL2RlYnVnJztcbmltcG9ydCB7IHVud3JhcEhhbmRsZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgY29tYmluZVNsaWNlIH0gZnJvbSAnLi4vdXRpbHMvdGFncyc7XG5pbXBvcnQgeyBEaWRNb2RpZnlPcGNvZGUsIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlLCBMYWJlbE9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgU2NvcGVJbXBsIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMsIERlYnVnU3RhdGUsIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBBUkdTLCBDT05TVEFOVFMsIERFU1RSVUNUT1JfU1RBQ0ssIEhFQVAsIElOTkVSX1ZNLCBSRUdJU1RFUlMsIFNUQUNLUyB9IGZyb20gJy4uL3N5bWJvbHMnO1xuaW1wb3J0IHsgVk1Bcmd1bWVudHNJbXBsIH0gZnJvbSAnLi9hcmd1bWVudHMnO1xuaW1wb3J0IExvd0xldmVsVk0gZnJvbSAnLi9sb3ctbGV2ZWwnO1xuaW1wb3J0IFJlbmRlclJlc3VsdEltcGwgZnJvbSAnLi9yZW5kZXItcmVzdWx0JztcbmltcG9ydCBFdmFsdWF0aW9uU3RhY2tJbXBsLCB7IEV2YWx1YXRpb25TdGFjayB9IGZyb20gJy4vc3RhY2snO1xuaW1wb3J0IHtcbiAgQmxvY2tPcGNvZGUsXG4gIExpc3RCbG9ja09wY29kZSxcbiAgUmVzdW1hYmxlVk1TdGF0ZSxcbiAgUmVzdW1hYmxlVk1TdGF0ZUltcGwsXG4gIFRyeU9wY29kZSxcbiAgVk1TdGF0ZSxcbn0gZnJvbSAnLi91cGRhdGUnO1xuXG4vKipcbiAqIFRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgYnkgaW50ZXJuYWwgb3Bjb2RlcywgYW5kIGlzIG1vcmUgc3RhYmxlIHRoYW5cbiAqIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQXBwZW5kIFZNIGl0c2VsZi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbFZNPEMgZXh0ZW5kcyBKaXRPckFvdEJsb2NrID0gSml0T3JBb3RCbG9jaz4ge1xuICByZWFkb25seSBbQ09OU1RBTlRTXTogUnVudGltZUNvbnN0YW50cztcbiAgcmVhZG9ubHkgW0FSR1NdOiBWTUFyZ3VtZW50c0ltcGw7XG5cbiAgcmVhZG9ubHkgZW52OiBFbnZpcm9ubWVudDtcbiAgcmVhZG9ubHkgc3RhY2s6IEV2YWx1YXRpb25TdGFjaztcbiAgcmVhZG9ubHkgcnVudGltZTogUnVudGltZUNvbnRleHQ7XG5cbiAgbG9hZFZhbHVlKHJlZ2lzdGVyOiBNYWNoaW5lUmVnaXN0ZXIsIHZhbHVlOiBudW1iZXIpOiB2b2lkO1xuICBsb2FkVmFsdWUocmVnaXN0ZXI6IFJlZ2lzdGVyLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIGxvYWRWYWx1ZShyZWdpc3RlcjogUmVnaXN0ZXIgfCBNYWNoaW5lUmVnaXN0ZXIsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcblxuICBmZXRjaFZhbHVlKHJlZ2lzdGVyOiBNYWNoaW5lUmVnaXN0ZXIucmEgfCBNYWNoaW5lUmVnaXN0ZXIucGMpOiBudW1iZXI7XG4gIC8vIFRPRE86IFNvbWV0aGluZyBiZXR0ZXIgdGhhbiBhIHR5cGUgYXNzZXJ0aW9uP1xuICBmZXRjaFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3Rlcik6IFQ7XG4gIGZldGNoVmFsdWUocmVnaXN0ZXI6IFJlZ2lzdGVyKTogdW5rbm93bjtcblxuICBsb2FkKHJlZ2lzdGVyOiBSZWdpc3Rlcik6IHZvaWQ7XG4gIGZldGNoKHJlZ2lzdGVyOiBSZWdpc3Rlcik6IHZvaWQ7XG5cbiAgc2NvcGUoKTogU2NvcGU8Qz47XG4gIGVsZW1lbnRzKCk6IEVsZW1lbnRCdWlsZGVyO1xuXG4gIGdldFNlbGYoKTogUGF0aFJlZmVyZW5jZTx1bmtub3duPjtcblxuICB1cGRhdGVXaXRoKG9wY29kZTogVXBkYXRpbmdPcGNvZGUpOiB2b2lkO1xuXG4gIGFzc29jaWF0ZURlc3Ryb3lhYmxlKGQ6IFN5bWJvbERlc3Ryb3lhYmxlIHwgRGVzdHJveWFibGUpOiB2b2lkO1xuXG4gIGJlZ2luQ2FjaGVHcm91cCgpOiB2b2lkO1xuICBjb21taXRDYWNoZUdyb3VwKCk6IHZvaWQ7XG5cbiAgLy8vIEl0ZXJhdGlvbiAvLy9cblxuICBlbnRlckxpc3Qob2Zmc2V0OiBudW1iZXIpOiB2b2lkO1xuICBleGl0TGlzdCgpOiB2b2lkO1xuICBpdGVyYXRlKG1lbW86IFBhdGhSZWZlcmVuY2U8dW5rbm93bj4sIGl0ZW06IFBhdGhSZWZlcmVuY2U8dW5rbm93bj4pOiBUcnlPcGNvZGU7XG4gIGVudGVySXRlbShrZXk6IHVua25vd24sIG9wY29kZTogVHJ5T3Bjb2RlKTogdm9pZDtcblxuICBwdXNoUm9vdFNjb3BlKHNpemU6IG51bWJlcik6IFBhcnRpYWxTY29wZTxDPjtcbiAgcHVzaENoaWxkU2NvcGUoKTogdm9pZDtcbiAgcG9wU2NvcGUoKTogdm9pZDtcbiAgcHVzaFNjb3BlKHNjb3BlOiBTY29wZTxDPik6IHZvaWQ7XG5cbiAgZHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZTtcbiAgYmluZER5bmFtaWNTY29wZShuYW1lczogbnVtYmVyW10pOiB2b2lkO1xuICBwdXNoRHluYW1pY1Njb3BlKCk6IHZvaWQ7XG4gIHBvcER5bmFtaWNTY29wZSgpOiB2b2lkO1xuXG4gIGVudGVyKGFyZ3M6IG51bWJlcik6IHZvaWQ7XG4gIGV4aXQoKTogdm9pZDtcblxuICBnb3RvKHBjOiBudW1iZXIpOiB2b2lkO1xuICBjYWxsKGhhbmRsZTogbnVtYmVyKTogdm9pZDtcbiAgcHVzaEZyYW1lKCk6IHZvaWQ7XG5cbiAgcmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbDogbnVtYmVyKTogUGF0aFJlZmVyZW5jZTx1bmtub3duPjtcblxuICBleGVjdXRlKGluaXRpYWxpemU/OiAodm06IHRoaXMpID0+IHZvaWQpOiBSZW5kZXJSZXN1bHQ7XG4gIHB1c2hVcGRhdGluZyhsaXN0PzogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4pOiB2b2lkO1xuICBuZXh0KCk6IFJpY2hJdGVyYXRvclJlc3VsdDxudWxsLCBSZW5kZXJSZXN1bHQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVybmFsSml0Vk0gZXh0ZW5kcyBJbnRlcm5hbFZNPENvbXBpbGFibGVCbG9jaz4ge1xuICBjb21waWxlKGJsb2NrOiBDb21waWxhYmxlVGVtcGxhdGUpOiBudW1iZXI7XG4gIHJlYWRvbmx5IHJ1bnRpbWU6IEppdFJ1bnRpbWVDb250ZXh0O1xuICByZWFkb25seSBjb250ZXh0OiBTeW50YXhDb21waWxhdGlvbkNvbnRleHQ7XG59XG5cbmNsYXNzIFN0YWNrczxDIGV4dGVuZHMgSml0T3JBb3RCbG9jaz4ge1xuICByZWFkb25seSBzY29wZSA9IG5ldyBTdGFjazxTY29wZTxDPj4oKTtcbiAgcmVhZG9ubHkgZHluYW1pY1Njb3BlID0gbmV3IFN0YWNrPER5bmFtaWNTY29wZT4oKTtcbiAgcmVhZG9ubHkgdXBkYXRpbmcgPSBuZXcgU3RhY2s8TGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4+KCk7XG4gIHJlYWRvbmx5IGNhY2hlID0gbmV3IFN0YWNrPE9wdGlvbjxVcGRhdGluZ09wY29kZT4+KCk7XG4gIHJlYWRvbmx5IGxpc3QgPSBuZXcgU3RhY2s8TGlzdEJsb2NrT3Bjb2RlPigpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhYnN0cmFjdCBjbGFzcyBWTTxDIGV4dGVuZHMgSml0T3JBb3RCbG9jaz4gaW1wbGVtZW50cyBQdWJsaWNWTSwgSW50ZXJuYWxWTTxDPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgW1NUQUNLU10gPSBuZXcgU3RhY2tzPEM+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgW0hFQVBdOiBSdW50aW1lSGVhcDtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cnVjdG9yOiBvYmplY3Q7XG4gIHByaXZhdGUgcmVhZG9ubHkgW0RFU1RSVUNUT1JfU1RBQ0tdID0gbmV3IFN0YWNrPG9iamVjdD4oKTtcbiAgcmVhZG9ubHkgW0NPTlNUQU5UU106IFJ1bnRpbWVDb25zdGFudHM7XG4gIHJlYWRvbmx5IFtBUkdTXTogVk1Bcmd1bWVudHNJbXBsO1xuICByZWFkb25seSBbSU5ORVJfVk1dOiBMb3dMZXZlbFZNO1xuXG4gIGdldCBzdGFjaygpOiBFdmFsdWF0aW9uU3RhY2sge1xuICAgIHJldHVybiB0aGlzW0lOTkVSX1ZNXS5zdGFjayBhcyBFdmFsdWF0aW9uU3RhY2s7XG4gIH1cblxuICAvKiBSZWdpc3RlcnMgKi9cblxuICBnZXQgcGMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpc1tJTk5FUl9WTV0uZmV0Y2hSZWdpc3RlcigkcGMpO1xuICB9XG5cbiAgcHVibGljIHMwOiB1bmtub3duID0gbnVsbDtcbiAgcHVibGljIHMxOiB1bmtub3duID0gbnVsbDtcbiAgcHVibGljIHQwOiB1bmtub3duID0gbnVsbDtcbiAgcHVibGljIHQxOiB1bmtub3duID0gbnVsbDtcbiAgcHVibGljIHYwOiB1bmtub3duID0gbnVsbDtcblxuICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlciBvbnRvIHRoZSBzdGFja1xuICBmZXRjaChyZWdpc3RlcjogU3lzY2FsbFJlZ2lzdGVyKTogdm9pZCB7XG4gICAgdGhpcy5zdGFjay5wdXNoKHRoaXMuZmV0Y2hWYWx1ZShyZWdpc3RlcikpO1xuICB9XG5cbiAgLy8gTG9hZCBhIHZhbHVlIGZyb20gdGhlIHN0YWNrIGludG8gYSByZWdpc3RlclxuICBsb2FkKHJlZ2lzdGVyOiBTeXNjYWxsUmVnaXN0ZXIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnN0YWNrLnBvcCgpO1xuXG4gICAgdGhpcy5sb2FkVmFsdWUocmVnaXN0ZXIsIHZhbHVlKTtcbiAgfVxuXG4gIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyXG4gIGZldGNoVmFsdWUocmVnaXN0ZXI6IE1hY2hpbmVSZWdpc3Rlcik6IG51bWJlcjtcbiAgZmV0Y2hWYWx1ZTxUPihyZWdpc3RlcjogUmVnaXN0ZXIpOiBUO1xuICBmZXRjaFZhbHVlKHJlZ2lzdGVyOiBSZWdpc3RlciB8IE1hY2hpbmVSZWdpc3Rlcik6IHVua25vd24ge1xuICAgIGlmIChpc0xvd0xldmVsUmVnaXN0ZXIocmVnaXN0ZXIpKSB7XG4gICAgICByZXR1cm4gdGhpc1tJTk5FUl9WTV0uZmV0Y2hSZWdpc3RlcihyZWdpc3Rlcik7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZWdpc3Rlcikge1xuICAgICAgY2FzZSAkczA6XG4gICAgICAgIHJldHVybiB0aGlzLnMwO1xuICAgICAgY2FzZSAkczE6XG4gICAgICAgIHJldHVybiB0aGlzLnMxO1xuICAgICAgY2FzZSAkdDA6XG4gICAgICAgIHJldHVybiB0aGlzLnQwO1xuICAgICAgY2FzZSAkdDE6XG4gICAgICAgIHJldHVybiB0aGlzLnQxO1xuICAgICAgY2FzZSAkdjA6XG4gICAgICAgIHJldHVybiB0aGlzLnYwO1xuICAgIH1cbiAgfVxuXG4gIC8vIExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcblxuICBsb2FkVmFsdWU8VD4ocmVnaXN0ZXI6IFJlZ2lzdGVyIHwgTWFjaGluZVJlZ2lzdGVyLCB2YWx1ZTogVCk6IHZvaWQge1xuICAgIGlmIChpc0xvd0xldmVsUmVnaXN0ZXIocmVnaXN0ZXIpKSB7XG4gICAgICB0aGlzW0lOTkVSX1ZNXS5sb2FkUmVnaXN0ZXIocmVnaXN0ZXIsICh2YWx1ZSBhcyBhbnkpIGFzIG51bWJlcik7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZWdpc3Rlcikge1xuICAgICAgY2FzZSAkczA6XG4gICAgICAgIHRoaXMuczAgPSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICRzMTpcbiAgICAgICAgdGhpcy5zMSA9IHZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJHQwOlxuICAgICAgICB0aGlzLnQwID0gdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAkdDE6XG4gICAgICAgIHRoaXMudDEgPSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICR2MDpcbiAgICAgICAgdGhpcy52MCA9IHZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWlncmF0ZWQgdG8gSW5uZXJcbiAgICovXG5cbiAgLy8gU3RhcnQgYSBuZXcgZnJhbWUgYW5kIHNhdmUgJHJhIGFuZCAkZnAgb24gdGhlIHN0YWNrXG4gIHB1c2hGcmFtZSgpIHtcbiAgICB0aGlzW0lOTkVSX1ZNXS5wdXNoRnJhbWUoKTtcbiAgfVxuXG4gIC8vIFJlc3RvcmUgJHJhLCAkc3AgYW5kICRmcFxuICBwb3BGcmFtZSgpIHtcbiAgICB0aGlzW0lOTkVSX1ZNXS5wb3BGcmFtZSgpO1xuICB9XG5cbiAgLy8gSnVtcCB0byBhbiBhZGRyZXNzIGluIGBwcm9ncmFtYFxuICBnb3RvKG9mZnNldDogbnVtYmVyKSB7XG4gICAgdGhpc1tJTk5FUl9WTV0uZ290byhvZmZzZXQpO1xuICB9XG5cbiAgLy8gU2F2ZSAkcGMgaW50byAkcmEsIHRoZW4ganVtcCB0byBhIG5ldyBhZGRyZXNzIGluIGBwcm9ncmFtYCAoamFsIGluIE1JUFMpXG4gIGNhbGwoaGFuZGxlOiBudW1iZXIpIHtcbiAgICB0aGlzW0lOTkVSX1ZNXS5jYWxsKGhhbmRsZSk7XG4gIH1cblxuICAvLyBQdXQgYSBzcGVjaWZpYyBgcHJvZ3JhbWAgYWRkcmVzcyBpbiAkcmFcbiAgcmV0dXJuVG8ob2Zmc2V0OiBudW1iZXIpIHtcbiAgICB0aGlzW0lOTkVSX1ZNXS5yZXR1cm5UbyhvZmZzZXQpO1xuICB9XG5cbiAgLy8gUmV0dXJuIHRvIHRoZSBgcHJvZ3JhbWAgYWRkcmVzcyBzdG9yZWQgaW4gJHJhXG4gIHJldHVybigpIHtcbiAgICB0aGlzW0lOTkVSX1ZNXS5yZXR1cm4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmQgb2YgbWlncmF0ZWQuXG4gICAqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IHJ1bnRpbWU6IFJ1bnRpbWVDb250ZXh0LFxuICAgIHsgcGMsIHNjb3BlLCBkeW5hbWljU2NvcGUsIHN0YWNrIH06IFZNU3RhdGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50U3RhY2s6IEVsZW1lbnRCdWlsZGVyXG4gICkge1xuICAgIGxldCBldmFsU3RhY2sgPSBFdmFsdWF0aW9uU3RhY2tJbXBsLnJlc3RvcmUoc3RhY2spO1xuXG4gICAgYXNzZXJ0KHR5cGVvZiBwYyA9PT0gJ251bWJlcicsICdwYyBpcyBhIG51bWJlcicpO1xuXG4gICAgZXZhbFN0YWNrW1JFR0lTVEVSU11bJHBjXSA9IHBjO1xuICAgIGV2YWxTdGFja1tSRUdJU1RFUlNdWyRzcF0gPSBzdGFjay5sZW5ndGggLSAxO1xuICAgIGV2YWxTdGFja1tSRUdJU1RFUlNdWyRmcF0gPSAtMTtcblxuICAgIHRoaXNbSEVBUF0gPSB0aGlzLnByb2dyYW0uaGVhcDtcbiAgICB0aGlzW0NPTlNUQU5UU10gPSB0aGlzLnByb2dyYW0uY29uc3RhbnRzO1xuICAgIHRoaXMuZWxlbWVudFN0YWNrID0gZWxlbWVudFN0YWNrO1xuICAgIHRoaXNbU1RBQ0tTXS5zY29wZS5wdXNoKHNjb3BlKTtcbiAgICB0aGlzW1NUQUNLU10uZHluYW1pY1Njb3BlLnB1c2goZHluYW1pY1Njb3BlKTtcbiAgICB0aGlzW0FSR1NdID0gbmV3IFZNQXJndW1lbnRzSW1wbCgpO1xuICAgIHRoaXNbSU5ORVJfVk1dID0gbmV3IExvd0xldmVsVk0oXG4gICAgICBldmFsU3RhY2ssXG4gICAgICB0aGlzW0hFQVBdLFxuICAgICAgcnVudGltZS5wcm9ncmFtLFxuICAgICAge1xuICAgICAgICBkZWJ1Z0JlZm9yZTogKG9wY29kZTogUnVudGltZU9wSW1wbCk6IERlYnVnU3RhdGUgPT4ge1xuICAgICAgICAgIHJldHVybiBBUFBFTkRfT1BDT0RFUy5kZWJ1Z0JlZm9yZSh0aGlzLCBvcGNvZGUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlYnVnQWZ0ZXI6IChzdGF0ZTogRGVidWdTdGF0ZSk6IHZvaWQgPT4ge1xuICAgICAgICAgIEFQUEVORF9PUENPREVTLmRlYnVnQWZ0ZXIodGhpcywgc3RhdGUpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGV2YWxTdGFja1tSRUdJU1RFUlNdXG4gICAgKTtcblxuICAgIHRoaXMuZGVzdHJ1Y3RvciA9IHt9O1xuICAgIHRoaXNbREVTVFJVQ1RPUl9TVEFDS10ucHVzaCh0aGlzLmRlc3RydWN0b3IpO1xuICB9XG5cbiAgZ2V0IHByb2dyYW0oKTogUnVudGltZVByb2dyYW0ge1xuICAgIHJldHVybiB0aGlzLnJ1bnRpbWUucHJvZ3JhbTtcbiAgfVxuXG4gIGdldCBlbnYoKTogRW52aXJvbm1lbnQge1xuICAgIHJldHVybiB0aGlzLnJ1bnRpbWUuZW52O1xuICB9XG5cbiAgY2FwdHVyZVN0YXRlKGFyZ3M6IG51bWJlciwgcGMgPSB0aGlzW0lOTkVSX1ZNXS5mZXRjaFJlZ2lzdGVyKCRwYykpOiBWTVN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGMsXG4gICAgICBkeW5hbWljU2NvcGU6IHRoaXMuZHluYW1pY1Njb3BlKCksXG4gICAgICBzY29wZTogdGhpcy5zY29wZSgpLFxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2suY2FwdHVyZShhcmdzKSxcbiAgICB9O1xuICB9XG5cbiAgYWJzdHJhY3QgY2FwdHVyZShhcmdzOiBudW1iZXIsIHBjPzogbnVtYmVyKTogUmVzdW1hYmxlVk1TdGF0ZTxJbnRlcm5hbFZNPjtcblxuICBiZWdpbkNhY2hlR3JvdXAoKSB7XG4gICAgdGhpc1tTVEFDS1NdLmNhY2hlLnB1c2godGhpcy51cGRhdGluZygpLnRhaWwoKSk7XG4gIH1cblxuICBjb21taXRDYWNoZUdyb3VwKCkge1xuICAgIGxldCBFTkQgPSBuZXcgTGFiZWxPcGNvZGUoJ0VORCcpO1xuXG4gICAgbGV0IG9wY29kZXMgPSB0aGlzLnVwZGF0aW5nKCk7XG4gICAgbGV0IG1hcmtlciA9IHRoaXNbU1RBQ0tTXS5jYWNoZS5wb3AoKTtcbiAgICBsZXQgaGVhZCA9IG1hcmtlciA/IG9wY29kZXMubmV4dE5vZGUobWFya2VyKSA6IG9wY29kZXMuaGVhZCgpO1xuICAgIGxldCB0YWlsID0gb3Bjb2Rlcy50YWlsKCk7XG4gICAgbGV0IHRhZyA9IGNvbWJpbmVTbGljZShuZXcgTGlzdFNsaWNlKGhlYWQsIHRhaWwpKTtcblxuICAgIGxldCBndWFyZCA9IG5ldyBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSh0YWcsIEVORCk7XG5cbiAgICBvcGNvZGVzLmluc2VydEJlZm9yZShndWFyZCwgaGVhZCk7XG4gICAgb3Bjb2Rlcy5hcHBlbmQobmV3IERpZE1vZGlmeU9wY29kZShndWFyZCkpO1xuICAgIG9wY29kZXMuYXBwZW5kKEVORCk7XG4gIH1cblxuICBlbnRlcihhcmdzOiBudW1iZXIpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZShhcmdzKTtcbiAgICBsZXQgYmxvY2sgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG5cbiAgICBsZXQgdHJ5T3Bjb2RlID0gbmV3IFRyeU9wY29kZShzdGF0ZSwgdGhpcy5ydW50aW1lLCBibG9jaywgdXBkYXRpbmcpO1xuXG4gICAgdGhpcy5kaWRFbnRlcih0cnlPcGNvZGUpO1xuICB9XG5cbiAgaXRlcmF0ZShcbiAgICBtZW1vOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+LFxuICAgIHZhbHVlOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+XG4gICk6IFRyeU9wY29kZSB7XG4gICAgbGV0IHN0YWNrID0gdGhpcy5zdGFjaztcbiAgICBzdGFjay5wdXNoKHZhbHVlKTtcbiAgICBzdGFjay5wdXNoKG1lbW8pO1xuXG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDIpO1xuICAgIGxldCBibG9jayA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcblxuICAgIC8vIGxldCBpcCA9IHRoaXMuaXA7XG4gICAgLy8gdGhpcy5pcCA9IGVuZCArIDQ7XG4gICAgLy8gdGhpcy5mcmFtZXMucHVzaChpcCk7XG5cbiAgICByZXR1cm4gbmV3IFRyeU9wY29kZShzdGF0ZSwgdGhpcy5ydW50aW1lLCBibG9jaywgbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpO1xuICB9XG5cbiAgZW50ZXJJdGVtKGtleTogc3RyaW5nLCBvcGNvZGU6IFRyeU9wY29kZSkge1xuICAgIHRoaXMubGlzdEJsb2NrKCkubWFwLnNldChrZXksIG9wY29kZSk7XG4gICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICB9XG5cbiAgZW50ZXJMaXN0KG9mZnNldDogbnVtYmVyKSB7XG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8QmxvY2tPcGNvZGU+KCk7XG5cbiAgICBsZXQgYWRkciA9IHRoaXNbSU5ORVJfVk1dLnRhcmdldChvZmZzZXQpO1xuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgwLCBhZGRyKTtcbiAgICBsZXQgbGlzdCA9IHRoaXMuZWxlbWVudHMoKS5wdXNoQmxvY2tMaXN0KHVwZGF0aW5nKTtcbiAgICBsZXQgYXJ0aWZhY3RzID0gdGhpcy5zdGFjay5wZWVrPFJlZmVyZW5jZUl0ZXJhdG9yPigpLmFydGlmYWN0cztcblxuICAgIGxldCBvcGNvZGUgPSBuZXcgTGlzdEJsb2NrT3Bjb2RlKHN0YXRlLCB0aGlzLnJ1bnRpbWUsIGxpc3QsIHVwZGF0aW5nLCBhcnRpZmFjdHMpO1xuXG4gICAgdGhpc1tTVEFDS1NdLmxpc3QucHVzaChvcGNvZGUpO1xuXG4gICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaWRFbnRlcihvcGNvZGU6IEJsb2NrT3Bjb2RlKSB7XG4gICAgdGhpcy5hc3NvY2lhdGVEZXN0cnVjdG9yKGRlc3RydWN0b3Iob3Bjb2RlKSk7XG4gICAgdGhpc1tERVNUUlVDVE9SX1NUQUNLXS5wdXNoKG9wY29kZSk7XG4gICAgdGhpcy51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgdGhpcy5wdXNoVXBkYXRpbmcob3Bjb2RlLmNoaWxkcmVuKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpc1tERVNUUlVDVE9SX1NUQUNLXS5wb3AoKTtcbiAgICB0aGlzLmVsZW1lbnRzKCkucG9wQmxvY2soKTtcbiAgICB0aGlzLnBvcFVwZGF0aW5nKCk7XG5cbiAgICBsZXQgcGFyZW50ID0gdGhpcy51cGRhdGluZygpLnRhaWwoKSBhcyBCbG9ja09wY29kZTtcblxuICAgIHBhcmVudC5kaWRJbml0aWFsaXplQ2hpbGRyZW4oKTtcbiAgfVxuXG4gIGV4aXRMaXN0KCkge1xuICAgIHRoaXMuZXhpdCgpO1xuICAgIHRoaXNbU1RBQ0tTXS5saXN0LnBvcCgpO1xuICB9XG5cbiAgcHVzaFVwZGF0aW5nKGxpc3QgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKSk6IHZvaWQge1xuICAgIHRoaXNbU1RBQ0tTXS51cGRhdGluZy5wdXNoKGxpc3QpO1xuICB9XG5cbiAgcG9wVXBkYXRpbmcoKTogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4ge1xuICAgIHJldHVybiBleHBlY3QodGhpc1tTVEFDS1NdLnVwZGF0aW5nLnBvcCgpLCBcImNhbid0IHBvcCBhbiBlbXB0eSBzdGFja1wiKTtcbiAgfVxuXG4gIHVwZGF0ZVdpdGgob3Bjb2RlOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMudXBkYXRpbmcoKS5hcHBlbmQob3Bjb2RlKTtcbiAgfVxuXG4gIGxpc3RCbG9jaygpOiBMaXN0QmxvY2tPcGNvZGUge1xuICAgIHJldHVybiBleHBlY3QodGhpc1tTVEFDS1NdLmxpc3QuY3VycmVudCwgJ2V4cGVjdGVkIGEgbGlzdCBibG9jaycpO1xuICB9XG5cbiAgYXNzb2NpYXRlRGVzdHJ1Y3RvcihjaGlsZDogRHJvcCk6IHZvaWQge1xuICAgIGlmICghaXNEcm9wKGNoaWxkKSkgcmV0dXJuO1xuICAgIGxldCBwYXJlbnQgPSBleHBlY3QodGhpc1tERVNUUlVDVE9SX1NUQUNLXS5jdXJyZW50LCAnRXhwZWN0ZWQgZGVzdHJ1Y3RvciBwYXJlbnQnKTtcbiAgICBhc3NvY2lhdGVEZXN0cnVjdG9yKHBhcmVudCwgY2hpbGQpO1xuICB9XG5cbiAgYXNzb2NpYXRlRGVzdHJveWFibGUoY2hpbGQ6IFN5bWJvbERlc3Ryb3lhYmxlIHwgRGVzdHJveWFibGUpOiB2b2lkIHtcbiAgICB0aGlzLmFzc29jaWF0ZURlc3RydWN0b3IoZGVzdHJ1Y3RvcihjaGlsZCkpO1xuICB9XG5cbiAgdHJ5VXBkYXRpbmcoKTogT3B0aW9uPExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+PiB7XG4gICAgcmV0dXJuIHRoaXNbU1RBQ0tTXS51cGRhdGluZy5jdXJyZW50O1xuICB9XG5cbiAgdXBkYXRpbmcoKTogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4ge1xuICAgIHJldHVybiBleHBlY3QoXG4gICAgICB0aGlzW1NUQUNLU10udXBkYXRpbmcuY3VycmVudCxcbiAgICAgICdleHBlY3RlZCB1cGRhdGluZyBvcGNvZGUgb24gdGhlIHVwZGF0aW5nIG9wY29kZSBzdGFjaydcbiAgICApO1xuICB9XG5cbiAgZWxlbWVudHMoKTogRWxlbWVudEJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRTdGFjaztcbiAgfVxuXG4gIHNjb3BlKCk6IFNjb3BlPEM+IHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXNbU1RBQ0tTXS5zY29wZS5jdXJyZW50LCAnZXhwZWN0ZWQgc2NvcGUgb24gdGhlIHNjb3BlIHN0YWNrJyk7XG4gIH1cblxuICBkeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlIHtcbiAgICByZXR1cm4gZXhwZWN0KFxuICAgICAgdGhpc1tTVEFDS1NdLmR5bmFtaWNTY29wZS5jdXJyZW50LFxuICAgICAgJ2V4cGVjdGVkIGR5bmFtaWMgc2NvcGUgb24gdGhlIGR5bmFtaWMgc2NvcGUgc3RhY2snXG4gICAgKTtcbiAgfVxuXG4gIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgIHRoaXNbU1RBQ0tTXS5zY29wZS5wdXNoKHRoaXMuc2NvcGUoKS5jaGlsZCgpKTtcbiAgfVxuXG4gIHB1c2hEeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlIHtcbiAgICBsZXQgY2hpbGQgPSB0aGlzLmR5bmFtaWNTY29wZSgpLmNoaWxkKCk7XG4gICAgdGhpc1tTVEFDS1NdLmR5bmFtaWNTY29wZS5wdXNoKGNoaWxkKTtcbiAgICByZXR1cm4gY2hpbGQ7XG4gIH1cblxuICBwdXNoUm9vdFNjb3BlKHNpemU6IG51bWJlcik6IFBhcnRpYWxTY29wZTxDPiB7XG4gICAgbGV0IHNjb3BlID0gU2NvcGVJbXBsLnNpemVkPEM+KHNpemUpO1xuICAgIHRoaXNbU1RBQ0tTXS5zY29wZS5wdXNoKHNjb3BlKTtcbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwdXNoU2NvcGUoc2NvcGU6IFNjb3BlPEM+KSB7XG4gICAgdGhpc1tTVEFDS1NdLnNjb3BlLnB1c2goc2NvcGUpO1xuICB9XG5cbiAgcG9wU2NvcGUoKSB7XG4gICAgdGhpc1tTVEFDS1NdLnNjb3BlLnBvcCgpO1xuICB9XG5cbiAgcG9wRHluYW1pY1Njb3BlKCkge1xuICAgIHRoaXNbU1RBQ0tTXS5keW5hbWljU2NvcGUucG9wKCk7XG4gIH1cblxuICAvLy8gU0NPUEUgSEVMUEVSU1xuXG4gIGdldFNlbGYoKTogUGF0aFJlZmVyZW5jZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFNlbGYoKTtcbiAgfVxuXG4gIHJlZmVyZW5jZUZvclN5bWJvbChzeW1ib2w6IG51bWJlcik6IFBhdGhSZWZlcmVuY2U8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U3ltYm9sKHN5bWJvbCk7XG4gIH1cblxuICAvLy8gRVhFQ1VUSU9OXG5cbiAgZXhlY3V0ZShpbml0aWFsaXplPzogKHZtOiB0aGlzKSA9PiB2b2lkKTogUmVuZGVyUmVzdWx0IHtcbiAgICBpZiAoTE9DQUxfU0hPVUxEX0xPRykge1xuICAgICAgY29uc29sZS5sb2coYEVYRUNVVElORyBGUk9NICR7dGhpc1tJTk5FUl9WTV0uZmV0Y2hSZWdpc3RlcigkcGMpfWApO1xuICAgIH1cblxuICAgIGlmIChpbml0aWFsaXplKSBpbml0aWFsaXplKHRoaXMpO1xuXG4gICAgbGV0IHJlc3VsdDogUmljaEl0ZXJhdG9yUmVzdWx0PG51bGwsIFJlbmRlclJlc3VsdD47XG5cbiAgICB0cnkge1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5uZXh0KCk7XG4gICAgICAgIGlmIChyZXN1bHQuZG9uZSkgYnJlYWs7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIElmIGFueSBleGlzdGluZyBibG9ja3MgYXJlIG9wZW4sIGR1ZSB0byBhbiBlcnJvciBvciBzb21ldGhpbmcgbGlrZVxuICAgICAgLy8gdGhhdCwgd2UgbmVlZCB0byBjbG9zZSB0aGVtIGFsbCBhbmQgY2xlYW4gdGhpbmdzIHVwIHByb3Blcmx5LlxuICAgICAgbGV0IGVsZW1lbnRzID0gdGhpcy5lbGVtZW50cygpO1xuXG4gICAgICB3aGlsZSAoZWxlbWVudHMuaGFzQmxvY2tzKSB7XG4gICAgICAgIGVsZW1lbnRzLnBvcEJsb2NrKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbiAgfVxuXG4gIG5leHQoKTogUmljaEl0ZXJhdG9yUmVzdWx0PG51bGwsIFJlbmRlclJlc3VsdD4ge1xuICAgIGxldCB7IGVudiwgZWxlbWVudFN0YWNrIH0gPSB0aGlzO1xuICAgIGxldCBvcGNvZGUgPSB0aGlzW0lOTkVSX1ZNXS5uZXh0U3RhdGVtZW50KCk7XG4gICAgbGV0IHJlc3VsdDogUmljaEl0ZXJhdG9yUmVzdWx0PG51bGwsIFJlbmRlclJlc3VsdD47XG4gICAgaWYgKG9wY29kZSAhPT0gbnVsbCkge1xuICAgICAgdGhpc1tJTk5FUl9WTV0uZXZhbHVhdGVPdXRlcihvcGNvZGUsIHRoaXMpO1xuICAgICAgcmVzdWx0ID0geyBkb25lOiBmYWxzZSwgdmFsdWU6IG51bGwgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVW5sb2FkIHRoZSBzdGFja1xuICAgICAgdGhpcy5zdGFjay5yZXNldCgpO1xuXG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIGRvbmU6IHRydWUsXG4gICAgICAgIHZhbHVlOiBuZXcgUmVuZGVyUmVzdWx0SW1wbChcbiAgICAgICAgICBlbnYsXG4gICAgICAgICAgdGhpcy5wb3BVcGRhdGluZygpLFxuICAgICAgICAgIGVsZW1lbnRTdGFjay5wb3BCbG9jaygpLFxuICAgICAgICAgIHRoaXMuZGVzdHJ1Y3RvclxuICAgICAgICApLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGJpbmREeW5hbWljU2NvcGUobmFtZXM6IG51bWJlcltdKSB7XG4gICAgbGV0IHNjb3BlID0gdGhpcy5keW5hbWljU2NvcGUoKTtcblxuICAgIGZvciAobGV0IGkgPSBuYW1lcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgbGV0IG5hbWUgPSB0aGlzW0NPTlNUQU5UU10uZ2V0U3RyaW5nKG5hbWVzW2ldKTtcbiAgICAgIHNjb3BlLnNldChuYW1lLCB0aGlzLnN0YWNrLnBvcDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPHVua25vd24+PigpKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdm1TdGF0ZTxDIGV4dGVuZHMgSml0T3JBb3RCbG9jaz4oXG4gIHBjOiBudW1iZXIsXG4gIHNjb3BlOiBTY29wZTxDPiA9IFNjb3BlSW1wbC5yb290PEM+KFVOREVGSU5FRF9SRUZFUkVOQ0UsIDApLFxuICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZVxuKSB7XG4gIHJldHVybiB7XG4gICAgcGMsXG4gICAgc2NvcGUsXG4gICAgZHluYW1pY1Njb3BlLFxuICAgIHN0YWNrOiBbXSxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNaW5pbWFsSW5pdE9wdGlvbnMge1xuICBoYW5kbGU6IG51bWJlcjtcbiAgdHJlZUJ1aWxkZXI6IEVsZW1lbnRCdWlsZGVyO1xuICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbml0T3B0aW9ucyBleHRlbmRzIE1pbmltYWxJbml0T3B0aW9ucyB7XG4gIHNlbGY6IFBhdGhSZWZlcmVuY2U8dW5rbm93bj47XG59XG5cbmV4cG9ydCBjbGFzcyBBb3RWTSBleHRlbmRzIFZNPG51bWJlcj4gaW1wbGVtZW50cyBJbnRlcm5hbFZNPG51bWJlcj4ge1xuICBzdGF0aWMgZW1wdHkoXG4gICAgcnVudGltZTogQW90UnVudGltZUNvbnRleHQsXG4gICAgeyBoYW5kbGUsIHRyZWVCdWlsZGVyLCBkeW5hbWljU2NvcGUgfTogTWluaW1hbEluaXRPcHRpb25zXG4gICk6IEludGVybmFsVk08bnVtYmVyPiB7XG4gICAgbGV0IHZtID0gaW5pdEFPVChcbiAgICAgIHJ1bnRpbWUsXG4gICAgICB2bVN0YXRlKFxuICAgICAgICBydW50aW1lLnByb2dyYW0uaGVhcC5nZXRhZGRyKGhhbmRsZSksXG4gICAgICAgIFNjb3BlSW1wbC5yb290PG51bWJlcj4oVU5ERUZJTkVEX1JFRkVSRU5DRSwgMCksXG4gICAgICAgIGR5bmFtaWNTY29wZVxuICAgICAgKSxcbiAgICAgIHRyZWVCdWlsZGVyXG4gICAgKTtcbiAgICB2bS5wdXNoVXBkYXRpbmcoKTtcbiAgICByZXR1cm4gdm07XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhbChcbiAgICBydW50aW1lOiBBb3RSdW50aW1lQ29udGV4dCxcbiAgICB7IGhhbmRsZSwgc2VsZiwgdHJlZUJ1aWxkZXIsIGR5bmFtaWNTY29wZSB9OiBJbml0T3B0aW9uc1xuICApIHtcbiAgICBsZXQgc2NvcGVTaXplID0gcnVudGltZS5wcm9ncmFtLmhlYXAuc2NvcGVzaXplb2YoaGFuZGxlKTtcbiAgICBsZXQgc2NvcGUgPSBTY29wZUltcGwucm9vdChzZWxmLCBzY29wZVNpemUpO1xuICAgIGxldCBwYyA9IGNoZWNrKHJ1bnRpbWUucHJvZ3JhbS5oZWFwLmdldGFkZHIoaGFuZGxlKSwgQ2hlY2tOdW1iZXIpO1xuICAgIGxldCBzdGF0ZSA9IHZtU3RhdGUocGMsIHNjb3BlLCBkeW5hbWljU2NvcGUpO1xuICAgIGxldCB2bSA9IGluaXRBT1QocnVudGltZSwgc3RhdGUsIHRyZWVCdWlsZGVyKTtcbiAgICB2bS5wdXNoVXBkYXRpbmcoKTtcbiAgICByZXR1cm4gdm07XG4gIH1cblxuICBjYXB0dXJlKGFyZ3M6IG51bWJlciwgcGMgPSB0aGlzW0lOTkVSX1ZNXS5mZXRjaFJlZ2lzdGVyKCRwYykpOiBSZXN1bWFibGVWTVN0YXRlPEFvdFZNPiB7XG4gICAgcmV0dXJuIG5ldyBSZXN1bWFibGVWTVN0YXRlSW1wbCh0aGlzLmNhcHR1cmVTdGF0ZShhcmdzLCBwYyksIGluaXRBT1QpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFZtSW5pdENhbGxiYWNrPFYgZXh0ZW5kcyBJbnRlcm5hbFZNID0gSW50ZXJuYWxWTT4gPSAoXG4gIHRoaXM6IHZvaWQsXG4gIHJ1bnRpbWU6IFYgZXh0ZW5kcyBKaXRWTSA/IEppdFJ1bnRpbWVDb250ZXh0IDogQW90UnVudGltZUNvbnRleHQsXG4gIHN0YXRlOiBWTVN0YXRlLFxuICBidWlsZGVyOiBFbGVtZW50QnVpbGRlclxuKSA9PiBWO1xuXG5leHBvcnQgdHlwZSBKaXRWbUluaXRDYWxsYmFjazxWIGV4dGVuZHMgSW50ZXJuYWxWTT4gPSAoXG4gIHRoaXM6IHZvaWQsXG4gIHJ1bnRpbWU6IEppdFJ1bnRpbWVDb250ZXh0LFxuICBzdGF0ZTogVk1TdGF0ZSxcbiAgYnVpbGRlcjogRWxlbWVudEJ1aWxkZXJcbikgPT4gVjtcblxuZnVuY3Rpb24gaW5pdEFPVChydW50aW1lOiBBb3RSdW50aW1lQ29udGV4dCwgc3RhdGU6IFZNU3RhdGUsIGJ1aWxkZXI6IEVsZW1lbnRCdWlsZGVyKTogQW90Vk0ge1xuICByZXR1cm4gbmV3IEFvdFZNKHJ1bnRpbWUsIHN0YXRlLCBidWlsZGVyKTtcbn1cblxuZnVuY3Rpb24gaW5pdEpJVChjb250ZXh0OiBTeW50YXhDb21waWxhdGlvbkNvbnRleHQpOiBKaXRWbUluaXRDYWxsYmFjazxKaXRWTT4ge1xuICByZXR1cm4gKHJ1bnRpbWUsIHN0YXRlLCBidWlsZGVyKSA9PiBuZXcgSml0Vk0ocnVudGltZSwgc3RhdGUsIGJ1aWxkZXIsIGNvbnRleHQpO1xufVxuXG5leHBvcnQgY2xhc3MgSml0Vk0gZXh0ZW5kcyBWTTxDb21waWxhYmxlQmxvY2s+IGltcGxlbWVudHMgSW50ZXJuYWxKaXRWTSB7XG4gIHN0YXRpYyBpbml0aWFsKFxuICAgIHJ1bnRpbWU6IEppdFJ1bnRpbWVDb250ZXh0LFxuICAgIGNvbnRleHQ6IFN5bnRheENvbXBpbGF0aW9uQ29udGV4dCxcbiAgICB7IGhhbmRsZSwgc2VsZiwgZHluYW1pY1Njb3BlLCB0cmVlQnVpbGRlciB9OiBJbml0T3B0aW9uc1xuICApIHtcbiAgICBsZXQgc2NvcGVTaXplID0gcnVudGltZS5wcm9ncmFtLmhlYXAuc2NvcGVzaXplb2YoaGFuZGxlKTtcbiAgICBsZXQgc2NvcGUgPSBTY29wZUltcGwucm9vdChzZWxmLCBzY29wZVNpemUpO1xuICAgIGxldCBzdGF0ZSA9IHZtU3RhdGUocnVudGltZS5wcm9ncmFtLmhlYXAuZ2V0YWRkcihoYW5kbGUpLCBzY29wZSwgZHluYW1pY1Njb3BlKTtcbiAgICBsZXQgdm0gPSBpbml0SklUKGNvbnRleHQpKHJ1bnRpbWUsIHN0YXRlLCB0cmVlQnVpbGRlcik7XG4gICAgdm0ucHVzaFVwZGF0aW5nKCk7XG4gICAgcmV0dXJuIHZtO1xuICB9XG5cbiAgc3RhdGljIGVtcHR5KFxuICAgIHJ1bnRpbWU6IEppdFJ1bnRpbWVDb250ZXh0LFxuICAgIHsgaGFuZGxlLCB0cmVlQnVpbGRlciwgZHluYW1pY1Njb3BlIH06IE1pbmltYWxJbml0T3B0aW9ucyxcbiAgICBjb250ZXh0OiBTeW50YXhDb21waWxhdGlvbkNvbnRleHRcbiAgKSB7XG4gICAgbGV0IHZtID0gaW5pdEpJVChjb250ZXh0KShcbiAgICAgIHJ1bnRpbWUsXG4gICAgICB2bVN0YXRlKFxuICAgICAgICBydW50aW1lLnByb2dyYW0uaGVhcC5nZXRhZGRyKGhhbmRsZSksXG4gICAgICAgIFNjb3BlSW1wbC5yb290PENvbXBpbGFibGVCbG9jaz4oVU5ERUZJTkVEX1JFRkVSRU5DRSwgMCksXG4gICAgICAgIGR5bmFtaWNTY29wZVxuICAgICAgKSxcbiAgICAgIHRyZWVCdWlsZGVyXG4gICAgKTtcbiAgICB2bS5wdXNoVXBkYXRpbmcoKTtcbiAgICByZXR1cm4gdm07XG4gIH1cblxuICByZWFkb25seSBydW50aW1lITogSml0UnVudGltZUNvbnRleHQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcnVudGltZTogSml0UnVudGltZUNvbnRleHQsXG4gICAgc3RhdGU6IFZNU3RhdGUsXG4gICAgZWxlbWVudFN0YWNrOiBFbGVtZW50QnVpbGRlcixcbiAgICByZWFkb25seSBjb250ZXh0OiBTeW50YXhDb21waWxhdGlvbkNvbnRleHRcbiAgKSB7XG4gICAgc3VwZXIocnVudGltZSwgc3RhdGUsIGVsZW1lbnRTdGFjayk7XG4gIH1cblxuICBjYXB0dXJlKGFyZ3M6IG51bWJlciwgcGMgPSB0aGlzW0lOTkVSX1ZNXS5mZXRjaFJlZ2lzdGVyKCRwYykpOiBSZXN1bWFibGVWTVN0YXRlPEppdFZNPiB7XG4gICAgcmV0dXJuIG5ldyBSZXN1bWFibGVWTVN0YXRlSW1wbCh0aGlzLmNhcHR1cmVTdGF0ZShhcmdzLCBwYyksIHRoaXMucmVzdW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzdW1lOiBWbUluaXRDYWxsYmFjazxKaXRWTT4gPSBpbml0SklUKHRoaXMuY29udGV4dCk7XG5cbiAgY29tcGlsZShibG9jazogQ29tcGlsYWJsZVRlbXBsYXRlKTogbnVtYmVyIHtcbiAgICBsZXQgaGFuZGxlID0gdW53cmFwSGFuZGxlKGJsb2NrLmNvbXBpbGUodGhpcy5jb250ZXh0KSk7XG5cbiAgICByZXR1cm4gaGFuZGxlO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9 |
@@ -359,2 +359,7 @@ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } | ||
} | ||
}, { | ||
key: "hasBlocks", | ||
get: function get() { | ||
return this.blockStack.size > 0; | ||
} | ||
}]); | ||
@@ -546,2 +551,2 @@ | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2VsZW1lbnQtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQWNBLFNBQUEsTUFBQSxFQUFBLE9BQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxRQUFBLGVBQUE7QUFtQkEsU0FBQSxLQUFBLEVBQUEsY0FBQSxFQUFBLFVBQUEsRUFBQSxnQkFBQSxRQUFBLFdBQUE7QUFDQSxTQUFBLGNBQUEsUUFBQSxhQUFBOztJQVdBLEs7OztBQUNFLGlCQUFBLElBQUEsRUFBb0M7QUFBaEIsU0FBQSxJQUFBLEdBQUEsSUFBQTtBQUFvQjs7OztTQUV4QyxTLEdBQUEscUJBQVM7QUFDUCxXQUFPLEtBQVAsSUFBQTtBQUNELEc7Ozs7O0lBR0gsSTs7O0FBQ0UsZ0JBQUEsSUFBQSxFQUFvQztBQUFoQixTQUFBLElBQUEsR0FBQSxJQUFBO0FBQW9COzs7O1VBRXhDLFEsR0FBQSxvQkFBUTtBQUNOLFdBQU8sS0FBUCxJQUFBO0FBQ0QsRzs7Ozs7QUFHSCxXQUFNLFFBQU47QUFBQTtBQUFBO0FBR0Usb0JBQUEsTUFBQSxFQUEwQjtBQUN4QixTQUFBLE1BQUEsR0FBQSxNQUFBO0FBQ0Q7O0FBTEg7O0FBQUEsVUFPRSxhQVBGLEdBT0UseUJBQWE7QUFDWCxXQUFPLEtBQUEsTUFBQSxDQUFQLGFBQU8sRUFBUDtBQUNELEdBVEg7O0FBQUEsVUFXRSxTQVhGLEdBV0UscUJBQVM7QUFDUCxXQUFPLEtBQUEsTUFBQSxDQUFQLFNBQU8sRUFBUDtBQUNELEdBYkg7O0FBQUEsVUFlRSxRQWZGLEdBZUUsb0JBQVE7QUFDTixXQUFPLEtBQUEsTUFBQSxDQUFQLFFBQU8sRUFBUDtBQUNELEdBakJIOztBQUFBO0FBQUE7QUFvQkEsT0FBTyxJQUFNLFlBQVksR0FBc0IsTUFBTSxDQUE5QyxjQUE4QyxDQUE5QztBQUVQLFdBQU0saUJBQU47QUFBQTtBQUFBO0FBeUJFLDZCQUFBLEdBQUEs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QUFDRCxHOztVQUVELFMsR0FBQSxxQkFBUztBQUNQLFFBQUksSUFBSSxHQUNOLEtBQUEsU0FBQSxDQURGLElBQ0UsRUFERjtBQUtBLFdBQU8sSUFBSSxDQUFYLFNBQU8sRUFBUDtBQUNELEc7O1VBRUQsUSxHQUFBLG9CQUFRO0FBQ04sUUFBSSxJQUFJLEdBQ04sS0FBQSxTQUFBLENBREYsSUFDRSxFQURGO0FBS0EsV0FBTyxJQUFJLENBQVgsUUFBTyxFQUFQO0FBQ0QsRzs7VUFFRCxXLEdBQUEscUJBQVcsUUFBWCxFQUFtQztBQUFBLGFBQ2pDLE1BQU0sQ0FBQSxLQUFBLEVBRDJCLGlEQUMzQixDQUQyQjtBQUVsQyxHOztVQUVELFksR0FBQSx3QkFBWTtBQUFBLGFBQ1YsTUFBTSxDQUFBLEtBQUEsRUFESSxrREFDSixDQURJO0FBRVgsRzs7VUFFRCxhLEdBQUEsdUJBQWEsS0FBYixFQUErQjtBQUFBLGFBQzdCLE1BQU0sQ0FBQSxLQUFBLEVBRHVCLHVEQUN2QixDQUR1QjtBQUU5QixHOztVQUVELGUsR0FBQSx5QkFBZSxPQUFmLEVBQStCLENBQUksQzs7VUFFbkMsUSxHQUFBLGtCQUFRLE1BQVIsRUFBK0I7QUFBQSxhQUM3QixNQUFNLENBQUMsS0FBQSxTQUFBLENBQUEsSUFBQSxPQUFELElBQUEsRUFEdUIsNEJBQ3ZCLENBRHVCO0FBRTlCLEc7Ozs7O0FBR0gsT0FBTSxTQUFBLGFBQUEsQ0FBQSxHQUFBLEVBQUEsTUFBQSxFQUE0RDtBQUNoRSxTQUFPLGlCQUFpQixDQUFqQixnQkFBQSxDQUFBLEdBQUEsRUFBUCxNQUFPLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJvdW5kcyxcbiAgRWxlbWVudE9wZXJhdGlvbnMsXG4gIEVudmlyb25tZW50LFxuICBHbGltbWVyVHJlZUNoYW5nZXMsXG4gIEdsaW1tZXJUcmVlQ29uc3RydWN0aW9uLFxuICBTeW1ib2xEZXN0cm95YWJsZSxcbiAgRWxlbWVudEJ1aWxkZXIsXG4gIExpdmVCbG9jayxcbiAgQ3Vyc29yU3RhY2tTeW1ib2wsXG4gIFVwZGF0YWJsZUJsb2NrLFxuICBDdXJzb3IsXG4gIE1vZGlmaWVyTWFuYWdlcixcbn0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIERFU1RST1ksXG4gIGV4cGVjdCxcbiAgTGlua2VkTGlzdCxcbiAgTGlua2VkTGlzdE5vZGUsXG4gIE9wdGlvbixcbiAgU3RhY2ssXG4gIE1heWJlLFxuICBzeW1ib2wsXG59IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgQXR0ck5hbWVzcGFjZSxcbiAgU2ltcGxlQ29tbWVudCxcbiAgU2ltcGxlRG9jdW1lbnRGcmFnbWVudCxcbiAgU2ltcGxlRWxlbWVudCxcbiAgU2ltcGxlTm9kZSxcbiAgU2ltcGxlVGV4dCxcbn0gZnJvbSAnQHNpbXBsZS1kb20vaW50ZXJmYWNlJztcbmltcG9ydCB7IGNsZWFyLCBDb25jcmV0ZUJvdW5kcywgQ3Vyc29ySW1wbCwgU2luZ2xlTm9kZUJvdW5kcyB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBkZXRhY2hDaGlsZHJlbiB9IGZyb20gJy4uL2xpZmV0aW1lJztcbmltcG9ydCB7IER5bmFtaWNBdHRyaWJ1dGUgfSBmcm9tICcuL2F0dHJpYnV0ZXMvZHluYW1pYyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlyc3ROb2RlIHtcbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFzdE5vZGUge1xuICBsYXN0Tm9kZSgpOiBTaW1wbGVOb2RlO1xufVxuXG5jbGFzcyBGaXJzdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbm9kZTogU2ltcGxlTm9kZSkge31cblxuICBmaXJzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxufVxuXG5jbGFzcyBMYXN0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlOiBTaW1wbGVOb2RlKSB7fVxuXG4gIGxhc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZyYWdtZW50IGltcGxlbWVudHMgQm91bmRzIHtcbiAgcHJpdmF0ZSBib3VuZHM6IEJvdW5kcztcblxuICBjb25zdHJ1Y3Rvcihib3VuZHM6IEJvdW5kcykge1xuICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICB9XG5cbiAgcGFyZW50RWxlbWVudCgpOiBTaW1wbGVFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5sYXN0Tm9kZSgpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBDVVJTT1JfU1RBQ0s6IEN1cnNvclN0YWNrU3ltYm9sID0gc3ltYm9sKCdDVVJTT1JfU1RBQ0snKTtcblxuZXhwb3J0IGNsYXNzIE5ld0VsZW1lbnRCdWlsZGVyIGltcGxlbWVudHMgRWxlbWVudEJ1aWxkZXIge1xuICBwdWJsaWMgZG9tOiBHbGltbWVyVHJlZUNvbnN0cnVjdGlvbjtcbiAgcHVibGljIHVwZGF0ZU9wZXJhdGlvbnM6IEdsaW1tZXJUcmVlQ2hhbmdlcztcbiAgcHVibGljIGNvbnN0cnVjdGluZzogT3B0aW9uPFNpbXBsZUVsZW1lbnQ+ID0gbnVsbDtcbiAgcHVibGljIG9wZXJhdGlvbnM6IE9wdGlvbjxFbGVtZW50T3BlcmF0aW9ucz4gPSBudWxsO1xuICBwcml2YXRlIGVudjogRW52aXJvbm1lbnQ7XG5cbiAgW0NVUlNPUl9TVEFDS10gPSBuZXcgU3RhY2s8Q3Vyc29yPigpO1xuICBwcml2YXRlIG1vZGlmaWVyU3RhY2sgPSBuZXcgU3RhY2s8T3B0aW9uPFtNb2RpZmllck1hbmFnZXIsIHVua25vd25dW10+PigpO1xuICBwcml2YXRlIGJsb2NrU3RhY2sgPSBuZXcgU3RhY2s8TGl2ZUJsb2NrPigpO1xuXG4gIHN0YXRpYyBmb3JJbml0aWFsUmVuZGVyKGVudjogRW52aXJvbm1lbnQsIGN1cnNvcjogQ3Vyc29ySW1wbCkge1xuICAgIHJldHVybiBuZXcgdGhpcyhlbnYsIGN1cnNvci5lbGVtZW50LCBjdXJzb3IubmV4dFNpYmxpbmcpLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIHN0YXRpYyByZXN1bWUoZW52OiBFbnZpcm9ubWVudCwgYmxvY2s6IFVwZGF0YWJsZUJsb2NrKTogTmV3RWxlbWVudEJ1aWxkZXIge1xuICAgIGxldCBwYXJlbnROb2RlID0gYmxvY2sucGFyZW50RWxlbWVudCgpO1xuICAgIGxldCBuZXh0U2libGluZyA9IGJsb2NrLnJlc2V0KGVudik7XG5cbiAgICBsZXQgc3RhY2sgPSBuZXcgdGhpcyhlbnYsIHBhcmVudE5vZGUsIG5leHRTaWJsaW5nKS5pbml0aWFsaXplKCk7XG4gICAgc3RhY2sucHVzaExpdmVCbG9jayhibG9jayk7XG5cbiAgICByZXR1cm4gc3RhY2s7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCBwYXJlbnROb2RlOiBTaW1wbGVFbGVtZW50LCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZU5vZGU+KSB7XG4gICAgdGhpcy5wdXNoRWxlbWVudChwYXJlbnROb2RlLCBuZXh0U2libGluZyk7XG5cbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLmRvbSA9IGVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCk7XG4gICAgdGhpcy51cGRhdGVPcGVyYXRpb25zID0gZW52LmdldERPTSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRpYWxpemUoKTogdGhpcyB7XG4gICAgdGhpcy5wdXNoU2ltcGxlQmxvY2soKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRlYnVnQmxvY2tzKCk6IExpdmVCbG9ja1tdIHtcbiAgICByZXR1cm4gdGhpcy5ibG9ja1N0YWNrLnRvQXJyYXkoKTtcbiAgfVxuXG4gIGdldCBlbGVtZW50KCk6IFNpbXBsZUVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzW0NVUlNPUl9TVEFDS10uY3VycmVudCEuZWxlbWVudDtcbiAgfVxuXG4gIGdldCBuZXh0U2libGluZygpOiBPcHRpb248U2ltcGxlTm9kZT4ge1xuICAgIHJldHVybiB0aGlzW0NVUlNPUl9TVEFDS10uY3VycmVudCEubmV4dFNpYmxpbmc7XG4gIH1cblxuICBibG9jaygpOiBMaXZlQmxvY2sge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQsICdFeHBlY3RlZCBhIGN1cnJlbnQgbGl2ZSBibG9jaycpO1xuICB9XG5cbiAgcG9wRWxlbWVudCgpIHtcbiAgICB0aGlzW0NVUlNPUl9TVEFDS10ucG9wKCk7XG4gICAgZXhwZWN0KHRoaXNbQ1VSU09SX1NUQUNLXS5jdXJyZW50LCBcImNhbid0IHBvcCBwYXN0IHRoZSBsYXN0IGVsZW1lbnRcIik7XG4gIH1cblxuICBwdXNoU2ltcGxlQmxvY2soKTogTGl2ZUJsb2NrIHtcbiAgICByZXR1cm4gdGhpcy5wdXNoTGl2ZUJsb2NrKG5ldyBTaW1wbGVMaXZlQmxvY2sodGhpcy5lbGVtZW50KSk7XG4gIH1cblxuICBwdXNoVXBkYXRhYmxlQmxvY2soKTogVXBkYXRhYmxlQmxvY2tJbXBsIHtcbiAgICByZXR1cm4gdGhpcy5wdXNoTGl2ZUJsb2NrKG5ldyBVcGRhdGFibGVCbG9ja0ltcGwodGhpcy5lbGVtZW50KSk7XG4gIH1cblxuICBwdXNoQmxvY2tMaXN0KGxpc3Q6IExpbmtlZExpc3Q8TGlua2VkTGlzdE5vZGUgJiBMaXZlQmxvY2s+KTogTGl2ZUJsb2NrTGlzdCB7XG4gICAgcmV0dXJuIHRoaXMucHVzaExpdmVCbG9jayhuZXcgTGl2ZUJsb2NrTGlzdCh0aGlzLmVsZW1lbnQsIGxpc3QpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwdXNoTGl2ZUJsb2NrPFQgZXh0ZW5kcyBMaXZlQmxvY2s+KGJsb2NrOiBULCBpc1JlbW90ZSA9IGZhbHNlKTogVCB7XG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmJsb2NrU3RhY2suY3VycmVudDtcblxuICAgIGlmIChjdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICBpZiAoIWlzUmVtb3RlKSB7XG4gICAgICAgIGN1cnJlbnQuZGlkQXBwZW5kQm91bmRzKGJsb2NrKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9fb3BlbkJsb2NrKCk7XG4gICAgdGhpcy5ibG9ja1N0YWNrLnB1c2goYmxvY2spO1xuICAgIHJldHVybiBibG9jaztcbiAgfVxuXG4gIHBvcEJsb2NrKCk6IExpdmVCbG9jayB7XG4gICAgdGhpcy5ibG9jaygpLmZpbmFsaXplKHRoaXMpO1xuICAgIHRoaXMuX19jbG9zZUJsb2NrKCk7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmJsb2NrU3RhY2sucG9wKCksICdFeHBlY3RlZCBwb3BCbG9jayB0byByZXR1cm4gYSBibG9jaycpO1xuICB9XG5cbiAgX19vcGVuQmxvY2soKTogdm9pZCB7fVxuICBfX2Nsb3NlQmxvY2soKTogdm9pZCB7fVxuXG4gIC8vIHRvZG8gcmV0dXJuIHNlZW1zIHVudXNlZFxuICBvcGVuRWxlbWVudCh0YWc6IHN0cmluZyk6IFNpbXBsZUVsZW1lbnQge1xuICAgIGxldCBlbGVtZW50ID0gdGhpcy5fX29wZW5FbGVtZW50KHRhZyk7XG4gICAgdGhpcy5jb25zdHJ1Y3RpbmcgPSBlbGVtZW50O1xuXG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cblxuICBfX29wZW5FbGVtZW50KHRhZzogc3RyaW5nKTogU2ltcGxlRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZG9tLmNyZWF0ZUVsZW1lbnQodGFnLCB0aGlzLmVsZW1lbnQpO1xuICB9XG5cbiAgZmx1c2hFbGVtZW50KG1vZGlmaWVyczogT3B0aW9uPFtNb2RpZmllck1hbmFnZXIsIHVua25vd25dW10+KSB7XG4gICAgbGV0IHBhcmVudCA9IHRoaXMuZWxlbWVudDtcbiAgICBsZXQgZWxlbWVudCA9IGV4cGVjdChcbiAgICAgIHRoaXMuY29uc3RydWN0aW5nLFxuICAgICAgYGZsdXNoRWxlbWVudCBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiBjb25zdHJ1Y3RpbmcgYW4gZWxlbWVudGBcbiAgICApO1xuXG4gICAgdGhpcy5fX2ZsdXNoRWxlbWVudChwYXJlbnQsIGVsZW1lbnQpO1xuXG4gICAgdGhpcy5jb25zdHJ1Y3RpbmcgPSBudWxsO1xuICAgIHRoaXMub3BlcmF0aW9ucyA9IG51bGw7XG5cbiAgICB0aGlzLnB1c2hNb2RpZmllcnMobW9kaWZpZXJzKTtcbiAgICB0aGlzLnB1c2hFbGVtZW50KGVsZW1lbnQsIG51bGwpO1xuICAgIHRoaXMuZGlkT3BlbkVsZW1lbnQoZWxlbWVudCk7XG4gIH1cblxuICBfX2ZsdXNoRWxlbWVudChwYXJlbnQ6IFNpbXBsZUVsZW1lbnQsIGNvbnN0cnVjdGluZzogU2ltcGxlRWxlbWVudCkge1xuICAgIHRoaXMuZG9tLmluc2VydEJlZm9yZShwYXJlbnQsIGNvbnN0cnVjdGluZywgdGhpcy5uZXh0U2libGluZyk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKTogT3B0aW9uPFtNb2RpZmllck1hbmFnZXIsIHVua25vd25dW10+IHtcbiAgICB0aGlzLndpbGxDbG9zZUVsZW1lbnQoKTtcbiAgICB0aGlzLnBvcEVsZW1lbnQoKTtcbiAgICByZXR1cm4gdGhpcy5wb3BNb2RpZmllcnMoKTtcbiAgfVxuXG4gIHB1c2hSZW1vdGVFbGVtZW50KFxuICAgIGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQsXG4gICAgZ3VpZDogc3RyaW5nLFxuICAgIGluc2VydEJlZm9yZTogTWF5YmU8U2ltcGxlTm9kZT5cbiAgKTogT3B0aW9uPFJlbW90ZUxpdmVCbG9jaz4ge1xuICAgIHJldHVybiB0aGlzLl9fcHVzaFJlbW90ZUVsZW1lbnQoZWxlbWVudCwgZ3VpZCwgaW5zZXJ0QmVmb3JlKTtcbiAgfVxuXG4gIF9fcHVzaFJlbW90ZUVsZW1lbnQoXG4gICAgZWxlbWVudDogU2ltcGxlRWxlbWVudCxcbiAgICBfZ3VpZDogc3RyaW5nLFxuICAgIGluc2VydEJlZm9yZTogTWF5YmU8U2ltcGxlTm9kZT5cbiAgKTogT3B0aW9uPFJlbW90ZUxpdmVCbG9jaz4ge1xuICAgIHRoaXMucHVzaEVsZW1lbnQoZWxlbWVudCwgaW5zZXJ0QmVmb3JlKTtcblxuICAgIGlmIChpbnNlcnRCZWZvcmUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgd2hpbGUgKGVsZW1lbnQubGFzdENoaWxkKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQ2hpbGQoZWxlbWVudC5sYXN0Q2hpbGQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBibG9jayA9IG5ldyBSZW1vdGVMaXZlQmxvY2soZWxlbWVudCk7XG5cbiAgICByZXR1cm4gdGhpcy5wdXNoTGl2ZUJsb2NrKGJsb2NrLCB0cnVlKTtcbiAgfVxuXG4gIHBvcFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5wb3BCbG9jaygpO1xuICAgIHRoaXMucG9wRWxlbWVudCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHB1c2hFbGVtZW50KGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQsIG5leHRTaWJsaW5nOiBNYXliZTxTaW1wbGVOb2RlPiA9IG51bGwpIHtcbiAgICB0aGlzW0NVUlNPUl9TVEFDS10ucHVzaChuZXcgQ3Vyc29ySW1wbChlbGVtZW50LCBuZXh0U2libGluZykpO1xuICB9XG5cbiAgcHJpdmF0ZSBwdXNoTW9kaWZpZXJzKG1vZGlmaWVyczogT3B0aW9uPFtNb2RpZmllck1hbmFnZXIsIHVua25vd25dW10+KTogdm9pZCB7XG4gICAgdGhpcy5tb2RpZmllclN0YWNrLnB1c2gobW9kaWZpZXJzKTtcbiAgfVxuXG4gIHByaXZhdGUgcG9wTW9kaWZpZXJzKCk6IE9wdGlvbjxbTW9kaWZpZXJNYW5hZ2VyLCB1bmtub3duXVtdPiB7XG4gICAgcmV0dXJuIHRoaXMubW9kaWZpZXJTdGFjay5wb3AoKTtcbiAgfVxuXG4gIGRpZEFwcGVuZEJvdW5kcyhib3VuZHM6IEJvdW5kcyk6IEJvdW5kcyB7XG4gICAgdGhpcy5ibG9jaygpLmRpZEFwcGVuZEJvdW5kcyhib3VuZHMpO1xuICAgIHJldHVybiBib3VuZHM7XG4gIH1cblxuICBkaWRBcHBlbmROb2RlPFQgZXh0ZW5kcyBTaW1wbGVOb2RlPihub2RlOiBUKTogVCB7XG4gICAgdGhpcy5ibG9jaygpLmRpZEFwcGVuZE5vZGUobm9kZSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBkaWRPcGVuRWxlbWVudChlbGVtZW50OiBTaW1wbGVFbGVtZW50KTogU2ltcGxlRWxlbWVudCB7XG4gICAgdGhpcy5ibG9jaygpLm9wZW5FbGVtZW50KGVsZW1lbnQpO1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgd2lsbENsb3NlRWxlbWVudCgpIHtcbiAgICB0aGlzLmJsb2NrKCkuY2xvc2VFbGVtZW50KCk7XG4gIH1cblxuICBhcHBlbmRUZXh0KHN0cmluZzogc3RyaW5nKTogU2ltcGxlVGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuZGlkQXBwZW5kTm9kZSh0aGlzLl9fYXBwZW5kVGV4dChzdHJpbmcpKTtcbiAgfVxuXG4gIF9fYXBwZW5kVGV4dCh0ZXh0OiBzdHJpbmcpOiBTaW1wbGVUZXh0IHtcbiAgICBsZXQgeyBkb20sIGVsZW1lbnQsIG5leHRTaWJsaW5nIH0gPSB0aGlzO1xuICAgIGxldCBub2RlID0gZG9tLmNyZWF0ZVRleHROb2RlKHRleHQpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUoZWxlbWVudCwgbm9kZSwgbmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgX19hcHBlbmROb2RlKG5vZGU6IFNpbXBsZU5vZGUpOiBTaW1wbGVOb2RlIHtcbiAgICB0aGlzLmRvbS5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCBub2RlLCB0aGlzLm5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIF9fYXBwZW5kRnJhZ21lbnQoZnJhZ21lbnQ6IFNpbXBsZURvY3VtZW50RnJhZ21lbnQpOiBCb3VuZHMge1xuICAgIGxldCBmaXJzdCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7XG5cbiAgICBpZiAoZmlyc3QpIHtcbiAgICAgIGxldCByZXQgPSBuZXcgQ29uY3JldGVCb3VuZHModGhpcy5lbGVtZW50LCBmaXJzdCwgZnJhZ21lbnQubGFzdENoaWxkISk7XG4gICAgICB0aGlzLmRvbS5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCBmcmFnbWVudCwgdGhpcy5uZXh0U2libGluZyk7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IFNpbmdsZU5vZGVCb3VuZHModGhpcy5lbGVtZW50LCB0aGlzLl9fYXBwZW5kQ29tbWVudCgnJykpO1xuICAgIH1cbiAgfVxuXG4gIF9fYXBwZW5kSFRNTChodG1sOiBzdHJpbmcpOiBCb3VuZHMge1xuICAgIHJldHVybiB0aGlzLmRvbS5pbnNlcnRIVE1MQmVmb3JlKHRoaXMuZWxlbWVudCwgdGhpcy5uZXh0U2libGluZywgaHRtbCk7XG4gIH1cblxuICBhcHBlbmREeW5hbWljSFRNTCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IGJvdW5kcyA9IHRoaXMudHJ1c3RlZENvbnRlbnQodmFsdWUpO1xuICAgIHRoaXMuZGlkQXBwZW5kQm91bmRzKGJvdW5kcyk7XG4gIH1cblxuICBhcHBlbmREeW5hbWljVGV4dCh2YWx1ZTogc3RyaW5nKTogU2ltcGxlVGV4dCB7XG4gICAgbGV0IG5vZGUgPSB0aGlzLnVudHJ1c3RlZENvbnRlbnQodmFsdWUpO1xuICAgIHRoaXMuZGlkQXBwZW5kTm9kZShub2RlKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIGFwcGVuZER5bmFtaWNGcmFnbWVudCh2YWx1ZTogU2ltcGxlRG9jdW1lbnRGcmFnbWVudCk6IHZvaWQge1xuICAgIGxldCBib3VuZHMgPSB0aGlzLl9fYXBwZW5kRnJhZ21lbnQodmFsdWUpO1xuICAgIHRoaXMuZGlkQXBwZW5kQm91bmRzKGJvdW5kcyk7XG4gIH1cblxuICBhcHBlbmREeW5hbWljTm9kZSh2YWx1ZTogU2ltcGxlTm9kZSk6IHZvaWQge1xuICAgIGxldCBub2RlID0gdGhpcy5fX2FwcGVuZE5vZGUodmFsdWUpO1xuICAgIGxldCBib3VuZHMgPSBuZXcgU2luZ2xlTm9kZUJvdW5kcyh0aGlzLmVsZW1lbnQsIG5vZGUpO1xuICAgIHRoaXMuZGlkQXBwZW5kQm91bmRzKGJvdW5kcyk7XG4gIH1cblxuICBwcml2YXRlIHRydXN0ZWRDb250ZW50KHZhbHVlOiBzdHJpbmcpOiBCb3VuZHMge1xuICAgIHJldHVybiB0aGlzLl9fYXBwZW5kSFRNTCh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHVudHJ1c3RlZENvbnRlbnQodmFsdWU6IHN0cmluZyk6IFNpbXBsZVRleHQge1xuICAgIHJldHVybiB0aGlzLl9fYXBwZW5kVGV4dCh2YWx1ZSk7XG4gIH1cblxuICBhcHBlbmRDb21tZW50KHN0cmluZzogc3RyaW5nKTogU2ltcGxlQ29tbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZGlkQXBwZW5kTm9kZSh0aGlzLl9fYXBwZW5kQ29tbWVudChzdHJpbmcpKTtcbiAgfVxuXG4gIF9fYXBwZW5kQ29tbWVudChzdHJpbmc6IHN0cmluZyk6IFNpbXBsZUNvbW1lbnQge1xuICAgIGxldCB7IGRvbSwgZWxlbWVudCwgbmV4dFNpYmxpbmcgfSA9IHRoaXM7XG4gICAgbGV0IG5vZGUgPSBkb20uY3JlYXRlQ29tbWVudChzdHJpbmcpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUoZWxlbWVudCwgbm9kZSwgbmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgX19zZXRBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBuYW1lc3BhY2U6IE9wdGlvbjxBdHRyTmFtZXNwYWNlPik6IHZvaWQge1xuICAgIHRoaXMuZG9tLnNldEF0dHJpYnV0ZSh0aGlzLmNvbnN0cnVjdGluZyEsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICB9XG5cbiAgX19zZXRQcm9wZXJ0eShuYW1lOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gICAgKHRoaXMuY29uc3RydWN0aW5nISBhcyBhbnkpW25hbWVdID0gdmFsdWU7XG4gIH1cblxuICBzZXRTdGF0aWNBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBuYW1lc3BhY2U6IE9wdGlvbjxBdHRyTmFtZXNwYWNlPik6IHZvaWQge1xuICAgIHRoaXMuX19zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gIH1cblxuICBzZXREeW5hbWljQXR0cmlidXRlKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogdW5rbm93bixcbiAgICB0cnVzdGluZzogYm9vbGVhbixcbiAgICBuYW1lc3BhY2U6IE9wdGlvbjxBdHRyTmFtZXNwYWNlPlxuICApOiBEeW5hbWljQXR0cmlidXRlIHtcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuY29uc3RydWN0aW5nITtcbiAgICBsZXQgYXR0cmlidXRlID0gdGhpcy5lbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsIG5hbWUsIHRydXN0aW5nLCBuYW1lc3BhY2UpO1xuICAgIGF0dHJpYnV0ZS5zZXQodGhpcywgdmFsdWUsIHRoaXMuZW52KTtcbiAgICByZXR1cm4gYXR0cmlidXRlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTaW1wbGVMaXZlQmxvY2sgaW1wbGVtZW50cyBMaXZlQmxvY2sge1xuICBwcm90ZWN0ZWQgZmlyc3Q6IE9wdGlvbjxGaXJzdE5vZGU+ID0gbnVsbDtcbiAgcHJvdGVjdGVkIGxhc3Q6IE9wdGlvbjxMYXN0Tm9kZT4gPSBudWxsO1xuICBwcm90ZWN0ZWQgZGVzdHJveWFibGVzOiBPcHRpb248U3ltYm9sRGVzdHJveWFibGVbXT4gPSBudWxsO1xuICBwcm90ZWN0ZWQgbmVzdGluZyA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJlbnQ6IFNpbXBsZUVsZW1lbnQpIHt9XG5cbiAgcGFyZW50RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQ7XG4gIH1cblxuICBmaXJzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgbGV0IGZpcnN0ID0gZXhwZWN0KFxuICAgICAgdGhpcy5maXJzdCxcbiAgICAgICdjYW5ub3QgY2FsbCBgZmlyc3ROb2RlKClgIHdoaWxlIGBTaW1wbGVMaXZlQmxvY2tgIGlzIHN0aWxsIGluaXRpYWxpemluZydcbiAgICApO1xuXG4gICAgcmV0dXJuIGZpcnN0LmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgbGV0IGxhc3QgPSBleHBlY3QoXG4gICAgICB0aGlzLmxhc3QsXG4gICAgICAnY2Fubm90IGNhbGwgYGxhc3ROb2RlKClgIHdoaWxlIGBTaW1wbGVMaXZlQmxvY2tgIGlzIHN0aWxsIGluaXRpYWxpemluZydcbiAgICApO1xuXG4gICAgcmV0dXJuIGxhc3QubGFzdE5vZGUoKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQpIHtcbiAgICB0aGlzLmRpZEFwcGVuZE5vZGUoZWxlbWVudCk7XG4gICAgdGhpcy5uZXN0aW5nKys7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5uZXN0aW5nLS07XG4gIH1cblxuICBkaWRBcHBlbmROb2RlKG5vZGU6IFNpbXBsZU5vZGUpIHtcbiAgICBpZiAodGhpcy5uZXN0aW5nICE9PSAwKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuZmlyc3QpIHtcbiAgICAgIHRoaXMuZmlyc3QgPSBuZXcgRmlyc3Qobm9kZSk7XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0ID0gbmV3IExhc3Qobm9kZSk7XG4gIH1cblxuICBkaWRBcHBlbmRCb3VuZHMoYm91bmRzOiBCb3VuZHMpIHtcbiAgICBpZiAodGhpcy5uZXN0aW5nICE9PSAwKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuZmlyc3QpIHtcbiAgICAgIHRoaXMuZmlyc3QgPSBib3VuZHM7XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0ID0gYm91bmRzO1xuICB9XG5cbiAgZmluYWxpemUoc3RhY2s6IEVsZW1lbnRCdWlsZGVyKSB7XG4gICAgaWYgKHRoaXMuZmlyc3QgPT09IG51bGwpIHtcbiAgICAgIHN0YWNrLmFwcGVuZENvbW1lbnQoJycpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVtb3RlTGl2ZUJsb2NrIGV4dGVuZHMgU2ltcGxlTGl2ZUJsb2NrIGltcGxlbWVudHMgU3ltYm9sRGVzdHJveWFibGUge1xuICBbREVTVFJPWV0oKSB7XG4gICAgLy8gSW4gZ2VuZXJhbCwgeW91IG9ubHkgbmVlZCB0byBjbGVhciB0aGUgcm9vdCBvZiBhIGhpZXJhcmNoeSwgYW5kIHNob3VsZCBuZXZlclxuICAgIC8vIG5lZWQgdG8gY2xlYXIgYW55IGNoaWxkIG5vZGVzLiBUaGlzIGlzIGFuIGltcG9ydGFudCBjb25zdHJhaW50IHRoYXQgZ2l2ZXMgdXNcbiAgICAvLyBhIHN0cm9uZyBndWFyYW50ZWUgdGhhdCBjbGVhcmluZyBhIHN1YnRyZWUgaXMgYSBzaW5nbGUgRE9NIG9wZXJhdGlvbi5cbiAgICAvL1xuICAgIC8vIEJlY2F1c2UgcmVtb3RlIGJsb2NrcyBhcmUgbm90IG5vcm1hbGx5IHBoeXNpY2FsbHkgbmVzdGVkIGluc2lkZSBvZiB0aGUgdHJlZVxuICAgIC8vIHRoYXQgdGhleSBhcmUgbG9naWNhbGx5IG5lc3RlZCBpbnNpZGUsIHdlIG1hbnVhbGx5IGNsZWFyIHJlbW90ZSBibG9ja3Mgd2hlblxuICAgIC8vIGEgbG9naWNhbCBwYXJlbnQgaXMgY2xlYXJlZC5cbiAgICAvL1xuICAgIC8vIEhPV0VWRVIsIGl0IGlzIGN1cnJlbnRseSBwb3NzaWJsZSBmb3IgYSByZW1vdGUgYmxvY2sgdG8gYmUgcGh5c2ljYWxseSBuZXN0ZWRcbiAgICAvLyBpbnNpZGUgb2YgdGhlIGJsb2NrIGl0IGlzIGxvZ2ljYWxseSBjb250YWluZWQgaW5zaWRlIG9mLiBUaGlzIGhhcHBlbnMgd2hlblxuICAgIC8vIHRoZSByZW1vdGUgYmxvY2sgaXMgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgYXBwbGljYXRpb24ncyBlbnRpcmUgZWxlbWVudC5cbiAgICAvL1xuICAgIC8vIFRoZSBwcm9ibGVtIHdpdGggdGhhdCBzY2VuYXJpbyBpcyB0aGF0IEdsaW1tZXIgYmVsaWV2ZXMgdGhhdCBpdCBvd25zIG1vcmUgb2ZcbiAgICAvLyB0aGUgRE9NIHRoYW4gaXQgYWN0dWFsbHkgZG9lcy4gVGhlIGNvZGUgaXMgYXR0ZW1wdGluZyB0byB3cml0ZSBwYXN0IHRoZSBlbmRcbiAgICAvLyBvZiB0aGUgR2xpbW1lci1tYW5hZ2VkIHJvb3QsIGJ1dCBHbGltbWVyIGlzbid0IGF3YXJlIG9mIHRoYXQuXG4gICAgLy9cbiAgICAvLyBUaGUgY29ycmVjdCBzb2x1dGlvbiB0byB0aGF0IHByb2JsZW0gaXMgZm9yIEdsaW1tZXIgdG8gYmUgYXdhcmUgb2YgdGhlIGVuZFxuICAgIC8vIG9mIHRoZSBib3VuZHMgdGhhdCBpdCBvd25zLCBhbmQgb25jZSB3ZSBtYWtlIHRoYXQgY2hhbmdlLCB0aGlzIGNoZWNrIGNvdWxkXG4gICAgLy8gYmUgcmVtb3ZlZC5cbiAgICAvL1xuICAgIC8vIEZvciBub3csIGEgbW9yZSB0YXJnZXRlZCBmaXggaXMgdG8gY2hlY2sgd2hldGhlciB0aGUgbm9kZSB3YXMgYWxyZWFkeSByZW1vdmVkXG4gICAgLy8gYW5kIGF2b2lkIGNsZWFyaW5nIHRoZSBub2RlIGlmIGl0IHdhcy4gSW4gbW9zdCBjYXNlcyB0aGlzIHNob3VsZG4ndCBoYXBwZW4sXG4gICAgLy8gc28gdGhpcyBtaWdodCBoaWRlIGJ1Z3Mgd2hlcmUgdGhlIGNvZGUgY2xlYXJzIG5lc3RlZCBub2RlcyB1bm5lY2Vzc2FyaWx5LFxuICAgIC8vIHNvIHdlIHNob3VsZCBldmVudHVhbGx5IHRyeSB0byBkbyB0aGUgY29ycmVjdCBmaXguXG4gICAgaWYgKHRoaXMucGFyZW50RWxlbWVudCgpID09PSB0aGlzLmZpcnN0Tm9kZSgpLnBhcmVudE5vZGUpIHtcbiAgICAgIGNsZWFyKHRoaXMpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRhYmxlQmxvY2tJbXBsIGV4dGVuZHMgU2ltcGxlTGl2ZUJsb2NrIGltcGxlbWVudHMgVXBkYXRhYmxlQmxvY2sge1xuICByZXNldChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPFNpbXBsZU5vZGU+IHtcbiAgICBsZXQgbmV4dFNpYmxpbmcgPSBkZXRhY2hDaGlsZHJlbih0aGlzLCBlbnYpO1xuXG4gICAgLy8gbGV0IG5leHRTaWJsaW5nID0gY2xlYXIodGhpcyk7XG5cbiAgICB0aGlzLmZpcnN0ID0gbnVsbDtcbiAgICB0aGlzLmxhc3QgPSBudWxsO1xuICAgIHRoaXMuZGVzdHJveWFibGVzID0gbnVsbDtcbiAgICB0aGlzLm5lc3RpbmcgPSAwO1xuXG4gICAgcmV0dXJuIG5leHRTaWJsaW5nO1xuICB9XG59XG5cbi8vIEZJWE1FOiBBbGwgdGhlIG5vb3BzIGluIGhlcmUgaW5kaWNhdGUgYSBtb2RlbGxpbmcgcHJvYmxlbVxuY2xhc3MgTGl2ZUJsb2NrTGlzdCBpbXBsZW1lbnRzIExpdmVCbG9jayB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFyZW50OiBTaW1wbGVFbGVtZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYm91bmRMaXN0OiBMaW5rZWRMaXN0PExpbmtlZExpc3ROb2RlICYgTGl2ZUJsb2NrPlxuICApIHtcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICB0aGlzLmJvdW5kTGlzdCA9IGJvdW5kTGlzdDtcbiAgfVxuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIGxldCBoZWFkID0gZXhwZWN0KFxuICAgICAgdGhpcy5ib3VuZExpc3QuaGVhZCgpLFxuICAgICAgJ2Nhbm5vdCBjYWxsIGBmaXJzdE5vZGUoKWAgd2hpbGUgYExpdmVCbG9ja0xpc3RgIGlzIHN0aWxsIGluaXRpYWxpemluZydcbiAgICApO1xuXG4gICAgcmV0dXJuIGhlYWQuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpOiBTaW1wbGVOb2RlIHtcbiAgICBsZXQgdGFpbCA9IGV4cGVjdChcbiAgICAgIHRoaXMuYm91bmRMaXN0LnRhaWwoKSxcbiAgICAgICdjYW5ub3QgY2FsbCBgbGFzdE5vZGUoKWAgd2hpbGUgYExpdmVCbG9ja0xpc3RgIGlzIHN0aWxsIGluaXRpYWxpemluZydcbiAgICApO1xuXG4gICAgcmV0dXJuIHRhaWwubGFzdE5vZGUoKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KF9lbGVtZW50OiBTaW1wbGVFbGVtZW50KSB7XG4gICAgYXNzZXJ0KGZhbHNlLCAnQ2Fubm90IG9wZW5FbGVtZW50IGRpcmVjdGx5IGluc2lkZSBhIGJsb2NrIGxpc3QnKTtcbiAgfVxuXG4gIGNsb3NlRWxlbWVudCgpIHtcbiAgICBhc3NlcnQoZmFsc2UsICdDYW5ub3QgY2xvc2VFbGVtZW50IGRpcmVjdGx5IGluc2lkZSBhIGJsb2NrIGxpc3QnKTtcbiAgfVxuXG4gIGRpZEFwcGVuZE5vZGUoX25vZGU6IFNpbXBsZU5vZGUpIHtcbiAgICBhc3NlcnQoZmFsc2UsICdDYW5ub3QgY3JlYXRlIGEgbmV3IG5vZGUgZGlyZWN0bHkgaW5zaWRlIGEgYmxvY2sgbGlzdCcpO1xuICB9XG5cbiAgZGlkQXBwZW5kQm91bmRzKF9ib3VuZHM6IEJvdW5kcykge31cblxuICBmaW5hbGl6ZShfc3RhY2s6IEVsZW1lbnRCdWlsZGVyKSB7XG4gICAgYXNzZXJ0KHRoaXMuYm91bmRMaXN0LmhlYWQoKSAhPT0gbnVsbCwgJ2JvdW5kc0xpc3QgY2Fubm90IGJlIGVtcHR5Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsaWVudEJ1aWxkZXIoZW52OiBFbnZpcm9ubWVudCwgY3Vyc29yOiBDdXJzb3JJbXBsKTogRWxlbWVudEJ1aWxkZXIge1xuICByZXR1cm4gTmV3RWxlbWVudEJ1aWxkZXIuZm9ySW5pdGlhbFJlbmRlcihlbnYsIGN1cnNvcik7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2VsZW1lbnQtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQWNBLFNBQUEsTUFBQSxFQUFBLE9BQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxRQUFBLGVBQUE7QUFtQkEsU0FBQSxLQUFBLEVBQUEsY0FBQSxFQUFBLFVBQUEsRUFBQSxnQkFBQSxRQUFBLFdBQUE7QUFDQSxTQUFBLGNBQUEsUUFBQSxhQUFBOztJQVdBLEs7OztBQUNFLGlCQUFBLElBQUEsRUFBb0M7QUFBaEIsU0FBQSxJQUFBLEdBQUEsSUFBQTtBQUFvQjs7OztTQUV4QyxTLEdBQUEscUJBQVM7QUFDUCxXQUFPLEtBQVAsSUFBQTtBQUNELEc7Ozs7O0lBR0gsSTs7O0FBQ0UsZ0JBQUEsSUFBQSxFQUFvQztBQUFoQixTQUFBLElBQUEsR0FBQSxJQUFBO0FBQW9COzs7O1VBRXhDLFEsR0FBQSxvQkFBUTtBQUNOLFdBQU8sS0FBUCxJQUFBO0FBQ0QsRzs7Ozs7QUFHSCxXQUFNLFFBQU47QUFBQTtBQUFBO0FBR0Usb0JBQUEsTUFBQSxFQUEwQjtBQUN4QixTQUFBLE1BQUEsR0FBQSxNQUFBO0FBQ0Q7O0FBTEg7O0FBQUEsVUFPRSxhQVBGLEdBT0UseUJBQWE7QUFDWCxXQUFPLEtBQUEsTUFBQSxDQUFQLGFBQU8sRUFBUDtBQUNELEdBVEg7O0FBQUEsVUFXRSxTQVhGLEdBV0UscUJBQVM7QUFDUCxXQUFPLEtBQUEsTUFBQSxDQUFQLFNBQU8sRUFBUDtBQUNELEdBYkg7O0FBQUEsVUFlRSxRQWZGLEdBZUUsb0JBQVE7QUFDTixXQUFPLEtBQUEsTUFBQSxDQUFQLFFBQU8sRUFBUDtBQUNELEdBakJIOztBQUFBO0FBQUE7QUFvQkEsT0FBTyxJQUFNLFlBQVksR0FBc0IsTUFBTSxDQUE5QyxjQUE4QyxDQUE5QztBQUVQLFdBQU0saUJBQU47QUFBQTtBQUFBO0FBeUJFLDZCQUFBLEdBQUEs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QSxTQUFBLFNBQUEsR0FBQSxTQUFBO0FBQ0Q7Ozs7VUFFRCxhLEdBQUEseUJBQWE7QUFDWCxXQUFPLEtBQVAsTUFBQTtBQUNELEc7O1VBRUQsUyxHQUFBLHFCQUFTO0FBQ1AsUUFBSSxJQUFJLEdBQ04sS0FBQSxTQUFBLENBREYsSUFDRSxFQURGO0FBS0EsV0FBTyxJQUFJLENBQVgsU0FBTyxFQUFQO0FBQ0QsRzs7VUFFRCxRLEdBQUEsb0JBQVE7QUFDTixRQUFJLElBQUksR0FDTixLQUFBLFNBQUEsQ0FERixJQUNFLEVBREY7QUFLQSxXQUFPLElBQUksQ0FBWCxRQUFPLEVBQVA7QUFDRCxHOztVQUVELFcsR0FBQSxxQkFBVyxRQUFYLEVBQW1DO0FBQUEsYUFDakMsTUFBTSxDQUFBLEtBQUEsRUFEMkIsaURBQzNCLENBRDJCO0FBRWxDLEc7O1VBRUQsWSxHQUFBLHdCQUFZO0FBQUEsYUFDVixNQUFNLENBQUEsS0FBQSxFQURJLGtEQUNKLENBREk7QUFFWCxHOztVQUVELGEsR0FBQSx1QkFBYSxLQUFiLEVBQStCO0FBQUEsYUFDN0IsTUFBTSxDQUFBLEtBQUEsRUFEdUIsdURBQ3ZCLENBRHVCO0FBRTlCLEc7O1VBRUQsZSxHQUFBLHlCQUFlLE9BQWYsRUFBK0IsQ0FBSSxDOztVQUVuQyxRLEdBQUEsa0JBQVEsTUFBUixFQUErQjtBQUFBLGFBQzdCLE1BQU0sQ0FBQyxLQUFBLFNBQUEsQ0FBQSxJQUFBLE9BQUQsSUFBQSxFQUR1Qiw0QkFDdkIsQ0FEdUI7QUFFOUIsRzs7Ozs7QUFHSCxPQUFNLFNBQUEsYUFBQSxDQUFBLEdBQUEsRUFBQSxNQUFBLEVBQTREO0FBQ2hFLFNBQU8saUJBQWlCLENBQWpCLGdCQUFBLENBQUEsR0FBQSxFQUFQLE1BQU8sQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQm91bmRzLFxuICBFbGVtZW50T3BlcmF0aW9ucyxcbiAgRW52aXJvbm1lbnQsXG4gIEdsaW1tZXJUcmVlQ2hhbmdlcyxcbiAgR2xpbW1lclRyZWVDb25zdHJ1Y3Rpb24sXG4gIFN5bWJvbERlc3Ryb3lhYmxlLFxuICBFbGVtZW50QnVpbGRlcixcbiAgTGl2ZUJsb2NrLFxuICBDdXJzb3JTdGFja1N5bWJvbCxcbiAgVXBkYXRhYmxlQmxvY2ssXG4gIEN1cnNvcixcbiAgTW9kaWZpZXJNYW5hZ2VyLFxufSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gIGFzc2VydCxcbiAgREVTVFJPWSxcbiAgZXhwZWN0LFxuICBMaW5rZWRMaXN0LFxuICBMaW5rZWRMaXN0Tm9kZSxcbiAgT3B0aW9uLFxuICBTdGFjayxcbiAgTWF5YmUsXG4gIHN5bWJvbCxcbn0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBBdHRyTmFtZXNwYWNlLFxuICBTaW1wbGVDb21tZW50LFxuICBTaW1wbGVEb2N1bWVudEZyYWdtZW50LFxuICBTaW1wbGVFbGVtZW50LFxuICBTaW1wbGVOb2RlLFxuICBTaW1wbGVUZXh0LFxufSBmcm9tICdAc2ltcGxlLWRvbS9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgY2xlYXIsIENvbmNyZXRlQm91bmRzLCBDdXJzb3JJbXBsLCBTaW5nbGVOb2RlQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IGRldGFjaENoaWxkcmVuIH0gZnJvbSAnLi4vbGlmZXRpbWUnO1xuaW1wb3J0IHsgRHluYW1pY0F0dHJpYnV0ZSB9IGZyb20gJy4vYXR0cmlidXRlcy9keW5hbWljJztcblxuZXhwb3J0IGludGVyZmFjZSBGaXJzdE5vZGUge1xuICBmaXJzdE5vZGUoKTogU2ltcGxlTm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYXN0Tm9kZSB7XG4gIGxhc3ROb2RlKCk6IFNpbXBsZU5vZGU7XG59XG5cbmNsYXNzIEZpcnN0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlOiBTaW1wbGVOb2RlKSB7fVxuXG4gIGZpcnN0Tm9kZSgpOiBTaW1wbGVOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG59XG5cbmNsYXNzIExhc3Qge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5vZGU6IFNpbXBsZU5vZGUpIHt9XG5cbiAgbGFzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRnJhZ21lbnQgaW1wbGVtZW50cyBCb3VuZHMge1xuICBwcml2YXRlIGJvdW5kczogQm91bmRzO1xuXG4gIGNvbnN0cnVjdG9yKGJvdW5kczogQm91bmRzKSB7XG4gICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gIH1cblxuICBwYXJlbnRFbGVtZW50KCk6IFNpbXBsZUVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gIH1cblxuICBmaXJzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLmxhc3ROb2RlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IENVUlNPUl9TVEFDSzogQ3Vyc29yU3RhY2tTeW1ib2wgPSBzeW1ib2woJ0NVUlNPUl9TVEFDSycpO1xuXG5leHBvcnQgY2xhc3MgTmV3RWxlbWVudEJ1aWxkZXIgaW1wbGVtZW50cyBFbGVtZW50QnVpbGRlciB7XG4gIHB1YmxpYyBkb206IEdsaW1tZXJUcmVlQ29uc3RydWN0aW9uO1xuICBwdWJsaWMgdXBkYXRlT3BlcmF0aW9uczogR2xpbW1lclRyZWVDaGFuZ2VzO1xuICBwdWJsaWMgY29uc3RydWN0aW5nOiBPcHRpb248U2ltcGxlRWxlbWVudD4gPSBudWxsO1xuICBwdWJsaWMgb3BlcmF0aW9uczogT3B0aW9uPEVsZW1lbnRPcGVyYXRpb25zPiA9IG51bGw7XG4gIHByaXZhdGUgZW52OiBFbnZpcm9ubWVudDtcblxuICBbQ1VSU09SX1NUQUNLXSA9IG5ldyBTdGFjazxDdXJzb3I+KCk7XG4gIHByaXZhdGUgbW9kaWZpZXJTdGFjayA9IG5ldyBTdGFjazxPcHRpb248W01vZGlmaWVyTWFuYWdlciwgdW5rbm93bl1bXT4+KCk7XG4gIHByaXZhdGUgYmxvY2tTdGFjayA9IG5ldyBTdGFjazxMaXZlQmxvY2s+KCk7XG5cbiAgc3RhdGljIGZvckluaXRpYWxSZW5kZXIoZW52OiBFbnZpcm9ubWVudCwgY3Vyc29yOiBDdXJzb3JJbXBsKSB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKGVudiwgY3Vyc29yLmVsZW1lbnQsIGN1cnNvci5uZXh0U2libGluZykuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgc3RhdGljIHJlc3VtZShlbnY6IEVudmlyb25tZW50LCBibG9jazogVXBkYXRhYmxlQmxvY2spOiBOZXdFbGVtZW50QnVpbGRlciB7XG4gICAgbGV0IHBhcmVudE5vZGUgPSBibG9jay5wYXJlbnRFbGVtZW50KCk7XG4gICAgbGV0IG5leHRTaWJsaW5nID0gYmxvY2sucmVzZXQoZW52KTtcblxuICAgIGxldCBzdGFjayA9IG5ldyB0aGlzKGVudiwgcGFyZW50Tm9kZSwgbmV4dFNpYmxpbmcpLmluaXRpYWxpemUoKTtcbiAgICBzdGFjay5wdXNoTGl2ZUJsb2NrKGJsb2NrKTtcblxuICAgIHJldHVybiBzdGFjaztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQsIHBhcmVudE5vZGU6IFNpbXBsZUVsZW1lbnQsIG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlTm9kZT4pIHtcbiAgICB0aGlzLnB1c2hFbGVtZW50KHBhcmVudE5vZGUsIG5leHRTaWJsaW5nKTtcblxuICAgIHRoaXMuZW52ID0gZW52O1xuICAgIHRoaXMuZG9tID0gZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKTtcbiAgICB0aGlzLnVwZGF0ZU9wZXJhdGlvbnMgPSBlbnYuZ2V0RE9NKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5pdGlhbGl6ZSgpOiB0aGlzIHtcbiAgICB0aGlzLnB1c2hTaW1wbGVCbG9jaygpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGVidWdCbG9ja3MoKTogTGl2ZUJsb2NrW10ge1xuICAgIHJldHVybiB0aGlzLmJsb2NrU3RhY2sudG9BcnJheSgpO1xuICB9XG5cbiAgZ2V0IGVsZW1lbnQoKTogU2ltcGxlRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXNbQ1VSU09SX1NUQUNLXS5jdXJyZW50IS5lbGVtZW50O1xuICB9XG5cbiAgZ2V0IG5leHRTaWJsaW5nKCk6IE9wdGlvbjxTaW1wbGVOb2RlPiB7XG4gICAgcmV0dXJuIHRoaXNbQ1VSU09SX1NUQUNLXS5jdXJyZW50IS5uZXh0U2libGluZztcbiAgfVxuXG4gIGdldCBoYXNCbG9ja3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuYmxvY2tTdGFjay5zaXplID4gMDtcbiAgfVxuXG4gIHByb3RlY3RlZCBibG9jaygpOiBMaXZlQmxvY2sge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQsICdFeHBlY3RlZCBhIGN1cnJlbnQgbGl2ZSBibG9jaycpO1xuICB9XG5cbiAgcG9wRWxlbWVudCgpIHtcbiAgICB0aGlzW0NVUlNPUl9TVEFDS10ucG9wKCk7XG4gICAgZXhwZWN0KHRoaXNbQ1VSU09SX1NUQUNLXS5jdXJyZW50LCBcImNhbid0IHBvcCBwYXN0IHRoZSBsYXN0IGVsZW1lbnRcIik7XG4gIH1cblxuICBwdXNoU2ltcGxlQmxvY2soKTogTGl2ZUJsb2NrIHtcbiAgICByZXR1cm4gdGhpcy5wdXNoTGl2ZUJsb2NrKG5ldyBTaW1wbGVMaXZlQmxvY2sodGhpcy5lbGVtZW50KSk7XG4gIH1cblxuICBwdXNoVXBkYXRhYmxlQmxvY2soKTogVXBkYXRhYmxlQmxvY2tJbXBsIHtcbiAgICByZXR1cm4gdGhpcy5wdXNoTGl2ZUJsb2NrKG5ldyBVcGRhdGFibGVCbG9ja0ltcGwodGhpcy5lbGVtZW50KSk7XG4gIH1cblxuICBwdXNoQmxvY2tMaXN0KGxpc3Q6IExpbmtlZExpc3Q8TGlua2VkTGlzdE5vZGUgJiBMaXZlQmxvY2s+KTogTGl2ZUJsb2NrTGlzdCB7XG4gICAgcmV0dXJuIHRoaXMucHVzaExpdmVCbG9jayhuZXcgTGl2ZUJsb2NrTGlzdCh0aGlzLmVsZW1lbnQsIGxpc3QpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwdXNoTGl2ZUJsb2NrPFQgZXh0ZW5kcyBMaXZlQmxvY2s+KGJsb2NrOiBULCBpc1JlbW90ZSA9IGZhbHNlKTogVCB7XG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmJsb2NrU3RhY2suY3VycmVudDtcblxuICAgIGlmIChjdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICBpZiAoIWlzUmVtb3RlKSB7XG4gICAgICAgIGN1cnJlbnQuZGlkQXBwZW5kQm91bmRzKGJsb2NrKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9fb3BlbkJsb2NrKCk7XG4gICAgdGhpcy5ibG9ja1N0YWNrLnB1c2goYmxvY2spO1xuICAgIHJldHVybiBibG9jaztcbiAgfVxuXG4gIHBvcEJsb2NrKCk6IExpdmVCbG9jayB7XG4gICAgdGhpcy5ibG9jaygpLmZpbmFsaXplKHRoaXMpO1xuICAgIHRoaXMuX19jbG9zZUJsb2NrKCk7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmJsb2NrU3RhY2sucG9wKCksICdFeHBlY3RlZCBwb3BCbG9jayB0byByZXR1cm4gYSBibG9jaycpO1xuICB9XG5cbiAgX19vcGVuQmxvY2soKTogdm9pZCB7fVxuICBfX2Nsb3NlQmxvY2soKTogdm9pZCB7fVxuXG4gIC8vIHRvZG8gcmV0dXJuIHNlZW1zIHVudXNlZFxuICBvcGVuRWxlbWVudCh0YWc6IHN0cmluZyk6IFNpbXBsZUVsZW1lbnQge1xuICAgIGxldCBlbGVtZW50ID0gdGhpcy5fX29wZW5FbGVtZW50KHRhZyk7XG4gICAgdGhpcy5jb25zdHJ1Y3RpbmcgPSBlbGVtZW50O1xuXG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cblxuICBfX29wZW5FbGVtZW50KHRhZzogc3RyaW5nKTogU2ltcGxlRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZG9tLmNyZWF0ZUVsZW1lbnQodGFnLCB0aGlzLmVsZW1lbnQpO1xuICB9XG5cbiAgZmx1c2hFbGVtZW50KG1vZGlmaWVyczogT3B0aW9uPFtNb2RpZmllck1hbmFnZXIsIHVua25vd25dW10+KSB7XG4gICAgbGV0IHBhcmVudCA9IHRoaXMuZWxlbWVudDtcbiAgICBsZXQgZWxlbWVudCA9IGV4cGVjdChcbiAgICAgIHRoaXMuY29uc3RydWN0aW5nLFxuICAgICAgYGZsdXNoRWxlbWVudCBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiBjb25zdHJ1Y3RpbmcgYW4gZWxlbWVudGBcbiAgICApO1xuXG4gICAgdGhpcy5fX2ZsdXNoRWxlbWVudChwYXJlbnQsIGVsZW1lbnQpO1xuXG4gICAgdGhpcy5jb25zdHJ1Y3RpbmcgPSBudWxsO1xuICAgIHRoaXMub3BlcmF0aW9ucyA9IG51bGw7XG5cbiAgICB0aGlzLnB1c2hNb2RpZmllcnMobW9kaWZpZXJzKTtcbiAgICB0aGlzLnB1c2hFbGVtZW50KGVsZW1lbnQsIG51bGwpO1xuICAgIHRoaXMuZGlkT3BlbkVsZW1lbnQoZWxlbWVudCk7XG4gIH1cblxuICBfX2ZsdXNoRWxlbWVudChwYXJlbnQ6IFNpbXBsZUVsZW1lbnQsIGNvbnN0cnVjdGluZzogU2ltcGxlRWxlbWVudCkge1xuICAgIHRoaXMuZG9tLmluc2VydEJlZm9yZShwYXJlbnQsIGNvbnN0cnVjdGluZywgdGhpcy5uZXh0U2libGluZyk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKTogT3B0aW9uPFtNb2RpZmllck1hbmFnZXIsIHVua25vd25dW10+IHtcbiAgICB0aGlzLndpbGxDbG9zZUVsZW1lbnQoKTtcbiAgICB0aGlzLnBvcEVsZW1lbnQoKTtcbiAgICByZXR1cm4gdGhpcy5wb3BNb2RpZmllcnMoKTtcbiAgfVxuXG4gIHB1c2hSZW1vdGVFbGVtZW50KFxuICAgIGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQsXG4gICAgZ3VpZDogc3RyaW5nLFxuICAgIGluc2VydEJlZm9yZTogTWF5YmU8U2ltcGxlTm9kZT5cbiAgKTogT3B0aW9uPFJlbW90ZUxpdmVCbG9jaz4ge1xuICAgIHJldHVybiB0aGlzLl9fcHVzaFJlbW90ZUVsZW1lbnQoZWxlbWVudCwgZ3VpZCwgaW5zZXJ0QmVmb3JlKTtcbiAgfVxuXG4gIF9fcHVzaFJlbW90ZUVsZW1lbnQoXG4gICAgZWxlbWVudDogU2ltcGxlRWxlbWVudCxcbiAgICBfZ3VpZDogc3RyaW5nLFxuICAgIGluc2VydEJlZm9yZTogTWF5YmU8U2ltcGxlTm9kZT5cbiAgKTogT3B0aW9uPFJlbW90ZUxpdmVCbG9jaz4ge1xuICAgIHRoaXMucHVzaEVsZW1lbnQoZWxlbWVudCwgaW5zZXJ0QmVmb3JlKTtcblxuICAgIGlmIChpbnNlcnRCZWZvcmUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgd2hpbGUgKGVsZW1lbnQubGFzdENoaWxkKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQ2hpbGQoZWxlbWVudC5sYXN0Q2hpbGQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBibG9jayA9IG5ldyBSZW1vdGVMaXZlQmxvY2soZWxlbWVudCk7XG5cbiAgICByZXR1cm4gdGhpcy5wdXNoTGl2ZUJsb2NrKGJsb2NrLCB0cnVlKTtcbiAgfVxuXG4gIHBvcFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5wb3BCbG9jaygpO1xuICAgIHRoaXMucG9wRWxlbWVudCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHB1c2hFbGVtZW50KGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQsIG5leHRTaWJsaW5nOiBNYXliZTxTaW1wbGVOb2RlPiA9IG51bGwpIHtcbiAgICB0aGlzW0NVUlNPUl9TVEFDS10ucHVzaChuZXcgQ3Vyc29ySW1wbChlbGVtZW50LCBuZXh0U2libGluZykpO1xuICB9XG5cbiAgcHJpdmF0ZSBwdXNoTW9kaWZpZXJzKG1vZGlmaWVyczogT3B0aW9uPFtNb2RpZmllck1hbmFnZXIsIHVua25vd25dW10+KTogdm9pZCB7XG4gICAgdGhpcy5tb2RpZmllclN0YWNrLnB1c2gobW9kaWZpZXJzKTtcbiAgfVxuXG4gIHByaXZhdGUgcG9wTW9kaWZpZXJzKCk6IE9wdGlvbjxbTW9kaWZpZXJNYW5hZ2VyLCB1bmtub3duXVtdPiB7XG4gICAgcmV0dXJuIHRoaXMubW9kaWZpZXJTdGFjay5wb3AoKTtcbiAgfVxuXG4gIGRpZEFwcGVuZEJvdW5kcyhib3VuZHM6IEJvdW5kcyk6IEJvdW5kcyB7XG4gICAgdGhpcy5ibG9jaygpLmRpZEFwcGVuZEJvdW5kcyhib3VuZHMpO1xuICAgIHJldHVybiBib3VuZHM7XG4gIH1cblxuICBkaWRBcHBlbmROb2RlPFQgZXh0ZW5kcyBTaW1wbGVOb2RlPihub2RlOiBUKTogVCB7XG4gICAgdGhpcy5ibG9jaygpLmRpZEFwcGVuZE5vZGUobm9kZSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBkaWRPcGVuRWxlbWVudChlbGVtZW50OiBTaW1wbGVFbGVtZW50KTogU2ltcGxlRWxlbWVudCB7XG4gICAgdGhpcy5ibG9jaygpLm9wZW5FbGVtZW50KGVsZW1lbnQpO1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgd2lsbENsb3NlRWxlbWVudCgpIHtcbiAgICB0aGlzLmJsb2NrKCkuY2xvc2VFbGVtZW50KCk7XG4gIH1cblxuICBhcHBlbmRUZXh0KHN0cmluZzogc3RyaW5nKTogU2ltcGxlVGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuZGlkQXBwZW5kTm9kZSh0aGlzLl9fYXBwZW5kVGV4dChzdHJpbmcpKTtcbiAgfVxuXG4gIF9fYXBwZW5kVGV4dCh0ZXh0OiBzdHJpbmcpOiBTaW1wbGVUZXh0IHtcbiAgICBsZXQgeyBkb20sIGVsZW1lbnQsIG5leHRTaWJsaW5nIH0gPSB0aGlzO1xuICAgIGxldCBub2RlID0gZG9tLmNyZWF0ZVRleHROb2RlKHRleHQpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUoZWxlbWVudCwgbm9kZSwgbmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgX19hcHBlbmROb2RlKG5vZGU6IFNpbXBsZU5vZGUpOiBTaW1wbGVOb2RlIHtcbiAgICB0aGlzLmRvbS5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCBub2RlLCB0aGlzLm5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIF9fYXBwZW5kRnJhZ21lbnQoZnJhZ21lbnQ6IFNpbXBsZURvY3VtZW50RnJhZ21lbnQpOiBCb3VuZHMge1xuICAgIGxldCBmaXJzdCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7XG5cbiAgICBpZiAoZmlyc3QpIHtcbiAgICAgIGxldCByZXQgPSBuZXcgQ29uY3JldGVCb3VuZHModGhpcy5lbGVtZW50LCBmaXJzdCwgZnJhZ21lbnQubGFzdENoaWxkISk7XG4gICAgICB0aGlzLmRvbS5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCBmcmFnbWVudCwgdGhpcy5uZXh0U2libGluZyk7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IFNpbmdsZU5vZGVCb3VuZHModGhpcy5lbGVtZW50LCB0aGlzLl9fYXBwZW5kQ29tbWVudCgnJykpO1xuICAgIH1cbiAgfVxuXG4gIF9fYXBwZW5kSFRNTChodG1sOiBzdHJpbmcpOiBCb3VuZHMge1xuICAgIHJldHVybiB0aGlzLmRvbS5pbnNlcnRIVE1MQmVmb3JlKHRoaXMuZWxlbWVudCwgdGhpcy5uZXh0U2libGluZywgaHRtbCk7XG4gIH1cblxuICBhcHBlbmREeW5hbWljSFRNTCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IGJvdW5kcyA9IHRoaXMudHJ1c3RlZENvbnRlbnQodmFsdWUpO1xuICAgIHRoaXMuZGlkQXBwZW5kQm91bmRzKGJvdW5kcyk7XG4gIH1cblxuICBhcHBlbmREeW5hbWljVGV4dCh2YWx1ZTogc3RyaW5nKTogU2ltcGxlVGV4dCB7XG4gICAgbGV0IG5vZGUgPSB0aGlzLnVudHJ1c3RlZENvbnRlbnQodmFsdWUpO1xuICAgIHRoaXMuZGlkQXBwZW5kTm9kZShub2RlKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIGFwcGVuZER5bmFtaWNGcmFnbWVudCh2YWx1ZTogU2ltcGxlRG9jdW1lbnRGcmFnbWVudCk6IHZvaWQge1xuICAgIGxldCBib3VuZHMgPSB0aGlzLl9fYXBwZW5kRnJhZ21lbnQodmFsdWUpO1xuICAgIHRoaXMuZGlkQXBwZW5kQm91bmRzKGJvdW5kcyk7XG4gIH1cblxuICBhcHBlbmREeW5hbWljTm9kZSh2YWx1ZTogU2ltcGxlTm9kZSk6IHZvaWQge1xuICAgIGxldCBub2RlID0gdGhpcy5fX2FwcGVuZE5vZGUodmFsdWUpO1xuICAgIGxldCBib3VuZHMgPSBuZXcgU2luZ2xlTm9kZUJvdW5kcyh0aGlzLmVsZW1lbnQsIG5vZGUpO1xuICAgIHRoaXMuZGlkQXBwZW5kQm91bmRzKGJvdW5kcyk7XG4gIH1cblxuICBwcml2YXRlIHRydXN0ZWRDb250ZW50KHZhbHVlOiBzdHJpbmcpOiBCb3VuZHMge1xuICAgIHJldHVybiB0aGlzLl9fYXBwZW5kSFRNTCh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHVudHJ1c3RlZENvbnRlbnQodmFsdWU6IHN0cmluZyk6IFNpbXBsZVRleHQge1xuICAgIHJldHVybiB0aGlzLl9fYXBwZW5kVGV4dCh2YWx1ZSk7XG4gIH1cblxuICBhcHBlbmRDb21tZW50KHN0cmluZzogc3RyaW5nKTogU2ltcGxlQ29tbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZGlkQXBwZW5kTm9kZSh0aGlzLl9fYXBwZW5kQ29tbWVudChzdHJpbmcpKTtcbiAgfVxuXG4gIF9fYXBwZW5kQ29tbWVudChzdHJpbmc6IHN0cmluZyk6IFNpbXBsZUNvbW1lbnQge1xuICAgIGxldCB7IGRvbSwgZWxlbWVudCwgbmV4dFNpYmxpbmcgfSA9IHRoaXM7XG4gICAgbGV0IG5vZGUgPSBkb20uY3JlYXRlQ29tbWVudChzdHJpbmcpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUoZWxlbWVudCwgbm9kZSwgbmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgX19zZXRBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBuYW1lc3BhY2U6IE9wdGlvbjxBdHRyTmFtZXNwYWNlPik6IHZvaWQge1xuICAgIHRoaXMuZG9tLnNldEF0dHJpYnV0ZSh0aGlzLmNvbnN0cnVjdGluZyEsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICB9XG5cbiAgX19zZXRQcm9wZXJ0eShuYW1lOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gICAgKHRoaXMuY29uc3RydWN0aW5nISBhcyBhbnkpW25hbWVdID0gdmFsdWU7XG4gIH1cblxuICBzZXRTdGF0aWNBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBuYW1lc3BhY2U6IE9wdGlvbjxBdHRyTmFtZXNwYWNlPik6IHZvaWQge1xuICAgIHRoaXMuX19zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gIH1cblxuICBzZXREeW5hbWljQXR0cmlidXRlKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogdW5rbm93bixcbiAgICB0cnVzdGluZzogYm9vbGVhbixcbiAgICBuYW1lc3BhY2U6IE9wdGlvbjxBdHRyTmFtZXNwYWNlPlxuICApOiBEeW5hbWljQXR0cmlidXRlIHtcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuY29uc3RydWN0aW5nITtcbiAgICBsZXQgYXR0cmlidXRlID0gdGhpcy5lbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsIG5hbWUsIHRydXN0aW5nLCBuYW1lc3BhY2UpO1xuICAgIGF0dHJpYnV0ZS5zZXQodGhpcywgdmFsdWUsIHRoaXMuZW52KTtcbiAgICByZXR1cm4gYXR0cmlidXRlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTaW1wbGVMaXZlQmxvY2sgaW1wbGVtZW50cyBMaXZlQmxvY2sge1xuICBwcm90ZWN0ZWQgZmlyc3Q6IE9wdGlvbjxGaXJzdE5vZGU+ID0gbnVsbDtcbiAgcHJvdGVjdGVkIGxhc3Q6IE9wdGlvbjxMYXN0Tm9kZT4gPSBudWxsO1xuICBwcm90ZWN0ZWQgZGVzdHJveWFibGVzOiBPcHRpb248U3ltYm9sRGVzdHJveWFibGVbXT4gPSBudWxsO1xuICBwcm90ZWN0ZWQgbmVzdGluZyA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJlbnQ6IFNpbXBsZUVsZW1lbnQpIHt9XG5cbiAgcGFyZW50RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQ7XG4gIH1cblxuICBmaXJzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgbGV0IGZpcnN0ID0gZXhwZWN0KFxuICAgICAgdGhpcy5maXJzdCxcbiAgICAgICdjYW5ub3QgY2FsbCBgZmlyc3ROb2RlKClgIHdoaWxlIGBTaW1wbGVMaXZlQmxvY2tgIGlzIHN0aWxsIGluaXRpYWxpemluZydcbiAgICApO1xuXG4gICAgcmV0dXJuIGZpcnN0LmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgbGV0IGxhc3QgPSBleHBlY3QoXG4gICAgICB0aGlzLmxhc3QsXG4gICAgICAnY2Fubm90IGNhbGwgYGxhc3ROb2RlKClgIHdoaWxlIGBTaW1wbGVMaXZlQmxvY2tgIGlzIHN0aWxsIGluaXRpYWxpemluZydcbiAgICApO1xuXG4gICAgcmV0dXJuIGxhc3QubGFzdE5vZGUoKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQpIHtcbiAgICB0aGlzLmRpZEFwcGVuZE5vZGUoZWxlbWVudCk7XG4gICAgdGhpcy5uZXN0aW5nKys7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5uZXN0aW5nLS07XG4gIH1cblxuICBkaWRBcHBlbmROb2RlKG5vZGU6IFNpbXBsZU5vZGUpIHtcbiAgICBpZiAodGhpcy5uZXN0aW5nICE9PSAwKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuZmlyc3QpIHtcbiAgICAgIHRoaXMuZmlyc3QgPSBuZXcgRmlyc3Qobm9kZSk7XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0ID0gbmV3IExhc3Qobm9kZSk7XG4gIH1cblxuICBkaWRBcHBlbmRCb3VuZHMoYm91bmRzOiBCb3VuZHMpIHtcbiAgICBpZiAodGhpcy5uZXN0aW5nICE9PSAwKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuZmlyc3QpIHtcbiAgICAgIHRoaXMuZmlyc3QgPSBib3VuZHM7XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0ID0gYm91bmRzO1xuICB9XG5cbiAgZmluYWxpemUoc3RhY2s6IEVsZW1lbnRCdWlsZGVyKSB7XG4gICAgaWYgKHRoaXMuZmlyc3QgPT09IG51bGwpIHtcbiAgICAgIHN0YWNrLmFwcGVuZENvbW1lbnQoJycpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVtb3RlTGl2ZUJsb2NrIGV4dGVuZHMgU2ltcGxlTGl2ZUJsb2NrIGltcGxlbWVudHMgU3ltYm9sRGVzdHJveWFibGUge1xuICBbREVTVFJPWV0oKSB7XG4gICAgLy8gSW4gZ2VuZXJhbCwgeW91IG9ubHkgbmVlZCB0byBjbGVhciB0aGUgcm9vdCBvZiBhIGhpZXJhcmNoeSwgYW5kIHNob3VsZCBuZXZlclxuICAgIC8vIG5lZWQgdG8gY2xlYXIgYW55IGNoaWxkIG5vZGVzLiBUaGlzIGlzIGFuIGltcG9ydGFudCBjb25zdHJhaW50IHRoYXQgZ2l2ZXMgdXNcbiAgICAvLyBhIHN0cm9uZyBndWFyYW50ZWUgdGhhdCBjbGVhcmluZyBhIHN1YnRyZWUgaXMgYSBzaW5nbGUgRE9NIG9wZXJhdGlvbi5cbiAgICAvL1xuICAgIC8vIEJlY2F1c2UgcmVtb3RlIGJsb2NrcyBhcmUgbm90IG5vcm1hbGx5IHBoeXNpY2FsbHkgbmVzdGVkIGluc2lkZSBvZiB0aGUgdHJlZVxuICAgIC8vIHRoYXQgdGhleSBhcmUgbG9naWNhbGx5IG5lc3RlZCBpbnNpZGUsIHdlIG1hbnVhbGx5IGNsZWFyIHJlbW90ZSBibG9ja3Mgd2hlblxuICAgIC8vIGEgbG9naWNhbCBwYXJlbnQgaXMgY2xlYXJlZC5cbiAgICAvL1xuICAgIC8vIEhPV0VWRVIsIGl0IGlzIGN1cnJlbnRseSBwb3NzaWJsZSBmb3IgYSByZW1vdGUgYmxvY2sgdG8gYmUgcGh5c2ljYWxseSBuZXN0ZWRcbiAgICAvLyBpbnNpZGUgb2YgdGhlIGJsb2NrIGl0IGlzIGxvZ2ljYWxseSBjb250YWluZWQgaW5zaWRlIG9mLiBUaGlzIGhhcHBlbnMgd2hlblxuICAgIC8vIHRoZSByZW1vdGUgYmxvY2sgaXMgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgYXBwbGljYXRpb24ncyBlbnRpcmUgZWxlbWVudC5cbiAgICAvL1xuICAgIC8vIFRoZSBwcm9ibGVtIHdpdGggdGhhdCBzY2VuYXJpbyBpcyB0aGF0IEdsaW1tZXIgYmVsaWV2ZXMgdGhhdCBpdCBvd25zIG1vcmUgb2ZcbiAgICAvLyB0aGUgRE9NIHRoYW4gaXQgYWN0dWFsbHkgZG9lcy4gVGhlIGNvZGUgaXMgYXR0ZW1wdGluZyB0byB3cml0ZSBwYXN0IHRoZSBlbmRcbiAgICAvLyBvZiB0aGUgR2xpbW1lci1tYW5hZ2VkIHJvb3QsIGJ1dCBHbGltbWVyIGlzbid0IGF3YXJlIG9mIHRoYXQuXG4gICAgLy9cbiAgICAvLyBUaGUgY29ycmVjdCBzb2x1dGlvbiB0byB0aGF0IHByb2JsZW0gaXMgZm9yIEdsaW1tZXIgdG8gYmUgYXdhcmUgb2YgdGhlIGVuZFxuICAgIC8vIG9mIHRoZSBib3VuZHMgdGhhdCBpdCBvd25zLCBhbmQgb25jZSB3ZSBtYWtlIHRoYXQgY2hhbmdlLCB0aGlzIGNoZWNrIGNvdWxkXG4gICAgLy8gYmUgcmVtb3ZlZC5cbiAgICAvL1xuICAgIC8vIEZvciBub3csIGEgbW9yZSB0YXJnZXRlZCBmaXggaXMgdG8gY2hlY2sgd2hldGhlciB0aGUgbm9kZSB3YXMgYWxyZWFkeSByZW1vdmVkXG4gICAgLy8gYW5kIGF2b2lkIGNsZWFyaW5nIHRoZSBub2RlIGlmIGl0IHdhcy4gSW4gbW9zdCBjYXNlcyB0aGlzIHNob3VsZG4ndCBoYXBwZW4sXG4gICAgLy8gc28gdGhpcyBtaWdodCBoaWRlIGJ1Z3Mgd2hlcmUgdGhlIGNvZGUgY2xlYXJzIG5lc3RlZCBub2RlcyB1bm5lY2Vzc2FyaWx5LFxuICAgIC8vIHNvIHdlIHNob3VsZCBldmVudHVhbGx5IHRyeSB0byBkbyB0aGUgY29ycmVjdCBmaXguXG4gICAgaWYgKHRoaXMucGFyZW50RWxlbWVudCgpID09PSB0aGlzLmZpcnN0Tm9kZSgpLnBhcmVudE5vZGUpIHtcbiAgICAgIGNsZWFyKHRoaXMpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRhYmxlQmxvY2tJbXBsIGV4dGVuZHMgU2ltcGxlTGl2ZUJsb2NrIGltcGxlbWVudHMgVXBkYXRhYmxlQmxvY2sge1xuICByZXNldChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPFNpbXBsZU5vZGU+IHtcbiAgICBsZXQgbmV4dFNpYmxpbmcgPSBkZXRhY2hDaGlsZHJlbih0aGlzLCBlbnYpO1xuXG4gICAgLy8gbGV0IG5leHRTaWJsaW5nID0gY2xlYXIodGhpcyk7XG5cbiAgICB0aGlzLmZpcnN0ID0gbnVsbDtcbiAgICB0aGlzLmxhc3QgPSBudWxsO1xuICAgIHRoaXMuZGVzdHJveWFibGVzID0gbnVsbDtcbiAgICB0aGlzLm5lc3RpbmcgPSAwO1xuXG4gICAgcmV0dXJuIG5leHRTaWJsaW5nO1xuICB9XG59XG5cbi8vIEZJWE1FOiBBbGwgdGhlIG5vb3BzIGluIGhlcmUgaW5kaWNhdGUgYSBtb2RlbGxpbmcgcHJvYmxlbVxuY2xhc3MgTGl2ZUJsb2NrTGlzdCBpbXBsZW1lbnRzIExpdmVCbG9jayB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFyZW50OiBTaW1wbGVFbGVtZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYm91bmRMaXN0OiBMaW5rZWRMaXN0PExpbmtlZExpc3ROb2RlICYgTGl2ZUJsb2NrPlxuICApIHtcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICB0aGlzLmJvdW5kTGlzdCA9IGJvdW5kTGlzdDtcbiAgfVxuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIGxldCBoZWFkID0gZXhwZWN0KFxuICAgICAgdGhpcy5ib3VuZExpc3QuaGVhZCgpLFxuICAgICAgJ2Nhbm5vdCBjYWxsIGBmaXJzdE5vZGUoKWAgd2hpbGUgYExpdmVCbG9ja0xpc3RgIGlzIHN0aWxsIGluaXRpYWxpemluZydcbiAgICApO1xuXG4gICAgcmV0dXJuIGhlYWQuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpOiBTaW1wbGVOb2RlIHtcbiAgICBsZXQgdGFpbCA9IGV4cGVjdChcbiAgICAgIHRoaXMuYm91bmRMaXN0LnRhaWwoKSxcbiAgICAgICdjYW5ub3QgY2FsbCBgbGFzdE5vZGUoKWAgd2hpbGUgYExpdmVCbG9ja0xpc3RgIGlzIHN0aWxsIGluaXRpYWxpemluZydcbiAgICApO1xuXG4gICAgcmV0dXJuIHRhaWwubGFzdE5vZGUoKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KF9lbGVtZW50OiBTaW1wbGVFbGVtZW50KSB7XG4gICAgYXNzZXJ0KGZhbHNlLCAnQ2Fubm90IG9wZW5FbGVtZW50IGRpcmVjdGx5IGluc2lkZSBhIGJsb2NrIGxpc3QnKTtcbiAgfVxuXG4gIGNsb3NlRWxlbWVudCgpIHtcbiAgICBhc3NlcnQoZmFsc2UsICdDYW5ub3QgY2xvc2VFbGVtZW50IGRpcmVjdGx5IGluc2lkZSBhIGJsb2NrIGxpc3QnKTtcbiAgfVxuXG4gIGRpZEFwcGVuZE5vZGUoX25vZGU6IFNpbXBsZU5vZGUpIHtcbiAgICBhc3NlcnQoZmFsc2UsICdDYW5ub3QgY3JlYXRlIGEgbmV3IG5vZGUgZGlyZWN0bHkgaW5zaWRlIGEgYmxvY2sgbGlzdCcpO1xuICB9XG5cbiAgZGlkQXBwZW5kQm91bmRzKF9ib3VuZHM6IEJvdW5kcykge31cblxuICBmaW5hbGl6ZShfc3RhY2s6IEVsZW1lbnRCdWlsZGVyKSB7XG4gICAgYXNzZXJ0KHRoaXMuYm91bmRMaXN0LmhlYWQoKSAhPT0gbnVsbCwgJ2JvdW5kc0xpc3QgY2Fubm90IGJlIGVtcHR5Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsaWVudEJ1aWxkZXIoZW52OiBFbnZpcm9ubWVudCwgY3Vyc29yOiBDdXJzb3JJbXBsKTogRWxlbWVudEJ1aWxkZXIge1xuICByZXR1cm4gTmV3RWxlbWVudEJ1aWxkZXIuZm9ySW5pdGlhbFJlbmRlcihlbnYsIGN1cnNvcik7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9 |
@@ -1,2 +0,2 @@ | ||
import { CompilableBlock, CompilableTemplate, Destroyable, Drop, DynamicScope, Environment, JitOrAotBlock, PartialScope, RenderResult, RichIteratorResult, RuntimeContext, RuntimeConstants, RuntimeProgram, Scope, SymbolDestroyable, SyntaxCompilationContext, VM as PublicVM, JitRuntimeContext, AotRuntimeContext, LiveBlock, ElementBuilder } from '@glimmer/interfaces'; | ||
import { CompilableBlock, CompilableTemplate, Destroyable, Drop, DynamicScope, Environment, JitOrAotBlock, PartialScope, RenderResult, RichIteratorResult, RuntimeContext, RuntimeConstants, RuntimeProgram, Scope, SymbolDestroyable, SyntaxCompilationContext, VM as PublicVM, JitRuntimeContext, AotRuntimeContext, ElementBuilder } from '@glimmer/interfaces'; | ||
import { PathReference, VersionedPathReference } from '@glimmer/reference'; | ||
@@ -74,3 +74,2 @@ import { LinkedList, Option } from '@glimmer/util'; | ||
get stack(): EvaluationStack; | ||
currentBlock(): LiveBlock; | ||
get pc(): number; | ||
@@ -77,0 +76,0 @@ s0: unknown; |
@@ -36,3 +36,4 @@ import { Bounds, ElementOperations, Environment, GlimmerTreeChanges, GlimmerTreeConstruction, SymbolDestroyable, ElementBuilder, LiveBlock, CursorStackSymbol, UpdatableBlock, Cursor, ModifierManager } from '@glimmer/interfaces'; | ||
get nextSibling(): Option<SimpleNode>; | ||
block(): LiveBlock; | ||
get hasBlocks(): boolean; | ||
protected block(): LiveBlock; | ||
popElement(): void; | ||
@@ -39,0 +40,0 @@ pushSimpleBlock(): LiveBlock; |
{ | ||
"name": "@glimmer/runtime", | ||
"version": "0.50.3", | ||
"version": "0.50.4", | ||
"description": "Minimal runtime needed to render Glimmer templates", | ||
@@ -9,16 +9,16 @@ "repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/runtime", | ||
"@glimmer/env": "0.1.7", | ||
"@glimmer/low-level": "^0.50.3", | ||
"@glimmer/util": "^0.50.3", | ||
"@glimmer/reference": "^0.50.3", | ||
"@glimmer/validator": "^0.50.3", | ||
"@glimmer/wire-format": "^0.50.3", | ||
"@glimmer/interfaces": "^0.50.3", | ||
"@glimmer/program": "^0.50.3", | ||
"@glimmer/vm": "^0.50.3", | ||
"@glimmer/low-level": "^0.50.4", | ||
"@glimmer/util": "^0.50.4", | ||
"@glimmer/reference": "^0.50.4", | ||
"@glimmer/validator": "^0.50.4", | ||
"@glimmer/wire-format": "^0.50.4", | ||
"@glimmer/interfaces": "^0.50.4", | ||
"@glimmer/program": "^0.50.4", | ||
"@glimmer/vm": "^0.50.4", | ||
"@simple-dom/interface": "^1.4.0" | ||
}, | ||
"devDependencies": { | ||
"@glimmer/local-debug-flags": "^0.50.3", | ||
"@glimmer/opcode-compiler": "^0.50.3", | ||
"@glimmer/debug": "^0.50.3", | ||
"@glimmer/local-debug-flags": "^0.50.4", | ||
"@glimmer/opcode-compiler": "^0.50.4", | ||
"@glimmer/debug": "^0.50.4", | ||
"@types/qunit": "^2.9.0" | ||
@@ -25,0 +25,0 @@ }, |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
3996650
34726
Updated@glimmer/interfaces@^0.50.4
Updated@glimmer/low-level@^0.50.4
Updated@glimmer/program@^0.50.4
Updated@glimmer/reference@^0.50.4
Updated@glimmer/util@^0.50.4
Updated@glimmer/validator@^0.50.4
Updated@glimmer/vm@^0.50.4
Updated@glimmer/wire-format@^0.50.4