@bitgo/sdk-coin-canton 1.32.1 → 1.32.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -61,6 +61,36 @@ describe('AllocationRequest Builder', () => {
61
61
  assert_1.default.equal(requestObj.settleBefore, settleBefore);
62
62
  assert_1.default.equal(requestObj.comment, comment);
63
63
  });
64
+ it('should preserve large allocation amounts through serialized request data', function () {
65
+ const txBuilder = new src_1.AllocationRequestBuilder(statics_1.coins.get('tcanton'));
66
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
67
+ txBuilder.initBuilder(tx);
68
+ const amount = '36868615888941900';
69
+ const receiveAmount = '123456789012345678901234567890';
70
+ txBuilder
71
+ .updateId(updateId)
72
+ .operatorId(operatorId)
73
+ .contractId(contractId)
74
+ .tradeId(tradeId)
75
+ .transferLegId(transferLegId)
76
+ .senderPartyId(senderPartyId)
77
+ .receiverPartyId(receiverPartyId)
78
+ .amount(amount)
79
+ .token(token)
80
+ .receiveToken(receiveToken)
81
+ .receiveAmount(receiveAmount)
82
+ .allocateBefore(allocateBefore)
83
+ .settleBefore(settleBefore);
84
+ const requestObj = txBuilder.toRequestObject();
85
+ assert_1.default.strictEqual(requestObj.amount, amount);
86
+ assert_1.default.strictEqual(requestObj.receiveAmount, receiveAmount);
87
+ tx.allocationRequestData = requestObj;
88
+ const parsedTx = new src_1.Transaction(statics_1.coins.get('tcanton'));
89
+ parsedTx.fromRawTransaction(tx.toBroadcastFormat());
90
+ const parsedData = parsedTx.toJson().allocationRequestData;
91
+ assert_1.default.strictEqual(parsedData?.amount, amount);
92
+ assert_1.default.strictEqual(parsedData?.receiveAmount, receiveAmount);
93
+ });
64
94
  it('should build the allocation request object without optional comment', function () {
65
95
  const txBuilder = new src_1.AllocationRequestBuilder(statics_1.coins.get('tcanton'));
66
96
  const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
@@ -404,4 +434,4 @@ describe('AllocationRequest Builder', () => {
404
434
  assert_1.default.throws(() => txBuilder.addSignature({}, Buffer.from('')), /Not implemented/);
405
435
  });
406
436
  });
407
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2J1aWxkZXIvYWxsb2NhdGlvblJlcXVlc3QvYWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUU1Qiw0Q0FBdUM7QUFFdkMseUNBQXdFO0FBR3hFLE1BQU0sUUFBUSxHQUFHLHNFQUFzRSxDQUFDO0FBQ3hGLE1BQU0sVUFBVSxHQUFHLCtGQUErRixDQUFDO0FBQ25ILE1BQU0sVUFBVSxHQUNkLDRJQUE0SSxDQUFDO0FBQy9JLE1BQU0sT0FBTyxHQUFHLHFCQUFxQixDQUFDO0FBQ3RDLE1BQU0sYUFBYSxHQUFHLGtDQUFrQyxDQUFDO0FBQ3pELE1BQU0sYUFBYSxHQUFHLDZGQUE2RixDQUFDO0FBQ3BILE1BQU0sZUFBZSxHQUFHLHlGQUF5RixDQUFDO0FBQ2xILE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNsQixNQUFNLEtBQUssR0FBRyxtQkFBbUIsQ0FBQztBQUNsQyxNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQztBQUN6QyxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFDekIsTUFBTSxjQUFjLEdBQUcsNkJBQTZCLENBQUM7QUFDckQsTUFBTSxZQUFZLEdBQUcsNkJBQTZCLENBQUM7QUFDbkQsTUFBTSxPQUFPLEdBQUcseUJBQXlCLENBQUM7QUFFMUMsaURBQWlEO0FBQ2pELFNBQVMsb0JBQW9CLENBQUMsU0FBbUM7SUFDL0QsT0FBTyxTQUFTO1NBQ2IsUUFBUSxDQUFDLFFBQVEsQ0FBQztTQUNsQixVQUFVLENBQUMsVUFBVSxDQUFDO1NBQ3RCLFVBQVUsQ0FBQyxVQUFVLENBQUM7U0FDdEIsT0FBTyxDQUFDLE9BQU8sQ0FBQztTQUNoQixhQUFhLENBQUMsYUFBYSxDQUFDO1NBQzVCLGFBQWEsQ0FBQyxh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RixDQUFDLENBQUMsQ0FBQztJQUVILGtDQUFrQztJQUVsQyxFQUFFLENBQUMsZ0NBQWdDLEVBQUU7UUFDbkMsTUFBTSxTQUFTLEdBQUcsSUFBSSw4QkFBd0IsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDckUsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFTLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzlFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDhCQUE4QixFQUFFO1FBQ2pDLE1BQU0sU0FBUyxHQUFHLElBQUksOEJBQXdCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdGLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5cbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuXG5pbXBvcnQgeyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIsIFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7IEFsbG9jYXRpb25SZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2xpYi9pZmFjZSc7XG5cbmNvbnN0IHVwZGF0ZUlkID0gJzEyMjA1YjBiMDI0YjZmNzJjNTQ4NDY5NjI3MWU4ZTg3ZDdjMWUwY2M3YmVkNWU5YzkwMTA4OGI0MWViZTk3YTA5YTQzJztcbmNvbnN0IG9wZXJhdG9ySWQgPSAndHJlYXN1cnktdG9rZW5pemF0aW9uLTE6OjEyMjA5MDZjYjZiMzY5ODkwMzI0ODgwYzk3N2E0NGQxMGU5MWI3MGI0Y2M5YWJlNjJkMDMxYmRhZmNmNWRhYmVjZjg5JztcbmNvbnN0IGNvbnRyYWN0SWQgPVxuICAnMDAyMDEwOGI3YWVlMGUwMjE1NTM4NjY4YTdlYmIwMGU3ZTgxMTEzNWZmMmViZjIzMTM3NzYwMDU2ZTA3N2I5MzQ3Y2ExMjEyMjBkZmEyNWNkOTA1Y2FiYTAxMzQ1YjUxNWQxMDAyYWY5NGIwYmEyYTljMmU5YTY3NTFjMDdlZDI4Nzk1NDU0YTllJztcbmNvbnN0IHRyYWRlSWQgPSAnQ0FTSC1UUkFERS02NjJBQTFCQSc7XG5jb25zdCB0cmFuc2ZlckxlZ0lkID0gJ0NBU0gtVFJBREUtNjYyQUExQkEtc2VjdXJpdHktbGVnJztcbmNvbnN0IHNlbmRlclBhcnR5SWQgPSAncmF2aS0yLXN0ZXAtcGFydHktbmV3OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMic7XG5jb25zdCByZWNlaXZlclBhcnR5SWQgPSAncmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyJztcbmNvbnN0IGFtb3VudCA9IDcwO1xuY29uc3QgdG9rZW4gPSAndGNhbnRvbjp0ZXN0dG9rZW4nO1xuY29uc3QgcmVjZWl2ZVRva2VuID0gJ3RjYW50b246dGVzdGNvaW4xJztcbmNvbnN0IHJlY2VpdmVBbW91bnQgPSA4MDtcbmNvbnN0IGFsbG9jYXRlQmVmb3JlID0gJzIwMjYtMDUtMDZUMTY6NDY6MTcuMTg0NjA5Wic7XG5jb25zdCBzZXR0bGVCZWZvcmUgPSAnMjAyNi0wNS0wN1QxNjo0NjoxNy4xODQ2MDlaJztcbmNvbnN0IGNvbW1lbnQgPSAnc2VjdXJpdHkgbGVnIGFsbG9jYXRpb24nO1xuXG4vLyBIZWxwZXIgdG8gc2V0IGFsbCByZXF1aXJlZCBmaWVsZHMgb24gYSBidWlsZGVyXG5mdW5jdGlvbiBidWlsZFdpdGhBbGxSZXF1aXJlZCh0eEJ1aWxkZXI6IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcik6IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlciB7XG4gIHJldHVybiB0eEJ1aWxkZXJcbiAgICAudXBkYXRlSWQodXBkYXRlSWQpXG4gICAgLm9wZXJhdG9ySWQob3BlcmF0b3JJZClcbiAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgLnRyYW5zZmVyTGVnSWQodHJhbnNmZXJMZWdJZClcbiAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKVxuICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgIC5hbW91bnQoYW1vdW50KVxuICAgIC50b2tlbih0b2tlbilcbiAgICAucmVjZWl2ZVRva2VuKHJlY2VpdmVUb2tlbilcbiAgICAucmVjZWl2ZUFtb3VudChyZWNlaXZlQW1vdW50KVxuICAgIC5hbGxvY2F0ZUJlZm9yZShhbGxvY2F0ZUJlZm9yZSlcbiAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSk7XG59XG5cbmRlc2NyaWJlKCdBbGxvY2F0aW9uUmVxdWVzdCBCdWlsZGVyJywgKCkgPT4ge1xuICBpdCgnc2hvdWxkIGJ1aWxkIHRoZSBhbGxvY2F0aW9uIHJlcXVlc3Qgb2JqZWN0IHdpdGggYWxsIGZpZWxkcycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBidWlsZFdpdGhBbGxSZXF1aXJlZCh0eEJ1aWxkZXIpLmNvbW1lbnQoY29tbWVudCk7XG4gICAgY29uc3QgcmVxdWVzdE9iajogQWxsb2NhdGlvblJlcXVlc3QgPSB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCk7XG4gICAgc2hvdWxkLmV4aXN0KHJlcXVlc3RPYmopO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLnVwZGF0ZUlkLCB1cGRhdGVJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmoub3BlcmF0b3JJZCwgb3BlcmF0b3JJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouY29udHJhY3RJZCwgY29udHJhY3RJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmoudHJhZGVJZCwgdHJhZGVJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmoudHJhbnNmZXJMZWdJZCwgdHJhbnNmZXJMZWdJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouc2VuZGVyUGFydHlJZCwgc2VuZGVyUGFydHlJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmoucmVjZWl2ZXJQYXJ0eUlkLCByZWNlaXZlclBhcnR5SWQpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLmFtb3VudCwgYW1vdW50KTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai50b2tlbiwgdG9rZW4pO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLnJlY2VpdmVUb2tlbiwgcmVjZWl2ZVRva2VuKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5yZWNlaXZlQW1vdW50LCByZWNlaXZlQW1vdW50KTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5hbGxvY2F0ZUJlZm9yZSwgYWxsb2NhdGVCZWZvcmUpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLnNldHRsZUJlZm9yZSwgc2V0dGxlQmVmb3JlKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5jb21tZW50LCBjb21tZW50KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCB0aGUgYWxsb2NhdGlvbiByZXF1ZXN0IG9iamVjdCB3aXRob3V0IG9wdGlvbmFsIGNvbW1lbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgYnVpbGRXaXRoQWxsUmVxdWlyZWQodHhCdWlsZGVyKTtcbiAgICBjb25zdCByZXF1ZXN0T2JqOiBBbGxvY2F0aW9uUmVxdWVzdCA9IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKTtcbiAgICBzaG91bGQuZXhpc3QocmVxdWVzdE9iaik7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouY29tbWVudCwgdW5kZWZpbmVkKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzZXQgdGhlIHRyYW5zYWN0aW9uIGlkIHRvIHRoZSB1cGRhdGVJZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0eEJ1aWxkZXIudXBkYXRlSWQodXBkYXRlSWQpO1xuICAgIGFzc2VydC5lcXVhbCh0eC5pZCwgdXBkYXRlSWQpO1xuICB9KTtcblxuICAvLyAtLS0gbWlzc2luZyByZXF1aXJlZCBmaWVsZCB0ZXN0cyAtLS1cblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHVwZGF0ZUlkIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSkpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLm9wZXJhdG9ySWQob3BlcmF0b3JJZClcbiAgICAgIC5jb250cmFjdElkKGNvbnRyYWN0SWQpXG4gICAgICAudHJhZGVJZCh0cmFkZUlkKVxuICAgICAgLnRyYW5zZmVyTGVnSWQodHJhbnNmZXJMZWdJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnRva2VuKHRva2VuKVxuICAgICAgLnJlY2VpdmVUb2tlbihyZWNlaXZlVG9rZW4pXG4gICAgICAucmVjZWl2ZUFtb3VudChyZWNlaXZlQW1vdW50KVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvdXBkYXRlSWQgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIG9wZXJhdG9ySWQgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIobmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKSk7XG4gICAgdHhCdWlsZGVyXG4gICAgICAudXBkYXRlSWQodXBkYXRlSWQpXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKVxuICAgICAgLnJlY2VpdmVyUGFydHlJZChyZWNlaXZlclBhcnR5SWQpXG4gICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgIC50b2tlbih0b2tlbilcbiAgICAgIC5yZWNlaXZlVG9rZW4ocmVjZWl2ZVRva2VuKVxuICAgICAgLnJlY2VpdmVBbW91bnQocmVjZWl2ZUFtb3VudClcbiAgICAgIC5hbGxvY2F0ZUJlZm9yZShhbGxvY2F0ZUJlZm9yZSlcbiAgICAgIC5zZXR0bGVCZWZvcmUoc2V0dGxlQmVmb3JlKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL29wZXJhdG9ySWQgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGNvbnRyYWN0SWQgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIobmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKSk7XG4gICAgdHhCdWlsZGVyXG4gICAgICAudXBkYXRlSWQodXBkYXRlSWQpXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKVxuICAgICAgLnJlY2VpdmVyUGFydHlJZChyZWNlaXZlclBhcnR5SWQpXG4gICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgIC50b2tlbih0b2tlbilcbiAgICAgIC5yZWNlaXZlVG9rZW4ocmVjZWl2ZVRva2VuKVxuICAgICAgLnJlY2VpdmVBbW91bnQocmVjZWl2ZUFtb3VudClcbiAgICAgIC5hbGxvY2F0ZUJlZm9yZShhbGxvY2F0ZUJlZm9yZSlcbiAgICAgIC5zZXR0bGVCZWZvcmUoc2V0dGxlQmVmb3JlKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL2NvbnRyYWN0SWQgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHRyYWRlSWQgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIobmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKSk7XG4gICAgdHhCdWlsZGVyXG4gICAgICAudXBkYXRlSWQodXBkYXRlSWQpXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKVxuICAgICAgLnJlY2VpdmVyUGFydHlJZChyZWNlaXZlclBhcnR5SWQpXG4gICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgIC50b2tlbih0b2tlbilcbiAgICAgIC5yZWNlaXZlVG9rZW4ocmVjZWl2ZVRva2VuKVxuICAgICAgLnJlY2VpdmVBbW91bnQocmVjZWl2ZUFtb3VudClcbiAgICAgIC5hbGxvY2F0ZUJlZm9yZShhbGxvY2F0ZUJlZm9yZSlcbiAgICAgIC5zZXR0bGVCZWZvcmUoc2V0dGxlQmVmb3JlKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL3RyYWRlSWQgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHRyYW5zZmVyTGVnSWQgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIobmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKSk7XG4gICAgdHhCdWlsZGVyXG4gICAgICAudXBkYXRlSWQodXBkYXRlSWQpXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKVxuICAgICAgLnJlY2VpdmVyUGFydHlJZChyZWNlaXZlclBhcnR5SWQpXG4gICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgIC50b2tlbih0b2tlbilcbiAgICAgIC5yZWNlaXZlVG9rZW4ocmVjZWl2ZVRva2VuKVxuICAgICAgLnJlY2VpdmVBbW91bnQocmVjZWl2ZUFtb3VudClcbiAgICAgIC5hbGxvY2F0ZUJlZm9yZShhbGxvY2F0ZUJlZm9yZSlcbiAgICAgIC5zZXR0bGVCZWZvcmUoc2V0dGxlQmVmb3JlKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL3RyYW5zZmVyTGVnSWQgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHNlbmRlclBhcnR5SWQgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIobmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKSk7XG4gICAgdHhCdWlsZGVyXG4gICAgICAudXBkYXRlSWQodXBkYXRlSWQpXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLnJlY2VpdmVyUGFydHlJZChyZWNlaXZlclBhcnR5SWQpXG4gICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgIC50b2tlbih0b2tlbilcbiAgICAgIC5yZWNlaXZlVG9rZW4ocmVjZWl2ZVRva2VuKVxuICAgICAgLnJlY2VpdmVBbW91bnQocmVjZWl2ZUFtb3VudClcbiAgICAgIC5hbGxvY2F0ZUJlZm9yZShhbGxvY2F0ZUJlZm9yZSlcbiAgICAgIC5zZXR0bGVCZWZvcmUoc2V0dGxlQmVmb3JlKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL3NlbmRlclBhcnR5SWQgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHJlY2VpdmVyUGFydHlJZCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcihuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpKTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC51cGRhdGVJZCh1cGRhdGVJZClcbiAgICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAucmVjZWl2ZVRva2VuKHJlY2VpdmVUb2tlbilcbiAgICAgIC5yZWNlaXZlQW1vdW50KHJlY2VpdmVBbW91bnQpXG4gICAgICAuYWxsb2NhdGVCZWZvcmUoYWxsb2NhdGVCZWZvcmUpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9yZWNlaXZlclBhcnR5SWQgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHRva2VuIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSkpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLnVwZGF0ZUlkKHVwZGF0ZUlkKVxuICAgICAgLm9wZXJhdG9ySWQob3BlcmF0b3JJZClcbiAgICAgIC5jb250cmFjdElkKGNvbnRyYWN0SWQpXG4gICAgICAudHJhZGVJZCh0cmFkZUlkKVxuICAgICAgLnRyYW5zZmVyTGVnSWQodHJhbnNmZXJMZWdJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnJlY2VpdmVUb2tlbihyZWNlaXZlVG9rZW4pXG4gICAgICAucmVjZWl2ZUFtb3VudChyZWNlaXZlQW1vdW50KVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvdG9rZW4gaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHJlY2VpdmVUb2tlbiBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcihuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpKTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC51cGRhdGVJZCh1cGRhdGVJZClcbiAgICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKVxuICAgICAgLnJlY2VpdmVyUGFydHlJZChyZWNlaXZlclBhcnR5SWQpXG4gICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgIC50b2tlbih0b2tlbilcbiAgICAgIC5yZWNlaXZlQW1vdW50KHJlY2VpdmVBbW91bnQpXG4gICAgICAuYWxsb2NhdGVCZWZvcmUoYWxsb2NhdGVCZWZvcmUpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9yZWNlaXZlVG9rZW4gaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGFtb3VudCB3YXMgbmV2ZXIgc2V0JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcihuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpKTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC51cGRhdGVJZCh1cGRhdGVJZClcbiAgICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKVxuICAgICAgLnJlY2VpdmVyUGFydHlJZChyZWNlaXZlclBhcnR5SWQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAucmVjZWl2ZVRva2VuKHJlY2VpdmVUb2tlbilcbiAgICAgIC5yZWNlaXZlQW1vdW50KHJlY2VpdmVBbW91bnQpXG4gICAgICAuYWxsb2NhdGVCZWZvcmUoYWxsb2NhdGVCZWZvcmUpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9hbW91bnQgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHJlY2VpdmVBbW91bnQgd2FzIG5ldmVyIHNldCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIobmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKSk7XG4gICAgdHhCdWlsZGVyXG4gICAgICAudXBkYXRlSWQodXBkYXRlSWQpXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLnNlbmRlclBhcnR5SWQoc2VuZGVyUGFydHlJZClcbiAgICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAucmVjZWl2ZVRva2VuKHJlY2VpdmVUb2tlbilcbiAgICAgIC5hbGxvY2F0ZUJlZm9yZShhbGxvY2F0ZUJlZm9yZSlcbiAgICAgIC5zZXR0bGVCZWZvcmUoc2V0dGxlQmVmb3JlKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL3JlY2VpdmVBbW91bnQgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGFsbG9jYXRlQmVmb3JlIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSkpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLnVwZGF0ZUlkKHVwZGF0ZUlkKVxuICAgICAgLm9wZXJhdG9ySWQob3BlcmF0b3JJZClcbiAgICAgIC5jb250cmFjdElkKGNvbnRyYWN0SWQpXG4gICAgICAudHJhZGVJZCh0cmFkZUlkKVxuICAgICAgLnRyYW5zZmVyTGVnSWQodHJhbnNmZXJMZWdJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnRva2VuKHRva2VuKVxuICAgICAgLnJlY2VpdmVUb2tlbihyZWNlaXZlVG9rZW4pXG4gICAgICAucmVjZWl2ZUFtb3VudChyZWNlaXZlQW1vdW50KVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvYWxsb2NhdGVCZWZvcmUgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHNldHRsZUJlZm9yZSBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcihuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpKTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC51cGRhdGVJZCh1cGRhdGVJZClcbiAgICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKVxuICAgICAgLnJlY2VpdmVyUGFydHlJZChyZWNlaXZlclBhcnR5SWQpXG4gICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgIC50b2tlbih0b2tlbilcbiAgICAgIC5yZWNlaXZlVG9rZW4ocmVjZWl2ZVRva2VuKVxuICAgICAgLnJlY2VpdmVBbW91bnQocmVjZWl2ZUFtb3VudClcbiAgICAgIC5hbGxvY2F0ZUJlZm9yZShhbGxvY2F0ZUJlZm9yZSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9zZXR0bGVCZWZvcmUgaXMgbWlzc2luZy8pO1xuICB9KTtcblxuICAvLyAtLS0gaW52YWxpZCBzZXR0ZXIgYXJndW1lbnQgdGVzdHMgLS0tXG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiB1cGRhdGVJZCBpcyBhbiBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudXBkYXRlSWQoJycpLCAvdXBkYXRlSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBvcGVyYXRvcklkIGlzIGFuIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5vcGVyYXRvcklkKCcnKSwgL29wZXJhdG9ySWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBjb250cmFjdElkIGlzIGFuIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5jb250cmFjdElkKCcnKSwgL2NvbnRyYWN0SWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhY2NlcHQgbnVsbCBjb250cmFjdElkIGFuZCBvbWl0IGl0IGZyb20gdGhlIHJlcXVlc3Qgb2JqZWN0JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLnVwZGF0ZUlkKHVwZGF0ZUlkKVxuICAgICAgLm9wZXJhdG9ySWQob3BlcmF0b3JJZClcbiAgICAgIC5jb250cmFjdElkKG51bGwpXG4gICAgICAudHJhZGVJZCh0cmFkZUlkKVxuICAgICAgLnRyYW5zZmVyTGVnSWQodHJhbnNmZXJMZWdJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnRva2VuKHRva2VuKVxuICAgICAgLnJlY2VpdmVUb2tlbihyZWNlaXZlVG9rZW4pXG4gICAgICAucmVjZWl2ZUFtb3VudChyZWNlaXZlQW1vdW50KVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpO1xuICAgIGNvbnN0IHJlcXVlc3RPYmo6IEFsbG9jYXRpb25SZXF1ZXN0ID0gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLmNvbnRyYWN0SWQsIHVuZGVmaW5lZCwgJ2NvbnRyYWN0SWQgc2hvdWxkIGJlIGFic2VudCB3aGVuIHNldCB0byBudWxsJyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgdHJhZGVJZCBpcyBhbiBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudHJhZGVJZCgnJyksIC90cmFkZUlkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgdHJhbnNmZXJMZWdJZCBpcyBhbiBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudHJhbnNmZXJMZWdJZCgnJyksIC90cmFuc2ZlckxlZ0lkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgc2VuZGVyUGFydHlJZCBpcyBhbiBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIuc2VuZGVyUGFydHlJZCgnJyksIC9zZW5kZXJQYXJ0eUlkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgcmVjZWl2ZXJQYXJ0eUlkIGlzIGFuIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5yZWNlaXZlclBhcnR5SWQoJycpLCAvcmVjZWl2ZXJQYXJ0eUlkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgYW1vdW50IGlzIHplcm8nLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIuYW1vdW50KDApLCAvYW1vdW50IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBhbW91bnQgaXMgbmVnYXRpdmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIuYW1vdW50KC01KSwgL2Ftb3VudCBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgdG9rZW4gaXMgYW4gZW1wdHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRva2VuKCcnKSwgL3Rva2VuIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgcmVjZWl2ZVRva2VuIGlzIGFuIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5yZWNlaXZlVG9rZW4oJycpLCAvcmVjZWl2ZVRva2VuIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgcmVjZWl2ZUFtb3VudCBpcyB6ZXJvJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnJlY2VpdmVBbW91bnQoMCksIC9yZWNlaXZlQW1vdW50IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiByZWNlaXZlQW1vdW50IGlzIG5lZ2F0aXZlJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnJlY2VpdmVBbW91bnQoLTEpLCAvcmVjZWl2ZUFtb3VudCBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgYWxsb2NhdGVCZWZvcmUgaXMgYW4gZW1wdHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmFsbG9jYXRlQmVmb3JlKCcnKSwgL2FsbG9jYXRlQmVmb3JlIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgc2V0dGxlQmVmb3JlIGlzIGFuIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5zZXR0bGVCZWZvcmUoJycpLCAvc2V0dGxlQmVmb3JlIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nLyk7XG4gIH0pO1xuXG4gIC8vIC0tLSBub3QtaW1wbGVtZW50ZWQgbWV0aG9kcyAtLS1cblxuICBpdCgnc2hvdWxkIHRocm93IG9uIHNldFRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnNldFRyYW5zYWN0aW9uKHt9IGFzIGFueSksIC9Ob3QgaW1wbGVtZW50ZWQvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBvbiBhZGRTaWduYXR1cmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIuYWRkU2lnbmF0dXJlKHt9IGFzIGFueSwgQnVmZmVyLmZyb20oJycpKSwgL05vdCBpbXBsZW1lbnRlZC8pO1xuICB9KTtcbn0pO1xuIl19
437
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2J1aWxkZXIvYWxsb2NhdGlvblJlcXVlc3QvYWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUU1Qiw0Q0FBdUM7QUFFdkMseUNBQXdFO0FBR3hFLE1BQU0sUUFBUSxHQUFHLHNFQUFzRSxDQUFDO0FBQ3hGLE1BQU0sVUFBVSxHQUFHLCtGQUErRixDQUFDO0FBQ25ILE1BQU0sVUFBVSxHQUNkLDRJQUE0SSxDQUFDO0FBQy9JLE1BQU0sT0FBTyxHQUFHLHFCQUFxQixDQUFDO0FBQ3RDLE1BQU0sYUFBYSxHQUFHLGtDQUFrQyxDQUFDO0FBQ3pELE1BQU0sYUFBYSxHQUFHLDZGQUE2RixDQUFDO0FBQ3BILE1BQU0sZUFBZSxHQUFHLHlGQUF5RixDQUFDO0FBQ2xILE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNsQixNQUFNLEtBQUssR0FBRyxtQkFBbUIsQ0FBQztBQUNsQyxNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQztBQUN6QyxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFDekIsTUFBTSxjQUFjLEdBQUcsNkJBQTZCLENBQUM7QUFDckQsTUFBTSxZQUFZLEdBQUcsNkJBQTZCLENBQUM7QUFDbkQsTUFBTSxPQUFPLEdBQUcseUJBQXlCLENBQUM7QUFFMUMsaURBQWlEO0FBQ2pELFNBQVMsb0JBQW9CLENBQUMsU0FBbUM7SUFDL0QsT0FBTyxTQUFTO1NBQ2IsUUFBUSxDQUFDLFFBQVEsQ0FBQztTQUNsQixVQUFVLENBQUMsVUFBVSxDQUFDO1NBQ3RCLFVBQVUsQ0FBQyxVQUFVLENBQUM7U0FDdEIsT0FBTyxDQUFDLE9BQU8sQ0FBQztTQUNoQixhQUFhLENBQUMsYUFBYSxDQUFDO1NBQzVCLGFBQWEsQ0FBQyxh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RyxFQUFFLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsRUFBRSwyQ0FBMkMsQ0FBQyxDQUFDO0lBQ2pHLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGlEQUFpRCxFQUFFO1FBQ3BELE1BQU0sU0FBUyxHQUFHLElBQUksOEJBQXdCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUseUNBQXlDLENBQUMsQ0FBQztJQUM3RixDQUFDLENBQUMsQ0FBQztJQUVILGtDQUFrQztJQUVsQyxFQUFFLENBQUMsZ0NBQWdDLEVBQUU7UUFDbkMsTUFBTSxTQUFTLEdBQUcsSUFBSSw4QkFBd0IsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDckUsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFTLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzlFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDhCQUE4QixFQUFFO1FBQ2pDLE1BQU0sU0FBUyxHQUFHLElBQUksOEJBQXdCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdGLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5cbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuXG5pbXBvcnQgeyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIsIFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7IEFsbG9jYXRpb25SZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2xpYi9pZmFjZSc7XG5cbmNvbnN0IHVwZGF0ZUlkID0gJzEyMjA1YjBiMDI0YjZmNzJjNTQ4NDY5NjI3MWU4ZTg3ZDdjMWUwY2M3YmVkNWU5YzkwMTA4OGI0MWViZTk3YTA5YTQzJztcbmNvbnN0IG9wZXJhdG9ySWQgPSAndHJlYXN1cnktdG9rZW5pemF0aW9uLTE6OjEyMjA5MDZjYjZiMzY5ODkwMzI0ODgwYzk3N2E0NGQxMGU5MWI3MGI0Y2M5YWJlNjJkMDMxYmRhZmNmNWRhYmVjZjg5JztcbmNvbnN0IGNvbnRyYWN0SWQgPVxuICAnMDAyMDEwOGI3YWVlMGUwMjE1NTM4NjY4YTdlYmIwMGU3ZTgxMTEzNWZmMmViZjIzMTM3NzYwMDU2ZTA3N2I5MzQ3Y2ExMjEyMjBkZmEyNWNkOTA1Y2FiYTAxMzQ1YjUxNWQxMDAyYWY5NGIwYmEyYTljMmU5YTY3NTFjMDdlZDI4Nzk1NDU0YTllJztcbmNvbnN0IHRyYWRlSWQgPSAnQ0FTSC1UUkFERS02NjJBQTFCQSc7XG5jb25zdCB0cmFuc2ZlckxlZ0lkID0gJ0NBU0gtVFJBREUtNjYyQUExQkEtc2VjdXJpdHktbGVnJztcbmNvbnN0IHNlbmRlclBhcnR5SWQgPSAncmF2aS0yLXN0ZXAtcGFydHktbmV3OjoxMjIwOTJlN2QzM2FjMTBjMGYzZDU1OTc2MzQyZjM3NTU1ZGYwNWRhNWI3NDI5NTZkNTZhNjJhZTIzNjc3NjkwNzlkMic7XG5jb25zdCByZWNlaXZlclBhcnR5SWQgPSAncmF2aS0yLXN0ZXAtcGFydHk6OjEyMjA5MmU3ZDMzYWMxMGMwZjNkNTU5NzYzNDJmMzc1NTVkZjA1ZGE1Yjc0Mjk1NmQ1NmE2MmFlMjM2Nzc2OTA3OWQyJztcbmNvbnN0IGFtb3VudCA9IDcwO1xuY29uc3QgdG9rZW4gPSAndGNhbnRvbjp0ZXN0dG9rZW4nO1xuY29uc3QgcmVjZWl2ZVRva2VuID0gJ3RjYW50b246dGVzdGNvaW4xJztcbmNvbnN0IHJlY2VpdmVBbW91bnQgPSA4MDtcbmNvbnN0IGFsbG9jYXRlQmVmb3JlID0gJzIwMjYtMDUtMDZUMTY6NDY6MTcuMTg0NjA5Wic7XG5jb25zdCBzZXR0bGVCZWZvcmUgPSAnMjAyNi0wNS0wN1QxNjo0NjoxNy4xODQ2MDlaJztcbmNvbnN0IGNvbW1lbnQgPSAnc2VjdXJpdHkgbGVnIGFsbG9jYXRpb24nO1xuXG4vLyBIZWxwZXIgdG8gc2V0IGFsbCByZXF1aXJlZCBmaWVsZHMgb24gYSBidWlsZGVyXG5mdW5jdGlvbiBidWlsZFdpdGhBbGxSZXF1aXJlZCh0eEJ1aWxkZXI6IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcik6IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlciB7XG4gIHJldHVybiB0eEJ1aWxkZXJcbiAgICAudXBkYXRlSWQodXBkYXRlSWQpXG4gICAgLm9wZXJhdG9ySWQob3BlcmF0b3JJZClcbiAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgLnRyYW5zZmVyTGVnSWQodHJhbnNmZXJMZWdJZClcbiAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKVxuICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgIC5hbW91bnQoYW1vdW50KVxuICAgIC50b2tlbih0b2tlbilcbiAgICAucmVjZWl2ZVRva2VuKHJlY2VpdmVUb2tlbilcbiAgICAucmVjZWl2ZUFtb3VudChyZWNlaXZlQW1vdW50KVxuICAgIC5hbGxvY2F0ZUJlZm9yZShhbGxvY2F0ZUJlZm9yZSlcbiAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSk7XG59XG5cbmRlc2NyaWJlKCdBbGxvY2F0aW9uUmVxdWVzdCBCdWlsZGVyJywgKCkgPT4ge1xuICBpdCgnc2hvdWxkIGJ1aWxkIHRoZSBhbGxvY2F0aW9uIHJlcXVlc3Qgb2JqZWN0IHdpdGggYWxsIGZpZWxkcycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBidWlsZFdpdGhBbGxSZXF1aXJlZCh0eEJ1aWxkZXIpLmNvbW1lbnQoY29tbWVudCk7XG4gICAgY29uc3QgcmVxdWVzdE9iajogQWxsb2NhdGlvblJlcXVlc3QgPSB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCk7XG4gICAgc2hvdWxkLmV4aXN0KHJlcXVlc3RPYmopO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLnVwZGF0ZUlkLCB1cGRhdGVJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmoub3BlcmF0b3JJZCwgb3BlcmF0b3JJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouY29udHJhY3RJZCwgY29udHJhY3RJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmoudHJhZGVJZCwgdHJhZGVJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmoudHJhbnNmZXJMZWdJZCwgdHJhbnNmZXJMZWdJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouc2VuZGVyUGFydHlJZCwgc2VuZGVyUGFydHlJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmoucmVjZWl2ZXJQYXJ0eUlkLCByZWNlaXZlclBhcnR5SWQpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLmFtb3VudCwgYW1vdW50KTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai50b2tlbiwgdG9rZW4pO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLnJlY2VpdmVUb2tlbiwgcmVjZWl2ZVRva2VuKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5yZWNlaXZlQW1vdW50LCByZWNlaXZlQW1vdW50KTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5hbGxvY2F0ZUJlZm9yZSwgYWxsb2NhdGVCZWZvcmUpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLnNldHRsZUJlZm9yZSwgc2V0dGxlQmVmb3JlKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5jb21tZW50LCBjb21tZW50KTtcbiAgfSk7XG4gIGl0KCdzaG91bGQgcHJlc2VydmUgbGFyZ2UgYWxsb2NhdGlvbiBhbW91bnRzIHRocm91Z2ggc2VyaWFsaXplZCByZXF1ZXN0IGRhdGEnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgY29uc3QgYW1vdW50ID0gJzM2ODY4NjE1ODg4OTQxOTAwJztcbiAgICBjb25zdCByZWNlaXZlQW1vdW50ID0gJzEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCc7XG4gICAgdHhCdWlsZGVyXG4gICAgICAudXBkYXRlSWQodXBkYXRlSWQpXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLnNlbmRlclBhcnR5SWQoc2VuZGVyUGFydHlJZClcbiAgICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAucmVjZWl2ZVRva2VuKHJlY2VpdmVUb2tlbilcbiAgICAgIC5yZWNlaXZlQW1vdW50KHJlY2VpdmVBbW91bnQpXG4gICAgICAuYWxsb2NhdGVCZWZvcmUoYWxsb2NhdGVCZWZvcmUpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSk7XG5cbiAgICBjb25zdCByZXF1ZXN0T2JqID0gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0T2JqLmFtb3VudCwgYW1vdW50KTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVxdWVzdE9iai5yZWNlaXZlQW1vdW50LCByZWNlaXZlQW1vdW50KTtcbiAgICB0eC5hbGxvY2F0aW9uUmVxdWVzdERhdGEgPSByZXF1ZXN0T2JqO1xuXG4gICAgY29uc3QgcGFyc2VkVHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHBhcnNlZFR4LmZyb21SYXdUcmFuc2FjdGlvbih0eC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICBjb25zdCBwYXJzZWREYXRhID0gcGFyc2VkVHgudG9Kc29uKCkuYWxsb2NhdGlvblJlcXVlc3REYXRhO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZWREYXRhPy5hbW91bnQsIGFtb3VudCk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlZERhdGE/LnJlY2VpdmVBbW91bnQsIHJlY2VpdmVBbW91bnQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJ1aWxkIHRoZSBhbGxvY2F0aW9uIHJlcXVlc3Qgb2JqZWN0IHdpdGhvdXQgb3B0aW9uYWwgY29tbWVudCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBidWlsZFdpdGhBbGxSZXF1aXJlZCh0eEJ1aWxkZXIpO1xuICAgIGNvbnN0IHJlcXVlc3RPYmo6IEFsbG9jYXRpb25SZXF1ZXN0ID0gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpO1xuICAgIHNob3VsZC5leGlzdChyZXF1ZXN0T2JqKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5jb21tZW50LCB1bmRlZmluZWQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHNldCB0aGUgdHJhbnNhY3Rpb24gaWQgdG8gdGhlIHVwZGF0ZUlkJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlci51cGRhdGVJZCh1cGRhdGVJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHR4LmlkLCB1cGRhdGVJZCk7XG4gIH0pO1xuXG4gIC8vIC0tLSBtaXNzaW5nIHJlcXVpcmVkIGZpZWxkIHRlc3RzIC0tLVxuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgdXBkYXRlSWQgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIobmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKSk7XG4gICAgdHhCdWlsZGVyXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLnNlbmRlclBhcnR5SWQoc2VuZGVyUGFydHlJZClcbiAgICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAucmVjZWl2ZVRva2VuKHJlY2VpdmVUb2tlbilcbiAgICAgIC5yZWNlaXZlQW1vdW50KHJlY2VpdmVBbW91bnQpXG4gICAgICAuYWxsb2NhdGVCZWZvcmUoYWxsb2NhdGVCZWZvcmUpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC91cGRhdGVJZCBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgb3BlcmF0b3JJZCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcihuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpKTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC51cGRhdGVJZCh1cGRhdGVJZClcbiAgICAgIC5jb250cmFjdElkKGNvbnRyYWN0SWQpXG4gICAgICAudHJhZGVJZCh0cmFkZUlkKVxuICAgICAgLnRyYW5zZmVyTGVnSWQodHJhbnNmZXJMZWdJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnRva2VuKHRva2VuKVxuICAgICAgLnJlY2VpdmVUb2tlbihyZWNlaXZlVG9rZW4pXG4gICAgICAucmVjZWl2ZUFtb3VudChyZWNlaXZlQW1vdW50KVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvb3BlcmF0b3JJZCBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgY29udHJhY3RJZCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcihuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpKTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC51cGRhdGVJZCh1cGRhdGVJZClcbiAgICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgICAudHJhZGVJZCh0cmFkZUlkKVxuICAgICAgLnRyYW5zZmVyTGVnSWQodHJhbnNmZXJMZWdJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnRva2VuKHRva2VuKVxuICAgICAgLnJlY2VpdmVUb2tlbihyZWNlaXZlVG9rZW4pXG4gICAgICAucmVjZWl2ZUFtb3VudChyZWNlaXZlQW1vdW50KVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvY29udHJhY3RJZCBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgdHJhZGVJZCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcihuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpKTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC51cGRhdGVJZCh1cGRhdGVJZClcbiAgICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnRyYW5zZmVyTGVnSWQodHJhbnNmZXJMZWdJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnRva2VuKHRva2VuKVxuICAgICAgLnJlY2VpdmVUb2tlbihyZWNlaXZlVG9rZW4pXG4gICAgICAucmVjZWl2ZUFtb3VudChyZWNlaXZlQW1vdW50KVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvdHJhZGVJZCBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgdHJhbnNmZXJMZWdJZCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcihuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpKTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC51cGRhdGVJZCh1cGRhdGVJZClcbiAgICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnRva2VuKHRva2VuKVxuICAgICAgLnJlY2VpdmVUb2tlbihyZWNlaXZlVG9rZW4pXG4gICAgICAucmVjZWl2ZUFtb3VudChyZWNlaXZlQW1vdW50KVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvdHJhbnNmZXJMZWdJZCBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgc2VuZGVyUGFydHlJZCBpcyBtaXNzaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcihuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpKTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC51cGRhdGVJZCh1cGRhdGVJZClcbiAgICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnRva2VuKHRva2VuKVxuICAgICAgLnJlY2VpdmVUb2tlbihyZWNlaXZlVG9rZW4pXG4gICAgICAucmVjZWl2ZUFtb3VudChyZWNlaXZlQW1vdW50KVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvc2VuZGVyUGFydHlJZCBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgcmVjZWl2ZXJQYXJ0eUlkIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSkpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLnVwZGF0ZUlkKHVwZGF0ZUlkKVxuICAgICAgLm9wZXJhdG9ySWQob3BlcmF0b3JJZClcbiAgICAgIC5jb250cmFjdElkKGNvbnRyYWN0SWQpXG4gICAgICAudHJhZGVJZCh0cmFkZUlkKVxuICAgICAgLnRyYW5zZmVyTGVnSWQodHJhbnNmZXJMZWdJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpXG4gICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgIC50b2tlbih0b2tlbilcbiAgICAgIC5yZWNlaXZlVG9rZW4ocmVjZWl2ZVRva2VuKVxuICAgICAgLnJlY2VpdmVBbW91bnQocmVjZWl2ZUFtb3VudClcbiAgICAgIC5hbGxvY2F0ZUJlZm9yZShhbGxvY2F0ZUJlZm9yZSlcbiAgICAgIC5zZXR0bGVCZWZvcmUoc2V0dGxlQmVmb3JlKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL3JlY2VpdmVyUGFydHlJZCBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgdG9rZW4gaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIobmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKSk7XG4gICAgdHhCdWlsZGVyXG4gICAgICAudXBkYXRlSWQodXBkYXRlSWQpXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLnNlbmRlclBhcnR5SWQoc2VuZGVyUGFydHlJZClcbiAgICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAucmVjZWl2ZVRva2VuKHJlY2VpdmVUb2tlbilcbiAgICAgIC5yZWNlaXZlQW1vdW50KHJlY2VpdmVBbW91bnQpXG4gICAgICAuYWxsb2NhdGVCZWZvcmUoYWxsb2NhdGVCZWZvcmUpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC90b2tlbiBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgcmVjZWl2ZVRva2VuIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSkpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLnVwZGF0ZUlkKHVwZGF0ZUlkKVxuICAgICAgLm9wZXJhdG9ySWQob3BlcmF0b3JJZClcbiAgICAgIC5jb250cmFjdElkKGNvbnRyYWN0SWQpXG4gICAgICAudHJhZGVJZCh0cmFkZUlkKVxuICAgICAgLnRyYW5zZmVyTGVnSWQodHJhbnNmZXJMZWdJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnRva2VuKHRva2VuKVxuICAgICAgLnJlY2VpdmVBbW91bnQocmVjZWl2ZUFtb3VudClcbiAgICAgIC5hbGxvY2F0ZUJlZm9yZShhbGxvY2F0ZUJlZm9yZSlcbiAgICAgIC5zZXR0bGVCZWZvcmUoc2V0dGxlQmVmb3JlKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL3JlY2VpdmVUb2tlbiBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgYW1vdW50IHdhcyBuZXZlciBzZXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSkpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLnVwZGF0ZUlkKHVwZGF0ZUlkKVxuICAgICAgLm9wZXJhdG9ySWQob3BlcmF0b3JJZClcbiAgICAgIC5jb250cmFjdElkKGNvbnRyYWN0SWQpXG4gICAgICAudHJhZGVJZCh0cmFkZUlkKVxuICAgICAgLnRyYW5zZmVyTGVnSWQodHJhbnNmZXJMZWdJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC50b2tlbih0b2tlbilcbiAgICAgIC5yZWNlaXZlVG9rZW4ocmVjZWl2ZVRva2VuKVxuICAgICAgLnJlY2VpdmVBbW91bnQocmVjZWl2ZUFtb3VudClcbiAgICAgIC5hbGxvY2F0ZUJlZm9yZShhbGxvY2F0ZUJlZm9yZSlcbiAgICAgIC5zZXR0bGVCZWZvcmUoc2V0dGxlQmVmb3JlKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL2Ftb3VudCBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgcmVjZWl2ZUFtb3VudCB3YXMgbmV2ZXIgc2V0JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcihuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpKTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC51cGRhdGVJZCh1cGRhdGVJZClcbiAgICAgIC5vcGVyYXRvcklkKG9wZXJhdG9ySWQpXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnRyYWRlSWQodHJhZGVJZClcbiAgICAgIC50cmFuc2ZlckxlZ0lkKHRyYW5zZmVyTGVnSWQpXG4gICAgICAuc2VuZGVyUGFydHlJZChzZW5kZXJQYXJ0eUlkKVxuICAgICAgLnJlY2VpdmVyUGFydHlJZChyZWNlaXZlclBhcnR5SWQpXG4gICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgIC50b2tlbih0b2tlbilcbiAgICAgIC5yZWNlaXZlVG9rZW4ocmVjZWl2ZVRva2VuKVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKVxuICAgICAgLnNldHRsZUJlZm9yZShzZXR0bGVCZWZvcmUpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvcmVjZWl2ZUFtb3VudCBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgYWxsb2NhdGVCZWZvcmUgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIobmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKSk7XG4gICAgdHhCdWlsZGVyXG4gICAgICAudXBkYXRlSWQodXBkYXRlSWQpXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLnNlbmRlclBhcnR5SWQoc2VuZGVyUGFydHlJZClcbiAgICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAucmVjZWl2ZVRva2VuKHJlY2VpdmVUb2tlbilcbiAgICAgIC5yZWNlaXZlQW1vdW50KHJlY2VpdmVBbW91bnQpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9hbGxvY2F0ZUJlZm9yZSBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgc2V0dGxlQmVmb3JlIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSkpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLnVwZGF0ZUlkKHVwZGF0ZUlkKVxuICAgICAgLm9wZXJhdG9ySWQob3BlcmF0b3JJZClcbiAgICAgIC5jb250cmFjdElkKGNvbnRyYWN0SWQpXG4gICAgICAudHJhZGVJZCh0cmFkZUlkKVxuICAgICAgLnRyYW5zZmVyTGVnSWQodHJhbnNmZXJMZWdJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpXG4gICAgICAucmVjZWl2ZXJQYXJ0eUlkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnRva2VuKHRva2VuKVxuICAgICAgLnJlY2VpdmVUb2tlbihyZWNlaXZlVG9rZW4pXG4gICAgICAucmVjZWl2ZUFtb3VudChyZWNlaXZlQW1vdW50KVxuICAgICAgLmFsbG9jYXRlQmVmb3JlKGFsbG9jYXRlQmVmb3JlKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKSwgL3NldHRsZUJlZm9yZSBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIC8vIC0tLSBpbnZhbGlkIHNldHRlciBhcmd1bWVudCB0ZXN0cyAtLS1cblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHVwZGF0ZUlkIGlzIGFuIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci51cGRhdGVJZCgnJyksIC91cGRhdGVJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIG9wZXJhdG9ySWQgaXMgYW4gZW1wdHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLm9wZXJhdG9ySWQoJycpLCAvb3BlcmF0b3JJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGNvbnRyYWN0SWQgaXMgYW4gZW1wdHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmNvbnRyYWN0SWQoJycpLCAvY29udHJhY3RJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFjY2VwdCBudWxsIGNvbnRyYWN0SWQgYW5kIG9taXQgaXQgZnJvbSB0aGUgcmVxdWVzdCBvYmplY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdHhCdWlsZGVyXG4gICAgICAudXBkYXRlSWQodXBkYXRlSWQpXG4gICAgICAub3BlcmF0b3JJZChvcGVyYXRvcklkKVxuICAgICAgLmNvbnRyYWN0SWQobnVsbClcbiAgICAgIC50cmFkZUlkKHRyYWRlSWQpXG4gICAgICAudHJhbnNmZXJMZWdJZCh0cmFuc2ZlckxlZ0lkKVxuICAgICAgLnNlbmRlclBhcnR5SWQoc2VuZGVyUGFydHlJZClcbiAgICAgIC5yZWNlaXZlclBhcnR5SWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAudG9rZW4odG9rZW4pXG4gICAgICAucmVjZWl2ZVRva2VuKHJlY2VpdmVUb2tlbilcbiAgICAgIC5yZWNlaXZlQW1vdW50KHJlY2VpdmVBbW91bnQpXG4gICAgICAuYWxsb2NhdGVCZWZvcmUoYWxsb2NhdGVCZWZvcmUpXG4gICAgICAuc2V0dGxlQmVmb3JlKHNldHRsZUJlZm9yZSk7XG4gICAgY29uc3QgcmVxdWVzdE9iajogQWxsb2NhdGlvblJlcXVlc3QgPSB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouY29udHJhY3RJZCwgdW5kZWZpbmVkLCAnY29udHJhY3RJZCBzaG91bGQgYmUgYWJzZW50IHdoZW4gc2V0IHRvIG51bGwnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiB0cmFkZUlkIGlzIGFuIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50cmFkZUlkKCcnKSwgL3RyYWRlSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiB0cmFuc2ZlckxlZ0lkIGlzIGFuIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci50cmFuc2ZlckxlZ0lkKCcnKSwgL3RyYW5zZmVyTGVnSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBzZW5kZXJQYXJ0eUlkIGlzIGFuIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5zZW5kZXJQYXJ0eUlkKCcnKSwgL3NlbmRlclBhcnR5SWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiByZWNlaXZlclBhcnR5SWQgaXMgYW4gZW1wdHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnJlY2VpdmVyUGFydHlJZCgnJyksIC9yZWNlaXZlclBhcnR5SWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBhbW91bnQgaXMgemVybycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5hbW91bnQoMCksIC9hbW91bnQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlci8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGFtb3VudCBpcyBuZWdhdGl2ZScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5hbW91bnQoLTUpLCAvYW1vdW50IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiB0b2tlbiBpcyBhbiBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9rZW4oJycpLCAvdG9rZW4gbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiByZWNlaXZlVG9rZW4gaXMgYW4gZW1wdHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnJlY2VpdmVUb2tlbignJyksIC9yZWNlaXZlVG9rZW4gbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiByZWNlaXZlQW1vdW50IGlzIHplcm8nLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIucmVjZWl2ZUFtb3VudCgwKSwgL3JlY2VpdmVBbW91bnQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlci8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHJlY2VpdmVBbW91bnQgaXMgbmVnYXRpdmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIucmVjZWl2ZUFtb3VudCgtMSksIC9yZWNlaXZlQW1vdW50IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBhbGxvY2F0ZUJlZm9yZSBpcyBhbiBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIuYWxsb2NhdGVCZWZvcmUoJycpLCAvYWxsb2NhdGVCZWZvcmUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBzZXR0bGVCZWZvcmUgaXMgYW4gZW1wdHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBBbGxvY2F0aW9uUmVxdWVzdEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnNldHRsZUJlZm9yZSgnJyksIC9zZXR0bGVCZWZvcmUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgLy8gLS0tIG5vdC1pbXBsZW1lbnRlZCBtZXRob2RzIC0tLVxuXG4gIGl0KCdzaG91bGQgdGhyb3cgb24gc2V0VHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IEFsbG9jYXRpb25SZXF1ZXN0QnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIuc2V0VHJhbnNhY3Rpb24oe30gYXMgYW55KSwgL05vdCBpbXBsZW1lbnRlZC8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IG9uIGFkZFNpZ25hdHVyZScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQWxsb2NhdGlvblJlcXVlc3RCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5hZGRTaWduYXR1cmUoe30gYXMgYW55LCBCdWZmZXIuZnJvbSgnJykpLCAvTm90IGltcGxlbWVudGVkLyk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -51,6 +51,22 @@ describe('Transfer Builder', () => {
51
51
  assert_1.default.equal(requestObj.amount, amount);
52
52
  assert_1.default.equal(requestObj.expiryEpoch, expiryEpoch);
53
53
  });
54
+ it('should preserve a large transfer amount', function () {
55
+ const txBuilder = new src_1.TransferBuilder(statics_1.coins.get('tcanton'));
56
+ const transferTx = new src_1.Transaction(statics_1.coins.get('tcanton'));
57
+ txBuilder.initBuilder(transferTx);
58
+ txBuilder.setTransaction(resources_1.TrasferPrepareResponse);
59
+ const { commandId, senderPartyId, receiverPartyId, sendOneStep, expiryEpoch } = resources_1.TransferObj;
60
+ const amount = '36868615888941900';
61
+ txBuilder
62
+ .commandId(commandId)
63
+ .senderId(senderPartyId)
64
+ .receiverId(receiverPartyId)
65
+ .amount(amount)
66
+ .sendOneStep(sendOneStep)
67
+ .expiryEpoch(expiryEpoch);
68
+ assert_1.default.strictEqual(txBuilder.toRequestObject().amount, amount);
69
+ });
54
70
  it('should validate raw transaction', function () {
55
71
  const txBuilder = new src_1.TransferBuilder(statics_1.coins.get('tcanton'));
56
72
  const transferTx = new src_1.Transaction(statics_1.coins.get('tcanton'));
@@ -81,4 +97,4 @@ describe('Transfer Builder', () => {
81
97
  }
82
98
  });
83
99
  });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2J1aWxkZXIvdHJhbnNmZXIvdHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUU1Qiw0Q0FBdUM7QUFFdkMseUNBQStEO0FBRy9ELGtEQUE2RztBQUU3RyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO0lBQ2hDLEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRTtRQUMzQyxNQUFNLFNBQVMsR0FBRyxJQUFJLHFCQUFlLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzVELE1BQU0sVUFBVSxHQUFHLElBQUksaUJBQVcsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDekQsU0FBUyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQyxTQUFTLENBQUMsY0FBYyxDQUFDLGtDQUFzQixDQUFDLENBQUM7UUFDakQsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsdUJBQVcsQ0FBQztRQUNwRyxTQUFTO2FBQ04sU0FBUyxDQUFDLFNBQVMsQ0FBQzthQUNwQixRQUFRLENBQUMsYUFBYSxDQUFDO2FBQ3ZCLFVBQVUsQ0FBQyxlQUFlLENBQUM7YUFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQzthQUNkLFdBQVcsQ0FBQyxXQUFXLENBQUM7YUFDeEIsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVCLE1BQU0sVUFBVSxHQUEwQixTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdEUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekIsZ0JBQU0sQ0FBQyxLQUFL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YyxHQUFHLGtDQUFzQixDQUFDO1FBQ25ELFNBQVMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxrQ0FBc0IsQ0FBQyxDQUFDO1FBQ2pELFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxrREFBa0QsRUFBRTtRQUNyRCxNQUFNLFNBQVMsR0FBRyxJQUFJLHFCQUFlLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzVELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxpQkFBVyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNuRSxTQUFTLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDNUMsTUFBTSxzQkFBc0IsR0FBRyxrQ0FBc0IsQ0FBQztRQUN0RCxzQkFBc0IsQ0FBQyx1QkFBdUIsR0FBRyw4Q0FBOEMsQ0FBQztRQUNoRyxTQUFTLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDO1lBQ0gsU0FBUyxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLDRDQUE0QyxDQUFDLENBQUM7UUFDeEUsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5cbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuXG5pbXBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIsIFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7IENhbnRvblRyYW5zZmVyUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9saWIvaWZhY2UnO1xuXG5pbXBvcnQgeyBDYW50b25Ub2tlblRyYW5zZmVyUHJlcGFyZVJlc3BvbnNlLCBUcmFuc2Zlck9iaiwgVHJhc2ZlclByZXBhcmVSZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uL3Jlc291cmNlcyc7XG5cbmRlc2NyaWJlKCdUcmFuc2ZlciBCdWlsZGVyJywgKCkgPT4ge1xuICBpdCgnc2hvdWxkIGdldCB0aGUgdHJhbnNmZXIgcmVxdWVzdCBvYmplY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IFRyYW5zZmVyQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHJhbnNmZXJUeCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHRyYW5zZmVyVHgpO1xuICAgIHR4QnVpbGRlci5zZXRUcmFuc2FjdGlvbihUcmFzZmVyUHJlcGFyZVJlc3BvbnNlKTtcbiAgICBjb25zdCB7IGNvbW1hbmRJZCwgc2VuZGVyUGFydHlJZCwgcmVjZWl2ZXJQYXJ0eUlkLCBhbW91bnQsIHNlbmRPbmVTdGVwLCBleHBpcnlFcG9jaCB9ID0gVHJhbnNmZXJPYmo7XG4gICAgdHhCdWlsZGVyXG4gICAgICAuY29tbWFuZElkKGNvbW1hbmRJZClcbiAgICAgIC5zZW5kZXJJZChzZW5kZXJQYXJ0eUlkKVxuICAgICAgLnJlY2VpdmVySWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAuc2VuZE9uZVN0ZXAoc2VuZE9uZVN0ZXApXG4gICAgICAuZXhwaXJ5RXBvY2goZXhwaXJ5RXBvY2gpO1xuICAgIGNvbnN0IHJlcXVlc3RPYmo6IENhbnRvblRyYW5zZmVyUmVxdWVzdCA9IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKTtcbiAgICBzaG91bGQuZXhpc3QocmVxdWVzdE9iaik7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouY29tbWFuZElkLCBjb21tYW5kSWQpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLnNlbmRlclBhcnR5SWQsIHNlbmRlclBhcnR5SWQpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLnJlY2VpdmVyUGFydHlJZCwgcmVjZWl2ZXJQYXJ0eUlkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5hbW91bnQsIGFtb3VudCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouZXhwaXJ5RXBvY2gsIGV4cGlyeUVwb2NoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIHRva2VuIHRyYW5zZmVyIHJlcXVlc3Qgb2JqZWN0JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2ZlckJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHRyYW5zZmVyVHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0cmFuc2ZlclR4KTtcbiAgICB0eEJ1aWxkZXIuc2V0VHJhbnNhY3Rpb24oQ2FudG9uVG9rZW5UcmFuc2ZlclByZXBhcmVSZXNwb25zZSk7XG4gICAgY29uc3QgeyBjb21tYW5kSWQsIHNlbmRlclBhcnR5SWQsIHJlY2VpdmVyUGFydHlJZCwgYW1vdW50LCBzZW5kT25lU3RlcCwgZXhwaXJ5RXBvY2ggfSA9IFRyYW5zZmVyT2JqO1xuICAgIHR4QnVpbGRlclxuICAgICAgLmNvbW1hbmRJZChjb21tYW5kSWQpXG4gICAgICAuc2VuZGVySWQoc2VuZGVyUGFydHlJZClcbiAgICAgIC5yZWNlaXZlcklkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnNlbmRPbmVTdGVwKHNlbmRPbmVTdGVwKVxuICAgICAgLmV4cGlyeUVwb2NoKGV4cGlyeUVwb2NoKTtcbiAgICBjb25zdCByZXF1ZXN0T2JqOiBDYW50b25UcmFuc2ZlclJlcXVlc3QgPSB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCk7XG4gICAgc2hvdWxkLmV4aXN0KHJlcXVlc3RPYmopO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLmNvbW1hbmRJZCwgY29tbWFuZElkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5zZW5kZXJQYXJ0eUlkLCBzZW5kZXJQYXJ0eUlkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5yZWNlaXZlclBhcnR5SWQsIHJlY2VpdmVyUGFydHlJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouYW1vdW50LCBhbW91bnQpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLmV4cGlyeUVwb2NoLCBleHBpcnlFcG9jaCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdmFsaWRhdGUgcmF3IHRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2ZlckJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHRyYW5zZmVyVHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0cmFuc2ZlclR4KTtcbiAgICB0eEJ1aWxkZXIuc2V0VHJhbnNhY3Rpb24oVHJhc2ZlclByZXBhcmVSZXNwb25zZSk7XG4gICAgdHhCdWlsZGVyLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24oVHJhc2ZlclByZXBhcmVSZXNwb25zZS5wcmVwYXJlZFRyYW5zYWN0aW9uKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB0aGUgdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IFRyYW5zZmVyQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHJhbnNmZXJUeCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHJhbnNmZXJUeC5wcmVwYXJlQ29tbWFuZCA9IFRyYXNmZXJQcmVwYXJlUmVzcG9uc2U7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHRyYW5zZmVyVHgpO1xuICAgIHR4QnVpbGRlci5zZXRUcmFuc2FjdGlvbihUcmFzZmVyUHJlcGFyZVJlc3BvbnNlKTtcbiAgICB0eEJ1aWxkZXIudmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2ZlclR4KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBpbiB2YWxpZGF0aW5nIHJhdyB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgVHJhbnNmZXJCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0cmFuc2ZlckFjY2VwdGFuY2VUeCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHRyYW5zZmVyQWNjZXB0YW5jZVR4KTtcbiAgICBjb25zdCBpbnZhbGlkUHJlcGFyZVJlc3BvbnNlID0gVHJhc2ZlclByZXBhcmVSZXNwb25zZTtcbiAgICBpbnZhbGlkUHJlcGFyZVJlc3BvbnNlLnByZXBhcmVkVHJhbnNhY3Rpb25IYXNoID0gJ3kxMnUwNXZpUThldWhOaDljMjFLSzhsYm4vN3dNNGFlRzVVNG91YW5UV1o9JztcbiAgICB0eEJ1aWxkZXIuc2V0VHJhbnNhY3Rpb24oaW52YWxpZFByZXBhcmVSZXNwb25zZSk7XG4gICAgdHJ5IHtcbiAgICAgIHR4QnVpbGRlci52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKGludmFsaWRQcmVwYXJlUmVzcG9uc2UucHJlcGFyZWRUcmFuc2FjdGlvbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXNzZXJ0LmVxdWFsKGUubWVzc2FnZSwgJ2ludmFsaWQgcmF3IHRyYW5zYWN0aW9uLCBoYXNoIG5vdCBtYXRjaGluZycpO1xuICAgIH1cbiAgfSk7XG59KTtcbiJdfQ==
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2J1aWxkZXIvdHJhbnNmZXIvdHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUU1Qiw0Q0FBdUM7QUFFdkMseUNBQStEO0FBRy9ELGtEQUE2RztBQUU3RyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO0lBQ2hDLEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRTtRQUMzQyxNQUFNLFNBQVMsR0FBRyxJQUFJLHFCQUFlLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzVELE1BQU0sVUFBVSxHQUFHLElBQUksaUJBQVcsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDekQsU0FBUyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQyxTQUFTLENBQUMsY0FBYyxDQUFDLGtDQUFzQixDQUFDLENBQUM7UUFDakQsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsdUJBQVcsQ0FBQztRQUNwRyxTQUFTO2FBQ04sU0FBUyxDQUFDLFNBQVMsQ0FBQzthQUNwQixRQUFRLENBQUMsYUFBYSxDQUFDO2FBQ3ZCLFVBQVUsQ0FBQyxlQUFlLENBQUM7YUFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQzthQUNkLFdBQVcsQ0FBQyxXQUFXLENBQUM7YUFDeEIsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVCLE1BQU0sVUFBVSxHQUEwQixTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdEUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM5QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3RELGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDMUQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN4QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3BELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDhDQUE4QyxFQUFFO1FBQ2pELE1BQU0sU0FBUyxHQUFHLElBQUkscUJBQWUsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDNUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxpQkFBVyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN6RCxTQUFTLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLFNBQVMsQ0FBQyxjQUFjLENBQUMsOENBQWtDLENBQUMsQ0FBQztRQUM3RCxNQUFNLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsR0FBRyx1QkFBVyxDQUFDO1FBQ3BHLFNBQVM7YUFDTixTQUFTLENBQUMsU0FBUyxDQUFDO2FBQ3BCLFFBQVEsQ0FBQyxhQUFhLENBQUM7YUFDdkIsVUFBVSxDQUFDLGVBQWUsQ0FBQzthQUMzQixNQUFNLENBQUMsTUFBTSxDQUFDO2FBQ2QsV0FBVyxDQUFDLFdBQVcsQ0FBQzthQUN4QixXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUIsTUFBTSxVQUFVLEdBQTBCLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN0RSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QixnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDdEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUMxRCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQyxDQUFDLENBQUM7SUFDSCxFQUFFLENBQUMseUNBQXlDLEVBQUU7UUFDNUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxxQkFBZSxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM1RCxNQUFNLFVBQVUsR0FBRyxJQUFJLGlCQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3pELFNBQVMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxrQ0FBc0IsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsdUJBQVcsQ0FBQztRQUM1RixNQUFNLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQztRQUNuQyxTQUFTO2FBQ04sU0FBUyxDQUFDLFNBQVMsQ0FBQzthQUNwQixRQUFRLENBQUMsYUFBYSxDQUFDO2FBQ3ZCLFVBQVUsQ0FBQyxlQUFlLENBQUM7YUFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQzthQUNkLFdBQVcsQ0FBQyxXQUFXLENBQUM7YUFDeEIsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTVCLGdCQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakUsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsaUNBQWlDLEVBQUU7UUFDcEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxxQkFBZSxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM1RCxNQUFNLFVBQVUsR0FBRyxJQUFJLGlCQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3pELFNBQVMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxrQ0FBc0IsQ0FBQyxDQUFDO1FBQ2pELFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxrQ0FBc0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQy9FLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGlDQUFpQyxFQUFFO1FBQ3BDLE1BQU0sU0FBUyxHQUFHLElBQUkscUJBQWUsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDNUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxpQkFBVyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN6RCxVQUFVLENBQUMsY0FBYyxHQUFHLGtDQUFzQixDQUFDO1FBQ25ELFNBQVMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxrQ0FBc0IsQ0FBQyxDQUFDO1FBQ2pELFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxrREFBa0QsRUFBRTtRQUNyRCxNQUFNLFNBQVMsR0FBRyxJQUFJLHFCQUFlLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzVELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxpQkFBVyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNuRSxTQUFTLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDNUMsTUFBTSxzQkFBc0IsR0FBRyxrQ0FBc0IsQ0FBQztRQUN0RCxzQkFBc0IsQ0FBQyx1QkFBdUIsR0FBRyw4Q0FBOEMsQ0FBQztRQUNoRyxTQUFTLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDO1lBQ0gsU0FBUyxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLDRDQUE0QyxDQUFDLENBQUM7UUFDeEUsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5cbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuXG5pbXBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIsIFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7IENhbnRvblRyYW5zZmVyUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9saWIvaWZhY2UnO1xuXG5pbXBvcnQgeyBDYW50b25Ub2tlblRyYW5zZmVyUHJlcGFyZVJlc3BvbnNlLCBUcmFuc2Zlck9iaiwgVHJhc2ZlclByZXBhcmVSZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uL3Jlc291cmNlcyc7XG5cbmRlc2NyaWJlKCdUcmFuc2ZlciBCdWlsZGVyJywgKCkgPT4ge1xuICBpdCgnc2hvdWxkIGdldCB0aGUgdHJhbnNmZXIgcmVxdWVzdCBvYmplY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IFRyYW5zZmVyQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHJhbnNmZXJUeCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHRyYW5zZmVyVHgpO1xuICAgIHR4QnVpbGRlci5zZXRUcmFuc2FjdGlvbihUcmFzZmVyUHJlcGFyZVJlc3BvbnNlKTtcbiAgICBjb25zdCB7IGNvbW1hbmRJZCwgc2VuZGVyUGFydHlJZCwgcmVjZWl2ZXJQYXJ0eUlkLCBhbW91bnQsIHNlbmRPbmVTdGVwLCBleHBpcnlFcG9jaCB9ID0gVHJhbnNmZXJPYmo7XG4gICAgdHhCdWlsZGVyXG4gICAgICAuY29tbWFuZElkKGNvbW1hbmRJZClcbiAgICAgIC5zZW5kZXJJZChzZW5kZXJQYXJ0eUlkKVxuICAgICAgLnJlY2VpdmVySWQocmVjZWl2ZXJQYXJ0eUlkKVxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAuc2VuZE9uZVN0ZXAoc2VuZE9uZVN0ZXApXG4gICAgICAuZXhwaXJ5RXBvY2goZXhwaXJ5RXBvY2gpO1xuICAgIGNvbnN0IHJlcXVlc3RPYmo6IENhbnRvblRyYW5zZmVyUmVxdWVzdCA9IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKTtcbiAgICBzaG91bGQuZXhpc3QocmVxdWVzdE9iaik7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouY29tbWFuZElkLCBjb21tYW5kSWQpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLnNlbmRlclBhcnR5SWQsIHNlbmRlclBhcnR5SWQpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLnJlY2VpdmVyUGFydHlJZCwgcmVjZWl2ZXJQYXJ0eUlkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5hbW91bnQsIGFtb3VudCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouZXhwaXJ5RXBvY2gsIGV4cGlyeUVwb2NoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIHRva2VuIHRyYW5zZmVyIHJlcXVlc3Qgb2JqZWN0JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2ZlckJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHRyYW5zZmVyVHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0cmFuc2ZlclR4KTtcbiAgICB0eEJ1aWxkZXIuc2V0VHJhbnNhY3Rpb24oQ2FudG9uVG9rZW5UcmFuc2ZlclByZXBhcmVSZXNwb25zZSk7XG4gICAgY29uc3QgeyBjb21tYW5kSWQsIHNlbmRlclBhcnR5SWQsIHJlY2VpdmVyUGFydHlJZCwgYW1vdW50LCBzZW5kT25lU3RlcCwgZXhwaXJ5RXBvY2ggfSA9IFRyYW5zZmVyT2JqO1xuICAgIHR4QnVpbGRlclxuICAgICAgLmNvbW1hbmRJZChjb21tYW5kSWQpXG4gICAgICAuc2VuZGVySWQoc2VuZGVyUGFydHlJZClcbiAgICAgIC5yZWNlaXZlcklkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnNlbmRPbmVTdGVwKHNlbmRPbmVTdGVwKVxuICAgICAgLmV4cGlyeUVwb2NoKGV4cGlyeUVwb2NoKTtcbiAgICBjb25zdCByZXF1ZXN0T2JqOiBDYW50b25UcmFuc2ZlclJlcXVlc3QgPSB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCk7XG4gICAgc2hvdWxkLmV4aXN0KHJlcXVlc3RPYmopO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLmNvbW1hbmRJZCwgY29tbWFuZElkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5zZW5kZXJQYXJ0eUlkLCBzZW5kZXJQYXJ0eUlkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5yZWNlaXZlclBhcnR5SWQsIHJlY2VpdmVyUGFydHlJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouYW1vdW50LCBhbW91bnQpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLmV4cGlyeUVwb2NoLCBleHBpcnlFcG9jaCk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHByZXNlcnZlIGEgbGFyZ2UgdHJhbnNmZXIgYW1vdW50JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2ZlckJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHRyYW5zZmVyVHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0cmFuc2ZlclR4KTtcbiAgICB0eEJ1aWxkZXIuc2V0VHJhbnNhY3Rpb24oVHJhc2ZlclByZXBhcmVSZXNwb25zZSk7XG4gICAgY29uc3QgeyBjb21tYW5kSWQsIHNlbmRlclBhcnR5SWQsIHJlY2VpdmVyUGFydHlJZCwgc2VuZE9uZVN0ZXAsIGV4cGlyeUVwb2NoIH0gPSBUcmFuc2Zlck9iajtcbiAgICBjb25zdCBhbW91bnQgPSAnMzY4Njg2MTU4ODg5NDE5MDAnO1xuICAgIHR4QnVpbGRlclxuICAgICAgLmNvbW1hbmRJZChjb21tYW5kSWQpXG4gICAgICAuc2VuZGVySWQoc2VuZGVyUGFydHlJZClcbiAgICAgIC5yZWNlaXZlcklkKHJlY2VpdmVyUGFydHlJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLnNlbmRPbmVTdGVwKHNlbmRPbmVTdGVwKVxuICAgICAgLmV4cGlyeUVwb2NoKGV4cGlyeUVwb2NoKTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCkuYW1vdW50LCBhbW91bnQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHZhbGlkYXRlIHJhdyB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgVHJhbnNmZXJCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0cmFuc2ZlclR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHJhbnNmZXJUeCk7XG4gICAgdHhCdWlsZGVyLnNldFRyYW5zYWN0aW9uKFRyYXNmZXJQcmVwYXJlUmVzcG9uc2UpO1xuICAgIHR4QnVpbGRlci52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKFRyYXNmZXJQcmVwYXJlUmVzcG9uc2UucHJlcGFyZWRUcmFuc2FjdGlvbik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdmFsaWRhdGUgdGhlIHRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2ZlckJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHRyYW5zZmVyVHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHRyYW5zZmVyVHgucHJlcGFyZUNvbW1hbmQgPSBUcmFzZmVyUHJlcGFyZVJlc3BvbnNlO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0cmFuc2ZlclR4KTtcbiAgICB0eEJ1aWxkZXIuc2V0VHJhbnNhY3Rpb24oVHJhc2ZlclByZXBhcmVSZXNwb25zZSk7XG4gICAgdHhCdWlsZGVyLnZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNmZXJUeCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgaW4gdmFsaWRhdGluZyByYXcgdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IFRyYW5zZmVyQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHJhbnNmZXJBY2NlcHRhbmNlVHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0cmFuc2ZlckFjY2VwdGFuY2VUeCk7XG4gICAgY29uc3QgaW52YWxpZFByZXBhcmVSZXNwb25zZSA9IFRyYXNmZXJQcmVwYXJlUmVzcG9uc2U7XG4gICAgaW52YWxpZFByZXBhcmVSZXNwb25zZS5wcmVwYXJlZFRyYW5zYWN0aW9uSGFzaCA9ICd5MTJ1MDV2aVE4ZXVoTmg5YzIxS0s4bGJuLzd3TTRhZUc1VTRvdWFuVFdaPSc7XG4gICAgdHhCdWlsZGVyLnNldFRyYW5zYWN0aW9uKGludmFsaWRQcmVwYXJlUmVzcG9uc2UpO1xuICAgIHRyeSB7XG4gICAgICB0eEJ1aWxkZXIudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihpbnZhbGlkUHJlcGFyZVJlc3BvbnNlLnByZXBhcmVkVHJhbnNhY3Rpb24pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGFzc2VydC5lcXVhbChlLm1lc3NhZ2UsICdpbnZhbGlkIHJhdyB0cmFuc2FjdGlvbiwgaGFzaCBub3QgbWF0Y2hpbmcnKTtcbiAgICB9XG4gIH0pO1xufSk7XG4iXX0=
@@ -28,5 +28,38 @@ describe('Transfer Acknowledge Builder', () => {
28
28
  assert_1.default.equal(requestObj.amount, amount);
29
29
  assert_1.default.equal(requestObj.expiryEpoch, expiryEpoch);
30
30
  });
31
+ it('should preserve large amounts through serialized acknowledgement data', function () {
32
+ const txBuilder = new src_1.TransferAcknowledgeBuilder(statics_1.coins.get('tcanton'));
33
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
34
+ txBuilder.initBuilder(tx);
35
+ const { contractId, updateId, senderPartyId, expiryEpoch } = resources_1.TransferAcknowledgeRequest;
36
+ const amount = '36868615888941900';
37
+ txBuilder
38
+ .contractId(contractId)
39
+ .senderPartyId(senderPartyId)
40
+ .updateId(updateId)
41
+ .amount(amount)
42
+ .expiryEpoch(expiryEpoch);
43
+ const requestObj = txBuilder.toRequestObject();
44
+ assert_1.default.strictEqual(requestObj.amount, amount);
45
+ tx.acknowledgeData = requestObj;
46
+ const parsedTx = new src_1.Transaction(statics_1.coins.get('tcanton'));
47
+ parsedTx.fromRawTransaction(tx.toBroadcastFormat());
48
+ assert_1.default.strictEqual(parsedTx.toJson().acknowledgeData?.amount, amount);
49
+ });
50
+ it('should normalize bigint acknowledgement amounts to exact strings', function () {
51
+ const txBuilder = new src_1.TransferAcknowledgeBuilder(statics_1.coins.get('tcanton'));
52
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
53
+ txBuilder.initBuilder(tx);
54
+ const { contractId, updateId, senderPartyId, expiryEpoch } = resources_1.TransferAcknowledgeRequest;
55
+ const amount = '36868615888941900';
56
+ txBuilder
57
+ .contractId(contractId)
58
+ .senderPartyId(senderPartyId)
59
+ .updateId(updateId)
60
+ .amount(BigInt(amount))
61
+ .expiryEpoch(expiryEpoch);
62
+ assert_1.default.strictEqual(txBuilder.toRequestObject().amount, amount);
63
+ });
31
64
  });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJBY2tub3dsZWRnZUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYnVpbGRlci90cmFuc2ZlckFja25vd2xlZGdlL3RyYW5zZmVyQWNrbm93bGVkZ2VCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUU1Qiw0Q0FBdUM7QUFFdkMseUNBQTBFO0FBRzFFLGtEQUFnRTtBQUVoRSxRQUFRLENBQUMsOEJBQThCLEVBQUUsR0FBRyxFQUFFO0lBQzVDLEVBQUUsQ0FBQyxvREFBb0QsRUFBRTtRQUN2RCxNQUFNLFNBQVMsR0FBRyxJQUFJLGdDQUEwQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN2RSxNQUFNLEVBQUUsR0FBRyxJQUFJLGlCQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2pELFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxzQ0FBMEIsQ0FBQztRQUNoRyxTQUFTO2FBQ04sVUFBVSxDQUFDLFVBQVUsQ0FBQzthQUN0QixhQUFhLENBQUMsYUFBYSxDQUFDO2FBQzVCLFFBQVEsQ0FBQyxRQUFRLENBQUM7YUFDbEIsTUFBTSxDQUFDLE1BQU0sQ0FBQzthQUNkLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QixNQUFNLFVBQVUsR0FBd0IsU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BFLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pCLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDaEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUN0RCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNwRCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuXG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcblxuaW1wb3J0IHsgVHJhbnNmZXJBY2tub3dsZWRnZUJ1aWxkZXIsIFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7IFRyYW5zZmVyQWNrbm93bGVkZ2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvbGliL2lmYWNlJztcblxuaW1wb3J0IHsgVHJhbnNmZXJBY2tub3dsZWRnZVJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi9yZXNvdXJjZXMnO1xuXG5kZXNjcmliZSgnVHJhbnNmZXIgQWNrbm93bGVkZ2UgQnVpbGRlcicsICgpID0+IHtcbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIHRyYW5zZmVyIGFja25vd2xlZGdlIHJlcXVlc3Qgb2JqZWN0JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2ZlckFja25vd2xlZGdlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgY29uc3QgeyBjb250cmFjdElkLCB1cGRhdGVJZCwgc2VuZGVyUGFydHlJZCwgYW1vdW50LCBleHBpcnlFcG9jaCB9ID0gVHJhbnNmZXJBY2tub3dsZWRnZVJlcXVlc3Q7XG4gICAgdHhCdWlsZGVyXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnNlbmRlclBhcnR5SWQoc2VuZGVyUGFydHlJZClcbiAgICAgIC51cGRhdGVJZCh1cGRhdGVJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLmV4cGlyeUVwb2NoKGV4cGlyeUVwb2NoKTtcbiAgICBjb25zdCByZXF1ZXN0T2JqOiBUcmFuc2ZlckFja25vd2xlZGdlID0gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpO1xuICAgIHNob3VsZC5leGlzdChyZXF1ZXN0T2JqKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5jb250cmFjdElkLCBjb250cmFjdElkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5zZW5kZXJQYXJ0eUlkLCBzZW5kZXJQYXJ0eUlkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai51cGRhdGVJZCwgdXBkYXRlSWQpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLmFtb3VudCwgYW1vdW50KTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5leHBpcnlFcG9jaCwgZXhwaXJ5RXBvY2gpO1xuICB9KTtcbn0pO1xuIl19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJBY2tub3dsZWRnZUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYnVpbGRlci90cmFuc2ZlckFja25vd2xlZGdlL3RyYW5zZmVyQWNrbm93bGVkZ2VCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUU1Qiw0Q0FBdUM7QUFFdkMseUNBQTBFO0FBRzFFLGtEQUFnRTtBQUVoRSxRQUFRLENBQUMsOEJBQThCLEVBQUUsR0FBRyxFQUFFO0lBQzVDLEVBQUUsQ0FBQyxvREFBb0QsRUFBRTtRQUN2RCxNQUFNLFNBQVMsR0FBRyxJQUFJLGdDQUEwQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN2RSxNQUFNLEVBQUUsR0FBRyxJQUFJLGlCQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2pELFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxzQ0FBMEIsQ0FBQztRQUNoRyxTQUFTO2FBQ04sVUFBVSxDQUFDLFVBQVUsQ0FBQzthQUN0QixhQUFhLENBQUMsYUFBYSxDQUFDO2FBQzVCLFFBQVEsQ0FBQyxRQUFRLENBQUM7YUFDbEIsTUFBTSxDQUFDLE1BQU0sQ0FBQzthQUNkLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QixNQUFNLFVBQVUsR0FBd0IsU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BFLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pCLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFD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cm9tICdzaG91bGQnO1xuXG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcblxuaW1wb3J0IHsgVHJhbnNmZXJBY2tub3dsZWRnZUJ1aWxkZXIsIFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7IFRyYW5zZmVyQWNrbm93bGVkZ2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvbGliL2lmYWNlJztcblxuaW1wb3J0IHsgVHJhbnNmZXJBY2tub3dsZWRnZVJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi9yZXNvdXJjZXMnO1xuXG5kZXNjcmliZSgnVHJhbnNmZXIgQWNrbm93bGVkZ2UgQnVpbGRlcicsICgpID0+IHtcbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIHRyYW5zZmVyIGFja25vd2xlZGdlIHJlcXVlc3Qgb2JqZWN0JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2ZlckFja25vd2xlZGdlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgY29uc3QgeyBjb250cmFjdElkLCB1cGRhdGVJZCwgc2VuZGVyUGFydHlJZCwgYW1vdW50LCBleHBpcnlFcG9jaCB9ID0gVHJhbnNmZXJBY2tub3dsZWRnZVJlcXVlc3Q7XG4gICAgdHhCdWlsZGVyXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnNlbmRlclBhcnR5SWQoc2VuZGVyUGFydHlJZClcbiAgICAgIC51cGRhdGVJZCh1cGRhdGVJZClcbiAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgLmV4cGlyeUVwb2NoKGV4cGlyeUVwb2NoKTtcbiAgICBjb25zdCByZXF1ZXN0T2JqOiBUcmFuc2ZlckFja25vd2xlZGdlID0gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpO1xuICAgIHNob3VsZC5leGlzdChyZXF1ZXN0T2JqKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5jb250cmFjdElkLCBjb250cmFjdElkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5zZW5kZXJQYXJ0eUlkLCBzZW5kZXJQYXJ0eUlkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai51cGRhdGVJZCwgdXBkYXRlSWQpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLmFtb3VudCwgYW1vdW50KTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5leHBpcnlFcG9jaCwgZXhwaXJ5RXBvY2gpO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCBwcmVzZXJ2ZSBsYXJnZSBhbW91bnRzIHRocm91Z2ggc2VyaWFsaXplZCBhY2tub3dsZWRnZW1lbnQgZGF0YScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgVHJhbnNmZXJBY2tub3dsZWRnZUJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIGNvbnN0IHsgY29udHJhY3RJZCwgdXBkYXRlSWQsIHNlbmRlclBhcnR5SWQsIGV4cGlyeUVwb2NoIH0gPSBUcmFuc2ZlckFja25vd2xlZGdlUmVxdWVzdDtcbiAgICBjb25zdCBhbW91bnQgPSAnMzY4Njg2MTU4ODg5NDE5MDAnO1xuICAgIHR4QnVpbGRlclxuICAgICAgLmNvbnRyYWN0SWQoY29udHJhY3RJZClcbiAgICAgIC5zZW5kZXJQYXJ0eUlkKHNlbmRlclBhcnR5SWQpXG4gICAgICAudXBkYXRlSWQodXBkYXRlSWQpXG4gICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgIC5leHBpcnlFcG9jaChleHBpcnlFcG9jaCk7XG5cbiAgICBjb25zdCByZXF1ZXN0T2JqID0gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXF1ZXN0T2JqLmFtb3VudCwgYW1vdW50KTtcbiAgICB0eC5hY2tub3dsZWRnZURhdGEgPSByZXF1ZXN0T2JqO1xuXG4gICAgY29uc3QgcGFyc2VkVHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHBhcnNlZFR4LmZyb21SYXdUcmFuc2FjdGlvbih0eC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VkVHgudG9Kc29uKCkuYWNrbm93bGVkZ2VEYXRhPy5hbW91bnQsIGFtb3VudCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm9ybWFsaXplIGJpZ2ludCBhY2tub3dsZWRnZW1lbnQgYW1vdW50cyB0byBleGFjdCBzdHJpbmdzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2ZlckFja25vd2xlZGdlQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgY29uc3QgeyBjb250cmFjdElkLCB1cGRhdGVJZCwgc2VuZGVyUGFydHlJZCwgZXhwaXJ5RXBvY2ggfSA9IFRyYW5zZmVyQWNrbm93bGVkZ2VSZXF1ZXN0O1xuICAgIGNvbnN0IGFtb3VudCA9ICczNjg2ODYxNTg4ODk0MTkwMCc7XG4gICAgdHhCdWlsZGVyXG4gICAgICAuY29udHJhY3RJZChjb250cmFjdElkKVxuICAgICAgLnNlbmRlclBhcnR5SWQoc2VuZGVyUGFydHlJZClcbiAgICAgIC51cGRhdGVJZCh1cGRhdGVJZClcbiAgICAgIC5hbW91bnQoQmlnSW50KGFtb3VudCkpXG4gICAgICAuZXhwaXJ5RXBvY2goZXhwaXJ5RXBvY2gpO1xuXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKS5hbW91bnQsIGFtb3VudCk7XG4gIH0pO1xufSk7XG4iXX0=