@bitgo-beta/sdk-coin-trx 1.2.3-alpha.406 → 1.2.3-alpha.407
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/lib/iface.d.ts +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/utils.d.ts +28 -0
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +81 -2
- package/dist/src/trx.d.ts +4 -0
- package/dist/src/trx.d.ts.map +1 -1
- package/dist/src/trx.js +52 -1
- package/dist/test/fixtures.d.ts +40 -0
- package/dist/test/fixtures.d.ts.map +1 -0
- package/dist/test/fixtures.js +46 -0
- package/dist/test/resources.d.ts +586 -0
- package/dist/test/resources.d.ts.map +1 -0
- package/dist/test/resources.js +746 -0
- package/dist/test/unit/index.d.ts +2 -0
- package/dist/test/unit/index.d.ts.map +1 -0
- package/dist/test/unit/index.js +19 -0
- package/dist/test/unit/keyPair.d.ts +2 -0
- package/dist/test/unit/keyPair.d.ts.map +1 -0
- package/dist/test/unit/keyPair.js +163 -0
- package/dist/test/unit/transaction.d.ts +2 -0
- package/dist/test/unit/transaction.d.ts.map +1 -0
- package/dist/test/unit/transaction.js +38 -0
- package/dist/test/unit/transactionBuilder/contractCallBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/contractCallBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/contractCallBuilder.js +315 -0
- package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.js +255 -0
- package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.js +285 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +42 -0
- package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.js +255 -0
- package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.js +256 -0
- package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.js +277 -0
- package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.js +213 -0
- package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.js +213 -0
- package/dist/test/unit/transactionBuilder/wrappedBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/wrappedBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/wrappedBuilder.js +50 -0
- package/dist/test/unit/transactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder.js +178 -0
- package/dist/test/unit/trx.d.ts +2 -0
- package/dist/test/unit/trx.d.ts.map +1 -0
- package/dist/test/unit/trx.js +532 -0
- package/dist/test/unit/util.d.ts +2 -0
- package/dist/test/unit/util.d.ts.map +1 -0
- package/dist/test/unit/util.js +141 -0
- package/dist/test/unit/verifyTransaction.d.ts +2 -0
- package/dist/test/unit/verifyTransaction.d.ts.map +1 -0
- package/dist/test/unit/verifyTransaction.js +378 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +11 -8
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -1088
- package/resources/README.md +0 -31
- package/resources/protobuf/Contract.proto +0 -288
- package/resources/protobuf/Discover.proto +0 -44
- package/resources/protobuf/tron.d.ts +0 -12469
- package/resources/protobuf/tron.js +0 -37192
- package/resources/protobuf/tron.proto +0 -683
package/dist/src/lib/iface.d.ts
CHANGED
package/dist/src/lib/iface.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRyeSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IENvbnRyYWN0VHlwZSwgUGVybWlzc2lvblR5cGUsIFRyb25SZXNvdXJjZSB9IGZyb20gJy4vZW51bSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWNjb3VudCB7XG4gIHB1YmxpY0tleTogc3RyaW5nO1xuICBwcml2YXRlS2V5OiBzdHJpbmc7XG4gIGFkZHJlc3M6IHtcbiAgICBiYXNlNTg6IHN0cmluZztcbiAgICBoZXg6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXJhbWV0ZXIge1xuICB2YWx1ZTogc3RyaW5nO1xuICB0eXBlVXJsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJhY3Qge1xuICBwYXJhbWV0ZXI6IFBhcmFtZXRlcjtcbiAgdHlwZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoaXMgaW50ZXJmYWNlIHJlcHJlc2VudHMgYSBmb3JtIG9mOlxuICpcbiAqIEBleHRlcm5hbCBodHRwczovL2dpdGh1Yi5jb20vQml0R28vYml0Z28tYWNjb3VudC1saWIvYmxvYi81ZjI4MjU4ODcwMTc3OGE0NDIxYzc1ZmE2MWY0MjcxM2Y1NmU5NWI5L3Jlc291cmNlcy9wcm90b2J1Zi90cm9uLnByb3RvI0wyMzlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvblJlY2VpcHQge1xuICAvKipcbiAgICogVGhpcyBkb2VzIG5vdCBleGlzdCBpbiBwcm90b2J1ZiBiZWNhdXNlIGl0J3MgYXR0YWNoZWQgYnkgdGhlIG5vZGUgcnBjIGNhbGxzLlxuICAgKi9cbiAgdHhJRD86IHN0cmluZztcbiAgcmF3X2RhdGE6IFJhd0RhdGE7XG4gIHJhd19kYXRhX2hleDogc3RyaW5nO1xuICBzaWduYXR1cmU/OiBBcnJheTxzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhd0RhdGEge1xuICBleHBpcmF0aW9uOiBudW1iZXI7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICByZWZfYmxvY2tfYnl0ZXM6IHN0cmluZztcbiAgcmVmX2Jsb2NrX2hhc2g6IHN0cmluZztcbiAgZmVlX2xpbWl0PzogbnVtYmVyO1xuICBjb250cmFjdFR5cGU/OiBDb250cmFjdFR5cGU7XG4gIGNvbnRyYWN0OlxuICAgIHwgVHJhbnNmZXJDb250cmFjdFtdXG4gICAgfCBBY2NvdW50UGVybWlzc2lvblVwZGF0ZUNvbnRyYWN0W11cbiAgICB8IFRyaWdnZXJTbWFydENvbnRyYWN0W11cbiAgICB8IEZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0W11cbiAgICB8IFZvdGVXaXRuZXNzQ29udHJhY3RbXVxuICAgIHwgVW5mcmVlemVCYWxhbmNlVjJDb250cmFjdFtdXG4gICAgfCBXaXRoZHJhd0V4cGlyZVVuZnJlZXplQ29udHJhY3RbXVxuICAgIHwgV2l0aGRyYXdCYWxhbmNlQ29udHJhY3RbXVxuICAgIHwgUmVzb3VyY2VNYW5hZ2VtZW50Q29udHJhY3RbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYWx1ZSB7XG4gIHR5cGVfdXJsPzogc3RyaW5nO1xuICB2YWx1ZTogVmFsdWVGaWVsZHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdWVGaWVsZHMge1xuICBhbW91bnQ6IG51bWJlcjtcbiAgLy8gYmFzZTU4IGVuY29kZWQgYWRkcmVzc2VzXG4gIG93bmVyX2FkZHJlc3M6IHN0cmluZztcbiAgdG9fYWRkcmVzczogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZmVyQ29udHJhY3Qge1xuICBwYXJhbWV0ZXI6IFZhbHVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyaWdnZXJTbWFydENvbnRyYWN0IHtcbiAgcGFyYW1ldGVyOiBDb250cmFjdENhbGxWYWx1ZTtcbiAgdHlwZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250cmFjdENhbGxWYWx1ZSB7XG4gIHR5cGVfdXJsPzogc3RyaW5nO1xuICB2YWx1ZTogQ29udHJhY3RDYWxsVmFsdWVGaWVsZHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJhY3RDYWxsVmFsdWVGaWVsZHMge1xuICBkYXRhOiBzdHJpbmc7XG4gIGNvbnRyYWN0X2FkZHJlc3M6IHN0cmluZztcbiAgb3duZXJfYWRkcmVzczogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3Qge1xuICBvd25lckFkZHJlc3M6IHN0cmluZztcbiAgb3duZXI6IFBlcm1pc3Npb247XG4gIHdpdG5lc3M/OiBQZXJtaXNzaW9uO1xuICBhY3RpdmVzOiBBcnJheTxQZXJtaXNzaW9uPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZXJtaXNzaW9uIHtcbiAgdHlwZTogUGVybWlzc2lvblR5cGU7XG4gIHRocmVzaG9sZDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBlcm1pc3Npb25LZXkge1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIHdlaWdodDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJsb2NrIHtcbiAgbnVtYmVyOiBudW1iZXI7XG4gIGhhc2g6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWUge1xuICBmZWVMaW1pdDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyYWN0RW50cnkgZXh0ZW5kcyBFbnRyeSB7XG4gIGRhdGE/OiBzdHJpbmc7XG4gIGNvbnRyYWN0QWRkcmVzcz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50SW5mbyB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgYmFsYW5jZTogbnVtYmVyO1xuICBvd25lcl9wZXJtaXNzaW9uOiB7XG4gICAga2V5czogW1Blcm1pc3Npb25LZXldO1xuICB9O1xuICBhY3RpdmVfcGVybWlzc2lvbjogW3sga2V5czogW1Blcm1pc3Npb25LZXldIH1dO1xuICB0cmMyMDogW1JlY29yZDxzdHJpbmcsIHN0cmluZz5dO1xufVxuXG4vKipcbiAqIEZyZWV6ZSBiYWxhbmNlIGNvbnRyYWN0IHZhbHVlIGZpZWxkc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZyZWV6ZUJhbGFuY2VWYWx1ZUZpZWxkcyB7XG4gIHJlc291cmNlOiBzdHJpbmc7XG4gIGZyb3plbl9iYWxhbmNlOiBudW1iZXI7XG4gIG93bmVyX2FkZHJlc3M6IHN0cmluZztcbn1cblxuLyoqXG4gKiBVbmZyZWV6ZSB0cmFuc2FjdGlvbiB2YWx1ZSBmaWVsZHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmZyZWV6ZUJhbGFuY2VWYWx1ZUZpZWxkcyB7XG4gIHJlc291cmNlOiBzdHJpbmc7XG4gIHVuZnJlZXplX2JhbGFuY2U6IG51bWJlcjtcbiAgb3duZXJfYWRkcmVzczogc3RyaW5nO1xufVxuXG4vKipcbiAqIEZyZWV6ZSBiYWxhbmNlIGNvbnRyYWN0IHZhbHVlIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZyZWV6ZUJhbGFuY2VWYWx1ZSB7XG4gIHR5cGVfdXJsPzogc3RyaW5nO1xuICB2YWx1ZTogRnJlZXplQmFsYW5jZVZhbHVlRmllbGRzO1xufVxuXG4vKipcbiAqIEZyZWV6ZSBiYWxhbmNlIHYyIGNvbnRyYWN0IGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0IHtcbiAgcGFyYW1ldGVyOiBGcmVlemVCYWxhbmNlVmFsdWU7XG4gIHR5cGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVW5mcmVlemUgYmFsYW5jZSBjb250cmFjdCB2YWx1ZSBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmZyZWV6ZUJhbGFuY2VWYWx1ZSB7XG4gIHR5cGVfdXJsPzogc3RyaW5nO1xuICB2YWx1ZTogVW5mcmVlemVCYWxhbmNlVmFsdWVGaWVsZHM7XG59XG5cbi8qKlxuICogVW5mcmVlemUgYmFsYW5jZSB2MiBjb250cmFjdCBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0IHtcbiAgcGFyYW1ldGVyOiBVbmZyZWV6ZUJhbGFuY2VWYWx1ZTtcbiAgdHlwZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBGcmVlemUgYmFsYW5jZSBjb250cmFjdCBwYXJhbWV0ZXIgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnJlZXplQmFsYW5jZUNvbnRyYWN0UGFyYW1ldGVyIHtcbiAgcGFyYW1ldGVyOiB7XG4gICAgdmFsdWU6IHtcbiAgICAgIHJlc291cmNlOiBUcm9uUmVzb3VyY2U7XG4gICAgICBmcm96ZW5fYmFsYW5jZTogbnVtYmVyO1xuICAgICAgb3duZXJfYWRkcmVzczogc3RyaW5nO1xuICAgIH07XG4gIH07XG59XG5cbi8qKlxuICogV2l0aGRyYXcgdHJhbnNhY3Rpb24gdmFsdWUgZmllbGRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aGRyYXdFeHBpcmVVbmZyZWV6ZVZhbHVlRmllbGRzIHtcbiAgb3duZXJfYWRkcmVzczogc3RyaW5nO1xufVxuXG4vKipcbiAqIFdpdGhkcmF3IGJhbGFuY2UgY29udHJhY3QgdmFsdWUgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aGRyYXdFeHBpcmVVbmZyZWV6ZVZhbHVlIHtcbiAgdHlwZV91cmw/OiBzdHJpbmc7XG4gIHZhbHVlOiBXaXRoZHJhd0V4cGlyZVVuZnJlZXplVmFsdWVGaWVsZHM7XG59XG5cbi8qKlxuICogV2l0aGRyYXcgZXhwaXJlIHVuZnJlZXplIGNvbnRyYWN0IGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhkcmF3RXhwaXJlVW5mcmVlemVDb250cmFjdCB7XG4gIHBhcmFtZXRlcjogV2l0aGRyYXdFeHBpcmVVbmZyZWV6ZVZhbHVlO1xuICB0eXBlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhkcmF3QmFsYW5jZUNvbnRyYWN0IHtcbiAgLy8gc2FtZSBhcyB3aXRoZHJhdyBleHBpcmUgdW5mcmVlemVcbiAgcGFyYW1ldGVyOiBXaXRoZHJhd0V4cGlyZVVuZnJlZXplVmFsdWU7XG4gIHR5cGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVW5mcmVlemVCYWxhbmNlQ29udHJhY3RQYXJhbWV0ZXIge1xuICBwYXJhbWV0ZXI6IHtcbiAgICB2YWx1ZToge1xuICAgICAgcmVzb3VyY2U6IFRyb25SZXNvdXJjZTtcbiAgICAgIHVuZnJlZXplX2JhbGFuY2U6IG51bWJlcjtcbiAgICAgIG93bmVyX2FkZHJlc3M6IHN0cmluZztcbiAgICB9O1xuICB9O1xufVxuXG4vKipcbiAqIEZyZWV6ZSBiYWxhbmNlIGNvbnRyYWN0IGRlY29kZWQgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnJlZXplQ29udHJhY3REZWNvZGVkIHtcbiAgb3duZXJBZGRyZXNzPzogc3RyaW5nO1xuICByZXNvdXJjZT86IG51bWJlcjtcbiAgZnJvemVuQmFsYW5jZT86IHN0cmluZyB8IG51bWJlcjtcbn1cblxuLyoqXG4gKiBVbmZyZWV6ZSBiYWxhbmNlIGNvbnRyYWN0IGRlY29kZWQgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5mcmVlemVDb250cmFjdERlY29kZWQge1xuICBvd25lckFkZHJlc3M/OiBzdHJpbmc7XG4gIHJlc291cmNlPzogbnVtYmVyO1xuICB1bmZyZWV6ZUJhbGFuY2U/OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbi8qKlxuICogV2l0aGRyYXcgZXhwaXJlIHVuZnJlZXplIGNvbnRyYWN0IGRlY29kZWQgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aGRyYXdDb250cmFjdERlY29kZWQge1xuICBvd25lckFkZHJlc3M/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVm90ZSBkYXRhIGluIGEgdm90ZSB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZvdGVXaXRuZXNzRGF0YSB7XG4gIHZvdGVfYWRkcmVzczogc3RyaW5nO1xuICB2b3RlX2NvdW50OiBudW1iZXI7XG59XG5cbi8qKlxuICogVm90ZSB0cmFuc2FjdGlvbiB2YWx1ZSBmaWVsZHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWb3RlV2l0bmVzc1ZhbHVlRmllbGRzIHtcbiAgb3duZXJfYWRkcmVzczogc3RyaW5nO1xuICB2b3RlczogVm90ZVdpdG5lc3NEYXRhW107XG59XG5cbi8qKlxuICogVm90ZSBjb250cmFjdCB2YWx1ZSBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWb3RlV2l0bmVzc1ZhbHVlIHtcbiAgdHlwZV91cmw/OiBzdHJpbmc7XG4gIHZhbHVlOiBWb3RlV2l0bmVzc1ZhbHVlRmllbGRzO1xufVxuXG4vKipcbiAqIFZvdGUgd2l0bmVzcyBjb250cmFjdCBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWb3RlV2l0bmVzc0NvbnRyYWN0IHtcbiAgcGFyYW1ldGVyOiBWb3RlV2l0bmVzc1ZhbHVlO1xuICB0eXBlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFZvdGUgd2l0bmVzcyBjb250cmFjdCBkZWNvZGVkIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZvdGVDb250cmFjdERlY29kZWQge1xuICBvd25lckFkZHJlc3M/OiBzdHJpbmc7XG4gIHZvdGVzPzogQXJyYXk8e1xuICAgIHZvdGVBZGRyZXNzPzogc3RyaW5nO1xuICAgIHZvdGVDb3VudD86IHN0cmluZyB8IG51bWJlcjtcbiAgfT47XG59XG5cbi8qKlxuICogVm90ZSB3aXRuZXNzIGNvbnRyYWN0IHBhcmFtZXRlciBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWb3RlV2l0bmVzc0NvbnRyYWN0UGFyYW1ldGVyIHtcbiAgcGFyYW1ldGVyOiB7XG4gICAgdmFsdWU6IHtcbiAgICAgIG93bmVyX2FkZHJlc3M6IHN0cmluZztcbiAgICAgIHZvdGVzOiBBcnJheTx7XG4gICAgICAgIHZvdGVfYWRkcmVzczogc3RyaW5nO1xuICAgICAgICB2b3RlX2NvdW50OiBudW1iZXI7XG4gICAgICB9PjtcbiAgICB9O1xuICB9O1xufVxuXG4vKipcbiAqIFdpdGhkcmF3IGV4cGlyZSB1bmZyZWV6ZSBjb250cmFjdCBwYXJhbWV0ZXIgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aGRyYXdFeHBpcmVVbmZyZWV6ZUNvbnRyYWN0UGFyYW1ldGVyIHtcbiAgcGFyYW1ldGVyOiB7XG4gICAgdmFsdWU6IHtcbiAgICAgIG93bmVyX2FkZHJlc3M6IHN0cmluZztcbiAgICB9O1xuICB9O1xufVxuXG4vKipcbiAqIERlbGVnYXRlL1VuZGVsZWdhdGUgcmVzb3VyY2UgdmFsdWUgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VNYW5hZ2VtZW50VHhWYWx1ZUZpZWxkcyB7XG4gIGJhbGFuY2U6IG51bWJlcjtcbiAgcmVjZWl2ZXJfYWRkcmVzczogc3RyaW5nO1xuICBvd25lcl9hZGRyZXNzOiBzdHJpbmc7XG4gIHJlc291cmNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVsZWdhdGUvVW5kZWxlZ2F0ZSByZXNvdXJjZSBwYXJhbWV0ZXJzIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTWFuYWdtZW50VHhQYXJhbXMge1xuICB2YWx1ZTogUmVzb3VyY2VNYW5hZ2VtZW50VHhWYWx1ZUZpZWxkcztcbiAgdHlwZV91cmw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVsZWdhdGUvVW5kZWxlZ2F0ZSByZXNvdXJjZSBjb250cmFjdCBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZU1hbmFnZW1lbnRDb250cmFjdCB7XG4gIHBhcmFtZXRlcjogUmVzb3VyY2VNYW5hZ21lbnRUeFBhcmFtcztcbiAgdHlwZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWxlZ2F0ZS9VbmRlbGVnYXRlIHJlc291cmNlIGNvbnRyYWN0IHBhcmFtZXRlciBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZU1hbmFnZW1lbnRDb250cmFjdFBhcmFtZXRlciB7XG4gIHBhcmFtZXRlcjoge1xuICAgIHZhbHVlOiB7XG4gICAgICByZXNvdXJjZTogVHJvblJlc291cmNlO1xuICAgICAgYmFsYW5jZTogc3RyaW5nIHwgbnVtYmVyO1xuICAgICAgb3duZXJfYWRkcmVzczogc3RyaW5nO1xuICAgICAgcmVjZWl2ZXJfYWRkcmVzczogc3RyaW5nO1xuICAgIH07XG4gIH07XG59XG5cbi8qKlxuICogRGVsZWdhdGUvVW5kZWxlZ2F0ZSByZXNvdXJjZSBjb250cmFjdCBkZWNvZGVkIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTWFuYWdlbWVudENvbnRyYWN0RGVjb2RlZCB7XG4gIG93bmVyQWRkcmVzcz86IHN0cmluZztcbiAgcmVjZWl2ZXJBZGRyZXNzPzogc3RyaW5nO1xuICBiYWxhbmNlPzogc3RyaW5nIHwgbnVtYmVyO1xuICByZXNvdXJjZT86IFRyb25SZXNvdXJjZTtcbn1cbiJdfQ==
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRyeSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IENvbnRyYWN0VHlwZSwgUGVybWlzc2lvblR5cGUsIFRyb25SZXNvdXJjZSB9IGZyb20gJy4vZW51bSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWNjb3VudCB7XG4gIHB1YmxpY0tleTogc3RyaW5nO1xuICBwcml2YXRlS2V5OiBzdHJpbmc7XG4gIGFkZHJlc3M6IHtcbiAgICBiYXNlNTg6IHN0cmluZztcbiAgICBoZXg6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXJhbWV0ZXIge1xuICB2YWx1ZTogc3RyaW5nO1xuICB0eXBlVXJsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJhY3Qge1xuICBwYXJhbWV0ZXI6IFBhcmFtZXRlcjtcbiAgdHlwZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoaXMgaW50ZXJmYWNlIHJlcHJlc2VudHMgYSBmb3JtIG9mOlxuICpcbiAqIEBleHRlcm5hbCBodHRwczovL2dpdGh1Yi5jb20vQml0R28vYml0Z28tYWNjb3VudC1saWIvYmxvYi81ZjI4MjU4ODcwMTc3OGE0NDIxYzc1ZmE2MWY0MjcxM2Y1NmU5NWI5L3Jlc291cmNlcy9wcm90b2J1Zi90cm9uLnByb3RvI0wyMzlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvblJlY2VpcHQge1xuICAvKipcbiAgICogVGhpcyBkb2VzIG5vdCBleGlzdCBpbiBwcm90b2J1ZiBiZWNhdXNlIGl0J3MgYXR0YWNoZWQgYnkgdGhlIG5vZGUgcnBjIGNhbGxzLlxuICAgKi9cbiAgdHhJRD86IHN0cmluZztcbiAgcmF3X2RhdGE6IFJhd0RhdGE7XG4gIHJhd19kYXRhX2hleDogc3RyaW5nO1xuICBzaWduYXR1cmU/OiBBcnJheTxzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhd0RhdGEge1xuICBleHBpcmF0aW9uOiBudW1iZXI7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICByZWZfYmxvY2tfYnl0ZXM6IHN0cmluZztcbiAgcmVmX2Jsb2NrX2hhc2g6IHN0cmluZztcbiAgZmVlX2xpbWl0PzogbnVtYmVyO1xuICBjb250cmFjdFR5cGU/OiBDb250cmFjdFR5cGU7XG4gIGNvbnRyYWN0OlxuICAgIHwgVHJhbnNmZXJDb250cmFjdFtdXG4gICAgfCBBY2NvdW50UGVybWlzc2lvblVwZGF0ZUNvbnRyYWN0W11cbiAgICB8IFRyaWdnZXJTbWFydENvbnRyYWN0W11cbiAgICB8IEZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0W11cbiAgICB8IFZvdGVXaXRuZXNzQ29udHJhY3RbXVxuICAgIHwgVW5mcmVlemVCYWxhbmNlVjJDb250cmFjdFtdXG4gICAgfCBXaXRoZHJhd0V4cGlyZVVuZnJlZXplQ29udHJhY3RbXVxuICAgIHwgV2l0aGRyYXdCYWxhbmNlQ29udHJhY3RbXVxuICAgIHwgUmVzb3VyY2VNYW5hZ2VtZW50Q29udHJhY3RbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYWx1ZSB7XG4gIHR5cGVfdXJsPzogc3RyaW5nO1xuICB2YWx1ZTogVmFsdWVGaWVsZHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdWVGaWVsZHMge1xuICBhbW91bnQ6IG51bWJlcjtcbiAgLy8gYmFzZTU4IGVuY29kZWQgYWRkcmVzc2VzXG4gIG93bmVyX2FkZHJlc3M6IHN0cmluZztcbiAgdG9fYWRkcmVzczogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZmVyQ29udHJhY3Qge1xuICBwYXJhbWV0ZXI6IFZhbHVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyaWdnZXJTbWFydENvbnRyYWN0IHtcbiAgcGFyYW1ldGVyOiBDb250cmFjdENhbGxWYWx1ZTtcbiAgdHlwZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250cmFjdENhbGxWYWx1ZSB7XG4gIHR5cGVfdXJsPzogc3RyaW5nO1xuICB2YWx1ZTogQ29udHJhY3RDYWxsVmFsdWVGaWVsZHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJhY3RDYWxsVmFsdWVGaWVsZHMge1xuICBkYXRhOiBzdHJpbmc7XG4gIGNvbnRyYWN0X2FkZHJlc3M6IHN0cmluZztcbiAgb3duZXJfYWRkcmVzczogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3Qge1xuICBvd25lckFkZHJlc3M6IHN0cmluZztcbiAgb3duZXI6IFBlcm1pc3Npb247XG4gIHdpdG5lc3M/OiBQZXJtaXNzaW9uO1xuICBhY3RpdmVzOiBBcnJheTxQZXJtaXNzaW9uPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZXJtaXNzaW9uIHtcbiAgdHlwZTogUGVybWlzc2lvblR5cGU7XG4gIHRocmVzaG9sZDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBlcm1pc3Npb25LZXkge1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIHdlaWdodDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJsb2NrIHtcbiAgbnVtYmVyOiBudW1iZXI7XG4gIGhhc2g6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWUge1xuICBmZWVMaW1pdDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyYWN0RW50cnkgZXh0ZW5kcyBFbnRyeSB7XG4gIGRhdGE/OiBzdHJpbmc7XG4gIGNvbnRyYWN0QWRkcmVzcz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50SW5mbyB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgYmFsYW5jZTogbnVtYmVyO1xuICBvd25lcl9wZXJtaXNzaW9uOiB7XG4gICAga2V5czogW1Blcm1pc3Npb25LZXldO1xuICB9O1xuICBhY3RpdmVfcGVybWlzc2lvbjogW3sga2V5czogW1Blcm1pc3Npb25LZXldIH1dO1xuICB0cmMyMDogW1JlY29yZDxzdHJpbmcsIHN0cmluZz5dO1xufVxuXG4vKipcbiAqIEZyZWV6ZSBiYWxhbmNlIGNvbnRyYWN0IHZhbHVlIGZpZWxkc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZyZWV6ZUJhbGFuY2VWYWx1ZUZpZWxkcyB7XG4gIHJlc291cmNlOiBzdHJpbmc7XG4gIGZyb3plbl9iYWxhbmNlOiBudW1iZXI7XG4gIG93bmVyX2FkZHJlc3M6IHN0cmluZztcbn1cblxuLyoqXG4gKiBVbmZyZWV6ZSB0cmFuc2FjdGlvbiB2YWx1ZSBmaWVsZHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmZyZWV6ZUJhbGFuY2VWYWx1ZUZpZWxkcyB7XG4gIHJlc291cmNlOiBzdHJpbmc7XG4gIHVuZnJlZXplX2JhbGFuY2U6IG51bWJlcjtcbiAgb3duZXJfYWRkcmVzczogc3RyaW5nO1xufVxuXG4vKipcbiAqIEZyZWV6ZSBiYWxhbmNlIGNvbnRyYWN0IHZhbHVlIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZyZWV6ZUJhbGFuY2VWYWx1ZSB7XG4gIHR5cGVfdXJsPzogc3RyaW5nO1xuICB2YWx1ZTogRnJlZXplQmFsYW5jZVZhbHVlRmllbGRzO1xufVxuXG4vKipcbiAqIEZyZWV6ZSBiYWxhbmNlIHYyIGNvbnRyYWN0IGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0IHtcbiAgcGFyYW1ldGVyOiBGcmVlemVCYWxhbmNlVmFsdWU7XG4gIHR5cGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVW5mcmVlemUgYmFsYW5jZSBjb250cmFjdCB2YWx1ZSBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmZyZWV6ZUJhbGFuY2VWYWx1ZSB7XG4gIHR5cGVfdXJsPzogc3RyaW5nO1xuICB2YWx1ZTogVW5mcmVlemVCYWxhbmNlVmFsdWVGaWVsZHM7XG59XG5cbi8qKlxuICogVW5mcmVlemUgYmFsYW5jZSB2MiBjb250cmFjdCBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0IHtcbiAgcGFyYW1ldGVyOiBVbmZyZWV6ZUJhbGFuY2VWYWx1ZTtcbiAgdHlwZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBGcmVlemUgYmFsYW5jZSBjb250cmFjdCBwYXJhbWV0ZXIgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnJlZXplQmFsYW5jZUNvbnRyYWN0UGFyYW1ldGVyIHtcbiAgcGFyYW1ldGVyOiB7XG4gICAgdmFsdWU6IHtcbiAgICAgIHJlc291cmNlOiBUcm9uUmVzb3VyY2U7XG4gICAgICBmcm96ZW5fYmFsYW5jZTogbnVtYmVyO1xuICAgICAgb3duZXJfYWRkcmVzczogc3RyaW5nO1xuICAgIH07XG4gIH07XG59XG5cbi8qKlxuICogV2l0aGRyYXcgdHJhbnNhY3Rpb24gdmFsdWUgZmllbGRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aGRyYXdFeHBpcmVVbmZyZWV6ZVZhbHVlRmllbGRzIHtcbiAgb3duZXJfYWRkcmVzczogc3RyaW5nO1xufVxuXG4vKipcbiAqIFdpdGhkcmF3IGJhbGFuY2UgY29udHJhY3QgdmFsdWUgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aGRyYXdFeHBpcmVVbmZyZWV6ZVZhbHVlIHtcbiAgdHlwZV91cmw/OiBzdHJpbmc7XG4gIHZhbHVlOiBXaXRoZHJhd0V4cGlyZVVuZnJlZXplVmFsdWVGaWVsZHM7XG59XG5cbi8qKlxuICogV2l0aGRyYXcgZXhwaXJlIHVuZnJlZXplIGNvbnRyYWN0IGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhkcmF3RXhwaXJlVW5mcmVlemVDb250cmFjdCB7XG4gIHBhcmFtZXRlcjogV2l0aGRyYXdFeHBpcmVVbmZyZWV6ZVZhbHVlO1xuICB0eXBlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhkcmF3QmFsYW5jZUNvbnRyYWN0IHtcbiAgLy8gc2FtZSBhcyB3aXRoZHJhdyBleHBpcmUgdW5mcmVlemVcbiAgcGFyYW1ldGVyOiBXaXRoZHJhd0V4cGlyZVVuZnJlZXplVmFsdWU7XG4gIHR5cGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVW5mcmVlemVCYWxhbmNlQ29udHJhY3RQYXJhbWV0ZXIge1xuICBwYXJhbWV0ZXI6IHtcbiAgICB2YWx1ZToge1xuICAgICAgcmVzb3VyY2U6IFRyb25SZXNvdXJjZTtcbiAgICAgIHVuZnJlZXplX2JhbGFuY2U6IG51bWJlcjtcbiAgICAgIG93bmVyX2FkZHJlc3M6IHN0cmluZztcbiAgICB9O1xuICB9O1xufVxuXG4vKipcbiAqIEZyZWV6ZSBiYWxhbmNlIGNvbnRyYWN0IGRlY29kZWQgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnJlZXplQ29udHJhY3REZWNvZGVkIHtcbiAgb3duZXJBZGRyZXNzPzogc3RyaW5nO1xuICByZXNvdXJjZT86IHN0cmluZztcbiAgZnJvemVuQmFsYW5jZT86IHN0cmluZyB8IG51bWJlcjtcbn1cblxuLyoqXG4gKiBVbmZyZWV6ZSBiYWxhbmNlIGNvbnRyYWN0IGRlY29kZWQgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5mcmVlemVDb250cmFjdERlY29kZWQge1xuICBvd25lckFkZHJlc3M/OiBzdHJpbmc7XG4gIHJlc291cmNlPzogbnVtYmVyO1xuICB1bmZyZWV6ZUJhbGFuY2U/OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbi8qKlxuICogV2l0aGRyYXcgZXhwaXJlIHVuZnJlZXplIGNvbnRyYWN0IGRlY29kZWQgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aGRyYXdDb250cmFjdERlY29kZWQge1xuICBvd25lckFkZHJlc3M/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVm90ZSBkYXRhIGluIGEgdm90ZSB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZvdGVXaXRuZXNzRGF0YSB7XG4gIHZvdGVfYWRkcmVzczogc3RyaW5nO1xuICB2b3RlX2NvdW50OiBudW1iZXI7XG59XG5cbi8qKlxuICogVm90ZSB0cmFuc2FjdGlvbiB2YWx1ZSBmaWVsZHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWb3RlV2l0bmVzc1ZhbHVlRmllbGRzIHtcbiAgb3duZXJfYWRkcmVzczogc3RyaW5nO1xuICB2b3RlczogVm90ZVdpdG5lc3NEYXRhW107XG59XG5cbi8qKlxuICogVm90ZSBjb250cmFjdCB2YWx1ZSBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWb3RlV2l0bmVzc1ZhbHVlIHtcbiAgdHlwZV91cmw/OiBzdHJpbmc7XG4gIHZhbHVlOiBWb3RlV2l0bmVzc1ZhbHVlRmllbGRzO1xufVxuXG4vKipcbiAqIFZvdGUgd2l0bmVzcyBjb250cmFjdCBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWb3RlV2l0bmVzc0NvbnRyYWN0IHtcbiAgcGFyYW1ldGVyOiBWb3RlV2l0bmVzc1ZhbHVlO1xuICB0eXBlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFZvdGUgd2l0bmVzcyBjb250cmFjdCBkZWNvZGVkIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZvdGVDb250cmFjdERlY29kZWQge1xuICBvd25lckFkZHJlc3M/OiBzdHJpbmc7XG4gIHZvdGVzPzogQXJyYXk8e1xuICAgIHZvdGVBZGRyZXNzPzogc3RyaW5nO1xuICAgIHZvdGVDb3VudD86IHN0cmluZyB8IG51bWJlcjtcbiAgfT47XG59XG5cbi8qKlxuICogVm90ZSB3aXRuZXNzIGNvbnRyYWN0IHBhcmFtZXRlciBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWb3RlV2l0bmVzc0NvbnRyYWN0UGFyYW1ldGVyIHtcbiAgcGFyYW1ldGVyOiB7XG4gICAgdmFsdWU6IHtcbiAgICAgIG93bmVyX2FkZHJlc3M6IHN0cmluZztcbiAgICAgIHZvdGVzOiBBcnJheTx7XG4gICAgICAgIHZvdGVfYWRkcmVzczogc3RyaW5nO1xuICAgICAgICB2b3RlX2NvdW50OiBudW1iZXI7XG4gICAgICB9PjtcbiAgICB9O1xuICB9O1xufVxuXG4vKipcbiAqIFdpdGhkcmF3IGV4cGlyZSB1bmZyZWV6ZSBjb250cmFjdCBwYXJhbWV0ZXIgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aGRyYXdFeHBpcmVVbmZyZWV6ZUNvbnRyYWN0UGFyYW1ldGVyIHtcbiAgcGFyYW1ldGVyOiB7XG4gICAgdmFsdWU6IHtcbiAgICAgIG93bmVyX2FkZHJlc3M6IHN0cmluZztcbiAgICB9O1xuICB9O1xufVxuXG4vKipcbiAqIERlbGVnYXRlL1VuZGVsZWdhdGUgcmVzb3VyY2UgdmFsdWUgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VNYW5hZ2VtZW50VHhWYWx1ZUZpZWxkcyB7XG4gIGJhbGFuY2U6IG51bWJlcjtcbiAgcmVjZWl2ZXJfYWRkcmVzczogc3RyaW5nO1xuICBvd25lcl9hZGRyZXNzOiBzdHJpbmc7XG4gIHJlc291cmNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVsZWdhdGUvVW5kZWxlZ2F0ZSByZXNvdXJjZSBwYXJhbWV0ZXJzIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTWFuYWdtZW50VHhQYXJhbXMge1xuICB2YWx1ZTogUmVzb3VyY2VNYW5hZ2VtZW50VHhWYWx1ZUZpZWxkcztcbiAgdHlwZV91cmw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVsZWdhdGUvVW5kZWxlZ2F0ZSByZXNvdXJjZSBjb250cmFjdCBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZU1hbmFnZW1lbnRDb250cmFjdCB7XG4gIHBhcmFtZXRlcjogUmVzb3VyY2VNYW5hZ21lbnRUeFBhcmFtcztcbiAgdHlwZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWxlZ2F0ZS9VbmRlbGVnYXRlIHJlc291cmNlIGNvbnRyYWN0IHBhcmFtZXRlciBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZU1hbmFnZW1lbnRDb250cmFjdFBhcmFtZXRlciB7XG4gIHBhcmFtZXRlcjoge1xuICAgIHZhbHVlOiB7XG4gICAgICByZXNvdXJjZTogVHJvblJlc291cmNlO1xuICAgICAgYmFsYW5jZTogc3RyaW5nIHwgbnVtYmVyO1xuICAgICAgb3duZXJfYWRkcmVzczogc3RyaW5nO1xuICAgICAgcmVjZWl2ZXJfYWRkcmVzczogc3RyaW5nO1xuICAgIH07XG4gIH07XG59XG5cbi8qKlxuICogRGVsZWdhdGUvVW5kZWxlZ2F0ZSByZXNvdXJjZSBjb250cmFjdCBkZWNvZGVkIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTWFuYWdlbWVudENvbnRyYWN0RGVjb2RlZCB7XG4gIG93bmVyQWRkcmVzcz86IHN0cmluZztcbiAgcmVjZWl2ZXJBZGRyZXNzPzogc3RyaW5nO1xuICBiYWxhbmNlPzogc3RyaW5nIHwgbnVtYmVyO1xuICByZXNvdXJjZT86IFRyb25SZXNvdXJjZTtcbn1cbiJdfQ==
|
package/dist/src/lib/utils.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { protocol } from '../../resources/protobuf/tron';
|
|
1
2
|
import { TransferContract, RawData, AccountPermissionUpdateContract, TransactionReceipt, TriggerSmartContract, FreezeBalanceContractParameter, VoteWitnessContractParameter, UnfreezeBalanceContractParameter, WithdrawExpireUnfreezeContractParameter, ResourceManagementContractParameter } from './iface';
|
|
2
3
|
export declare const TRANSACTION_MAX_EXPIRATION = 86400000;
|
|
3
4
|
export declare const TRANSACTION_DEFAULT_EXPIRATION = 3600000;
|
|
@@ -85,6 +86,13 @@ export declare function decodeRawTransaction(hexString: string): {
|
|
|
85
86
|
blockHash: string;
|
|
86
87
|
feeLimit: string;
|
|
87
88
|
};
|
|
89
|
+
/**
|
|
90
|
+
* Converts a base64 encoded string to hex
|
|
91
|
+
*
|
|
92
|
+
* @param base64 - The base64 encoded string to convert
|
|
93
|
+
* @returns {string} - The hex representation
|
|
94
|
+
*/
|
|
95
|
+
export declare function getHexFromBase64(base64: string): string;
|
|
88
96
|
/**
|
|
89
97
|
* Indicates whether the passed string is a safe hex string for tron's purposes.
|
|
90
98
|
*
|
|
@@ -194,4 +202,24 @@ export declare function encodeDataParams(types: string[], values: any[], methodI
|
|
|
194
202
|
* @param data - encoded string
|
|
195
203
|
*/
|
|
196
204
|
export declare function decodeDataParams(types: string[], data: string): any[];
|
|
205
|
+
/**
|
|
206
|
+
* Generate raw_data_hex for a TRON transaction
|
|
207
|
+
*
|
|
208
|
+
* @param {Object} rawData - The transaction raw data object containing:
|
|
209
|
+
* @param {Array} rawData.contract - Array of contract objects
|
|
210
|
+
* @param {string} rawData.refBlockBytes - Reference block bytes
|
|
211
|
+
* @param {string} rawData.refBlockHash - Reference block hash
|
|
212
|
+
* @param {number} rawData.expiration - Transaction expiration timestamp
|
|
213
|
+
* @param {number} rawData.timestamp - Transaction creation timestamp
|
|
214
|
+
* @param {number} [rawData.feeLimit] - Optional fee limit for smart contracts
|
|
215
|
+
* @returns {string} The hex string representation of the encoded transaction data
|
|
216
|
+
*/
|
|
217
|
+
export declare function generateRawDataHex(rawData?: {
|
|
218
|
+
contract?: protocol.Transaction.Contract[];
|
|
219
|
+
refBlockBytes?: string;
|
|
220
|
+
refBlockHash?: string;
|
|
221
|
+
expiration?: number;
|
|
222
|
+
timestamp?: number;
|
|
223
|
+
feeLimit?: number;
|
|
224
|
+
}): string;
|
|
197
225
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/src/lib/utils.js
CHANGED
|
@@ -51,6 +51,7 @@ exports.signString = signString;
|
|
|
51
51
|
exports.getRawAddressFromPubKey = getRawAddressFromPubKey;
|
|
52
52
|
exports.decodeTransaction = decodeTransaction;
|
|
53
53
|
exports.decodeRawTransaction = decodeRawTransaction;
|
|
54
|
+
exports.getHexFromBase64 = getHexFromBase64;
|
|
54
55
|
exports.isValidHex = isValidHex;
|
|
55
56
|
exports.decodeTransferContract = decodeTransferContract;
|
|
56
57
|
exports.decodeTriggerSmartContract = decodeTriggerSmartContract;
|
|
@@ -67,6 +68,7 @@ exports.isValidRawTransactionFormat = isValidRawTransactionFormat;
|
|
|
67
68
|
exports.toHex = toHex;
|
|
68
69
|
exports.encodeDataParams = encodeDataParams;
|
|
69
70
|
exports.decodeDataParams = decodeDataParams;
|
|
71
|
+
exports.generateRawDataHex = generateRawDataHex;
|
|
70
72
|
const assert_1 = __importDefault(require("assert"));
|
|
71
73
|
const hex = __importStar(require("@stablelib/hex"));
|
|
72
74
|
const tronweb = __importStar(require("tronweb"));
|
|
@@ -277,6 +279,16 @@ function decodeRawTransaction(hexString) {
|
|
|
277
279
|
blockHash: toHex(raw.refBlockHash),
|
|
278
280
|
};
|
|
279
281
|
}
|
|
282
|
+
/**
|
|
283
|
+
* Converts a base64 encoded string to hex
|
|
284
|
+
*
|
|
285
|
+
* @param base64 - The base64 encoded string to convert
|
|
286
|
+
* @returns {string} - The hex representation
|
|
287
|
+
*/
|
|
288
|
+
function getHexFromBase64(base64) {
|
|
289
|
+
const buffer = Buffer.from(base64, 'base64');
|
|
290
|
+
return buffer.toString('hex');
|
|
291
|
+
}
|
|
280
292
|
/**
|
|
281
293
|
* Indicates whether the passed string is a safe hex string for tron's purposes.
|
|
282
294
|
*
|
|
@@ -412,7 +424,7 @@ function decodeFreezeBalanceV2Contract(base64) {
|
|
|
412
424
|
throw new sdk_core_1.UtilsError('Frozen balance does not exist in this freeze contract.');
|
|
413
425
|
}
|
|
414
426
|
const owner_address = getBase58AddressFromByteArray(getByteArrayFromHexAddress(Buffer.from(freezeContract.ownerAddress, 'base64').toString('hex')));
|
|
415
|
-
const resourceValue = freezeContract.resource ===
|
|
427
|
+
const resourceValue = freezeContract.resource === 'BANDWIDTH' ? enum_1.TronResource.BANDWIDTH : enum_1.TronResource.ENERGY;
|
|
416
428
|
return [
|
|
417
429
|
{
|
|
418
430
|
parameter: {
|
|
@@ -742,4 +754,71 @@ function decodeDataParams(types, data) {
|
|
|
742
754
|
return obj;
|
|
743
755
|
}, []);
|
|
744
756
|
}
|
|
745
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlEQSwwQ0FFQztBQUtELGdFQUVDO0FBS0QsZ0VBRUM7QUFRRCwwQ0FtQkM7QUFLRCx3RUFTQztBQUlELGtEQUVDO0FBS0Qsb0RBRUM7QUFLRCxzRUFFQztBQUtELDBEQUdDO0FBTUQsMENBRUM7QUFPRCxnQ0FFQztBQUtELDBEQUVDO0FBT0QsOENBMkVDO0FBU0Qsb0RBMEJDO0FBT0QsZ0NBRUM7QUFNRCx3REEwQ0M7QUFRRCxnRUF1Q0M7QUFTRCxzRkFzQkM7QUFRRCxzRUFxQ0M7QUFRRCw4REFpREM7QUFRRCwwRUF3Q0M7QUFTRCxzRUEwQkM7QUFRRCxvRkEwQkM7QUFRRCx3RUE4Q0M7QUFRRCw0RUE4Q0M7QUF1QkQsa0RBR0M7QUFRRCxrRUFLQztBQVFELHNCQUVDO0FBU0QsNENBbUJDO0FBUUQsNENBUUM7QUF0MEJELG9EQUE0QjtBQUM1QixvREFBc0M7QUFDdEMsaURBQW1DO0FBQ25DLHdEQUF5RDtBQUV6RCxtREFBa0Q7QUFDbEQsaURBQTJEO0FBbUIzRCxpQ0FBb0U7QUFDcEUsNENBQXVEO0FBQ3ZELDJDQUFrRDtBQUVyQyxRQUFBLDBCQUEwQixHQUFHLFFBQVEsQ0FBQyxDQUFDLFVBQVU7QUFDakQsUUFBQSw4QkFBOEIsR0FBRyxPQUFPLENBQUMsQ0FBQyxXQUFXO0FBQ2xFLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDO0FBQ3JDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQztBQUk1QixNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQU8sR0FBRyxTQUFTLEVBQUUsRUFBRTtJQUM1QyxPQUNFLGVBQUs7U0FDRixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFD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QUMsS0FBZSxFQUFFLElBQVk7SUFDNUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBUSxFQUFFLENBQUM7SUFDaEMsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUM3RCxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTO1lBQUUsR0FBRyxHQUFHLGNBQWMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xGLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNULENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgKiBhcyBoZXggZnJvbSAnQHN0YWJsZWxpYi9oZXgnO1xuaW1wb3J0ICogYXMgdHJvbndlYiBmcm9tICd0cm9ud2ViJztcbmltcG9ydCB7IHByb3RvY29sIH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL3Byb3RvYnVmL3Ryb24nO1xuXG5pbXBvcnQgeyBVdGlsc0Vycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJvbkVyYzIwQ29pbiwgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIFRyYW5zZmVyQ29udHJhY3QsXG4gIFJhd0RhdGEsXG4gIEFjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3QsXG4gIFRyYW5zYWN0aW9uUmVjZWlwdCxcbiAgUGVybWlzc2lvbixcbiAgVHJpZ2dlclNtYXJ0Q29udHJhY3QsXG4gIEZyZWV6ZUJhbGFuY2VDb250cmFjdFBhcmFtZXRlcixcbiAgVm90ZVdpdG5lc3NDb250cmFjdFBhcmFtZXRlcixcbiAgRnJlZXplQ29udHJhY3REZWNvZGVkLFxuICBWb3RlQ29udHJhY3REZWNvZGVkLFxuICBVbmZyZWV6ZUJhbGFuY2VDb250cmFjdFBhcmFtZXRlcixcbiAgV2l0aGRyYXdFeHBpcmVVbmZyZWV6ZUNvbnRyYWN0UGFyYW1ldGVyLFxuICBVbmZyZWV6ZUNvbnRyYWN0RGVjb2RlZCxcbiAgV2l0aGRyYXdDb250cmFjdERlY29kZWQsXG4gIFJlc291cmNlTWFuYWdlbWVudENvbnRyYWN0UGFyYW1ldGVyLFxuICBSZXNvdXJjZU1hbmFnZW1lbnRDb250cmFjdERlY29kZWQsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgQ29udHJhY3RUeXBlLCBQZXJtaXNzaW9uVHlwZSwgVHJvblJlc291cmNlIH0gZnJvbSAnLi9lbnVtJztcbmltcG9ydCB7IEFiaUNvZGVyLCBoZXhDb25jYXQgfSBmcm9tICdldGhlcnMvbGliL3V0aWxzJztcbmltcG9ydCB7IERFTEVHQVRJT05fVFlQRV9VUkwgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjb25zdCBUUkFOU0FDVElPTl9NQVhfRVhQSVJBVElPTiA9IDg2NDAwMDAwOyAvLyBvbmUgZGF5XG5leHBvcnQgY29uc3QgVFJBTlNBQ1RJT05fREVGQVVMVF9FWFBJUkFUSU9OID0gMzYwMDAwMDsgLy8gb25lIGhvdXJcbmNvbnN0IEFERFJFU1NfUFJFRklYX1JFR0VYID0gL14oNDEpLztcbmNvbnN0IEFERFJFU1NfUFJFRklYID0gJzQxJztcblxuZXhwb3J0IHR5cGUgQnl0ZXNMaWtlID0gbnVtYmVyW10gfCBVaW50OEFycmF5O1xuXG5jb25zdCBnZXRUcm9uVG9rZW5zID0gKG5ldHdvcmsgPSAnbWFpbm5ldCcpID0+IHtcbiAgcmV0dXJuIChcbiAgICBjb2luc1xuICAgICAgLmZpbHRlcigoY29pbikgPT4gY29pbi5mYW1pbHkgPT09ICd0cngnKVxuICAgICAgLmZpbHRlcigodHJ4KSA9PiB0cngubmV0d29yay50eXBlID09PSBuZXR3b3JrICYmIHRyeC5pc1Rva2VuKSBhcyB1bmtub3duIGFzIFRyb25FcmMyMENvaW5bXVxuICApLm1hcCgoY29pbnMpID0+IGNvaW5zLmNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpKTtcbn07XG5cbmV4cG9ydCBjb25zdCB0b2tlbk1haW5uZXRDb250cmFjdEFkZHJlc3NlcyA9IGdldFRyb25Ub2tlbnMoJ21haW5uZXQnKTtcbmV4cG9ydCBjb25zdCB0b2tlblRlc3RuZXRDb250cmFjdEFkZHJlc3NlcyA9IGdldFRyb25Ub2tlbnMoJ3Rlc3RuZXQnKTtcbi8qKlxuICogVHJvbi1zcGVjaWZpYyBoZWxwZXIgZnVuY3Rpb25zXG4gKi9cbmV4cG9ydCB0eXBlIEJ5dGVBcnJheSA9IG51bWJlcltdO1xuZXhwb3J0IHR5cGUgVHJvbkJpbmFyeUxpa2UgPSBCeXRlQXJyYXkgfCBCdWZmZXIgfCBVaW50OEFycmF5IHwgc3RyaW5nO1xuXG5leHBvcnQgY29uc3QgVkFMSURfUkVTT1VSQ0VfVFlQRVMgPSBbJ0VORVJHWScsICdCQU5EV0lEVEgnXTtcblxuLyoqXG4gKiBAcGFyYW0gYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNCYXNlNThBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHJvbndlYi51dGlscy5jcnlwdG8uaXNBZGRyZXNzVmFsaWQoYWRkcmVzcyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHN0clxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3Moc3RyOiBzdHJpbmcpOiBCeXRlQXJyYXkge1xuICByZXR1cm4gdHJvbndlYi51dGlscy5jb2RlLmhleFN0cjJieXRlQXJyYXkoc3RyLnJlcGxhY2UoJzB4JywgJycpKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gYXJyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZXhBZGRyZXNzRnJvbUJ5dGVBcnJheShhcnI6IEJ5dGVBcnJheSk6IHN0cmluZyB7XG4gIHJldHVybiB0cm9ud2ViLnV0aWxzLmNvZGUuYnl0ZUFycmF5MmhleFN0cihhcnIpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBtZXNzYWdlVG9WZXJpZnlcbiAqIEBwYXJhbSBiYXNlNThBZGRyZXNzXG4gKiBAcGFyYW0gc2lnSGV4XG4gKiBAcGFyYW0gdXNlVHJvbkhlYWRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5U2lnbmF0dXJlKFxuICBtZXNzYWdlVG9WZXJpZnk6IHN0cmluZyxcbiAgYmFzZTU4QWRkcmVzczogc3RyaW5nLFxuICBzaWdIZXg6IHN0cmluZyxcbiAgdXNlVHJvbkhlYWRlciA9IHRydWVcbik6IGJvb2xlYW4ge1xuICBpZiAoIWlzVmFsaWRIZXgoc2lnSGV4KSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdzaWduYXR1cmUgaXMgbm90IGluIGEgdmFsaWQgZm9ybWF0LCBuZWVkcyB0byBiZSBoZXhhZGVjaW1hbCcpO1xuICB9XG5cbiAgaWYgKCFpc1ZhbGlkSGV4KG1lc3NhZ2VUb1ZlcmlmeSkpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignbWVzc2FnZSBpcyBub3QgaW4gYSB2YWxpZCBmb3JtYXQsIG5lZWRzIHRvIGJlIGhleGFkZWNpbWFsJyk7XG4gIH1cblxuICBpZiAoIWlzQmFzZTU4QWRkcmVzcyhiYXNlNThBZGRyZXNzKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdhZGRyZXNzIG5lZWRzIHRvIGJlIGJhc2U1OCBlbmNvZGVkJyk7XG4gIH1cblxuICByZXR1cm4gdHJvbndlYi5UcngudmVyaWZ5U2lnbmF0dXJlKG1lc3NhZ2VUb1ZlcmlmeSwgYmFzZTU4QWRkcmVzcywgc2lnSGV4LCB1c2VUcm9uSGVhZGVyKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gYmFzZTU4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZXhBZGRyZXNzRnJvbUJhc2U1OEFkZHJlc3MoYmFzZTU4OiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBwdWxsZWQgZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL1RST04tVVMvdHJvbndlYi9ibG9iL2RjYjhlZmEzNmE1ZWJiNjVjNGRhYjM2MjZlOTAyNTZhNDUzZjNiMGQvc3JjL3V0aWxzL2hlbHAuanMjTDE3XG4gIC8vIGJ1dCB0aGV5IGRvbid0IHN1cmZhY2UgdGhpcyBjYWxsIGluIGluZGV4LmpzXG4gIGNvbnN0IGJ5dGVzID0gdHJvbndlYi51dGlscy5jcnlwdG8uZGVjb2RlQmFzZTU4QWRkcmVzcyhiYXNlNTgpO1xuICAvLyBFbnN1cmUgYnl0ZXMgaXMgYSBCeXRlQXJyYXkgKG51bWJlcltdKVxuICBpZiAoQXJyYXkuaXNBcnJheShieXRlcykpIHtcbiAgICByZXR1cm4gZ2V0SGV4QWRkcmVzc0Zyb21CeXRlQXJyYXkoYnl0ZXMpO1xuICB9XG4gIHRocm93IG5ldyBVdGlsc0Vycm9yKCdGYWlsZWQgdG8gZGVjb2RlIGJhc2U1OCBhZGRyZXNzIHRvIGJ5dGUgYXJyYXknKTtcbn1cbi8qKlxuICogQHBhcmFtIHByaXZhdGVLZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFB1YktleUZyb21QcmlLZXkocHJpdmF0ZUtleTogVHJvbkJpbmFyeUxpa2UpOiBCeXRlQXJyYXkge1xuICByZXR1cm4gdHJvbndlYi51dGlscy5jcnlwdG8uZ2V0UHViS2V5RnJvbVByaUtleShwcml2YXRlS2V5IGFzIEJ5dGVzTGlrZSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHByaXZhdGVLZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFkZHJlc3NGcm9tUHJpS2V5KHByaXZhdGVLZXk6IFRyb25CaW5hcnlMaWtlKTogQnl0ZUFycmF5IHtcbiAgcmV0dXJuIHRyb253ZWIudXRpbHMuY3J5cHRvLmdldEFkZHJlc3NGcm9tUHJpS2V5KHByaXZhdGVLZXkgYXMgQnl0ZXNMaWtlKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZTU4QWRkcmVzc0Zyb21CeXRlQXJyYXkoYWRkcmVzczogQnl0ZUFycmF5KTogc3RyaW5nIHtcbiAgcmV0dXJuIHRyb253ZWIudXRpbHMuY3J5cHRvLmdldEJhc2U1OENoZWNrQWRkcmVzcyhhZGRyZXNzKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gaGV4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCYXNlNThBZGRyZXNzRnJvbUhleChoZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGFyciA9IGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzKGhleCk7XG4gIHJldHVybiBnZXRCYXNlNThBZGRyZXNzRnJvbUJ5dGVBcnJheShhcnIpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBwcml2YXRlS2V5XG4gKiBAcGFyYW0gdHJhbnNhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25UcmFuc2FjdGlvbihwcml2YXRlS2V5OiBzdHJpbmcgfCBCeXRlQXJyYXksIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblJlY2VpcHQpOiBUcmFuc2FjdGlvblJlY2VpcHQge1xuICByZXR1cm4gdHJvbndlYi51dGlscy5jcnlwdG8uc2lnblRyYW5zYWN0aW9uKHByaXZhdGVLZXksIHRyYW5zYWN0aW9uKSBhcyBUcmFuc2FjdGlvblJlY2VpcHQ7XG59XG5cbi8qKlxuICogQHBhcmFtIG1lc3NhZ2VcbiAqIEBwYXJhbSBwcml2YXRlS2V5XG4gKiBAcGFyYW0gdXNlVHJvbkhlYWRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnblN0cmluZyhtZXNzYWdlOiBzdHJpbmcsIHByaXZhdGVLZXk6IHN0cmluZyB8IEJ5dGVBcnJheSwgdXNlVHJvbkhlYWRlciA9IHRydWUpOiBzdHJpbmcge1xuICByZXR1cm4gdHJvbndlYi5Ucnguc2lnblN0cmluZyhtZXNzYWdlLCBwcml2YXRlS2V5IGFzIHN0cmluZywgdXNlVHJvbkhlYWRlcik7XG59XG5cbi8qKlxuICogQHBhcmFtIHB1YkJ5dGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSYXdBZGRyZXNzRnJvbVB1YktleShwdWJCeXRlczogVHJvbkJpbmFyeUxpa2UpOiBCeXRlQXJyYXkge1xuICByZXR1cm4gdHJvbndlYi51dGlscy5jcnlwdG8uY29tcHV0ZUFkZHJlc3MocHViQnl0ZXMgYXMgQnl0ZXNMaWtlKTtcbn1cblxuLyoqXG4gKiBEZWNvZGVzIGEgaGV4IGVuY29kZWQgdHJhbnNhY3Rpb24gaW4gaXRzIHByb3RvYnVmIHJlcHJlc2VudGF0aW9uLlxuICpcbiAqIEBwYXJhbSBoZXhTdHJpbmcgcmF3X2RhdGFfaGV4IGZpZWxkIGZyb20gdHJvbiB0cmFuc2FjdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVRyYW5zYWN0aW9uKGhleFN0cmluZzogc3RyaW5nKTogUmF3RGF0YSB7XG4gIGNvbnN0IHJhd1RyYW5zYWN0aW9uID0gZGVjb2RlUmF3VHJhbnNhY3Rpb24oaGV4U3RyaW5nKTtcblxuICAvLyB0aGVyZSBzaG91bGQgbm90IGJlIG11bHRpcGxlIGNvbnRyYWN0cyBpbiB0aGlzIGRhdGFcbiAgaWYgKHJhd1RyYW5zYWN0aW9uLmNvbnRyYWN0cy5sZW5ndGggIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignTnVtYmVyIG9mIGNvbnRyYWN0cyBpcyBncmVhdGVyIHRoYW4gMS4nKTtcbiAgfVxuXG4gIGxldCBjb250cmFjdDpcbiAgICB8IFRyYW5zZmVyQ29udHJhY3RbXVxuICAgIHwgQWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdFtdXG4gICAgfCBUcmlnZ2VyU21hcnRDb250cmFjdFtdXG4gICAgfCBGcmVlemVCYWxhbmNlQ29udHJhY3RQYXJhbWV0ZXJbXVxuICAgIHwgVm90ZVdpdG5lc3NDb250cmFjdFBhcmFtZXRlcltdXG4gICAgfCBVbmZyZWV6ZUJhbGFuY2VDb250cmFjdFBhcmFtZXRlcltdXG4gICAgfCBXaXRoZHJhd0V4cGlyZVVuZnJlZXplQ29udHJhY3RQYXJhbWV0ZXJbXVxuICAgIHwgUmVzb3VyY2VNYW5hZ2VtZW50Q29udHJhY3RQYXJhbWV0ZXJbXTtcblxuICBsZXQgY29udHJhY3RUeXBlOiBDb250cmFjdFR5cGU7XG5cbiAgLy8gZW5zdXJlIHRoZSBjb250cmFjdCB0eXBlIGlzIHN1cHBvcnRlZFxuICBzd2l0Y2ggKHJhd1RyYW5zYWN0aW9uLmNvbnRyYWN0c1swXS5wYXJhbWV0ZXIudHlwZV91cmwpIHtcbiAgICBjYXNlICd0eXBlLmdvb2dsZWFwaXMuY29tL3Byb3RvY29sLlRyYW5zZmVyQ29udHJhY3QnOlxuICAgICAgY29udHJhY3RUeXBlID0gQ29udHJhY3RUeXBlLlRyYW5zZmVyO1xuICAgICAgY29udHJhY3QgPSBleHBvcnRzLmRlY29kZVRyYW5zZmVyQ29udHJhY3QocmF3VHJhbnNhY3Rpb24uY29udHJhY3RzWzBdLnBhcmFtZXRlci52YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd0eXBlLmdvb2dsZWFwaXMuY29tL3Byb3RvY29sLkFjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3QnOlxuICAgICAgY29udHJhY3RUeXBlID0gQ29udHJhY3RUeXBlLkFjY291bnRQZXJtaXNzaW9uVXBkYXRlO1xuICAgICAgY29udHJhY3QgPSBleHBvcnRzLmRlY29kZUFjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3QocmF3VHJhbnNhY3Rpb24uY29udHJhY3RzWzBdLnBhcmFtZXRlci52YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd0eXBlLmdvb2dsZWFwaXMuY29tL3Byb3RvY29sLlRyaWdnZXJTbWFydENvbnRyYWN0JzpcbiAgICAgIGNvbnRyYWN0VHlwZSA9IENvbnRyYWN0VHlwZS5UcmlnZ2VyU21hcnRDb250cmFjdDtcbiAgICAgIGNvbnRyYWN0ID0gZXhwb3J0cy5kZWNvZGVUcmlnZ2VyU21hcnRDb250cmFjdChyYXdUcmFuc2FjdGlvbi5jb250cmFjdHNbMF0ucGFyYW1ldGVyLnZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3R5cGUuZ29vZ2xlYXBpcy5jb20vcHJvdG9jb2wuRnJlZXplQmFsYW5jZVYyQ29udHJhY3QnOlxuICAgICAgY29udHJhY3RUeXBlID0gQ29udHJhY3RUeXBlLkZyZWV6ZUJhbGFuY2VWMjtcbiAgICAgIGNvbnRyYWN0ID0gZGVjb2RlRnJlZXplQmFsYW5jZVYyQ29udHJhY3QocmF3VHJhbnNhY3Rpb24uY29udHJhY3RzWzBdLnBhcmFtZXRlci52YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd0eXBlLmdvb2dsZWFwaXMuY29tL3Byb3RvY29sLlZvdGVXaXRuZXNzQ29udHJhY3QnOlxuICAgICAgY29udHJhY3RUeXBlID0gQ29udHJhY3RUeXBlLlZvdGVXaXRuZXNzO1xuICAgICAgY29udHJhY3QgPSBkZWNvZGVWb3RlV2l0bmVzc0NvbnRyYWN0KHJhd1RyYW5zYWN0aW9uLmNvbnRyYWN0c1swXS5wYXJhbWV0ZXIudmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndHlwZS5nb29nbGVhcGlzLmNvbS9wcm90b2NvbC5XaXRoZHJhd0V4cGlyZVVuZnJlZXplQ29udHJhY3QnOlxuICAgICAgY29udHJhY3QgPSBkZWNvZGVXaXRoZHJhd0V4cGlyZVVuZnJlZXplQ29udHJhY3QocmF3VHJhbnNhY3Rpb24uY29udHJhY3RzWzBdLnBhcmFtZXRlci52YWx1ZSk7XG4gICAgICBjb250cmFjdFR5cGUgPSBDb250cmFjdFR5cGUuV2l0aGRyYXdFeHBpcmVVbmZyZWV6ZTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3R5cGUuZ29vZ2xlYXBpcy5jb20vcHJvdG9jb2wuV2l0aGRyYXdCYWxhbmNlQ29udHJhY3QnOlxuICAgICAgY29udHJhY3QgPSBkZWNvZGVXaXRoZHJhd0JhbGFuY2VDb250cmFjdChyYXdUcmFuc2FjdGlvbi5jb250cmFjdHNbMF0ucGFyYW1ldGVyLnZhbHVlKTtcbiAgICAgIGNvbnRyYWN0VHlwZSA9IENvbnRyYWN0VHlwZS5XaXRoZHJhd0JhbGFuY2U7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd0eXBlLmdvb2dsZWFwaXMuY29tL3Byb3RvY29sLlVuZnJlZXplQmFsYW5jZVYyQ29udHJhY3QnOlxuICAgICAgY29udHJhY3QgPSBkZWNvZGVVbmZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0KHJhd1RyYW5zYWN0aW9uLmNvbnRyYWN0c1swXS5wYXJhbWV0ZXIudmFsdWUpO1xuICAgICAgY29udHJhY3RUeXBlID0gQ29udHJhY3RUeXBlLlVuZnJlZXplQmFsYW5jZVYyO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBERUxFR0FUSU9OX1RZUEVfVVJMOlxuICAgICAgY29udHJhY3RUeXBlID0gQ29udHJhY3RUeXBlLkRlbGVnYXRlUmVzb3VyY2VDb250cmFjdDtcbiAgICAgIGNvbnRyYWN0ID0gZGVjb2RlRGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0KHJhd1RyYW5zYWN0aW9uLmNvbnRyYWN0c1swXS5wYXJhbWV0ZXIudmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndHlwZS5nb29nbGVhcGlzLmNvbS9wcm90b2NvbC5VbkRlbGVnYXRlUmVzb3VyY2VDb250cmFjdCc6XG4gICAgICBjb250cmFjdFR5cGUgPSBDb250cmFjdFR5cGUuVW5EZWxlZ2F0ZVJlc291cmNlQ29udHJhY3Q7XG4gICAgICBjb250cmFjdCA9IGRlY29kZVVuRGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0KHJhd1RyYW5zYWN0aW9uLmNvbnRyYWN0c1swXS5wYXJhbWV0ZXIudmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdVbnN1cHBvcnRlZCBjb250cmFjdCB0eXBlJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNvbnRyYWN0VHlwZSxcbiAgICBjb250cmFjdCxcbiAgICBleHBpcmF0aW9uOiByYXdUcmFuc2FjdGlvbi5leHBpcmF0aW9uLFxuICAgIHRpbWVzdGFtcDogcmF3VHJhbnNhY3Rpb24udGltZXN0YW1wLFxuICAgIHJlZl9ibG9ja19ieXRlczogcmF3VHJhbnNhY3Rpb24uYmxvY2tCeXRlcyxcbiAgICByZWZfYmxvY2tfaGFzaDogcmF3VHJhbnNhY3Rpb24uYmxvY2tIYXNoLFxuICAgIGZlZV9saW1pdDogK3Jhd1RyYW5zYWN0aW9uLmZlZUxpbWl0LFxuICB9O1xufVxuXG4vKipcbiAqIERlY29kZXMgYSB0cmFuc2FjdGlvbidzIHJhdyBmaWVsZCBmcm9tIGEgYmFzZTY0IGVuY29kZWQgc3RyaW5nLiBUaGlzIGlzIGEgcHJvdG9idWYgcmVwcmVzZW50YXRpb24uXG4gKlxuICogQHBhcmFtIGhleFN0cmluZyB0aGlzIGlzIHRoZSByYXcgaGV4YWRlY2ltYWwgZW5jb2RlZCBzdHJpbmcuIERvYyBmb3VuZCBpbiB0aGUgZm9sbG93aW5nIGxpbmsuXG4gKiBAZXhhbXBsZVxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0JpdEdvL2JpdGdvLWFjY291bnQtbGliL2Jsb2IvNWYyODI1ODg3MDE3NzhhNDQyMWM3NWZhNjFmNDI3MTNmNTZlOTViOS9yZXNvdXJjZXMvcHJvdG9idWYvdHJvbi5wcm90byNMMzE5fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlUmF3VHJhbnNhY3Rpb24oaGV4U3RyaW5nOiBzdHJpbmcpOiB7XG4gIGV4cGlyYXRpb246IG51bWJlcjtcbiAgdGltZXN0YW1wOiBudW1iZXI7XG4gIGNvbnRyYWN0czogQXJyYXk8YW55PjtcbiAgYmxvY2tCeXRlczogc3RyaW5nO1xuICBibG9ja0hhc2g6IHN0cmluZztcbiAgZmVlTGltaXQ6IHN0cmluZztcbn0ge1xuICBjb25zdCBieXRlcyA9IEJ1ZmZlci5mcm9tKGhleFN0cmluZywgJ2hleCcpO1xuXG4gIGxldCByYXc7XG4gIHRyeSB7XG4gICAgLy8gd2UgbmVlZCB0byBkZWNvZGUgb3VyIHJhd19kYXRhX2hleCBmaWVsZCBmaXJzdFxuICAgIHJhdyA9IHByb3RvY29sLlRyYW5zYWN0aW9uLnJhdy5kZWNvZGUoYnl0ZXMpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ1RoZXJlIHdhcyBhbiBlcnJvciBkZWNvZGluZyB0aGUgaW5pdGlhbCByYXdfZGF0YV9oZXggZnJvbSB0aGUgc2VyaWFsaXplZCB0eC4nKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXhwaXJhdGlvbjogTnVtYmVyKHJhdy5leHBpcmF0aW9uKSxcbiAgICB0aW1lc3RhbXA6IE51bWJlcihyYXcudGltZXN0YW1wKSxcbiAgICBjb250cmFjdHM6IHJhdy5jb250cmFjdCxcbiAgICBibG9ja0J5dGVzOiB0b0hleChyYXcucmVmQmxvY2tCeXRlcyksXG4gICAgZmVlTGltaXQ6IHJhdy5mZWVMaW1pdCxcbiAgICBibG9ja0hhc2g6IHRvSGV4KHJhdy5yZWZCbG9ja0hhc2gpLFxuICB9O1xufVxuXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBwYXNzZWQgc3RyaW5nIGlzIGEgc2FmZSBoZXggc3RyaW5nIGZvciB0cm9uJ3MgcHVycG9zZXMuXG4gKlxuICogQHBhcmFtIGhleCBBIHZhbGlkIGhleCBzdHJpbmcgbXVzdCBiZSBhIHN0cmluZyBtYWRlIG9mIG51bWJlcnMgYW5kIGNoYXJhY3RlcnMgYW5kIGhhcyBhbiBldmVuIGxlbmd0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRIZXgoaGV4OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIC9eKDB4KT8oWzAtOWEtZl17Mn0pKyQvaS50ZXN0KGhleCk7XG59XG5cbi8qKiBEZXNlcmlhbGl6ZSB0aGUgc2VnbWVudCBvZiB0aGUgdHhIZXggd2hpY2ggY29ycmVzcG9uZHMgd2l0aCB0aGUgZGV0YWlscyBvZiB0aGUgdHJhbnNmZXJcbiAqXG4gKiBAcGFyYW0gdHJhbnNmZXJIZXggaXMgdGhlIHZhbHVlIHByb3BlcnR5IG9mIHRoZSBcInBhcmFtZXRlclwiIGZpZWxkIG9mIGNvbnRyYWN0TGlzdFswXVxuICogKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVUcmFuc2ZlckNvbnRyYWN0KHRyYW5zZmVySGV4OiBzdHJpbmcpOiBUcmFuc2ZlckNvbnRyYWN0W10ge1xuICBjb25zdCBjb250cmFjdEJ5dGVzID0gQnVmZmVyLmZyb20odHJhbnNmZXJIZXgsICdiYXNlNjQnKTtcbiAgbGV0IHRyYW5zZmVyQ29udHJhY3Q7XG5cbiAgdHJ5IHtcbiAgICB0cmFuc2ZlckNvbnRyYWN0ID0gcHJvdG9jb2wuVHJhbnNmZXJDb250cmFjdC5kZWNvZGUoY29udHJhY3RCeXRlcyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignVGhlcmUgd2FzIGFuIGVycm9yIGRlY29kaW5nIHRoZSB0cmFuc2ZlciBjb250cmFjdCBpbiB0aGUgdHJhbnNhY3Rpb24uJyk7XG4gIH1cblxuICBpZiAoIXRyYW5zZmVyQ29udHJhY3Qub3duZXJBZGRyZXNzKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ093bmVyIGFkZHJlc3MgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyB0cmFuc2ZlciBjb250cmFjdC4nKTtcbiAgfVxuXG4gIGlmICghdHJhbnNmZXJDb250cmFjdC50b0FkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignRGVzdGluYXRpb24gYWRkcmVzcyBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIHRyYW5zZmVyIGNvbnRyYWN0LicpO1xuICB9XG5cbiAgaWYgKCF0cmFuc2ZlckNvbnRyYWN0Lmhhc093blByb3BlcnR5KCdhbW91bnQnKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdBbW91bnQgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyB0cmFuc2ZlciBjb250cmFjdC4nKTtcbiAgfVxuXG4gIC8vIGRlc2VyaWFsaXplIGF0dHJpYnV0ZXNcbiAgY29uc3Qgb3duZXJfYWRkcmVzcyA9IGdldEJhc2U1OEFkZHJlc3NGcm9tQnl0ZUFycmF5KFxuICAgIGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzKEJ1ZmZlci5mcm9tKHRyYW5zZmVyQ29udHJhY3Qub3duZXJBZGRyZXNzLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpKVxuICApO1xuICBjb25zdCB0b19hZGRyZXNzID0gZ2V0QmFzZTU4QWRkcmVzc0Zyb21CeXRlQXJyYXkoXG4gICAgZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MoQnVmZmVyLmZyb20odHJhbnNmZXJDb250cmFjdC50b0FkZHJlc3MsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JykpXG4gICk7XG4gIGNvbnN0IGFtb3VudCA9IHRyYW5zZmVyQ29udHJhY3QuYW1vdW50O1xuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcGFyYW1ldGVyOiB7XG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgYW1vdW50OiBOdW1iZXIoYW1vdW50KSxcbiAgICAgICAgICBvd25lcl9hZGRyZXNzLFxuICAgICAgICAgIHRvX2FkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIF07XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemUgdGhlIHNlZ21lbnQgb2YgdGhlIHR4SGV4IGNvcnJlc3BvbmRpbmcgd2l0aCB0cmlnZ2VyIHNtYXJ0IGNvbnRyYWN0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NFxuICogQHJldHVybnMge0FjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVUcmlnZ2VyU21hcnRDb250cmFjdChiYXNlNjQ6IHN0cmluZyk6IFRyaWdnZXJTbWFydENvbnRyYWN0W10ge1xuICBsZXQgY29udHJhY3RDYWxsRGVjb2RlZDtcbiAgdHJ5IHtcbiAgICBjb250cmFjdENhbGxEZWNvZGVkID0gcHJvdG9jb2wuVHJpZ2dlclNtYXJ0Q29udHJhY3QuZGVjb2RlKEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpKS50b0pTT04oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdUaGVyZSB3YXMgYW4gZXJyb3IgZGVjb2RpbmcgdGhlIGNvbnRyYWN0IGNhbGwgaW4gdGhlIHRyYW5zYWN0aW9uLicpO1xuICB9XG5cbiAgaWYgKCFjb250cmFjdENhbGxEZWNvZGVkLm93bmVyQWRkcmVzcykge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdPd25lciBhZGRyZXNzIGRvZXMgbm90IGV4aXN0IGluIHRoaXMgY29udHJhY3QgY2FsbC4nKTtcbiAgfVxuXG4gIGlmICghY29udHJhY3RDYWxsRGVjb2RlZC5jb250cmFjdEFkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignRGVzdGluYXRpb24gY29udHJhY3QgYWRkcmVzcyBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIGNvbnRyYWN0IGNhbGwuJyk7XG4gIH1cblxuICBpZiAoIWNvbnRyYWN0Q2FsbERlY29kZWQuZGF0YSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdEYXRhIGRvZXMgbm90IGV4aXN0IGluIHRoaXMgY29udHJhY3QgY2FsbC4nKTtcbiAgfVxuXG4gIC8vIGRlc2VyaWFsaXplIGF0dHJpYnV0ZXNcbiAgY29uc3Qgb3duZXJfYWRkcmVzcyA9IGdldEJhc2U1OEFkZHJlc3NGcm9tQnl0ZUFycmF5KFxuICAgIGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzKEJ1ZmZlci5mcm9tKGNvbnRyYWN0Q2FsbERlY29kZWQub3duZXJBZGRyZXNzLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpKVxuICApO1xuICBjb25zdCBjb250cmFjdF9hZGRyZXNzID0gZ2V0QmFzZTU4QWRkcmVzc0Zyb21CeXRlQXJyYXkoXG4gICAgZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MoQnVmZmVyLmZyb20oY29udHJhY3RDYWxsRGVjb2RlZC5jb250cmFjdEFkZHJlc3MsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JykpXG4gICk7XG4gIGNvbnN0IGRhdGEgPSBjb250cmFjdENhbGxEZWNvZGVkLmRhdGE7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcGFyYW1ldGVyOiB7XG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICBvd25lcl9hZGRyZXNzLFxuICAgICAgICAgIGNvbnRyYWN0X2FkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIF07XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemUgdGhlIHNlZ21lbnQgb2YgdGhlIHR4SGV4IGNvcnJlc3BvbmRpbmcgd2l0aCB0aGUgZGV0YWlscyBvZiB0aGUgY29udHJhY3Qgd2hpY2ggdXBkYXRlc1xuICogYWNjb3VudCBwZXJtaXNzaW9uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NFxuICogQHJldHVybnMge0FjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVBY2NvdW50UGVybWlzc2lvblVwZGF0ZUNvbnRyYWN0KGJhc2U2NDogc3RyaW5nKTogQWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdCB7XG4gIGNvbnN0IGFjY291bnRVcGRhdGVDb250cmFjdCA9IHByb3RvY29sLkFjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3QuZGVjb2RlKEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpKS50b0pTT04oKTtcbiAgYXNzZXJ0KGFjY291bnRVcGRhdGVDb250cmFjdC5vd25lckFkZHJlc3MpO1xuICBhc3NlcnQoYWNjb3VudFVwZGF0ZUNvbnRyYWN0Lm93bmVyKTtcbiAgYXNzZXJ0KGFjY291bnRVcGRhdGVDb250cmFjdC5oYXNPd25Qcm9wZXJ0eSgnYWN0aXZlcycpKTtcblxuICBjb25zdCBvd25lckFkZHJlc3MgPSBnZXRCYXNlNThBZGRyZXNzRnJvbUJ5dGVBcnJheShcbiAgICBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyhCdWZmZXIuZnJvbShhY2NvdW50VXBkYXRlQ29udHJhY3Qub3duZXJBZGRyZXNzLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpKVxuICApO1xuICBjb25zdCBvd25lcjogUGVybWlzc2lvbiA9IGNyZWF0ZVBlcm1pc3Npb24oYWNjb3VudFVwZGF0ZUNvbnRyYWN0Lm93bmVyKTtcbiAgbGV0IHdpdG5lc3M6IFBlcm1pc3Npb24gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIGlmIChhY2NvdW50VXBkYXRlQ29udHJhY3Qud2l0bmVzcykge1xuICAgIHdpdG5lc3MgPSBjcmVhdGVQZXJtaXNzaW9uKGFjY291bnRVcGRhdGVDb250cmFjdC53aXRuZXNzKTtcbiAgfVxuICBjb25zdCBhY3RpdmVMaXN0ID0gYWNjb3VudFVwZGF0ZUNvbnRyYWN0LmFjdGl2ZXMubWFwKChhY3RpdmUpID0+IGNyZWF0ZVBlcm1pc3Npb24oYWN0aXZlKSk7XG5cbiAgcmV0dXJuIHtcbiAgICBvd25lckFkZHJlc3MsXG4gICAgb3duZXIsXG4gICAgd2l0bmVzcyxcbiAgICBhY3RpdmVzOiBhY3RpdmVMaXN0LFxuICB9O1xufVxuXG4vKipcbiAqIERlc2VyaWFsaXplIHRoZSBzZWdtZW50IG9mIHRoZSB0eEhleCBjb3JyZXNwb25kaW5nIHdpdGggZnJlZXplIGJhbGFuY2UgY29udHJhY3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZTY0IC0gVGhlIGJhc2U2NCBlbmNvZGVkIGNvbnRyYWN0IGRhdGFcbiAqIEByZXR1cm5zIHtGcmVlemVCYWxhbmNlQ29udHJhY3RQYXJhbWV0ZXJbXX0gLSBBcnJheSBjb250YWluaW5nIHRoZSBkZWNvZGVkIGZyZWV6ZSBjb250cmFjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlRnJlZXplQmFsYW5jZVYyQ29udHJhY3QoYmFzZTY0OiBzdHJpbmcpOiBGcmVlemVCYWxhbmNlQ29udHJhY3RQYXJhbWV0ZXJbXSB7XG4gIGxldCBmcmVlemVDb250cmFjdDogRnJlZXplQ29udHJhY3REZWNvZGVkO1xuICB0cnkge1xuICAgIGZyZWV6ZUNvbnRyYWN0ID0gcHJvdG9jb2wuRnJlZXplQmFsYW5jZVYyQ29udHJhY3QuZGVjb2RlKEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpKS50b0pTT04oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdUaGVyZSB3YXMgYW4gZXJyb3IgZGVjb2RpbmcgdGhlIGZyZWV6ZSBjb250cmFjdCBpbiB0aGUgdHJhbnNhY3Rpb24uJyk7XG4gIH1cblxuICBpZiAoIWZyZWV6ZUNvbnRyYWN0Lm93bmVyQWRkcmVzcykge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdPd25lciBhZGRyZXNzIGRvZXMgbm90IGV4aXN0IGluIHRoaXMgZnJlZXplIGNvbnRyYWN0LicpO1xuICB9XG5cbiAgaWYgKGZyZWV6ZUNvbnRyYWN0LnJlc291cmNlID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignUmVzb3VyY2UgdHlwZSBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIGZyZWV6ZSBjb250cmFjdC4nKTtcbiAgfVxuXG4gIGlmIChmcmVlemVDb250cmFjdC5mcm96ZW5CYWxhbmNlID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignRnJvemVuIGJhbGFuY2UgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyBmcmVlemUgY29udHJhY3QuJyk7XG4gIH1cblxuICBjb25zdCBvd25lcl9hZGRyZXNzID0gZ2V0QmFzZTU4QWRkcmVzc0Zyb21CeXRlQXJyYXkoXG4gICAgZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MoQnVmZmVyLmZyb20oZnJlZXplQ29udHJhY3Qub3duZXJBZGRyZXNzLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpKVxuICApO1xuXG4gIGNvbnN0IHJlc291cmNlVmFsdWUgPSBmcmVlemVDb250cmFjdC5yZXNvdXJjZSA9PT0gMCA/IFRyb25SZXNvdXJjZS5CQU5EV0lEVEggOiBUcm9uUmVzb3VyY2UuRU5FUkdZO1xuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcGFyYW1ldGVyOiB7XG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgcmVzb3VyY2U6IHJlc291cmNlVmFsdWUsXG4gICAgICAgICAgZnJvemVuX2JhbGFuY2U6IE51bWJlcihmcmVlemVDb250cmFjdC5mcm96ZW5CYWxhbmNlKSxcbiAgICAgICAgICBvd25lcl9hZGRyZXNzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICBdO1xufVxuXG4vKipcbiAqIERlc2VyaWFsaXplIHRoZSBzZWdtZW50IG9mIHRoZSB0eEhleCBjb3JyZXNwb25kaW5nIHdpdGggdm90ZSB3aXRuZXNzIGNvbnRyYWN0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NCAtIFRoZSBiYXNlNjQgZW5jb2RlZCBjb250cmFjdCBkYXRhXG4gKiBAcmV0dXJucyB7Vm90ZVdpdG5lc3NDb250cmFjdFBhcmFtZXRlcltdfSAtIEFycmF5IGNvbnRhaW5pbmcgdGhlIGRlY29kZWQgdm90ZSB3aXRuZXNzIGNvbnRyYWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVWb3RlV2l0bmVzc0NvbnRyYWN0KGJhc2U2NDogc3RyaW5nKTogVm90ZVdpdG5lc3NDb250cmFjdFBhcmFtZXRlcltdIHtcbiAgbGV0IHZvdGVDb250cmFjdDogVm90ZUNvbnRyYWN0RGVjb2RlZDtcbiAgdHJ5IHtcbiAgICB2b3RlQ29udHJhY3QgPSBwcm90b2NvbC5Wb3RlV2l0bmVzc0NvbnRyYWN0LmRlY29kZShCdWZmZXIuZnJvbShiYXNlNjQsICdiYXNlNjQnKSkudG9KU09OKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignVGhlcmUgd2FzIGFuIGVycm9yIGRlY29kaW5nIHRoZSB2b3RlIGNvbnRyYWN0IGluIHRoZSB0cmFuc2FjdGlvbi4nKTtcbiAgfVxuXG4gIGlmICghdm90ZUNvbnRyYWN0Lm93bmVyQWRkcmVzcykge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdPd25lciBhZGRyZXNzIGRvZXMgbm90IGV4aXN0IGluIHRoaXMgdm90ZSBjb250cmFjdC4nKTtcbiAgfVxuXG4gIGlmICghQXJyYXkuaXNBcnJheSh2b3RlQ29udHJhY3Qudm90ZXMpIHx8IHZvdGVDb250cmFjdC52b3Rlcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignVm90ZXMgZG8gbm90IGV4aXN0IG9yIGFyZSBlbXB0eSBpbiB0aGlzIHZvdGUgY29udHJhY3QuJyk7XG4gIH1cblxuICAvLyBkZXNlcmlhbGl6ZSBhdHRyaWJ1dGVzXG4gIGNvbnN0IG93bmVyX2FkZHJlc3MgPSBnZXRCYXNlNThBZGRyZXNzRnJvbUJ5dGVBcnJheShcbiAgICBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyhCdWZmZXIuZnJvbSh2b3RlQ29udHJhY3Qub3duZXJBZGRyZXNzLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpKVxuICApO1xuXG4gIGludGVyZmFjZSBWb3RlSXRlbSB7XG4gICAgdm90ZUFkZHJlc3M/OiBzdHJpbmc7XG4gICAgdm90ZUNvdW50Pzogc3RyaW5nIHwgbnVtYmVyO1xuICB9XG5cbiAgY29uc3Qgdm90ZXMgPSB2b3RlQ29udHJhY3Qudm90ZXMubWFwKCh2b3RlOiBWb3RlSXRlbSkgPT4ge1xuICAgIGlmICghdm90ZS52b3RlQWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ1ZvdGUgYWRkcmVzcyBpcyBtaXNzaW5nIGluIG9uZSBvZiB0aGUgdm90ZXMuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZvdGVfYWRkcmVzczogZ2V0QmFzZTU4QWRkcmVzc0Zyb21CeXRlQXJyYXkoXG4gICAgICAgIGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzKEJ1ZmZlci5mcm9tKHZvdGUudm90ZUFkZHJlc3MsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JykpXG4gICAgICApLFxuICAgICAgdm90ZV9jb3VudDogTnVtYmVyKHZvdGUudm90ZUNvdW50IHx8IDApLFxuICAgIH07XG4gIH0pO1xuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcGFyYW1ldGVyOiB7XG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgb3duZXJfYWRkcmVzcyxcbiAgICAgICAgICB2b3RlcyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgXTtcbn1cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZSB0aGUgc2VnbWVudCBvZiB0aGUgdHhIZXggY29ycmVzcG9uZGluZyB3aXRoIHVuZnJlZXplIGJhbGFuY2UgY29udHJhY3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZTY0IC0gVGhlIGJhc2U2NCBlbmNvZGVkIGNvbnRyYWN0IGRhdGFcbiAqIEByZXR1cm5zIHtVbmZyZWV6ZUJhbGFuY2VDb250cmFjdFBhcmFtZXRlcltdfSAtIEFycmF5IGNvbnRhaW5pbmcgdGhlIGRlY29kZWQgdW5mcmVlemUgY29udHJhY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVVuZnJlZXplQmFsYW5jZVYyQ29udHJhY3QoYmFzZTY0OiBzdHJpbmcpOiBVbmZyZWV6ZUJhbGFuY2VDb250cmFjdFBhcmFtZXRlcltdIHtcbiAgbGV0IHVuZnJlZXplQ29udHJhY3Q6IFVuZnJlZXplQ29udHJhY3REZWNvZGVkO1xuICB0cnkge1xuICAgIHVuZnJlZXplQ29udHJhY3QgPSBwcm90b2NvbC5VbmZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0LmRlY29kZShCdWZmZXIuZnJvbShiYXNlNjQsICdiYXNlNjQnKSkudG9KU09OKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignVGhlcmUgd2FzIGFuIGVycm9yIGRlY29kaW5nIHRoZSB1bmZyZWV6ZSBjb250cmFjdCBpbiB0aGUgdHJhbnNhY3Rpb24uJyk7XG4gIH1cblxuICBpZiAoIXVuZnJlZXplQ29udHJhY3Qub3duZXJBZGRyZXNzKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ093bmVyIGFkZHJlc3MgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyB1bmZyZWV6ZSBjb250cmFjdC4nKTtcbiAgfVxuXG4gIGlmICh1bmZyZWV6ZUNvbnRyYWN0LnJlc291cmNlID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignUmVzb3VyY2UgdHlwZSBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIHVuZnJlZXplIGNvbnRyYWN0LicpO1xuICB9XG5cbiAgaWYgKHVuZnJlZXplQ29udHJhY3QudW5mcmVlemVCYWxhbmNlID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignVW5mcmVlemUgYmFsYW5jZSBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIHVuZnJlZXplIGNvbnRyYWN0LicpO1xuICB9XG5cbiAgLy8gZGVzZXJpYWxpemUgYXR0cmlidXRlc1xuICBjb25zdCBvd25lcl9hZGRyZXNzID0gZ2V0QmFzZTU4QWRkcmVzc0Zyb21CeXRlQXJyYXkoXG4gICAgZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MoQnVmZmVyLmZyb20odW5mcmVlemVDb250cmFjdC5vd25lckFkZHJlc3MsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JykpXG4gICk7XG5cbiAgLy8gQ29udmVydCBSZXNvdXJjZUNvZGUgZW51bSB2YWx1ZSB0byBzdHJpbmcgcmVzb3VyY2UgbmFtZVxuICBjb25zdCByZXNvdXJjZVZhbHVlID0gdW5mcmVlemVDb250cmFjdC5yZXNvdXJjZTtcbiAgY29uc3QgcmVzb3VyY2VFbnVtID0gcmVzb3VyY2VWYWx1ZSA9PT0gcHJvdG9jb2wuUmVzb3VyY2VDb2RlLkJBTkRXSURUSCA/IFRyb25SZXNvdXJjZS5CQU5EV0lEVEggOiBUcm9uUmVzb3VyY2UuRU5FUkdZO1xuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcGFyYW1ldGVyOiB7XG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgcmVzb3VyY2U6IHJlc291cmNlRW51bSxcbiAgICAgICAgICB1bmZyZWV6ZV9iYWxhbmNlOiBOdW1iZXIodW5mcmVlemVDb250cmFjdC51bmZyZWV6ZUJhbGFuY2UpLFxuICAgICAgICAgIG93bmVyX2FkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIF07XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemUgdGhlIHNlZ21lbnQgb2YgdGhlIHR4SGV4IGNvcnJlc3BvbmRpbmcgd2l0aCB3aXRoZHJhdyBiYWxhbmNlIGNvbnRyYWN0XG4gKiBEZWNvZGVkIGNvbnRyYWN0IGlzIHRoZSBzYW1lIGFzIHdpdGhkcmF3IGV4cGlyZSB1bmZyZWV6ZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlNjQgLSBUaGUgYmFzZTY0IGVuY29kZWQgY29udHJhY3QgZGF0YVxuICogQHJldHVybnMge1dpdGhkcmF3RXhwaXJlVW5mcmVlemVDb250cmFjdFBhcmFtZXRlcltdfSAtIEFycmF5IGNvbnRhaW5pbmcgdGhlIGRlY29kZWQgd2l0aGRyYXcgY29udHJhY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVdpdGhkcmF3QmFsYW5jZUNvbnRyYWN0KGJhc2U2NDogc3RyaW5nKTogV2l0aGRyYXdFeHBpcmVVbmZyZWV6ZUNvbnRyYWN0UGFyYW1ldGVyW10ge1xuICBsZXQgd2l0aGRyYXdDb250cmFjdDogV2l0aGRyYXdDb250cmFjdERlY29kZWQ7XG4gIHRyeSB7XG4gICAgd2l0aGRyYXdDb250cmFjdCA9IHByb3RvY29sLldpdGhkcmF3QmFsYW5jZUNvbnRyYWN0LmRlY29kZShCdWZmZXIuZnJvbShiYXNlNjQsICdiYXNlNjQnKSkudG9KU09OKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignVGhlcmUgd2FzIGFuIGVycm9yIGRlY29kaW5nIHRoZSB3aXRoZHJhdyBjb250cmFjdCBpbiB0aGUgdHJhbnNhY3Rpb24uJyk7XG4gIH1cblxuICBpZiAoIXdpdGhkcmF3Q29udHJhY3Qub3duZXJBZGRyZXNzKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ093bmVyIGFkZHJlc3MgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyB3aXRoZHJhdyBjb250cmFjdC4nKTtcbiAgfVxuXG4gIC8vIGRlc2VyaWFsaXplIGF0dHJpYnV0ZXNcbiAgY29uc3Qgb3duZXJfYWRkcmVzcyA9IGdldEJhc2U1OEFkZHJlc3NGcm9tQnl0ZUFycmF5KFxuICAgIGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzKEJ1ZmZlci5mcm9tKHdpdGhkcmF3Q29udHJhY3Qub3duZXJBZGRyZXNzLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpKVxuICApO1xuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcGFyYW1ldGVyOiB7XG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgb3duZXJfYWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgXTtcbn1cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZSB0aGUgc2VnbWVudCBvZiB0aGUgdHhIZXggY29ycmVzcG9uZGluZyB3aXRoIHdpdGhkcmF3IGV4cGlyZSB1bmZyZWV6ZSBjb250cmFjdFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlNjQgLSBUaGUgYmFzZTY0IGVuY29kZWQgY29udHJhY3QgZGF0YVxuICogQHJldHVybnMge1dpdGhkcmF3RXhwaXJlVW5mcmVlemVDb250cmFjdFBhcmFtZXRlcltdfSAtIEFycmF5IGNvbnRhaW5pbmcgdGhlIGRlY29kZWQgd2l0aGRyYXcgY29udHJhY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVdpdGhkcmF3RXhwaXJlVW5mcmVlemVDb250cmFjdChiYXNlNjQ6IHN0cmluZyk6IFdpdGhkcmF3RXhwaXJlVW5mcmVlemVDb250cmFjdFBhcmFtZXRlcltdIHtcbiAgbGV0IHdpdGhkcmF3Q29udHJhY3Q6IFdpdGhkcmF3Q29udHJhY3REZWNvZGVkO1xuICB0cnkge1xuICAgIHdpdGhkcmF3Q29udHJhY3QgPSBwcm90b2NvbC5XaXRoZHJhd0JhbGFuY2VDb250cmFjdC5kZWNvZGUoQnVmZmVyLmZyb20oYmFzZTY0LCAnYmFzZTY0JykpLnRvSlNPTigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ1RoZXJlIHdhcyBhbiBlcnJvciBkZWNvZGluZyB0aGUgd2l0aGRyYXcgY29udHJhY3QgaW4gdGhlIHRyYW5zYWN0aW9uLicpO1xuICB9XG5cbiAgaWYgKCF3aXRoZHJhd0NvbnRyYWN0Lm93bmVyQWRkcmVzcykge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdPd25lciBhZGRyZXNzIGRvZXMgbm90IGV4aXN0IGluIHRoaXMgd2l0aGRyYXcgY29udHJhY3QuJyk7XG4gIH1cblxuICAvLyBkZXNlcmlhbGl6ZSBhdHRyaWJ1dGVzXG4gIGNvbnN0IG93bmVyX2FkZHJlc3MgPSBnZXRCYXNlNThBZGRyZXNzRnJvbUJ5dGVBcnJheShcbiAgICBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyhCdWZmZXIuZnJvbSh3aXRoZHJhd0NvbnRyYWN0Lm93bmVyQWRkcmVzcywgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSlcbiAgKTtcblxuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHBhcmFtZXRlcjoge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIG93bmVyX2FkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIF07XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemUgdGhlIHNlZ21lbnQgb2YgdGhlIHR4SGV4IGNvcnJlc3BvbmRpbmcgd2l0aCBkZWxlZ2F0ZSByZXNvdXJjZSBjb250cmFjdFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlNjQgLSBUaGUgYmFzZTY0IGVuY29kZWQgY29udHJhY3QgZGF0YVxuICogQHJldHVybnMge1Jlc291cmNlTWFuYWdlbWVudENvbnRyYWN0UGFyYW1ldGVyW119IC0gQXJyYXkgY29udGFpbmluZyB0aGUgZGVjb2RlZCBkZWxlZ2F0ZSByZXNvdXJjZSBjb250cmFjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlRGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0KGJhc2U2NDogc3RyaW5nKTogUmVzb3VyY2VNYW5hZ2VtZW50Q29udHJhY3RQYXJhbWV0ZXJbXSB7XG4gIGxldCBkZWxlZ2F0ZVJlc291cmNlQ29udHJhY3Q6IFJlc291cmNlTWFuYWdlbWVudENvbnRyYWN0RGVjb2RlZDtcbiAgdHJ5IHtcbiAgICBkZWxlZ2F0ZVJlc291cmNlQ29udHJhY3QgPSBwcm90b2NvbC5EZWxlZ2F0ZVJlc291cmNlQ29udHJhY3QuZGVjb2RlKEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpKS50b0pTT04oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdUaGVyZSB3YXMgYW4gZXJyb3IgZGVjb2RpbmcgdGhlIGRlbGVnYXRlIHJlc291cmNlIGNvbnRyYWN0IGluIHRoZSB0cmFuc2FjdGlvbi4nKTtcbiAgfVxuXG4gIGlmICghZGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0Lm93bmVyQWRkcmVzcykge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdPd25lciBhZGRyZXNzIGRvZXMgbm90IGV4aXN0IGluIHRoaXMgZGVsZWdhdGUgcmVzb3VyY2UgY29udHJhY3QuJyk7XG4gIH1cblxuICBpZiAoIWRlbGVnYXRlUmVzb3VyY2VDb250cmFjdC5yZWNlaXZlckFkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignUmVjZWl2ZXIgYWRkcmVzcyBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIGRlbGVnYXRlIHJlc291cmNlIGNvbnRyYWN0LicpO1xuICB9XG5cbiAgaWYgKGRlbGVnYXRlUmVzb3VyY2VDb250cmFjdC5yZXNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ1Jlc291cmNlIHR5cGUgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyBkZWxlZ2F0ZSByZXNvdXJjZSBjb250cmFjdC4nKTtcbiAgfVxuXG4gIGlmIChkZWxlZ2F0ZVJlc291cmNlQ29udHJhY3QuYmFsYW5jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ0JhbGFuY2UgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyBkZWxlZ2F0ZSByZXNvdXJjZSBjb250cmFjdC4nKTtcbiAgfVxuXG4gIGNvbnN0IG93bmVyX2FkZHJlc3MgPSBnZXRCYXNlNThBZGRyZXNzRnJvbUJ5dGVBcnJheShcbiAgICBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyhCdWZmZXIuZnJvbShkZWxlZ2F0ZVJlc291cmNlQ29udHJhY3Qub3duZXJBZGRyZXNzLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpKVxuICApO1xuXG4gIGNvbnN0IHJlY2VpdmVyX2FkZHJlc3MgPSBnZXRCYXNlNThBZGRyZXNzRnJvbUJ5dGVBcnJheShcbiAgICBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyhCdWZmZXIuZnJvbShkZWxlZ2F0ZVJlc291cmNlQ29udHJhY3QucmVjZWl2ZXJBZGRyZXNzLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpKVxuICApO1xuXG4gIGNvbnN0IHJlc291cmNlVmFsdWUgPSAhZGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0LnJlc291cmNlID8gVHJvblJlc291cmNlLkJBTkRXSURUSCA6IFRyb25SZXNvdXJjZS5FTkVSR1k7XG5cbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBwYXJhbWV0ZXI6IHtcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICByZXNvdXJjZTogcmVzb3VyY2VWYWx1ZSxcbiAgICAgICAgICBiYWxhbmNlOiBOdW1iZXIoZGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0LmJhbGFuY2UpLFxuICAgICAgICAgIG93bmVyX2FkZHJlc3MsXG4gICAgICAgICAgcmVjZWl2ZXJfYWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgXTtcbn1cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZSB0aGUgc2VnbWVudCBvZiB0aGUgdHhIZXggY29ycmVzcG9uZGluZyB3aXRoIHVuZGVsZWdhdGUgcmVzb3VyY2UgY29udHJhY3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZTY0IC0gVGhlIGJhc2U2NCBlbmNvZGVkIGNvbnRyYWN0IGRhdGFcbiAqIEByZXR1cm5zIHtSZXNvdXJjZU1hbmFnZW1lbnRDb250cmFjdFBhcmFtZXRlcltdfSAtIEFycmF5IGNvbnRhaW5pbmcgdGhlIGRlY29kZWQgdW5kZWxlZ2F0ZSByZXNvdXJjZSBjb250cmFjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlVW5EZWxlZ2F0ZVJlc291cmNlQ29udHJhY3QoYmFzZTY0OiBzdHJpbmcpOiBSZXNvdXJjZU1hbmFnZW1lbnRDb250cmFjdFBhcmFtZXRlcltdIHtcbiAgbGV0IHVuZGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0OiBSZXNvdXJjZU1hbmFnZW1lbnRDb250cmFjdERlY29kZWQ7XG4gIHRyeSB7XG4gICAgdW5kZWxlZ2F0ZVJlc291cmNlQ29udHJhY3QgPSBwcm90b2NvbC5VbkRlbGVnYXRlUmVzb3VyY2VDb250cmFjdC5kZWNvZGUoQnVmZmVyLmZyb20oYmFzZTY0LCAnYmFzZTY0JykpLnRvSlNPTigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ1RoZXJlIHdhcyBhbiBlcnJvciBkZWNvZGluZyB0aGUgZGVsZWdhdGUgcmVzb3VyY2UgY29udHJhY3QgaW4gdGhlIHRyYW5zYWN0aW9uLicpO1xuICB9XG5cbiAgaWYgKCF1bmRlbGVnYXRlUmVzb3VyY2VDb250cmFjdC5vd25lckFkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignT3duZXIgYWRkcmVzcyBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIGRlbGVnYXRlIHJlc291cmNlIGNvbnRyYWN0LicpO1xuICB9XG5cbiAgaWYgKCF1bmRlbGVnYXRlUmVzb3VyY2VDb250cmFjdC5yZWNlaXZlckFkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignUmVjZWl2ZXIgYWRkcmVzcyBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIGRlbGVnYXRlIHJlc291cmNlIGNvbnRyYWN0LicpO1xuICB9XG5cbiAgaWYgKHVuZGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0LnJlc291cmNlID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignUmVzb3VyY2UgdHlwZSBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIGRlbGVnYXRlIHJlc291cmNlIGNvbnRyYWN0LicpO1xuICB9XG5cbiAgaWYgKHVuZGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0LmJhbGFuY2UgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdCYWxhbmNlIGRvZXMgbm90IGV4aXN0IGluIHRoaXMgZGVsZWdhdGUgcmVzb3VyY2UgY29udHJhY3QuJyk7XG4gIH1cblxuICBjb25zdCBvd25lcl9hZGRyZXNzID0gZ2V0QmFzZTU4QWRkcmVzc0Zyb21CeXRlQXJyYXkoXG4gICAgZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MoQnVmZmVyLmZyb20odW5kZWxlZ2F0ZVJlc291cmNlQ29udHJhY3Qub3duZXJBZGRyZXNzLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpKVxuICApO1xuXG4gIGNvbnN0IHJlY2VpdmVyX2FkZHJlc3MgPSBnZXRCYXNlNThBZGRyZXNzRnJvbUJ5dGVBcnJheShcbiAgICBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyhCdWZmZXIuZnJvbSh1bmRlbGVnYXRlUmVzb3VyY2VDb250cmFjdC5yZWNlaXZlckFkZHJlc3MsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JykpXG4gICk7XG5cbiAgY29uc3QgcmVzb3VyY2VWYWx1ZSA9ICF1bmRlbGVnYXRlUmVzb3VyY2VDb250cmFjdC5yZXNvdXJjZSA/IFRyb25SZXNvdXJjZS5CQU5EV0lEVEggOiBUcm9uUmVzb3VyY2UuRU5FUkdZO1xuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcGFyYW1ldGVyOiB7XG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgcmVzb3VyY2U6IHJlc291cmNlVmFsdWUsXG4gICAgICAgICAgYmFsYW5jZTogTnVtYmVyKHVuZGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0LmJhbGFuY2UpLFxuICAgICAgICAgIG93bmVyX2FkZHJlc3MsXG4gICAgICAgICAgcmVjZWl2ZXJfYWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgXTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcmF3XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVBlcm1pc3Npb24ocmF3OiB7IHBlcm1pc3Npb25OYW1lOiBzdHJpbmc7IHRocmVzaG9sZDogbnVtYmVyIH0pOiBQZXJtaXNzaW9uIHtcbiAgbGV0IHBlcm1pc3Npb25UeXBlOiBQZXJtaXNzaW9uVHlwZTtcbiAgY29uc3QgcGVybWlzc2lvbiA9IHJhdy5wZXJtaXNzaW9uTmFtZS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgaWYgKHBlcm1pc3Npb24gPT09ICdvd25lcicpIHtcbiAgICBwZXJtaXNzaW9uVHlwZSA9IFBlcm1pc3Npb25UeXBlLk93bmVyO1xuICB9IGVsc2UgaWYgKHBlcm1pc3Npb24gPT09ICd3aXRuZXNzJykge1xuICAgIHBlcm1pc3Npb25UeXBlID0gUGVybWlzc2lvblR5cGUuV2l0bmVzcztcbiAgfSBlbHNlIGlmIChwZXJtaXNzaW9uLnN1YnN0cigwLCA2KSA9PT0gJ2FjdGl2ZScpIHtcbiAgICBwZXJtaXNzaW9uVHlwZSA9IFBlcm1pc3Npb25UeXBlLkFjdGl2ZTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignUGVybWlzc2lvbiB0eXBlIG5vdCBwYXJzZWFibGUuJyk7XG4gIH1cbiAgcmV0dXJuIHsgdHlwZTogcGVybWlzc2lvblR5cGUsIHRocmVzaG9sZDogcmF3LnRocmVzaG9sZCB9O1xufVxuXG4vKipcbiAqIEBwYXJhbSByYXdUcmFuc2FjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFR4SnNvblN0cmluZyhyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHRyYW5zYWN0aW9uID0gSlNPTi5wYXJzZShyYXdUcmFuc2FjdGlvbik7XG4gIHJldHVybiB0cmFuc2FjdGlvbi5oYXNPd25Qcm9wZXJ0eSgndHhJRCcpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciB0aGUgcHJvdmlkZWQgcmF3IHRyYW5zYWN0aW9uIGFjY29tbW9kYXRlcyB0byBiaXRnbydzIHByZWZlcnJlZCBmb3JtYXRcbiAqXG4gKiBAcGFyYW0ge2FueX0gcmF3VHJhbnNhY3Rpb24gLSBUaGUgcmF3IHRyYW5zYWN0aW9uIHRvIGJlIGNoZWNrZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRSYXdUcmFuc2FjdGlvbkZvcm1hdChyYXdUcmFuc2FjdGlvbjogYW55KTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2YgcmF3VHJhbnNhY3Rpb24gPT09ICdzdHJpbmcnICYmIChpc1ZhbGlkSGV4KHJhd1RyYW5zYWN0aW9uKSB8fCBpc1ZhbGlkVHhKc29uU3RyaW5nKHJhd1RyYW5zYWN0aW9uKSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogUmV0dXJucyBhbiBoZXggc3RyaW5nIG9mIHRoZSBnaXZlbiBidWZmZXJcbiAqXG4gKiBAcGFyYW0ge0J1ZmZlciB8IFVpbnQ4QXJyYXl9IGJ1ZmZlciAtIHRoZSBidWZmZXIgdG8gYmUgY29udmVydGVkIHRvIGhleFxuICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgaGV4IHZhbHVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0hleChidWZmZXI6IEJ1ZmZlciB8IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICByZXR1cm4gaGV4LmVuY29kZShidWZmZXIsIHRydWUpO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBLZWNjYWstMjU2IGVuY29kZWQgc3RyaW5nIG9mIHRoZSBwYXJhbWV0ZXJzXG4gKlxuICogQHBhcmFtIHR5cGVzIC0gc3RyaW5ncyBkZXNjcmliaW5nIHRoZSB0eXBlcyBvZiB0aGUgdmFsdWVzXG4gKiBAcGFyYW0gdmFsdWVzIC0gdmFsdWUgdG8gZW5jb2RlXG4gKiBAcGFyYW0gbWV0aG9kSWQgLSB0aGUgZmlyc3QgNCBieXRlcyBvZiB0aGUgZnVuY3Rpb24gc2VsZWN0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZURhdGFQYXJhbXModHlwZXM6IHN0cmluZ1tdLCB2YWx1ZXM6IGFueVtdLCBtZXRob2RJZD86IHN0cmluZyk6IHN0cmluZyB7XG4gIHR5cGVzLmZvckVhY2goKHR5cGUsIGluZGV4KSA9PiB7XG4gICAgaWYgKHR5cGUgPT0gJ2FkZHJlc3MnKSB7XG4gICAgICB2YWx1ZXNbaW5kZXhdID0gdmFsdWVzW2luZGV4XS5yZXBsYWNlKEFERFJFU1NfUFJFRklYX1JFR0VYLCAnMHgnKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGFiaUNvZGVyID0gbmV3IEFiaUNvZGVyKCk7XG4gIGxldCBkYXRhO1xuICB0cnkge1xuICAgIGRhdGEgPSBhYmlDb2Rlci5lbmNvZGUodHlwZXMsIHZhbHVlcyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcihgVGhlcmUgd2FzIGFuIGVycm9yIGVuY29kaW5nIHRoZSBkYXRhIHBhcmFtcy4gRXJyb3IgPSAke0pTT04uc3RyaW5naWZ5KGUpfWApO1xuICB9XG4gIGlmIChtZXRob2RJZCkge1xuICAgIHJldHVybiBoZXhDb25jYXQoW21ldGhvZElkLCBkYXRhXSkucmVwbGFjZSgvXigweCkvLCAnJyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGRhdGEucmVwbGFjZSgvXigweCkvLCAnJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBkZWNvZGVkIHZhbHVlcyBhY2NvcmRpbmcgdG8gdGhlIGFycmF5IG9mIHR5cGVzXG4gKlxuICogQHBhcmFtIHR5cGVzIC0gc3RyaW5ncyBkZXNjcmliaW5nIHRoZSB0eXBlcyBvZiB0aGUgdmFsdWVzXG4gKiBAcGFyYW0gZGF0YSAtIGVuY29kZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVEYXRhUGFyYW1zKHR5cGVzOiBzdHJpbmdbXSwgZGF0YTogc3RyaW5nKTogYW55W10ge1xuICBjb25zdCBhYmlDb2RlciA9IG5ldyBBYmlDb2RlcigpO1xuICBkYXRhID0gJzB4JyArIGRhdGEuc3Vic3RyaW5nKDgpO1xuICByZXR1cm4gYWJpQ29kZXIuZGVjb2RlKHR5cGVzLCBkYXRhKS5yZWR1Y2UoKG9iaiwgYXJnLCBpbmRleCkgPT4ge1xuICAgIGlmICh0eXBlc1tpbmRleF0gPT0gJ2FkZHJlc3MnKSBhcmcgPSBBRERSRVNTX1BSRUZJWCArIGFyZy5zdWJzdHIoMikudG9Mb3dlckNhc2UoKTtcbiAgICBvYmoucHVzaChhcmcpO1xuICAgIHJldHVybiBvYmo7XG4gIH0sIFtdKTtcbn1cbiJdfQ==
|
|
757
|
+
/**
|
|
758
|
+
* Generate raw_data_hex for a TRON transaction
|
|
759
|
+
*
|
|
760
|
+
* @param {Object} rawData - The transaction raw data object containing:
|
|
761
|
+
* @param {Array} rawData.contract - Array of contract objects
|
|
762
|
+
* @param {string} rawData.refBlockBytes - Reference block bytes
|
|
763
|
+
* @param {string} rawData.refBlockHash - Reference block hash
|
|
764
|
+
* @param {number} rawData.expiration - Transaction expiration timestamp
|
|
765
|
+
* @param {number} rawData.timestamp - Transaction creation timestamp
|
|
766
|
+
* @param {number} [rawData.feeLimit] - Optional fee limit for smart contracts
|
|
767
|
+
* @returns {string} The hex string representation of the encoded transaction data
|
|
768
|
+
*/
|
|
769
|
+
function generateRawDataHex(rawData = {}) {
|
|
770
|
+
try {
|
|
771
|
+
// Process contracts to ensure proper protobuf encoding
|
|
772
|
+
let processedContracts = rawData.contract;
|
|
773
|
+
if (rawData.contract && rawData.contract.length > 0) {
|
|
774
|
+
processedContracts = rawData.contract.map((contract) => {
|
|
775
|
+
// Handle TransferContract specifically
|
|
776
|
+
if (contract.parameter?.type_url === 'type.googleapis.com/protocol.TransferContract') {
|
|
777
|
+
const contractValue = contract.parameter.value;
|
|
778
|
+
// Create the protobuf contract object
|
|
779
|
+
const transferContract = {};
|
|
780
|
+
// Handle owner_address (required field)
|
|
781
|
+
if (contractValue.owner_address) {
|
|
782
|
+
transferContract.ownerAddress = Buffer.from(contractValue.owner_address, 'hex');
|
|
783
|
+
}
|
|
784
|
+
// Handle to_address (required field)
|
|
785
|
+
if (contractValue.to_address) {
|
|
786
|
+
transferContract.toAddress = Buffer.from(contractValue.to_address, 'hex');
|
|
787
|
+
}
|
|
788
|
+
// Handle amount (required field)
|
|
789
|
+
if (contractValue.amount !== undefined) {
|
|
790
|
+
transferContract.amount = contractValue.amount;
|
|
791
|
+
}
|
|
792
|
+
// Encode the contract using protobuf
|
|
793
|
+
const encodedContract = tron_1.protocol.TransferContract.encode(transferContract).finish();
|
|
794
|
+
const base64Value = Buffer.from(encodedContract).toString('base64');
|
|
795
|
+
return {
|
|
796
|
+
...contract,
|
|
797
|
+
parameter: {
|
|
798
|
+
...contract.parameter,
|
|
799
|
+
value: base64Value,
|
|
800
|
+
},
|
|
801
|
+
};
|
|
802
|
+
}
|
|
803
|
+
return contract;
|
|
804
|
+
});
|
|
805
|
+
}
|
|
806
|
+
// Create raw transaction object matching protobuf schema
|
|
807
|
+
const rawTx = {
|
|
808
|
+
contract: processedContracts,
|
|
809
|
+
refBlockBytes: rawData.refBlockBytes ? Buffer.from(rawData.refBlockBytes, 'hex') : undefined,
|
|
810
|
+
refBlockHash: rawData.refBlockHash ? Buffer.from(rawData.refBlockHash, 'hex') : undefined,
|
|
811
|
+
expiration: rawData.expiration,
|
|
812
|
+
timestamp: rawData.timestamp,
|
|
813
|
+
feeLimit: rawData.feeLimit,
|
|
814
|
+
};
|
|
815
|
+
// Encode using protobuf and get final bytes
|
|
816
|
+
const encodedBytes = tron_1.protocol.Transaction.raw.encode(rawTx).finish();
|
|
817
|
+
// Convert to hex string
|
|
818
|
+
return Buffer.from(encodedBytes).toString('hex');
|
|
819
|
+
}
|
|
820
|
+
catch (e) {
|
|
821
|
+
throw new sdk_core_1.UtilsError('Failed to generate raw data hex: ' + e.message);
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlEQSwwQ0FFQztBQUtELGdFQUVDO0FBS0QsZ0VBRUM7QUFRRCwwQ0FtQkM7QUFLRCx3RUFTQztBQUlELGtEQUVDO0FBS0Qsb0RBRUM7QUFLRCxzRUFFQztBQUtELDBEQUdDO0FBTUQsMENBRUM7QUFPRCxnQ0FFQztBQUtELDBEQUVDO0FBT0QsOENBMkVDO0FBU0Qsb0RBMEJDO0FBUUQsNENBR0M7QUFPRCxnQ0FFQztBQU1ELHdEQTBDQztBQVFELGdFQXVDQztBQVNELHNGQXNCQztBQVFELHNFQXFDQztBQVFELDhEQWlEQztBQVFELDBFQXdDQztBQVNELHNFQTBCQztBQVFELG9GQTBCQztBQVFELHdFQThDQztBQVFELDRFQThDQztBQXVCRCxrREFHQztBQVFELGtFQUtDO0FBUUQsc0JBRUM7QUFTRCw0Q0FtQkM7QUFRRCw0Q0FRQztBQWNELGdEQXdFQztBQXY2QkQsb0RBQTRCO0FBQzVCLG9EQUFzQztBQUN0QyxpREFBbUM7QUFDbkMsd0RBQXlEO0FBRXpELG1EQUFrRDtBQUNsRCxpREFBMkQ7QUFtQjNELGlDQUFvRTtBQUNwRSw0Q0FBdUQ7QUFDdkQsMkNBQWtEO0FBRXJDLFFBQUEsMEJBQTBCLEdBQUcsUUFBUSxDQUFDLENBQUMsVUFBVTtBQUNqRCxRQUFBLDhCQUE4QixHQUFHLE9BQU8sQ0FBQyxDQUFDLFdBQVc7QUFDbEUsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUM7QUFDckMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBSTVCLE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBTyxHQUFHLFNBQVMsRUFBRSxFQUFFO0lBQzVDLE9BQ0UsZUFBSztTQUNGLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUM7U0FDdkMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FDL0QsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUM7QUFFVyxRQUFBLDZCQUE2QixHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6RCxRQUFBLDZCQUE2QixHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQU96RCxRQUFBLG9CQUFvQixHQUFHLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRTVEOztHQUVHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLE9BQWU7SUFDN0MsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsMEJBQTBCLENBQUMsR0FBVztJQUNwRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsMEJBQTBCLENBQUMsR0FBYztJQUN2RCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLGVBQWUsQ0FDN0IsZUFBdUIsRUFDdkIsYUFBcUIsRUFDckIsTUFBYyxFQUNkLGFBQWEsR0FBRyxJQUFJO0lBRXBCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN4QixNQUFNLElBQUkscUJBQVUsQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLHFCQUFVLENBQUMsMkRBQTJELENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxxQkFBVSxDQUFDLG9DQUFvQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDNUYsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsOEJBQThCLENBQUMsTUFBYztJQUMzRCxzSEFBc0g7SUFDdEgsK0NBQStDO0lBQy9DLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9ELHlDQUF5QztJQUN6QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFDRCxNQUFNLElBQUkscUJBQVUsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFDRDs7R0FFRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLFVBQTBCO0lBQzVELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsVUFBdUIsQ0FBQyxDQUFDO0FBQzNFLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLFVBQTBCO0lBQzdELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsVUFBdUIsQ0FBQyxDQUFDO0FBQzVFLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLDZCQUE2QixDQUFDLE9BQWtCO0lBQzlELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQUMsR0FBVztJQUNqRCxNQUFNLEdBQUcsR0FBRywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QyxPQUFPLDZCQUE2QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixlQUFlLENBQUMsVUFBOEIsRUFBRSxXQUErQjtJQUM3RixPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUF1QixDQUFDO0FBQzdGLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLE9BQWUsRUFBRSxVQUE4QixFQUFFLGFBQWEsR0FBRyxJQUFJO0lBQzlGLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLFVBQW9CLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDOUUsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQUMsUUFBd0I7SUFDOUQsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBcUIsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsU0FBaUI7SUFDakQsTUFBTSxjQUFjLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFdkQsc0RBQXNEO0lBQ3RELElBQUksY0FBYyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUMsTUFBTSxJQUFJLHFCQUFVLENBQUMsd0NBQXdDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsSUFBSSxRQVFxQyxDQUFDO0lBRTFDLElBQUksWUFBMEIsQ0FBQztJQUUvQix3Q0FBd0M7SUFDeEMsUUFBUSxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2RCxLQUFLLCtDQUErQztZQUNsRCxZQUFZLEdBQUcsbUJBQVksQ0FBQyxRQUFRLENBQUM7WUFDckMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2RixNQUFNO1FBQ1IsS0FBSyw4REFBOEQ7WUFDakUsWUFBWSxHQUFHLG1CQUFZLENBQUMsdUJBQXVCLENBQUM7WUFDcEQsUUFBUSxHQUFHLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0RyxNQUFNO1FBQ1IsS0FBSyxtREFBbUQ7WUFDdEQsWUFBWSxHQUFHLG1CQUFZLENBQUMsb0JBQW9CLENBQUM7WUFDakQsUUFBUSxHQUFHLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRixNQUFNO1FBQ1IsS0FBSyxzREFBc0Q7WUFDekQsWUFBWSxHQUFHLG1CQUFZLENBQUMsZUFBZSxDQUFDO1lBQzVDLFFBQVEsR0FBRyw2QkFBNkIsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0RixNQUFNO1FBQ1IsS0FBSyxrREFBa0Q7WUFDckQsWUFBWSxHQUFHLG1CQUFZLENBQUMsV0FBVyxDQUFDO1lBQ3hDLFFBQVEsR0FBRyx5QkFBeUIsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsRixNQUFNO1FBQ1IsS0FBSyw2REFBNkQ7WUFDaEUsUUFBUSxHQUFHLG9DQUFvQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdGLFlBQVksR0FBRyxtQkFBWSxDQUFDLHNCQUFzQixDQUFDO1lBQ25ELE1BQU07UUFDUixLQUFLLHNEQUFzRDtZQUN6RCxRQUFRLEdBQUcsNkJBQTZCLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEYsWUFBWSxHQUFHLG1CQUFZLENBQUMsZUFBZSxDQUFDO1lBQzVDLE1BQU07UUFDUixLQUFLLHdEQUF3RDtZQUMzRCxRQUFRLEdBQUcsK0JBQStCLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEYsWUFBWSxHQUFHLG1CQUFZLENBQUMsaUJBQWlCLENBQUM7WUFDOUMsTUFBTTtRQUNSLEtBQUssK0JBQW1CO1lBQ3RCLFlBQVksR0FBRyxtQkFBWSxDQUFDLHdCQUF3QixDQUFDO1lBQ3JELFFBQVEsR0FBRyw4QkFBOEIsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2RixNQUFNO1FBQ1IsS0FBSyx5REFBeUQ7WUFDNUQsWUFBWSxHQUFHLG1CQUFZLENBQUMsMEJBQTBCLENBQUM7WUFDdkQsUUFBUSxHQUFHLGdDQUFnQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pGLE1BQU07UUFDUjtZQUNFLE1BQU0sSUFBSSxxQkFBVSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELE9BQU87UUFDTCxZQUFZO1FBQ1osUUFBUTtRQUNSLFVBQVUsRUFBRSxjQUFjLENBQUMsVUFBVTtRQUNyQyxTQUFTLEVBQUUsY0FBYyxDQUFDLFNBQVM7UUFDbkMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxVQUFVO1FBQzFDLGNBQWMsRUFBRSxjQUFjLENBQUMsU0FBUztRQUN4QyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUMsUUFBUTtLQUNwQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLFNBQWlCO0lBUXBELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRTVDLElBQUksR0FBRyxDQUFDO0lBQ1IsSUFBSSxDQUFDO1FBQ0gsaURBQWlEO1FBQ2pELEdBQUcsR0FBRyxlQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUkscUJBQVUsQ0FBQyw4RUFBOEUsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFFRCxPQUFPO1FBQ0wsVUFBVSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQ2xDLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUNoQyxTQUFTLEVBQUUsR0FBRyxDQUFDLFFBQVE7UUFDdkIsVUFBVSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO1FBQ3BDLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtRQUN0QixTQUFTLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7S0FDbkMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLE1BQWM7SUFDN0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0MsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLEdBQVc7SUFDcEMsT0FBTyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVEOzs7S0FHSztBQUNMLFNBQWdCLHNCQUFzQixDQUFDLFdBQW1CO0lBQ3hELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3pELElBQUksZ0JBQWdCLENBQUM7SUFFckIsSUFBSSxDQUFDO1FBQ0gsZ0JBQWdCLEdBQUcsZUFBUSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxxQkFBVSxDQUFDLHVFQUF1RSxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUkscUJBQVUsQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLHFCQUFVLENBQUMsK0RBQStELENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQy9DLE1BQU0sSUFBSSxxQkFBVSxDQUFDLGtEQUFrRCxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixNQUFNLGFBQWEsR0FBRyw2QkFBNkIsQ0FDakQsMEJBQTBCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ2pHLENBQUM7SUFDRixNQUFNLFVBQVUsR0FBRyw2QkFBNkIsQ0FDOUMsMEJBQTBCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQzlGLENBQUM7SUFDRixNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7SUFFdkMsT0FBTztRQUNMO1lBQ0UsU0FBUyxFQUFFO2dCQUNULEtBQUssRUFBRTtvQkFDTCxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztvQkFDdEIsYUFBYTtvQkFDYixVQUFVO2lCQUNYO2FBQ0Y7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQiwwQkFBMEIsQ0FBQyxNQUFjO0lBQ3ZELElBQUksbUJBQW1CLENBQUM7SUFDeEIsSUFBSSxDQUFDO1FBQ0gsbUJBQW1CLEdBQUcsZUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3JHLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLHFCQUFVLENBQUMsbUVBQW1FLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxxQkFBVSxDQUFDLHFEQUFxRCxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QyxNQUFNLElBQUkscUJBQVUsQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsTUFBTSxJQUFJLHFCQUFVLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLE1BQU0sYUFBYSxHQUFHLDZCQUE2QixDQUNqRCwwQkFBMEIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDcEcsQ0FBQztJQUNGLE1BQU0sZ0JBQWdCLEdBQUcsNkJBQTZCLENBQ3BELDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUN2RyxDQUFDO0lBQ0YsTUFBTSxJQUFJLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDO0lBQ3RDLE9BQU87UUFDTDtZQUNFLFNBQVMsRUFBRTtnQkFDVCxLQUFLLEVBQUU7b0JBQ0wsSUFBSSxFQUFFLElBQUk7b0JBQ1YsYUFBYTtvQkFDYixnQkFBZ0I7aUJBQ2pCO2FBQ0Y7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IscUNBQXFDLENBQUMsTUFBYztJQUNsRSxNQUFNLHFCQUFxQixHQUFHLGVBQVEsQ0FBQywrQkFBK0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN0SCxJQUFBLGdCQUFNLEVBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDM0MsSUFBQSxnQkFBTSxFQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLElBQUEsZ0JBQU0sRUFBQyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUV4RCxNQUFNLFlBQVksR0FBRyw2QkFBNkIsQ0FDaEQsMEJBQTBCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3RHLENBQUM7SUFDRixNQUFNLEtBQUssR0FBZSxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4RSxJQUFJLE9BQU8sR0FBMkIsU0FBUyxDQUFDO0lBQ2hELElBQUkscUJBQXFCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCxNQUFNLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBRTNGLE9BQU87UUFDTCxZQUFZO1FBQ1osS0FBSztRQUNMLE9BQU87UUFDUCxPQUFPLEVBQUUsVUFBVTtLQUNwQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsNkJBQTZCLENBQUMsTUFBYztJQUMxRCxJQUFJLGNBQXFDLENBQUM7SUFDMUMsSUFBSSxDQUFDO1FBQ0gsY0FBYyxHQUFHLGVBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNuRyxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxxQkFBVSxDQUFDLHFFQUFxRSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLHFCQUFVLENBQUMsdURBQXVELENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsSUFBSSxjQUFjLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzFDLE1BQU0sSUFBSSxxQkFBVSxDQUFDLHVEQUF1RCxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELElBQUksY0FBYyxDQUFDLGFBQWEsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMvQyxNQUFNLElBQUkscUJBQVUsQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBRyw2QkFBNkIsQ0FDakQsMEJBQTBCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUMvRixDQUFDO0lBRUYsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLFFBQVEsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLG1CQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxtQkFBWSxDQUFDLE1BQU0sQ0FBQztJQUU3RyxPQUFPO1FBQ0w7WUFDRSxTQUFTLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFO29CQUNMLFFBQVEsRUFBRSxhQUFhO29CQUN2QixjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUM7b0JBQ3BELGFBQWE7aUJBQ2Q7YUFDRjtTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLHlCQUF5QixDQUFDLE1BQWM7SUFDdEQsSUFBSSxZQUFpQyxDQUFDO0lBQ3RDLElBQUksQ0FBQztRQUNILFlBQVksR0FBRyxlQUFRLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDN0YsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUkscUJBQVUsQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQy9CLE1BQU0sSUFBSSxxQkFBVSxDQUFDLHFEQUFxRCxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMxRSxNQUFNLElBQUkscUJBQVUsQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCx5QkFBeUI7SUFDekIsTUFBTSxhQUFhLEdBQUcsNkJBQTZCLENBQ2pELDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDN0YsQ0FBQztJQU9GLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBYyxFQUFFLEVBQUU7UUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUkscUJBQVUsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFFRCxPQUFPO1lBQ0wsWUFBWSxFQUFFLDZCQUE2QixDQUN6QywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3BGO1lBQ0QsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQztTQUN4QyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPO1FBQ0w7WUFDRSxTQUFTLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFO29CQUNMLGFBQWE7b0JBQ2IsS0FBSztpQkFDTjthQUNGO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsK0JBQStCLENBQUMsTUFBYztJQUM1RCxJQUFJLGdCQUF5QyxDQUFDO0lBQzlDLElBQUksQ0FBQztRQUNILGdCQUFnQixHQUFHLGVBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN2RyxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxxQkFBVSxDQUFDLHVFQUF1RSxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUkscUJBQVUsQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxJQUFJLGdCQUFnQixDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM1QyxNQUFNLElBQUkscUJBQVUsQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxJQUFJLGdCQUFnQixDQUFDLGVBQWUsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUNuRCxNQUFNLElBQUkscUJBQVUsQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCx5QkFBeUI7SUFDekIsTUFBTSxhQUFhLEdBQUcsNkJBQTZCLENBQ2pELDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNqRyxDQUFDO0lBRUYsMERBQTBEO0lBQzFELE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztJQUNoRCxNQUFNLFlBQVksR0FBRyxhQUFhLEtBQUssZUFBUSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLG1CQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxtQkFBWSxDQUFDLE1BQU0sQ0FBQztJQUV0SCxPQUFPO1FBQ0w7WUFDRSxTQUFTLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFO29CQUNMLFFBQVEsRUFBRSxZQUFZO29CQUN0QixnQkFBZ0IsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDO29CQUMxRCxhQUFhO2lCQUNkO2FBQ0Y7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsNkJBQTZCLENBQUMsTUFBYztJQUMxRCxJQUFJLGdCQUF5QyxDQUFDO0lBQzlDLElBQUksQ0FBQztRQUNILGdCQUFnQixHQUFHLGVBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNyRyxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxxQkFBVSxDQUFDLHVFQUF1RSxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUkscUJBQVUsQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCx5QkFBeUI7SUFDekIsTUFBTSxhQUFhLEdBQUcsNkJBQTZCLENBQ2pELDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNqRyxDQUFDO0lBRUYsT0FBTztRQUNMO1lBQ0UsU0FBUyxFQUFFO2dCQUNULEtBQUssRUFBRTtvQkFDTCxhQUFhO2lCQUNkO2FBQ0Y7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixvQ0FBb0MsQ0FBQyxNQUFjO0lBQ2pFLElBQUksZ0JBQXlDLENBQUM7SUFDOUMsSUFBSSxDQUFDO1FBQ0gsZ0JBQWdCLEdBQUcsZUFBUSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3JHLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLHFCQUFVLENBQUMsdUVBQXVFLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxxQkFBVSxDQUFDLHlEQUF5RCxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixNQUFNLGFBQWEsR0FBRyw2QkFBNkIsQ0FDakQsMEJBQTBCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ2pHLENBQUM7SUFFRixPQUFPO1FBQ0w7WUFDRSxTQUFTLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFO29CQUNMLGFBQWE7aUJBQ2Q7YUFDRjtTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLDhCQUE4QixDQUFDLE1BQWM7SUFDM0QsSUFBSSx3QkFBMkQsQ0FBQztJQUNoRSxJQUFJLENBQUM7UUFDSCx3QkFBd0IsR0FBRyxlQUFRLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDOUcsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUkscUJBQVUsQ0FBQyxnRkFBZ0YsQ0FBQyxDQUFDO0lBQ3pHLENBQUM7SUFFRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDM0MsTUFBTSxJQUFJLHFCQUFVLENBQUMsa0VBQWtFLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzlDLE1BQU0sSUFBSSxxQkFBVSxDQUFDLHFFQUFxRSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELElBQUksd0JBQXdCLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3BELE1BQU0sSUFBSSxxQkFBVSxDQUFDLGtFQUFrRSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVELElBQUksd0JBQXdCLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ25ELE1BQU0sSUFBSSxxQkFBVSxDQUFDLDREQUE0RCxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELE1BQU0sYUFBYSxHQUFHLDZCQUE2QixDQUNqRCwwQkFBMEIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDekcsQ0FBQztJQUVGLE1BQU0sZ0JBQWdCLEdBQUcsNkJBQTZCLENBQ3BELDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUM1RyxDQUFDO0lBRUYsTUFBTSxhQUFhLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLG1CQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxtQkFBWSxDQUFDLE1BQU0sQ0FBQztJQUV4RyxPQUFPO1FBQ0w7WUFDRSxTQUFTLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFO29CQUNMLFFBQVEsRUFBRSxhQUFhO29CQUN2QixPQUFPLEVBQUUsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQztvQkFDakQsYUFBYTtvQkFDYixnQkFBZ0I7aUJBQ2pCO2FBQ0Y7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixnQ0FBZ0MsQ0FBQyxNQUFjO0lBQzdELElBQUksMEJBQTZELENBQUM7SUFDbEUsSUFBSSxDQUFDO1FBQ0gsMEJBQTBCLEdBQUcsZUFBUSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2xILENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLHFCQUFVLENBQUMsZ0ZBQWdGLENBQUMsQ0FBQztJQUN6RyxDQUFDO0lBRUQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdDLE1BQU0sSUFBSSxxQkFBVSxDQUFDLGtFQUFrRSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNoRCxNQUFNLElBQUkscUJBQVUsQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxJQUFJLDBCQUEwQixDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN0RCxNQUFNLElBQUkscUJBQVUsQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRCxJQUFJLDBCQUEwQixDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUNyRCxNQUFNLElBQUkscUJBQVUsQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBRyw2QkFBNkIsQ0FDakQsMEJBQTBCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQzNHLENBQUM7SUFFRixNQUFNLGdCQUFnQixHQUFHLDZCQUE2QixDQUNwRCwwQkFBMEIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDOUcsQ0FBQztJQUVGLE1BQU0sYUFBYSxHQUFHLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxtQkFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsbUJBQVksQ0FBQyxNQUFNLENBQUM7SUFFMUcsT0FBTztRQUNMO1lBQ0UsU0FBUyxFQUFFO2dCQUNULEtBQUssRUFBRTtvQkFDTCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsT0FBTyxFQUFFLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLENBQUM7b0JBQ25ELGFBQWE7b0JBQ2IsZ0JBQWdCO2lCQUNqQjthQUNGO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxHQUFrRDtJQUMxRSxJQUFJLGNBQThCLENBQUM7SUFDbkMsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzRCxJQUFJLFVBQVUsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUMzQixjQUFjLEdBQUcscUJBQWMsQ0FBQyxLQUFLLENBQUM7SUFDeEMsQ0FBQztTQUFNLElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3BDLGNBQWMsR0FBRyxxQkFBYyxDQUFDLE9BQU8sQ0FBQztJQUMxQyxDQUFDO1NBQU0sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNoRCxjQUFjLEdBQUcscUJBQWMsQ0FBQyxNQUFNLENBQUM7SUFDekMsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLElBQUkscUJBQVUsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxPQUFPLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQzVELENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLGNBQXNCO0lBQ3hELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDL0MsT0FBTyxXQUFXLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLDJCQUEyQixDQUFDLGNBQW1CO0lBQzdELElBQUksT0FBTyxjQUFjLEtBQUssUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5RyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLEtBQUssQ0FBQyxNQUEyQjtJQUMvQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFlLEVBQUUsTUFBYSxFQUFFLFFBQWlCO0lBQ2hGLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDNUIsSUFBSSxJQUFJLElBQUksU0FBUyxFQUFFLENBQUM7WUFDdEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEUsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBUSxFQUFFLENBQUM7SUFDaEMsSUFBSSxJQUFJLENBQUM7SUFDVCxJQUFJLENBQUM7UUFDSCxJQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUkscUJBQVUsQ0FBQyx3REFBd0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEcsQ0FBQztJQUNELElBQUksUUFBUSxFQUFFLENBQUM7UUFDYixPQUFPLElBQUEsaUJBQVMsRUFBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFlLEVBQUUsSUFBWTtJQUM1RCxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFRLEVBQUUsQ0FBQztJQUNoQyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEMsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzdELElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLFNBQVM7WUFBRSxHQUFHLEdBQUcsY0FBYyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEYsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNkLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ1QsQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQ2hDLFVBT0ksRUFBRTtJQUVOLElBQUksQ0FBQztRQUNILHVEQUF1RDtRQUN2RCxJQUFJLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDMUMsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BELGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ3JELHVDQUF1QztnQkFDdkMsSUFBSSxRQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsS0FBSywrQ0FBK0MsRUFBRSxDQUFDO29CQUNyRixNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQVksQ0FBQztvQkFFdEQsc0NBQXNDO29CQUN0QyxNQUFNLGdCQUFnQixHQUFRLEVBQUUsQ0FBQztvQkFFakMsd0NBQXdDO29CQUN4QyxJQUFJLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFDaEMsZ0JBQWdCLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDbEYsQ0FBQztvQkFFRCxxQ0FBcUM7b0JBQ3JDLElBQUksYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO3dCQUM3QixnQkFBZ0IsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUM1RSxDQUFDO29CQUVELGlDQUFpQztvQkFDakMsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO3dCQUN2QyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztvQkFDakQsQ0FBQztvQkFFRCxxQ0FBcUM7b0JBQ3JDLE1BQU0sZUFBZSxHQUFHLGVBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDcEYsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBRXBFLE9BQU87d0JBQ0wsR0FBRyxRQUFRO3dCQUNYLFNBQVMsRUFBRTs0QkFDVCxHQUFHLFFBQVEsQ0FBQyxTQUFTOzRCQUNyQixLQUFLLEVBQUUsV0FBVzt5QkFDbkI7cUJBQ0ssQ0FBQztnQkFDWCxDQUFDO2dCQUVELE9BQU8sUUFBUSxDQUFDO1lBQ2xCLENBQUMsQ0FBb0MsQ0FBQztRQUN4QyxDQUFDO1FBRUQseURBQXlEO1FBQ3pELE1BQU0sS0FBSyxHQUE4QjtZQUN2QyxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDNUYsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUN6RixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7WUFDOUIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO1lBQzVCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtTQUMzQixDQUFDO1FBRUYsNENBQTRDO1FBQzVDLE1BQU0sWUFBWSxHQUFHLGVBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVyRSx3QkFBd0I7UUFDeEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxxQkFBVSxDQUFDLG1DQUFtQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4RSxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIGhleCBmcm9tICdAc3RhYmxlbGliL2hleCc7XG5pbXBvcnQgKiBhcyB0cm9ud2ViIGZyb20gJ3Ryb253ZWInO1xuaW1wb3J0IHsgcHJvdG9jb2wgfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvcHJvdG9idWYvdHJvbic7XG5cbmltcG9ydCB7IFV0aWxzRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcm9uRXJjMjBDb2luLCBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHtcbiAgVHJhbnNmZXJDb250cmFjdCxcbiAgUmF3RGF0YSxcbiAgQWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdCxcbiAgVHJhbnNhY3Rpb25SZWNlaXB0LFxuICBQZXJtaXNzaW9uLFxuICBUcmlnZ2VyU21hcnRDb250cmFjdCxcbiAgRnJlZXplQmFsYW5jZUNvbnRyYWN0UGFyYW1ldGVyLFxuICBWb3RlV2l0bmVzc0NvbnRyYWN0UGFyYW1ldGVyLFxuICBGcmVlemVDb250cmFjdERlY29kZWQsXG4gIFZvdGVDb250cmFjdERlY29kZWQsXG4gIFVuZnJlZXplQmFsYW5jZUNvbnRyYWN0UGFyYW1ldGVyLFxuICBXaXRoZHJhd0V4cGlyZVVuZnJlZXplQ29udHJhY3RQYXJhbWV0ZXIsXG4gIFVuZnJlZXplQ29udHJhY3REZWNvZGVkLFxuICBXaXRoZHJhd0NvbnRyYWN0RGVjb2RlZCxcbiAgUmVzb3VyY2VNYW5hZ2VtZW50Q29udHJhY3RQYXJhbWV0ZXIsXG4gIFJlc291cmNlTWFuYWdlbWVudENvbnRyYWN0RGVjb2RlZCxcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBDb250cmFjdFR5cGUsIFBlcm1pc3Npb25UeXBlLCBUcm9uUmVzb3VyY2UgfSBmcm9tICcuL2VudW0nO1xuaW1wb3J0IHsgQWJpQ29kZXIsIGhleENvbmNhdCB9IGZyb20gJ2V0aGVycy9saWIvdXRpbHMnO1xuaW1wb3J0IHsgREVMRUdBVElPTl9UWVBFX1VSTCB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNvbnN0IFRSQU5TQUNUSU9OX01BWF9FWFBJUkFUSU9OID0gODY0MDAwMDA7IC8vIG9uZSBkYXlcbmV4cG9ydCBjb25zdCBUUkFOU0FDVElPTl9ERUZBVUxUX0VYUElSQVRJT04gPSAzNjAwMDAwOyAvLyBvbmUgaG91clxuY29uc3QgQUREUkVTU19QUkVGSVhfUkVHRVggPSAvXig0MSkvO1xuY29uc3QgQUREUkVTU19QUkVGSVggPSAnNDEnO1xuXG5leHBvcnQgdHlwZSBCeXRlc0xpa2UgPSBudW1iZXJbXSB8IFVpbnQ4QXJyYXk7XG5cbmNvbnN0IGdldFRyb25Ub2tlbnMgPSAobmV0d29yayA9ICdtYWlubmV0JykgPT4ge1xuICByZXR1cm4gKFxuICAgIGNvaW5zXG4gICAgICAuZmlsdGVyKChjb2luKSA9PiBjb2luLmZhbWlseSA9PT0gJ3RyeCcpXG4gICAgICAuZmlsdGVyKCh0cngpID0+IHRyeC5uZXR3b3JrLnR5cGUgPT09IG5ldHdvcmsgJiYgdHJ4LmlzVG9rZW4pIGFzIHVua25vd24gYXMgVHJvbkVyYzIwQ29pbltdXG4gICkubWFwKChjb2lucykgPT4gY29pbnMuY29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHRva2VuTWFpbm5ldENvbnRyYWN0QWRkcmVzc2VzID0gZ2V0VHJvblRva2VucygnbWFpbm5ldCcpO1xuZXhwb3J0IGNvbnN0IHRva2VuVGVzdG5ldENvbnRyYWN0QWRkcmVzc2VzID0gZ2V0VHJvblRva2VucygndGVzdG5ldCcpO1xuLyoqXG4gKiBUcm9uLXNwZWNpZmljIGhlbHBlciBmdW5jdGlvbnNcbiAqL1xuZXhwb3J0IHR5cGUgQnl0ZUFycmF5ID0gbnVtYmVyW107XG5leHBvcnQgdHlwZSBUcm9uQmluYXJ5TGlrZSA9IEJ5dGVBcnJheSB8IEJ1ZmZlciB8IFVpbnQ4QXJyYXkgfCBzdHJpbmc7XG5cbmV4cG9ydCBjb25zdCBWQUxJRF9SRVNPVVJDRV9UWVBFUyA9IFsnRU5FUkdZJywgJ0JBTkRXSURUSCddO1xuXG4vKipcbiAqIEBwYXJhbSBhZGRyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Jhc2U1OEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiB0cm9ud2ViLnV0aWxzLmNyeXB0by5pc0FkZHJlc3NWYWxpZChhZGRyZXNzKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gc3RyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyhzdHI6IHN0cmluZyk6IEJ5dGVBcnJheSB7XG4gIHJldHVybiB0cm9ud2ViLnV0aWxzLmNvZGUuaGV4U3RyMmJ5dGVBcnJheShzdHIucmVwbGFjZSgnMHgnLCAnJykpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBhcnJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEhleEFkZHJlc3NGcm9tQnl0ZUFycmF5KGFycjogQnl0ZUFycmF5KTogc3RyaW5nIHtcbiAgcmV0dXJuIHRyb253ZWIudXRpbHMuY29kZS5ieXRlQXJyYXkyaGV4U3RyKGFycik7XG59XG5cbi8qKlxuICogQHBhcmFtIG1lc3NhZ2VUb1ZlcmlmeVxuICogQHBhcmFtIGJhc2U1OEFkZHJlc3NcbiAqIEBwYXJhbSBzaWdIZXhcbiAqIEBwYXJhbSB1c2VUcm9uSGVhZGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlTaWduYXR1cmUoXG4gIG1lc3NhZ2VUb1ZlcmlmeTogc3RyaW5nLFxuICBiYXNlNThBZGRyZXNzOiBzdHJpbmcsXG4gIHNpZ0hleDogc3RyaW5nLFxuICB1c2VUcm9uSGVhZGVyID0gdHJ1ZVxuKTogYm9vbGVhbiB7XG4gIGlmICghaXNWYWxpZEhleChzaWdIZXgpKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ3NpZ25hdHVyZSBpcyBub3QgaW4gYSB2YWxpZCBmb3JtYXQsIG5lZWRzIHRvIGJlIGhleGFkZWNpbWFsJyk7XG4gIH1cblxuICBpZiAoIWlzVmFsaWRIZXgobWVzc2FnZVRvVmVyaWZ5KSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdtZXNzYWdlIGlzIG5vdCBpbiBhIHZhbGlkIGZvcm1hdCwgbmVlZHMgdG8gYmUgaGV4YWRlY2ltYWwnKTtcbiAgfVxuXG4gIGlmICghaXNCYXNlNThBZGRyZXNzKGJhc2U1OEFkZHJlc3MpKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ2FkZHJlc3MgbmVlZHMgdG8gYmUgYmFzZTU4IGVuY29kZWQnKTtcbiAgfVxuXG4gIHJldHVybiB0cm9ud2ViLlRyeC52ZXJpZnlTaWduYXR1cmUobWVzc2FnZVRvVmVyaWZ5LCBiYXNlNThBZGRyZXNzLCBzaWdIZXgsIHVzZVRyb25IZWFkZXIpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBiYXNlNThcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEhleEFkZHJlc3NGcm9tQmFzZTU4QWRkcmVzcyhiYXNlNTg6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIHB1bGxlZCBmcm9tOiBodHRwczovL2dpdGh1Yi5jb20vVFJPTi1VUy90cm9ud2ViL2Jsb2IvZGNiOGVmYTM2YTVlYmI2NWM0ZGFiMzYyNmU5MDI1NmE0NTNmM2IwZC9zcmMvdXRpbHMvaGVscC5qcyNMMTdcbiAgLy8gYnV0IHRoZXkgZG9uJ3Qgc3VyZmFjZSB0aGlzIGNhbGwgaW4gaW5kZXguanNcbiAgY29uc3QgYnl0ZXMgPSB0cm9ud2ViLnV0aWxzLmNyeXB0by5kZWNvZGVCYXNlNThBZGRyZXNzKGJhc2U1OCk7XG4gIC8vIEVuc3VyZSBieXRlcyBpcyBhIEJ5dGVBcnJheSAobnVtYmVyW10pXG4gIGlmIChBcnJheS5pc0FycmF5KGJ5dGVzKSkge1xuICAgIHJldHVybiBnZXRIZXhBZGRyZXNzRnJvbUJ5dGVBcnJheShieXRlcyk7XG4gIH1cbiAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ0ZhaWxlZCB0byBkZWNvZGUgYmFzZTU4IGFkZHJlc3MgdG8gYnl0ZSBhcnJheScpO1xufVxuLyoqXG4gKiBAcGFyYW0gcHJpdmF0ZUtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHViS2V5RnJvbVByaUtleShwcml2YXRlS2V5OiBUcm9uQmluYXJ5TGlrZSk6IEJ5dGVBcnJheSB7XG4gIHJldHVybiB0cm9ud2ViLnV0aWxzLmNyeXB0by5nZXRQdWJLZXlGcm9tUHJpS2V5KHByaXZhdGVLZXkgYXMgQnl0ZXNMaWtlKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcHJpdmF0ZUtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWRkcmVzc0Zyb21QcmlLZXkocHJpdmF0ZUtleTogVHJvbkJpbmFyeUxpa2UpOiBCeXRlQXJyYXkge1xuICByZXR1cm4gdHJvbndlYi51dGlscy5jcnlwdG8uZ2V0QWRkcmVzc0Zyb21QcmlLZXkocHJpdmF0ZUtleSBhcyBCeXRlc0xpa2UpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBhZGRyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCYXNlNThBZGRyZXNzRnJvbUJ5dGVBcnJheShhZGRyZXNzOiBCeXRlQXJyYXkpOiBzdHJpbmcge1xuICByZXR1cm4gdHJvbndlYi51dGlscy5jcnlwdG8uZ2V0QmFzZTU4Q2hlY2tBZGRyZXNzKGFkZHJlc3MpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBoZXhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJhc2U1OEFkZHJlc3NGcm9tSGV4KGhleDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgYXJyID0gZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MoaGV4KTtcbiAgcmV0dXJuIGdldEJhc2U1OEFkZHJlc3NGcm9tQnl0ZUFycmF5KGFycik7XG59XG5cbi8qKlxuICogQHBhcmFtIHByaXZhdGVLZXlcbiAqIEBwYXJhbSB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnblRyYW5zYWN0aW9uKHByaXZhdGVLZXk6IHN0cmluZyB8IEJ5dGVBcnJheSwgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uUmVjZWlwdCk6IFRyYW5zYWN0aW9uUmVjZWlwdCB7XG4gIHJldHVybiB0cm9ud2ViLnV0aWxzLmNyeXB0by5zaWduVHJhbnNhY3Rpb24ocHJpdmF0ZUtleSwgdHJhbnNhY3Rpb24pIGFzIFRyYW5zYWN0aW9uUmVjZWlwdDtcbn1cblxuLyoqXG4gKiBAcGFyYW0gbWVzc2FnZVxuICogQHBhcmFtIHByaXZhdGVLZXlcbiAqIEBwYXJhbSB1c2VUcm9uSGVhZGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWduU3RyaW5nKG1lc3NhZ2U6IHN0cmluZywgcHJpdmF0ZUtleTogc3RyaW5nIHwgQnl0ZUFycmF5LCB1c2VUcm9uSGVhZGVyID0gdHJ1ZSk6IHN0cmluZyB7XG4gIHJldHVybiB0cm9ud2ViLlRyeC5zaWduU3RyaW5nKG1lc3NhZ2UsIHByaXZhdGVLZXkgYXMgc3RyaW5nLCB1c2VUcm9uSGVhZGVyKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcHViQnl0ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJhd0FkZHJlc3NGcm9tUHViS2V5KHB1YkJ5dGVzOiBUcm9uQmluYXJ5TGlrZSk6IEJ5dGVBcnJheSB7XG4gIHJldHVybiB0cm9ud2ViLnV0aWxzLmNyeXB0by5jb21wdXRlQWRkcmVzcyhwdWJCeXRlcyBhcyBCeXRlc0xpa2UpO1xufVxuXG4vKipcbiAqIERlY29kZXMgYSBoZXggZW5jb2RlZCB0cmFuc2FjdGlvbiBpbiBpdHMgcHJvdG9idWYgcmVwcmVzZW50YXRpb24uXG4gKlxuICogQHBhcmFtIGhleFN0cmluZyByYXdfZGF0YV9oZXggZmllbGQgZnJvbSB0cm9uIHRyYW5zYWN0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlVHJhbnNhY3Rpb24oaGV4U3RyaW5nOiBzdHJpbmcpOiBSYXdEYXRhIHtcbiAgY29uc3QgcmF3VHJhbnNhY3Rpb24gPSBkZWNvZGVSYXdUcmFuc2FjdGlvbihoZXhTdHJpbmcpO1xuXG4gIC8vIHRoZXJlIHNob3VsZCBub3QgYmUgbXVsdGlwbGUgY29udHJhY3RzIGluIHRoaXMgZGF0YVxuICBpZiAocmF3VHJhbnNhY3Rpb24uY29udHJhY3RzLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdOdW1iZXIgb2YgY29udHJhY3RzIGlzIGdyZWF0ZXIgdGhhbiAxLicpO1xuICB9XG5cbiAgbGV0IGNvbnRyYWN0OlxuICAgIHwgVHJhbnNmZXJDb250cmFjdFtdXG4gICAgfCBBY2NvdW50UGVybWlzc2lvblVwZGF0ZUNvbnRyYWN0W11cbiAgICB8IFRyaWdnZXJTbWFydENvbnRyYWN0W11cbiAgICB8IEZyZWV6ZUJhbGFuY2VDb250cmFjdFBhcmFtZXRlcltdXG4gICAgfCBWb3RlV2l0bmVzc0NvbnRyYWN0UGFyYW1ldGVyW11cbiAgICB8IFVuZnJlZXplQmFsYW5jZUNvbnRyYWN0UGFyYW1ldGVyW11cbiAgICB8IFdpdGhkcmF3RXhwaXJlVW5mcmVlemVDb250cmFjdFBhcmFtZXRlcltdXG4gICAgfCBSZXNvdXJjZU1hbmFnZW1lbnRDb250cmFjdFBhcmFtZXRlcltdO1xuXG4gIGxldCBjb250cmFjdFR5cGU6IENvbnRyYWN0VHlwZTtcblxuICAvLyBlbnN1cmUgdGhlIGNvbnRyYWN0IHR5cGUgaXMgc3VwcG9ydGVkXG4gIHN3aXRjaCAocmF3VHJhbnNhY3Rpb24uY29udHJhY3RzWzBdLnBhcmFtZXRlci50eXBlX3VybCkge1xuICAgIGNhc2UgJ3R5cGUuZ29vZ2xlYXBpcy5jb20vcHJvdG9jb2wuVHJhbnNmZXJDb250cmFjdCc6XG4gICAgICBjb250cmFjdFR5cGUgPSBDb250cmFjdFR5cGUuVHJhbnNmZXI7XG4gICAgICBjb250cmFjdCA9IGV4cG9ydHMuZGVjb2RlVHJhbnNmZXJDb250cmFjdChyYXdUcmFuc2FjdGlvbi5jb250cmFjdHNbMF0ucGFyYW1ldGVyLnZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3R5cGUuZ29vZ2xlYXBpcy5jb20vcHJvdG9jb2wuQWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdCc6XG4gICAgICBjb250cmFjdFR5cGUgPSBDb250cmFjdFR5cGUuQWNjb3VudFBlcm1pc3Npb25VcGRhdGU7XG4gICAgICBjb250cmFjdCA9IGV4cG9ydHMuZGVjb2RlQWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdChyYXdUcmFuc2FjdGlvbi5jb250cmFjdHNbMF0ucGFyYW1ldGVyLnZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3R5cGUuZ29vZ2xlYXBpcy5jb20vcHJvdG9jb2wuVHJpZ2dlclNtYXJ0Q29udHJhY3QnOlxuICAgICAgY29udHJhY3RUeXBlID0gQ29udHJhY3RUeXBlLlRyaWdnZXJTbWFydENvbnRyYWN0O1xuICAgICAgY29udHJhY3QgPSBleHBvcnRzLmRlY29kZVRyaWdnZXJTbWFydENvbnRyYWN0KHJhd1RyYW5zYWN0aW9uLmNvbnRyYWN0c1swXS5wYXJhbWV0ZXIudmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndHlwZS5nb29nbGVhcGlzLmNvbS9wcm90b2NvbC5GcmVlemVCYWxhbmNlVjJDb250cmFjdCc6XG4gICAgICBjb250cmFjdFR5cGUgPSBDb250cmFjdFR5cGUuRnJlZXplQmFsYW5jZVYyO1xuICAgICAgY29udHJhY3QgPSBkZWNvZGVGcmVlemVCYWxhbmNlVjJDb250cmFjdChyYXdUcmFuc2FjdGlvbi5jb250cmFjdHNbMF0ucGFyYW1ldGVyLnZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3R5cGUuZ29vZ2xlYXBpcy5jb20vcHJvdG9jb2wuVm90ZVdpdG5lc3NDb250cmFjdCc6XG4gICAgICBjb250cmFjdFR5cGUgPSBDb250cmFjdFR5cGUuVm90ZVdpdG5lc3M7XG4gICAgICBjb250cmFjdCA9IGRlY29kZVZvdGVXaXRuZXNzQ29udHJhY3QocmF3VHJhbnNhY3Rpb24uY29udHJhY3RzWzBdLnBhcmFtZXRlci52YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd0eXBlLmdvb2dsZWFwaXMuY29tL3Byb3RvY29sLldpdGhkcmF3RXhwaXJlVW5mcmVlemVDb250cmFjdCc6XG4gICAgICBjb250cmFjdCA9IGRlY29kZVdpdGhkcmF3RXhwaXJlVW5mcmVlemVDb250cmFjdChyYXdUcmFuc2FjdGlvbi5jb250cmFjdHNbMF0ucGFyYW1ldGVyLnZhbHVlKTtcbiAgICAgIGNvbnRyYWN0VHlwZSA9IENvbnRyYWN0VHlwZS5XaXRoZHJhd0V4cGlyZVVuZnJlZXplO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndHlwZS5nb29nbGVhcGlzLmNvbS9wcm90b2NvbC5XaXRoZHJhd0JhbGFuY2VDb250cmFjdCc6XG4gICAgICBjb250cmFjdCA9IGRlY29kZVdpdGhkcmF3QmFsYW5jZUNvbnRyYWN0KHJhd1RyYW5zYWN0aW9uLmNvbnRyYWN0c1swXS5wYXJhbWV0ZXIudmFsdWUpO1xuICAgICAgY29udHJhY3RUeXBlID0gQ29udHJhY3RUeXBlLldpdGhkcmF3QmFsYW5jZTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3R5cGUuZ29vZ2xlYXBpcy5jb20vcHJvdG9jb2wuVW5mcmVlemVCYWxhbmNlVjJDb250cmFjdCc6XG4gICAgICBjb250cmFjdCA9IGRlY29kZVVuZnJlZXplQmFsYW5jZVYyQ29udHJhY3QocmF3VHJhbnNhY3Rpb24uY29udHJhY3RzWzBdLnBhcmFtZXRlci52YWx1ZSk7XG4gICAgICBjb250cmFjdFR5cGUgPSBDb250cmFjdFR5cGUuVW5mcmVlemVCYWxhbmNlVjI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIERFTEVHQVRJT05fVFlQRV9VUkw6XG4gICAgICBjb250cmFjdFR5cGUgPSBDb250cmFjdFR5cGUuRGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0O1xuICAgICAgY29udHJhY3QgPSBkZWNvZGVEZWxlZ2F0ZVJlc291cmNlQ29udHJhY3QocmF3VHJhbnNhY3Rpb24uY29udHJhY3RzWzBdLnBhcmFtZXRlci52YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd0eXBlLmdvb2dsZWFwaXMuY29tL3Byb3RvY29sLlVuRGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0JzpcbiAgICAgIGNvbnRyYWN0VHlwZSA9IENvbnRyYWN0VHlwZS5VbkRlbGVnYXRlUmVzb3VyY2VDb250cmFjdDtcbiAgICAgIGNvbnRyYWN0ID0gZGVjb2RlVW5EZWxlZ2F0ZVJlc291cmNlQ29udHJhY3QocmF3VHJhbnNhY3Rpb24uY29udHJhY3RzWzBdLnBhcmFtZXRlci52YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ1Vuc3VwcG9ydGVkIGNvbnRyYWN0IHR5cGUnKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY29udHJhY3RUeXBlLFxuICAgIGNvbnRyYWN0LFxuICAgIGV4cGlyYXRpb246IHJhd1RyYW5zYWN0aW9uLmV4cGlyYXRpb24sXG4gICAgdGltZXN0YW1wOiByYXdUcmFuc2FjdGlvbi50aW1lc3RhbXAsXG4gICAgcmVmX2Jsb2NrX2J5dGVzOiByYXdUcmFuc2FjdGlvbi5ibG9ja0J5dGVzLFxuICAgIHJlZl9ibG9ja19oYXNoOiByYXdUcmFuc2FjdGlvbi5ibG9ja0hhc2gsXG4gICAgZmVlX2xpbWl0OiArcmF3VHJhbnNhY3Rpb24uZmVlTGltaXQsXG4gIH07XG59XG5cbi8qKlxuICogRGVjb2RlcyBhIHRyYW5zYWN0aW9uJ3MgcmF3IGZpZWxkIGZyb20gYSBiYXNlNjQgZW5jb2RlZCBzdHJpbmcuIFRoaXMgaXMgYSBwcm90b2J1ZiByZXByZXNlbnRhdGlvbi5cbiAqXG4gKiBAcGFyYW0gaGV4U3RyaW5nIHRoaXMgaXMgdGhlIHJhdyBoZXhhZGVjaW1hbCBlbmNvZGVkIHN0cmluZy4gRG9jIGZvdW5kIGluIHRoZSBmb2xsb3dpbmcgbGluay5cbiAqIEBleGFtcGxlXG4gKiBAc2VlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vQml0R28vYml0Z28tYWNjb3VudC1saWIvYmxvYi81ZjI4MjU4ODcwMTc3OGE0NDIxYzc1ZmE2MWY0MjcxM2Y1NmU5NWI5L3Jlc291cmNlcy9wcm90b2J1Zi90cm9uLnByb3RvI0wzMTl9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVSYXdUcmFuc2FjdGlvbihoZXhTdHJpbmc6IHN0cmluZyk6IHtcbiAgZXhwaXJhdGlvbjogbnVtYmVyO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgY29udHJhY3RzOiBBcnJheTxhbnk+O1xuICBibG9ja0J5dGVzOiBzdHJpbmc7XG4gIGJsb2NrSGFzaDogc3RyaW5nO1xuICBmZWVMaW1pdDogc3RyaW5nO1xufSB7XG4gIGNvbnN0IGJ5dGVzID0gQnVmZmVyLmZyb20oaGV4U3RyaW5nLCAnaGV4Jyk7XG5cbiAgbGV0IHJhdztcbiAgdHJ5IHtcbiAgICAvLyB3ZSBuZWVkIHRvIGRlY29kZSBvdXIgcmF3X2RhdGFfaGV4IGZpZWxkIGZpcnN0XG4gICAgcmF3ID0gcHJvdG9jb2wuVHJhbnNhY3Rpb24ucmF3LmRlY29kZShieXRlcyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignVGhlcmUgd2FzIGFuIGVycm9yIGRlY29kaW5nIHRoZSBpbml0aWFsIHJhd19kYXRhX2hleCBmcm9tIHRoZSBzZXJpYWxpemVkIHR4LicpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHBpcmF0aW9uOiBOdW1iZXIocmF3LmV4cGlyYXRpb24pLFxuICAgIHRpbWVzdGFtcDogTnVtYmVyKHJhdy50aW1lc3RhbXApLFxuICAgIGNvbnRyYWN0czogcmF3LmNvbnRyYWN0LFxuICAgIGJsb2NrQnl0ZXM6IHRvSGV4KHJhdy5yZWZCbG9ja0J5dGVzKSxcbiAgICBmZWVMaW1pdDogcmF3LmZlZUxpbWl0LFxuICAgIGJsb2NrSGFzaDogdG9IZXgocmF3LnJlZkJsb2NrSGFzaCksXG4gIH07XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBiYXNlNjQgZW5jb2RlZCBzdHJpbmcgdG8gaGV4XG4gKlxuICogQHBhcmFtIGJhc2U2NCAtIFRoZSBiYXNlNjQgZW5jb2RlZCBzdHJpbmcgdG8gY29udmVydFxuICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgaGV4IHJlcHJlc2VudGF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZXhGcm9tQmFzZTY0KGJhc2U2NDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20oYmFzZTY0LCAnYmFzZTY0Jyk7XG4gIHJldHVybiBidWZmZXIudG9TdHJpbmcoJ2hleCcpO1xufVxuXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBwYXNzZWQgc3RyaW5nIGlzIGEgc2FmZSBoZXggc3RyaW5nIGZvciB0cm9uJ3MgcHVycG9zZXMuXG4gKlxuICogQHBhcmFtIGhleCBBIHZhbGlkIGhleCBzdHJpbmcgbXVzdCBiZSBhIHN0cmluZyBtYWRlIG9mIG51bWJlcnMgYW5kIGNoYXJhY3RlcnMgYW5kIGhhcyBhbiBldmVuIGxlbmd0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRIZXgoaGV4OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIC9eKDB4KT8oWzAtOWEtZl17Mn0pKyQvaS50ZXN0KGhleCk7XG59XG5cbi8qKiBEZXNlcmlhbGl6ZSB0aGUgc2VnbWVudCBvZiB0aGUgdHhIZXggd2hpY2ggY29ycmVzcG9uZHMgd2l0aCB0aGUgZGV0YWlscyBvZiB0aGUgdHJhbnNmZXJcbiAqXG4gKiBAcGFyYW0gdHJhbnNmZXJIZXggaXMgdGhlIHZhbHVlIHByb3BlcnR5IG9mIHRoZSBcInBhcmFtZXRlclwiIGZpZWxkIG9mIGNvbnRyYWN0TGlzdFswXVxuICogKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVUcmFuc2ZlckNvbnRyYWN0KHRyYW5zZmVySGV4OiBzdHJpbmcpOiBUcmFuc2ZlckNvbnRyYWN0W10ge1xuICBjb25zdCBjb250cmFjdEJ5dGVzID0gQnVmZmVyLmZyb20odHJhbnNmZXJIZXgsICdiYXNlNjQnKTtcbiAgbGV0IHRyYW5zZmVyQ29udHJhY3Q7XG5cbiAgdHJ5IHtcbiAgICB0cmFuc2ZlckNvbnRyYWN0ID0gcHJvdG9jb2wuVHJhbnNmZXJDb250cmFjdC5kZWNvZGUoY29udHJhY3RCeXRlcyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignVGhlcmUgd2FzIGFuIGVycm9yIGRlY29kaW5nIHRoZSB0cmFuc2ZlciBjb250cmFjdCBpbiB0aGUgdHJhbnNhY3Rpb24uJyk7XG4gIH1cblxuICBpZiAoIXRyYW5zZmVyQ29udHJhY3Qub3duZXJBZGRyZXNzKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ093bmVyIGFkZHJlc3MgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyB0cmFuc2ZlciBjb250cmFjdC4nKTtcbiAgfVxuXG4gIGlmICghdHJhbnNmZXJDb250cmFjdC50b0FkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignRGVzdGluYXRpb24gYWRkcmVzcyBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIHRyYW5zZmVyIGNvbnRyYWN0LicpO1xuICB9XG5cbiAgaWYgKCF0cmFuc2ZlckNvbnRyYWN0Lmhhc093blByb3BlcnR5KCdhbW91bnQnKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdBbW91bnQgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyB0cmFuc2ZlciBjb250cmFjdC4nKTtcbiAgfVxuXG4gIC8vIGRlc2VyaWFsaXplIGF0dHJpYnV0ZXNcbiAgY29uc3Qgb3duZXJfYWRkcmVzcyA9IGdldEJhc2U1OEFkZHJlc3NGcm9tQnl0ZUFycmF5KFxuICAgIGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzKEJ1ZmZlci5mcm9tKHRyYW5zZmVyQ29udHJhY3Qub3duZXJBZGRyZXNzLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpKVxuICApO1xuICBjb25zdCB0b19hZGRyZXNzID0gZ2V0QmFzZTU4QWRkcmVzc0Zyb21CeXRlQXJyYXkoXG4gICAgZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MoQnVmZmVyLmZyb20odHJhbnNmZXJDb250cmFjdC50b0FkZHJlc3MsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JykpXG4gICk7XG4gIGNvbnN0IGFtb3VudCA9IHRyYW5zZmVyQ29udHJhY3QuYW1vdW50O1xuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcGFyYW1ldGVyOiB7XG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgYW1vdW50OiBOdW1iZXIoYW1vdW50KSxcbiAgICAgICAgICBvd25lcl9hZGRyZXNzLFxuICAgICAgICAgIHRvX2FkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIF07XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemUgdGhlIHNlZ21lbnQgb2YgdGhlIHR4SGV4IGNvcnJlc3BvbmRpbmcgd2l0aCB0cmlnZ2VyIHNtYXJ0IGNvbnRyYWN0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NFxuICogQHJldHVybnMge0FjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVUcmlnZ2VyU21hcnRDb250cmFjdChiYXNlNjQ6IHN0cmluZyk6IFRyaWdnZXJTbWFydENvbnRyYWN0W10ge1xuICBsZXQgY29udHJhY3RDYWxsRGVjb2RlZDtcbiAgdHJ5IHtcbiAgICBjb250cmFjdENhbGxEZWNvZGVkID0gcHJvdG9jb2wuVHJpZ2dlclNtYXJ0Q29udHJhY3QuZGVjb2RlKEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpKS50b0pTT04oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdUaGVyZSB3YXMgYW4gZXJyb3IgZGVjb2RpbmcgdGhlIGNvbnRyYWN0IGNhbGwgaW4gdGhlIHRyYW5zYWN0aW9uLicpO1xuICB9XG5cbiAgaWYgKCFjb250cmFjdENhbGxEZWNvZGVkLm93bmVyQWRkcmVzcykge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdPd25lciBhZGRyZXNzIGRvZXMgbm90IGV4aXN0IGluIHRoaXMgY29udHJhY3QgY2FsbC4nKTtcbiAgfVxuXG4gIGlmICghY29udHJhY3RDYWxsRGVjb2RlZC5jb250cmFjdEFkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignRGVzdGluYXRpb24gY29udHJhY3QgYWRkcmVzcyBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIGNvbnRyYWN0IGNhbGwuJyk7XG4gIH1cblxuICBpZiAoIWNvbnRyYWN0Q2FsbERlY29kZWQuZGF0YSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdEYXRhIGRvZXMgbm90IGV4aXN0IGluIHRoaXMgY29udHJhY3QgY2FsbC4nKTtcbiAgfVxuXG4gIC8vIGRlc2VyaWFsaXplIGF0dHJpYnV0ZXNcbiAgY29uc3Qgb3duZXJfYWRkcmVzcyA9IGdldEJhc2U1OEFkZHJlc3NGcm9tQnl0ZUFycmF5KFxuICAgIGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzKEJ1ZmZlci5mcm9tKGNvbnRyYWN0Q2FsbERlY29kZWQub3duZXJBZGRyZXNzLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpKVxuICApO1xuICBjb25zdCBjb250cmFjdF9hZGRyZXNzID0gZ2V0QmFzZTU4QWRkcmVzc0Zyb21CeXRlQXJyYXkoXG4gICAgZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MoQnVmZmVyLmZyb20oY29udHJhY3RDYWxsRGVjb2RlZC5jb250cmFjdEFkZHJlc3MsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JykpXG4gICk7XG4gIGNvbnN0IGRhdGEgPSBjb250cmFjdENhbGxEZWNvZGVkLmRhdGE7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcGFyYW1ldGVyOiB7XG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICBvd25lcl9hZGRyZXNzLFxuICAgICAgICAgIGNvbnRyYWN0X2FkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIF07XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemUgdGhlIHNlZ21lbnQgb2YgdGhlIHR4SGV4IGNvcnJlc3BvbmRpbmcgd2l0aCB0aGUgZGV0YWlscyBvZiB0aGUgY29udHJhY3Qgd2hpY2ggdXBkYXRlc1xuICogYWNjb3VudCBwZXJtaXNzaW9uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NFxuICogQHJldHVybnMge0FjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVBY2NvdW50UGVybWlzc2lvblVwZGF0ZUNvbnRyYWN0KGJhc2U2NDogc3RyaW5nKTogQWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdCB7XG4gIGNvbnN0IGFjY291bnRVcGRhdGVDb250cmFjdCA9IHByb3RvY29sLkFjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3QuZGVjb2RlKEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpKS50b0pTT04oKTtcbiAgYXNzZXJ0KGFjY291bnRVcGRhdGVDb250cmFjdC5vd25lckFkZHJlc3MpO1xuICBhc3NlcnQoYWNjb3VudFVwZGF0ZUNvbnRyYWN0Lm93bmVyKTtcbiAgYXNzZXJ0KGFjY291bnRVcGRhdGVDb250cmFjdC5oYXNPd25Qcm9wZXJ0eSgnYWN0aXZlcycpKTtcblxuICBjb25zdCBvd25lckFkZHJlc3MgPSBnZXRCYXNlNThBZGRyZXNzRnJvbUJ5dGVBcnJheShcbiAgICBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyhCdWZmZXIuZnJvbShhY2NvdW50VXBkYXRlQ29udHJhY3Qub3duZXJBZGRyZXNzLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpKVxuICApO1xuICBjb25zdCBvd25lcjogUGVybWlzc2lvbiA9IGNyZWF0ZVBlcm1pc3Npb24oYWNjb3VudFVwZGF0ZUNvbnRyYWN0Lm93bmVyKTtcbiAgbGV0IHdpdG5lc3M6IFBlcm1pc3Npb24gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIGlmIChhY2NvdW50VXBkYXRlQ29udHJhY3Qud2l0bmVzcykge1xuICAgIHdpdG5lc3MgPSBjcmVhdGVQZXJtaXNzaW9uKGFjY291bnRVcGRhdGVDb250cmFjdC53aXRuZXNzKTtcbiAgfVxuICBjb25zdCBhY3RpdmVMaXN0ID0gYWNjb3VudFVwZGF0ZUNvbnRyYWN0LmFjdGl2ZXMubWFwKChhY3RpdmUpID0+IGNyZWF0ZVBlcm1pc3Npb24oYWN0aXZlKSk7XG5cbiAgcmV0dXJuIHtcbiAgICBvd25lckFkZHJlc3MsXG4gICAgb3duZXIsXG4gICAgd2l0bmVzcyxcbiAgICBhY3RpdmVzOiBhY3RpdmVMaXN0LFxuICB9O1xufVxuXG4vKipcbiAqIERlc2VyaWFsaXplIHRoZSBzZWdtZW50IG9mIHRoZSB0eEhleCBjb3JyZXNwb25kaW5nIHdpdGggZnJlZXplIGJhbGFuY2UgY29udHJhY3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZTY0IC0gVGhlIGJhc2U2NCBlbmNvZGVkIGNvbnRyYWN0IGRhdGFcbiAqIEByZXR1cm5zIHtGcmVlemVCYWxhbmNlQ29udHJhY3RQYXJhbWV0ZXJbXX0gLSBBcnJheSBjb250YWluaW5nIHRoZSBkZWNvZGVkIGZyZWV6ZSBjb250cmFjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlRnJlZXplQmFsYW5jZVYyQ29udHJhY3QoYmFzZTY0OiBzdHJpbmcpOiBGcmVlemVCYWxhbmNlQ29udHJhY3RQYXJhbWV0ZXJbXSB7XG4gIGxldCBmcmVlemVDb250cmFjdDogRnJlZXplQ29udHJhY3REZWNvZGVkO1xuICB0cnkge1xuICAgIGZyZWV6ZUNvbnRyYWN0ID0gcHJvdG9jb2wuRnJlZXplQmFsYW5jZVYyQ29udHJhY3QuZGVjb2RlKEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpKS50b0pTT04oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdUaGVyZSB3YXMgYW4gZXJyb3IgZGVjb2RpbmcgdGhlIGZyZWV6ZSBjb250cmFjdCBpbiB0aGUgdHJhbnNhY3Rpb24uJyk7XG4gIH1cblxuICBpZiAoIWZyZWV6ZUNvbnRyYWN0Lm93bmVyQWRkcmVzcykge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdPd25lciBhZGRyZXNzIGRvZXMgbm90IGV4aXN0IGluIHRoaXMgZnJlZXplIGNvbnRyYWN0LicpO1xuICB9XG5cbiAgaWYgKGZyZWV6ZUNvbnRyYWN0LnJlc291cmNlID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignUmVzb3VyY2UgdHlwZSBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIGZyZWV6ZSBjb250cmFjdC4nKTtcbiAgfVxuXG4gIGlmIChmcmVlemVDb250cmFjdC5mcm96ZW5CYWxhbmNlID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignRnJvemVuIGJhbGFuY2UgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyBmcmVlemUgY29udHJhY3QuJyk7XG4gIH1cblxuICBjb25zdCBvd25lcl9hZGRyZXNzID0gZ2V0QmFzZTU4QWRkcmVzc0Zyb21CeXRlQXJyYXkoXG4gICAgZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MoQnVmZmVyLmZyb20oZnJlZXplQ29udHJhY3Qub3duZXJBZGRyZXNzLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpKVxuICApO1xuXG4gIGNvbnN0IHJlc291cmNlVmFsdWUgPSBmcmVlemVDb250cmFjdC5yZXNvdXJjZSA9PT0gJ0JBTkRXSURUSCcgPyBUcm9uUmVzb3VyY2UuQkFORFdJRFRIIDogVHJvblJlc291cmNlLkVORVJHWTtcblxuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHBhcmFtZXRlcjoge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIHJlc291cmNlOiByZXNvdXJjZVZhbHVlLFxuICAgICAgICAgIGZyb3plbl9iYWxhbmNlOiBOdW1iZXIoZnJlZXplQ29udHJhY3QuZnJvemVuQmFsYW5jZSksXG4gICAgICAgICAgb3duZXJfYWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgXTtcbn1cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZSB0aGUgc2VnbWVudCBvZiB0aGUgdHhIZXggY29ycmVzcG9uZGluZyB3aXRoIHZvdGUgd2l0bmVzcyBjb250cmFjdFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlNjQgLSBUaGUgYmFzZTY0IGVuY29kZWQgY29udHJhY3QgZGF0YVxuICogQHJldHVybnMge1ZvdGVXaXRuZXNzQ29udHJhY3RQYXJhbWV0ZXJbXX0gLSBBcnJheSBjb250YWluaW5nIHRoZSBkZWNvZGVkIHZvdGUgd2l0bmVzcyBjb250cmFjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlVm90ZVdpdG5lc3NDb250cmFjdChiYXNlNjQ6IHN0cmluZyk6IFZvdGVXaXRuZXNzQ29udHJhY3RQYXJhbWV0ZXJbXSB7XG4gIGxldCB2b3RlQ29udHJhY3Q6IFZvdGVDb250cmFjdERlY29kZWQ7XG4gIHRyeSB7XG4gICAgdm90ZUNvbnRyYWN0ID0gcHJvdG9jb2wuVm90ZVdpdG5lc3NDb250cmFjdC5kZWNvZGUoQnVmZmVyLmZyb20oYmFzZTY0LCAnYmFzZTY0JykpLnRvSlNPTigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ1RoZXJlIHdhcyBhbiBlcnJvciBkZWNvZGluZyB0aGUgdm90ZSBjb250cmFjdCBpbiB0aGUgdHJhbnNhY3Rpb24uJyk7XG4gIH1cblxuICBpZiAoIXZvdGVDb250cmFjdC5vd25lckFkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignT3duZXIgYWRkcmVzcyBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIHZvdGUgY29udHJhY3QuJyk7XG4gIH1cblxuICBpZiAoIUFycmF5LmlzQXJyYXkodm90ZUNvbnRyYWN0LnZvdGVzKSB8fCB2b3RlQ29udHJhY3Qudm90ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ1ZvdGVzIGRvIG5vdCBleGlzdCBvciBhcmUgZW1wdHkgaW4gdGhpcyB2b3RlIGNvbnRyYWN0LicpO1xuICB9XG5cbiAgLy8gZGVzZXJpYWxpemUgYXR0cmlidXRlc1xuICBjb25zdCBvd25lcl9hZGRyZXNzID0gZ2V0QmFzZTU4QWRkcmVzc0Zyb21CeXRlQXJyYXkoXG4gICAgZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MoQnVmZmVyLmZyb20odm90ZUNvbnRyYWN0Lm93bmVyQWRkcmVzcywgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSlcbiAgKTtcblxuICBpbnRlcmZhY2UgVm90ZUl0ZW0ge1xuICAgIHZvdGVBZGRyZXNzPzogc3RyaW5nO1xuICAgIHZvdGVDb3VudD86IHN0cmluZyB8IG51bWJlcjtcbiAgfVxuXG4gIGNvbnN0IHZvdGVzID0gdm90ZUNvbnRyYWN0LnZvdGVzLm1hcCgodm90ZTogVm90ZUl0ZW0pID0+IHtcbiAgICBpZiAoIXZvdGUudm90ZUFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdWb3RlIGFkZHJlc3MgaXMgbWlzc2luZyBpbiBvbmUgb2YgdGhlIHZvdGVzLicpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2b3RlX2FkZHJlc3M6IGdldEJhc2U1OEFkZHJlc3NGcm9tQnl0ZUFycmF5KFxuICAgICAgICBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyhCdWZmZXIuZnJvbSh2b3RlLnZvdGVBZGRyZXNzLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpKVxuICAgICAgKSxcbiAgICAgIHZvdGVfY291bnQ6IE51bWJlcih2b3RlLnZvdGVDb3VudCB8fCAwKSxcbiAgICB9O1xuICB9KTtcblxuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHBhcmFtZXRlcjoge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIG93bmVyX2FkZHJlc3MsXG4gICAgICAgICAgdm90ZXMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIF07XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemUgdGhlIHNlZ21lbnQgb2YgdGhlIHR4SGV4IGNvcnJlc3BvbmRpbmcgd2l0aCB1bmZyZWV6ZSBiYWxhbmNlIGNvbnRyYWN0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NCAtIFRoZSBiYXNlNjQgZW5jb2RlZCBjb250cmFjdCBkYXRhXG4gKiBAcmV0dXJucyB7VW5mcmVlemVCYWxhbmNlQ29udHJhY3RQYXJhbWV0ZXJbXX0gLSBBcnJheSBjb250YWluaW5nIHRoZSBkZWNvZGVkIHVuZnJlZXplIGNvbnRyYWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVVbmZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0KGJhc2U2NDogc3RyaW5nKTogVW5mcmVlemVCYWxhbmNlQ29udHJhY3RQYXJhbWV0ZXJbXSB7XG4gIGxldCB1bmZyZWV6ZUNvbnRyYWN0OiBVbmZyZWV6ZUNvbnRyYWN0RGVjb2RlZDtcbiAgdHJ5IHtcbiAgICB1bmZyZWV6ZUNvbnRyYWN0ID0gcHJvdG9jb2wuVW5mcmVlemVCYWxhbmNlVjJDb250cmFjdC5kZWNvZGUoQnVmZmVyLmZyb20oYmFzZTY0LCAnYmFzZTY0JykpLnRvSlNPTigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ1RoZXJlIHdhcyBhbiBlcnJvciBkZWNvZGluZyB0aGUgdW5mcmVlemUgY29udHJhY3QgaW4gdGhlIHRyYW5zYWN0aW9uLicpO1xuICB9XG5cbiAgaWYgKCF1bmZyZWV6ZUNvbnRyYWN0Lm93bmVyQWRkcmVzcykge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdPd25lciBhZGRyZXNzIGRvZXMgbm90IGV4aXN0IGluIHRoaXMgdW5mcmVlemUgY29udHJhY3QuJyk7XG4gIH1cblxuICBpZiAodW5mcmVlemVDb250cmFjdC5yZXNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ1Jlc291cmNlIHR5cGUgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyB1bmZyZWV6ZSBjb250cmFjdC4nKTtcbiAgfVxuXG4gIGlmICh1bmZyZWV6ZUNvbnRyYWN0LnVuZnJlZXplQmFsYW5jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ1VuZnJlZXplIGJhbGFuY2UgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyB1bmZyZWV6ZSBjb250cmFjdC4nKTtcbiAgfVxuXG4gIC8vIGRlc2VyaWFsaXplIGF0dHJpYnV0ZXNcbiAgY29uc3Qgb3duZXJfYWRkcmVzcyA9IGdldEJhc2U1OEFkZHJlc3NGcm9tQnl0ZUFycmF5KFxuICAgIGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzKEJ1ZmZlci5mcm9tKHVuZnJlZXplQ29udHJhY3Qub3duZXJBZGRyZXNzLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpKVxuICApO1xuXG4gIC8vIENvbnZlcnQgUmVzb3VyY2VDb2RlIGVudW0gdmFsdWUgdG8gc3RyaW5nIHJlc291cmNlIG5hbWVcbiAgY29uc3QgcmVzb3VyY2VWYWx1ZSA9IHVuZnJlZXplQ29udHJhY3QucmVzb3VyY2U7XG4gIGNvbnN0IHJlc291cmNlRW51bSA9IHJlc291cmNlVmFsdWUgPT09IHByb3RvY29sLlJlc291cmNlQ29kZS5CQU5EV0lEVEggPyBUcm9uUmVzb3VyY2UuQkFORFdJRFRIIDogVHJvblJlc291cmNlLkVORVJHWTtcblxuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHBhcmFtZXRlcjoge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIHJlc291cmNlOiByZXNvdXJjZUVudW0sXG4gICAgICAgICAgdW5mcmVlemVfYmFsYW5jZTogTnVtYmVyKHVuZnJlZXplQ29udHJhY3QudW5mcmVlemVCYWxhbmNlKSxcbiAgICAgICAgICBvd25lcl9hZGRyZXNzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICBdO1xufVxuXG4vKipcbiAqIERlc2VyaWFsaXplIHRoZSBzZWdtZW50IG9mIHRoZSB0eEhleCBjb3JyZXNwb25kaW5nIHdpdGggd2l0aGRyYXcgYmFsYW5jZSBjb250cmFjdFxuICogRGVjb2RlZCBjb250cmFjdCBpcyB0aGUgc2FtZSBhcyB3aXRoZHJhdyBleHBpcmUgdW5mcmVlemVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZTY0IC0gVGhlIGJhc2U2NCBlbmNvZGVkIGNvbnRyYWN0IGRhdGFcbiAqIEByZXR1cm5zIHtXaXRoZHJhd0V4cGlyZVVuZnJlZXplQ29udHJhY3RQYXJhbWV0ZXJbXX0gLSBBcnJheSBjb250YWluaW5nIHRoZSBkZWNvZGVkIHdpdGhkcmF3IGNvbnRyYWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVXaXRoZHJhd0JhbGFuY2VDb250cmFjdChiYXNlNjQ6IHN0cmluZyk6IFdpdGhkcmF3RXhwaXJlVW5mcmVlemVDb250cmFjdFBhcmFtZXRlcltdIHtcbiAgbGV0IHdpdGhkcmF3Q29udHJhY3Q6IFdpdGhkcmF3Q29udHJhY3REZWNvZGVkO1xuICB0cnkge1xuICAgIHdpdGhkcmF3Q29udHJhY3QgPSBwcm90b2NvbC5XaXRoZHJhd0JhbGFuY2VDb250cmFjdC5kZWNvZGUoQnVmZmVyLmZyb20oYmFzZTY0LCAnYmFzZTY0JykpLnRvSlNPTigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ1RoZXJlIHdhcyBhbiBlcnJvciBkZWNvZGluZyB0aGUgd2l0aGRyYXcgY29udHJhY3QgaW4gdGhlIHRyYW5zYWN0aW9uLicpO1xuICB9XG5cbiAgaWYgKCF3aXRoZHJhd0NvbnRyYWN0Lm93bmVyQWRkcmVzcykge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdPd25lciBhZGRyZXNzIGRvZXMgbm90IGV4aXN0IGluIHRoaXMgd2l0aGRyYXcgY29udHJhY3QuJyk7XG4gIH1cblxuICAvLyBkZXNlcmlhbGl6ZSBhdHRyaWJ1dGVzXG4gIGNvbnN0IG93bmVyX2FkZHJlc3MgPSBnZXRCYXNlNThBZGRyZXNzRnJvbUJ5dGVBcnJheShcbiAgICBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyhCdWZmZXIuZnJvbSh3aXRoZHJhd0NvbnRyYWN0Lm93bmVyQWRkcmVzcywgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSlcbiAgKTtcblxuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHBhcmFtZXRlcjoge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIG93bmVyX2FkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIF07XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemUgdGhlIHNlZ21lbnQgb2YgdGhlIHR4SGV4IGNvcnJlc3BvbmRpbmcgd2l0aCB3aXRoZHJhdyBleHBpcmUgdW5mcmVlemUgY29udHJhY3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZTY0IC0gVGhlIGJhc2U2NCBlbmNvZGVkIGNvbnRyYWN0IGRhdGFcbiAqIEByZXR1cm5zIHtXaXRoZHJhd0V4cGlyZVVuZnJlZXplQ29udHJhY3RQYXJhbWV0ZXJbXX0gLSBBcnJheSBjb250YWluaW5nIHRoZSBkZWNvZGVkIHdpdGhkcmF3IGNvbnRyYWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVXaXRoZHJhd0V4cGlyZVVuZnJlZXplQ29udHJhY3QoYmFzZTY0OiBzdHJpbmcpOiBXaXRoZHJhd0V4cGlyZVVuZnJlZXplQ29udHJhY3RQYXJhbWV0ZXJbXSB7XG4gIGxldCB3aXRoZHJhd0NvbnRyYWN0OiBXaXRoZHJhd0NvbnRyYWN0RGVjb2RlZDtcbiAgdHJ5IHtcbiAgICB3aXRoZHJhd0NvbnRyYWN0ID0gcHJvdG9jb2wuV2l0aGRyYXdCYWxhbmNlQ29udHJhY3QuZGVjb2RlKEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpKS50b0pTT04oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdUaGVyZSB3YXMgYW4gZXJyb3IgZGVjb2RpbmcgdGhlIHdpdGhkcmF3IGNvbnRyYWN0IGluIHRoZSB0cmFuc2FjdGlvbi4nKTtcbiAgfVxuXG4gIGlmICghd2l0aGRyYXdDb250cmFjdC5vd25lckFkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignT3duZXIgYWRkcmVzcyBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIHdpdGhkcmF3IGNvbnRyYWN0LicpO1xuICB9XG5cbiAgLy8gZGVzZXJpYWxpemUgYXR0cmlidXRlc1xuICBjb25zdCBvd25lcl9hZGRyZXNzID0gZ2V0QmFzZTU4QWRkcmVzc0Zyb21CeXRlQXJyYXkoXG4gICAgZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MoQnVmZmVyLmZyb20od2l0aGRyYXdDb250cmFjdC5vd25lckFkZHJlc3MsICdiYXNlNjQnKS50b1N0cmluZygnaGV4JykpXG4gICk7XG5cbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBwYXJhbWV0ZXI6IHtcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBvd25lcl9hZGRyZXNzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICBdO1xufVxuXG4vKipcbiAqIERlc2VyaWFsaXplIHRoZSBzZWdtZW50IG9mIHRoZSB0eEhleCBjb3JyZXNwb25kaW5nIHdpdGggZGVsZWdhdGUgcmVzb3VyY2UgY29udHJhY3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZTY0IC0gVGhlIGJhc2U2NCBlbmNvZGVkIGNvbnRyYWN0IGRhdGFcbiAqIEByZXR1cm5zIHtSZXNvdXJjZU1hbmFnZW1lbnRDb250cmFjdFBhcmFtZXRlcltdfSAtIEFycmF5IGNvbnRhaW5pbmcgdGhlIGRlY29kZWQgZGVsZWdhdGUgcmVzb3VyY2UgY29udHJhY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZURlbGVnYXRlUmVzb3VyY2VDb250cmFjdChiYXNlNjQ6IHN0cmluZyk6IFJlc291cmNlTWFuYWdlbWVudENvbnRyYWN0UGFyYW1ldGVyW10ge1xuICBsZXQgZGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0OiBSZXNvdXJjZU1hbmFnZW1lbnRDb250cmFjdERlY29kZWQ7XG4gIHRyeSB7XG4gICAgZGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0ID0gcHJvdG9jb2wuRGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0LmRlY29kZShCdWZmZXIuZnJvbShiYXNlNjQsICdiYXNlNjQnKSkudG9KU09OKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignVGhlcmUgd2FzIGFuIGVycm9yIGRlY29kaW5nIHRoZSBkZWxlZ2F0ZSByZXNvdXJjZSBjb250cmFjdCBpbiB0aGUgdHJhbnNhY3Rpb24uJyk7XG4gIH1cblxuICBpZiAoIWRlbGVnYXRlUmVzb3VyY2VDb250cmFjdC5vd25lckFkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignT3duZXIgYWRkcmVzcyBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIGRlbGVnYXRlIHJlc291cmNlIGNvbnRyYWN0LicpO1xuICB9XG5cbiAgaWYgKCFkZWxlZ2F0ZVJlc291cmNlQ29udHJhY3QucmVjZWl2ZXJBZGRyZXNzKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ1JlY2VpdmVyIGFkZHJlc3MgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyBkZWxlZ2F0ZSByZXNvdXJjZSBjb250cmFjdC4nKTtcbiAgfVxuXG4gIGlmIChkZWxlZ2F0ZVJlc291cmNlQ29udHJhY3QucmVzb3VyY2UgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdSZXNvdXJjZSB0eXBlIGRvZXMgbm90IGV4aXN0IGluIHRoaXMgZGVsZWdhdGUgcmVzb3VyY2UgY29udHJhY3QuJyk7XG4gIH1cblxuICBpZiAoZGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0LmJhbGFuY2UgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdCYWxhbmNlIGRvZXMgbm90IGV4aXN0IGluIHRoaXMgZGVsZWdhdGUgcmVzb3VyY2UgY29udHJhY3QuJyk7XG4gIH1cblxuICBjb25zdCBvd25lcl9hZGRyZXNzID0gZ2V0QmFzZTU4QWRkcmVzc0Zyb21CeXRlQXJyYXkoXG4gICAgZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MoQnVmZmVyLmZyb20oZGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0Lm93bmVyQWRkcmVzcywgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSlcbiAgKTtcblxuICBjb25zdCByZWNlaXZlcl9hZGRyZXNzID0gZ2V0QmFzZTU4QWRkcmVzc0Zyb21CeXRlQXJyYXkoXG4gICAgZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MoQnVmZmVyLmZyb20oZGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0LnJlY2VpdmVyQWRkcmVzcywgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSlcbiAgKTtcblxuICBjb25zdCByZXNvdXJjZVZhbHVlID0gIWRlbGVnYXRlUmVzb3VyY2VDb250cmFjdC5yZXNvdXJjZSA/IFRyb25SZXNvdXJjZS5CQU5EV0lEVEggOiBUcm9uUmVzb3VyY2UuRU5FUkdZO1xuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcGFyYW1ldGVyOiB7XG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgcmVzb3VyY2U6IHJlc291cmNlVmFsdWUsXG4gICAgICAgICAgYmFsYW5jZTogTnVtYmVyKGRlbGVnYXRlUmVzb3VyY2VDb250cmFjdC5iYWxhbmNlKSxcbiAgICAgICAgICBvd25lcl9hZGRyZXNzLFxuICAgICAgICAgIHJlY2VpdmVyX2FkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIF07XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemUgdGhlIHNlZ21lbnQgb2YgdGhlIHR4SGV4IGNvcnJlc3BvbmRpbmcgd2l0aCB1bmRlbGVnYXRlIHJlc291cmNlIGNvbnRyYWN0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NCAtIFRoZSBiYXNlNjQgZW5jb2RlZCBjb250cmFjdCBkYXRhXG4gKiBAcmV0dXJucyB7UmVzb3VyY2VNYW5hZ2VtZW50Q29udHJhY3RQYXJhbWV0ZXJbXX0gLSBBcnJheSBjb250YWluaW5nIHRoZSBkZWNvZGVkIHVuZGVsZWdhdGUgcmVzb3VyY2UgY29udHJhY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVVuRGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0KGJhc2U2NDogc3RyaW5nKTogUmVzb3VyY2VNYW5hZ2VtZW50Q29udHJhY3RQYXJhbWV0ZXJbXSB7XG4gIGxldCB1bmRlbGVnYXRlUmVzb3VyY2VDb250cmFjdDogUmVzb3VyY2VNYW5hZ2VtZW50Q29udHJhY3REZWNvZGVkO1xuICB0cnkge1xuICAgIHVuZGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0ID0gcHJvdG9jb2wuVW5EZWxlZ2F0ZVJlc291cmNlQ29udHJhY3QuZGVjb2RlKEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpKS50b0pTT04oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdUaGVyZSB3YXMgYW4gZXJyb3IgZGVjb2RpbmcgdGhlIGRlbGVnYXRlIHJlc291cmNlIGNvbnRyYWN0IGluIHRoZSB0cmFuc2FjdGlvbi4nKTtcbiAgfVxuXG4gIGlmICghdW5kZWxlZ2F0ZVJlc291cmNlQ29udHJhY3Qub3duZXJBZGRyZXNzKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ093bmVyIGFkZHJlc3MgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyBkZWxlZ2F0ZSByZXNvdXJjZSBjb250cmFjdC4nKTtcbiAgfVxuXG4gIGlmICghdW5kZWxlZ2F0ZVJlc291cmNlQ29udHJhY3QucmVjZWl2ZXJBZGRyZXNzKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ1JlY2VpdmVyIGFkZHJlc3MgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyBkZWxlZ2F0ZSByZXNvdXJjZSBjb250cmFjdC4nKTtcbiAgfVxuXG4gIGlmICh1bmRlbGVnYXRlUmVzb3VyY2VDb250cmFjdC5yZXNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ1Jlc291cmNlIHR5cGUgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyBkZWxlZ2F0ZSByZXNvdXJjZSBjb250cmFjdC4nKTtcbiAgfVxuXG4gIGlmICh1bmRlbGVnYXRlUmVzb3VyY2VDb250cmFjdC5iYWxhbmNlID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignQmFsYW5jZSBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIGRlbGVnYXRlIHJlc291cmNlIGNvbnRyYWN0LicpO1xuICB9XG5cbiAgY29uc3Qgb3duZXJfYWRkcmVzcyA9IGdldEJhc2U1OEFkZHJlc3NGcm9tQnl0ZUFycmF5KFxuICAgIGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzKEJ1ZmZlci5mcm9tKHVuZGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0Lm93bmVyQWRkcmVzcywgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKSlcbiAgKTtcblxuICBjb25zdCByZWNlaXZlcl9hZGRyZXNzID0gZ2V0QmFzZTU4QWRkcmVzc0Zyb21CeXRlQXJyYXkoXG4gICAgZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MoQnVmZmVyLmZyb20odW5kZWxlZ2F0ZVJlc291cmNlQ29udHJhY3QucmVjZWl2ZXJBZGRyZXNzLCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpKVxuICApO1xuXG4gIGNvbnN0IHJlc291cmNlVmFsdWUgPSAhdW5kZWxlZ2F0ZVJlc291cmNlQ29udHJhY3QucmVzb3VyY2UgPyBUcm9uUmVzb3VyY2UuQkFORFdJRFRIIDogVHJvblJlc291cmNlLkVORVJHWTtcblxuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHBhcmFtZXRlcjoge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIHJlc291cmNlOiByZXNvdXJjZVZhbHVlLFxuICAgICAgICAgIGJhbGFuY2U6IE51bWJlcih1bmRlbGVnYXRlUmVzb3VyY2VDb250cmFjdC5iYWxhbmNlKSxcbiAgICAgICAgICBvd25lcl9hZGRyZXNzLFxuICAgICAgICAgIHJlY2VpdmVyX2FkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIF07XG59XG5cbi8qKlxuICogQHBhcmFtIHJhd1xuICovXG5mdW5jdGlvbiBjcmVhdGVQZXJtaXNzaW9uKHJhdzogeyBwZXJtaXNzaW9uTmFtZTogc3RyaW5nOyB0aHJlc2hvbGQ6IG51bWJlciB9KTogUGVybWlzc2lvbiB7XG4gIGxldCBwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGU7XG4gIGNvbnN0IHBlcm1pc3Npb24gPSByYXcucGVybWlzc2lvbk5hbWUudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gIGlmIChwZXJtaXNzaW9uID09PSAnb3duZXInKSB7XG4gICAgcGVybWlzc2lvblR5cGUgPSBQZXJtaXNzaW9uVHlwZS5Pd25lcjtcbiAgfSBlbHNlIGlmIChwZXJtaXNzaW9uID09PSAnd2l0bmVzcycpIHtcbiAgICBwZXJtaXNzaW9uVHlwZSA9IFBlcm1pc3Npb25UeXBlLldpdG5lc3M7XG4gIH0gZWxzZSBpZiAocGVybWlzc2lvbi5zdWJzdHIoMCwgNikgPT09ICdhY3RpdmUnKSB7XG4gICAgcGVybWlzc2lvblR5cGUgPSBQZXJtaXNzaW9uVHlwZS5BY3RpdmU7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ1Blcm1pc3Npb24gdHlwZSBub3QgcGFyc2VhYmxlLicpO1xuICB9XG4gIHJldHVybiB7IHR5cGU6IHBlcm1pc3Npb25UeXBlLCB0aHJlc2hvbGQ6IHJhdy50aHJlc2hvbGQgfTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcmF3VHJhbnNhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRUeEpzb25TdHJpbmcocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCB0cmFuc2FjdGlvbiA9IEpTT04ucGFyc2UocmF3VHJhbnNhY3Rpb24pO1xuICByZXR1cm4gdHJhbnNhY3Rpb24uaGFzT3duUHJvcGVydHkoJ3R4SUQnKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHByb3ZpZGVkIHJhdyB0cmFuc2FjdGlvbiBhY2NvbW1vZGF0ZXMgdG8gYml0Z28ncyBwcmVmZXJyZWQgZm9ybWF0XG4gKlxuICogQHBhcmFtIHthbnl9IHJhd1RyYW5zYWN0aW9uIC0gVGhlIHJhdyB0cmFuc2FjdGlvbiB0byBiZSBjaGVja2VkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUmF3VHJhbnNhY3Rpb25Gb3JtYXQocmF3VHJhbnNhY3Rpb246IGFueSk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHJhd1RyYW5zYWN0aW9uID09PSAnc3RyaW5nJyAmJiAoaXNWYWxpZEhleChyYXdUcmFuc2FjdGlvbikgfHwgaXNWYWxpZFR4SnNvblN0cmluZyhyYXdUcmFuc2FjdGlvbikpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFJldHVybnMgYW4gaGV4IHN0cmluZyBvZiB0aGUgZ2l2ZW4gYnVmZmVyXG4gKlxuICogQHBhcmFtIHtCdWZmZXIgfCBVaW50OEFycmF5fSBidWZmZXIgLSB0aGUgYnVmZmVyIHRvIGJlIGNvbnZlcnRlZCB0byBoZXhcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIGhleCB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9IZXgoYnVmZmVyOiBCdWZmZXIgfCBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgcmV0dXJuIGhleC5lbmNvZGUoYnVmZmVyLCB0cnVlKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgS2VjY2FrLTI1NiBlbmNvZGVkIHN0cmluZyBvZiB0aGUgcGFyYW1ldGVyc1xuICpcbiAqIEBwYXJhbSB0eXBlcyAtIHN0cmluZ3MgZGVzY3JpYmluZyB0aGUgdHlwZXMgb2YgdGhlIHZhbHVlc1xuICogQHBhcmFtIHZhbHVlcyAtIHZhbHVlIHRvIGVuY29kZVxuICogQHBhcmFtIG1ldGhvZElkIC0gdGhlIGZpcnN0IDQgYnl0ZXMgb2YgdGhlIGZ1bmN0aW9uIHNlbGVjdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVEYXRhUGFyYW1zKHR5cGVzOiBzdHJpbmdbXSwgdmFsdWVzOiBhbnlbXSwgbWV0aG9kSWQ/OiBzdHJpbmcpOiBzdHJpbmcge1xuICB0eXBlcy5mb3JFYWNoKCh0eXBlLCBpbmRleCkgPT4ge1xuICAgIGlmICh0eXBlID09ICdhZGRyZXNzJykge1xuICAgICAgdmFsdWVzW2luZGV4XSA9IHZhbHVlc1tpbmRleF0ucmVwbGFjZShBRERSRVNTX1BSRUZJWF9SRUdFWCwgJzB4Jyk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBhYmlDb2RlciA9IG5ldyBBYmlDb2RlcigpO1xuICBsZXQgZGF0YTtcbiAgdHJ5IHtcbiAgICBkYXRhID0gYWJpQ29kZXIuZW5jb2RlKHR5cGVzLCB2YWx1ZXMpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoYFRoZXJlIHdhcyBhbiBlcnJvciBlbmNvZGluZyB0aGUgZGF0YSBwYXJhbXMuIEVycm9yID0gJHtKU09OLnN0cmluZ2lmeShlKX1gKTtcbiAgfVxuICBpZiAobWV0aG9kSWQpIHtcbiAgICByZXR1cm4gaGV4Q29uY2F0KFttZXRob2RJZCwgZGF0YV0pLnJlcGxhY2UoL14oMHgpLywgJycpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkYXRhLnJlcGxhY2UoL14oMHgpLywgJycpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZGVjb2RlZCB2YWx1ZXMgYWNjb3JkaW5nIHRvIHRoZSBhcnJheSBvZiB0eXBlc1xuICpcbiAqIEBwYXJhbSB0eXBlcyAtIHN0cmluZ3MgZGVzY3JpYmluZyB0aGUgdHlwZXMgb2YgdGhlIHZhbHVlc1xuICogQHBhcmFtIGRhdGEgLSBlbmNvZGVkIHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlRGF0YVBhcmFtcyh0eXBlczogc3RyaW5nW10sIGRhdGE6IHN0cmluZyk6IGFueVtdIHtcbiAgY29uc3QgYWJpQ29kZXIgPSBuZXcgQWJpQ29kZXIoKTtcbiAgZGF0YSA9ICcweCcgKyBkYXRhLnN1YnN0cmluZyg4KTtcbiAgcmV0dXJuIGFiaUNvZGVyLmRlY29kZSh0eXBlcywgZGF0YSkucmVkdWNlKChvYmosIGFyZywgaW5kZXgpID0+IHtcbiAgICBpZiAodHlwZXNbaW5kZXhdID09ICdhZGRyZXNzJykgYXJnID0gQUREUkVTU19QUkVGSVggKyBhcmcuc3Vic3RyKDIpLnRvTG93ZXJDYXNlKCk7XG4gICAgb2JqLnB1c2goYXJnKTtcbiAgICByZXR1cm4gb2JqO1xuICB9LCBbXSk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgcmF3X2RhdGFfaGV4IGZvciBhIFRST04gdHJhbnNhY3Rpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcmF3RGF0YSAtIFRoZSB0cmFuc2FjdGlvbiByYXcgZGF0YSBvYmplY3QgY29udGFpbmluZzpcbiAqIEBwYXJhbSB7QXJyYXl9IHJhd0RhdGEuY29udHJhY3QgLSBBcnJheSBvZiBjb250cmFjdCBvYmplY3RzXG4gKiBAcGFyYW0ge3N0cmluZ30gcmF3RGF0YS5yZWZCbG9ja0J5dGVzIC0gUmVmZXJlbmNlIGJsb2NrIGJ5dGVzXG4gKiBAcGFyYW0ge3N0cmluZ30gcmF3RGF0YS5yZWZCbG9ja0hhc2ggLSBSZWZlcmVuY2UgYmxvY2sgaGFzaFxuICogQHBhcmFtIHtudW1iZXJ9IHJhd0RhdGEuZXhwaXJhdGlvbiAtIFRyYW5zYWN0aW9uIGV4cGlyYXRpb24gdGltZXN0YW1wXG4gKiBAcGFyYW0ge251bWJlcn0gcmF3RGF0YS50aW1lc3RhbXAgLSBUcmFuc2FjdGlvbiBjcmVhdGlvbiB0aW1lc3RhbXBcbiAqIEBwYXJhbSB7bnVtYmVyfSBbcmF3RGF0YS5mZWVMaW1pdF0gLSBPcHRpb25hbCBmZWUgbGltaXQgZm9yIHNtYXJ0IGNvbnRyYWN0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGhleCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGVuY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVSYXdEYXRhSGV4KFxuICByYXdEYXRhOiB7XG4gICAgY29udHJhY3Q/OiBwcm90b2NvbC5UcmFuc2FjdGlvbi5Db250cmFjdFtdO1xuICAgIHJlZkJsb2NrQnl0ZXM/OiBzdHJpbmc7XG4gICAgcmVmQmxvY2tIYXNoPzogc3RyaW5nO1xuICAgIGV4cGlyYXRpb24/OiBudW1iZXI7XG4gICAgdGltZXN0YW1wPzogbnVtYmVyO1xuICAgIGZlZUxpbWl0PzogbnVtYmVyO1xuICB9ID0ge31cbik6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgLy8gUHJvY2VzcyBjb250cmFjdHMgdG8gZW5zdXJlIHByb3BlciBwcm90b2J1ZiBlbmNvZGluZ1xuICAgIGxldCBwcm9jZXNzZWRDb250cmFjdHMgPSByYXdEYXRhLmNvbnRyYWN0O1xuICAgIGlmIChyYXdEYXRhLmNvbnRyYWN0ICYmIHJhd0RhdGEuY29udHJhY3QubGVuZ3RoID4gMCkge1xuICAgICAgcHJvY2Vzc2VkQ29udHJhY3RzID0gcmF3RGF0YS5jb250cmFjdC5tYXAoKGNvbnRyYWN0KSA9PiB7XG4gICAgICAgIC8vIEhhbmRsZSBUcmFuc2ZlckNvbnRyYWN0IHNwZWNpZmljYWxseVxuICAgICAgICBpZiAoY29udHJhY3QucGFyYW1ldGVyPy50eXBlX3VybCA9PT0gJ3R5cGUuZ29vZ2xlYXBpcy5jb20vcHJvdG9jb2wuVHJhbnNmZXJDb250cmFjdCcpIHtcbiAgICAgICAgICBjb25zdCBjb250cmFjdFZhbHVlID0gY29udHJhY3QucGFyYW1ldGVyLnZhbHVlIGFzIGFueTtcblxuICAgICAgICAgIC8vIENyZWF0ZSB0aGUgcHJvdG9idWYgY29udHJhY3Qgb2JqZWN0XG4gICAgICAgICAgY29uc3QgdHJhbnNmZXJDb250cmFjdDogYW55ID0ge307XG5cbiAgICAgICAgICAvLyBIYW5kbGUgb3duZXJfYWRkcmVzcyAocmVxdWlyZWQgZmllbGQpXG4gICAgICAgICAgaWYgKGNvbnRyYWN0VmFsdWUub3duZXJfYWRkcmVzcykge1xuICAgICAgICAgICAgdHJhbnNmZXJDb250cmFjdC5vd25lckFkZHJlc3MgPSBCdWZmZXIuZnJvbShjb250cmFjdFZhbHVlLm93bmVyX2FkZHJlc3MsICdoZXgnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBIYW5kbGUgdG9fYWRkcmVzcyAocmVxdWlyZWQgZmllbGQpXG4gICAgICAgICAgaWYgKGNvbnRyYWN0VmFsdWUudG9fYWRkcmVzcykge1xuICAgICAgICAgICAgdHJhbnNmZXJDb250cmFjdC50b0FkZHJlc3MgPSBCdWZmZXIuZnJvbShjb250cmFjdFZhbHVlLnRvX2FkZHJlc3MsICdoZXgnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBIYW5kbGUgYW1vdW50IChyZXF1aXJlZCBmaWVsZClcbiAgICAgICAgICBpZiAoY29udHJhY3RWYWx1ZS5hbW91bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdHJhbnNmZXJDb250cmFjdC5hbW91bnQgPSBjb250cmFjdFZhbHVlLmFtb3VudDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBFbmNvZGUgdGhlIGNvbnRyYWN0IHVzaW5nIHByb3RvYnVmXG4gICAgICAgICAgY29uc3QgZW5jb2RlZENvbnRyYWN0ID0gcHJvdG9jb2wuVHJhbnNmZXJDb250cmFjdC5lbmNvZGUodHJhbnNmZXJDb250cmFjdCkuZmluaXNoKCk7XG4gICAgICAgICAgY29uc3QgYmFzZTY0VmFsdWUgPSBCdWZmZXIuZnJvbShlbmNvZGVkQ29udHJhY3QpLnRvU3RyaW5nKCdiYXNlNjQnKTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jb250cmFjdCxcbiAgICAgICAgICAgIHBhcmFtZXRlcjoge1xuICAgICAgICAgICAgICAuLi5jb250cmFjdC5wYXJhbWV0ZXIsXG4gICAgICAgICAgICAgIHZhbHVlOiBiYXNlNjRWYWx1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSBhcyBhbnk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udHJhY3Q7XG4gICAgICB9KSBhcyBwcm90b2NvbC5UcmFuc2FjdGlvbi5Db250cmFjdFtdO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSByYXcgdHJhbnNhY3Rpb24gb2JqZWN0IG1hdGNoaW5nIHByb3RvYnVmIHNjaGVtYVxuICAgIGNvbnN0IHJhd1R4OiBwcm90b2NvbC5UcmFuc2FjdGlvbi5JcmF3ID0ge1xuICAgICAgY29udHJhY3Q6IHByb2Nlc3NlZENvbnRyYWN0cyxcbiAgICAgIHJlZkJsb2NrQnl0ZXM6IHJhd0RhdGEucmVmQmxvY2tCeXRlcyA/IEJ1ZmZlci5mcm9tKHJhd0RhdGEucmVmQmxvY2tCeXRlcywgJ2hleCcpIDogdW5kZWZpbmVkLFxuICAgICAgcmVmQmxvY2tIYXNoOiByYXdEYXRhLnJlZkJsb2NrSGFzaCA/IEJ1ZmZlci5mcm9tKHJhd0RhdGEucmVmQmxvY2tIYXNoLCAnaGV4JykgOiB1bmRlZmluZWQsXG4gICAgICBleHBpcmF0aW9uOiByYXdEYXRhLmV4cGlyYXRpb24sXG4gICAgICB0aW1lc3RhbXA6IHJhd0RhdGEudGltZXN0YW1wLFxuICAgICAgZmVlTGltaXQ6IHJhd0RhdGEuZmVlTGltaXQsXG4gICAgfTtcblxuICAgIC8vIEVuY29kZSB1c2luZyBwcm90b2J1ZiBhbmQgZ2V0IGZpbmFsIGJ5dGVzXG4gICAgY29uc3QgZW5jb2RlZEJ5dGVzID0gcHJvdG9jb2wuVHJhbnNhY3Rpb24ucmF3LmVuY29kZShyYXdUeCkuZmluaXNoKCk7XG5cbiAgICAvLyBDb252ZXJ0IHRvIGhleCBzdHJpbmdcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oZW5jb2RlZEJ5dGVzKS50b1N0cmluZygnaGV4Jyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIHJhdyBkYXRhIGhleDogJyArIGUubWVzc2FnZSk7XG4gIH1cbn1cbiJdfQ==
|
package/dist/src/trx.d.ts
CHANGED
|
@@ -123,6 +123,10 @@ export declare class Trx extends BaseCoin {
|
|
|
123
123
|
parseTransaction(params: ParseTransactionOptions): Promise<ParsedTransaction>;
|
|
124
124
|
isWalletAddress(params: VerifyAddressOptions): Promise<boolean>;
|
|
125
125
|
verifyTransaction(params: VerifyTransactionOptions): Promise<boolean>;
|
|
126
|
+
/**
|
|
127
|
+
* Validate Transfer contract (native TRX transfer)
|
|
128
|
+
*/
|
|
129
|
+
private validateTransferContract;
|
|
126
130
|
/**
|
|
127
131
|
* Derive a user key using the chain path of the address
|
|
128
132
|
* @param key
|
package/dist/src/trx.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trx.d.ts","sourceRoot":"","sources":["../../src/trx.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG9E,OAAO,EACL,QAAQ,EACR,SAAS,EAKT,OAAO,EAEP,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,cAAc,EACd,mBAAmB,IAAI,uBAAuB,EAC9C,oBAAoB,IAAI,SAAS,EACjC,oBAAoB,EACpB,wBAAwB,EACxB,eAAe,EACf,YAAY,EAEZ,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAyB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"trx.d.ts","sourceRoot":"","sources":["../../src/trx.ts"],"names":[],"mappings":"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"}
|