@alpha-arcade/sdk 0.2.9 → 0.2.10

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/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var algosdk2 = require('algosdk');
4
- var algokit3 = require('@algorandfoundation/algokit-utils');
4
+ var algokit4 = require('@algorandfoundation/algokit-utils');
5
5
  var decimal_js = require('decimal.js');
6
6
 
7
7
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -25,7 +25,7 @@ function _interopNamespace(e) {
25
25
  }
26
26
 
27
27
  var algosdk2__default = /*#__PURE__*/_interopDefault(algosdk2);
28
- var algokit3__namespace = /*#__PURE__*/_interopNamespace(algokit3);
28
+ var algokit4__namespace = /*#__PURE__*/_interopNamespace(algokit4);
29
29
 
30
30
  // src/modules/trading.ts
31
31
  var APP_SPEC = {
@@ -606,7 +606,7 @@ var MarketAppClient = class _MarketAppClient {
606
606
  constructor(appDetails, algod) {
607
607
  this.algod = algod;
608
608
  this.sender = appDetails.sender;
609
- this.appClient = algokit3__namespace.getAppClient({
609
+ this.appClient = algokit4__namespace.getAppClient({
610
610
  ...appDetails,
611
611
  app: APP_SPEC
612
612
  }, algod);
@@ -1004,7 +1004,7 @@ var MarketAppClient = class _MarketAppClient {
1004
1004
  return this;
1005
1005
  },
1006
1006
  addTransaction(txn, defaultSender) {
1007
- promiseChain = promiseChain.then(async () => atc.addTransaction(await algokit3__namespace.getTransactionWithSigner(txn, defaultSender ?? client.sender)));
1007
+ promiseChain = promiseChain.then(async () => atc.addTransaction(await algokit4__namespace.getTransactionWithSigner(txn, defaultSender ?? client.sender)));
1008
1008
  return this;
1009
1009
  },
1010
1010
  async atc() {
@@ -1021,7 +1021,7 @@ var MarketAppClient = class _MarketAppClient {
1021
1021
  },
1022
1022
  async execute(sendParams) {
1023
1023
  await promiseChain;
1024
- const result = await algokit3__namespace.sendAtomicTransactionComposer({ atc, sendParams }, client.algod);
1024
+ const result = await algokit4__namespace.sendAtomicTransactionComposer({ atc, sendParams }, client.algod);
1025
1025
  return {
1026
1026
  ...result,
1027
1027
  returns: result.returns?.map((val, i) => resultMappers[i] !== void 0 ? resultMappers[i](val.returnValue) : val.returnValue)
@@ -1165,7 +1165,7 @@ var MatcherAppClient = class {
1165
1165
  constructor(appDetails, algod) {
1166
1166
  this.algod = algod;
1167
1167
  this.sender = appDetails.sender;
1168
- this.appClient = algokit3__namespace.getAppClient({
1168
+ this.appClient = algokit4__namespace.getAppClient({
1169
1169
  ...appDetails,
1170
1170
  app: APP_SPEC2
1171
1171
  }, algod);
@@ -1267,7 +1267,7 @@ var MatcherAppClient = class {
1267
1267
  return this;
1268
1268
  },
1269
1269
  addTransaction(txn, defaultSender) {
1270
- promiseChain = promiseChain.then(async () => atc.addTransaction(await algokit3__namespace.getTransactionWithSigner(txn, defaultSender ?? client.sender)));
1270
+ promiseChain = promiseChain.then(async () => atc.addTransaction(await algokit4__namespace.getTransactionWithSigner(txn, defaultSender ?? client.sender)));
1271
1271
  return this;
1272
1272
  },
1273
1273
  async atc() {
@@ -1284,7 +1284,693 @@ var MatcherAppClient = class {
1284
1284
  },
1285
1285
  async execute(sendParams) {
1286
1286
  await promiseChain;
1287
- const result = await algokit3__namespace.sendAtomicTransactionComposer({ atc, sendParams }, client.algod);
1287
+ const result = await algokit4__namespace.sendAtomicTransactionComposer({ atc, sendParams }, client.algod);
1288
+ return {
1289
+ ...result,
1290
+ returns: result.returns?.map((val, i) => resultMappers[i] !== void 0 ? resultMappers[i](val.returnValue) : val.returnValue)
1291
+ };
1292
+ }
1293
+ };
1294
+ }
1295
+ };
1296
+ var APP_SPEC3 = {
1297
+ "hints": {
1298
+ "on_create()uint8": {
1299
+ "call_config": {
1300
+ "no_op": "CREATE"
1301
+ }
1302
+ },
1303
+ "setup(string,string,string,string,string)uint8": {
1304
+ "call_config": {
1305
+ "no_op": "CALL"
1306
+ }
1307
+ },
1308
+ "match_maker(application,uint64)uint8": {
1309
+ "call_config": {
1310
+ "no_op": "CALL"
1311
+ }
1312
+ },
1313
+ "amend_order(uint64,uint64,uint64)uint8": {
1314
+ "call_config": {
1315
+ "no_op": "CALL"
1316
+ }
1317
+ },
1318
+ "match_taker(application)uint64": {
1319
+ "call_config": {
1320
+ "no_op": "CALL"
1321
+ }
1322
+ },
1323
+ "delete()uint8": {
1324
+ "call_config": {
1325
+ "delete_application": "CALL"
1326
+ }
1327
+ },
1328
+ "on_update()uint64": {
1329
+ "call_config": {
1330
+ "update_application": "CALL"
1331
+ }
1332
+ }
1333
+ },
1334
+ "source": {
1335
+ "approval": "I3ByYWdtYSB2ZXJzaW9uIDgKaW50Y2Jsb2NrIDAgMSAxMDAwMDAwIDQgMjU2IDEwMDAwMDAwMDAwMDAwMDAwMDAKYnl0ZWNibG9jayAweDZkNjE3MjZiNjU3NDVmNjE3MDcwNWY2OTY0IDB4NzA2ZjczNjk3NDY5NmY2ZSAweDcwNzI2OTYzNjUgMHg3MzY5NjQ2NSAweDczNmM2OTcwNzA2MTY3NjUgMHg2Zjc3NmU2NTcyIDB4NzE3NTYxNmU3NDY5NzQ3OSAweDY2NjU2NTVmNzQ2OTZkNjU3MjVmNzM3NDYxNzI3NCAweDcxNzU2MTZlNzQ2OTc0Nzk1ZjY2Njk2YzZjNjU2NCAweDYzNmY2YzZjNjE3NDY1NzI2MTZjNWY2MTczNzM2NTc0NWY2OTY0IDB4MTUxZjdjNzUgMHg3OTY1NzM1ZjYxNzM3MzY1NzQ1ZjY5NjQgMHg2ZTZmNWY2MTczNzM2NTc0NWY2OTY0IDB4NjY2NTY1NWY2MjYxNzM2NTVmNzA2NTcyNjM2NTZlNzQgMHgwMCAweDYxNzM3MzY1NzQ1ZjZjNjk3Mzc0NjU2NCAweDY2NjU2NTVmNjE2NDY0NzI2NTczNzMgMHg5NTRlN2Q3MiAweDMyY2UyODFlIDB4YzkxZTg4ZjUgMHhkYjkyMmZjMiAweCAweGJhMWRlZWY1CnR4biBOdW1BcHBBcmdzCmludGNfMCAvLyAwCj09CmJueiBtYWluX2wxNgp0eG5hIEFwcGxpY2F0aW9uQXJncyAwCnB1c2hieXRlcyAweDQzZGI2MmExIC8vICJvbl9jcmVhdGUoKXVpbnQ4Igo9PQpibnogbWFpbl9sMTUKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMApieXRlYyAxNyAvLyAic2V0dXAoc3RyaW5nLHN0cmluZyxzdHJpbmcsc3RyaW5nLHN0cmluZyl1aW50OCIKPT0KYm56IG1haW5fbDE0CnR4bmEgQXBwbGljYXRpb25BcmdzIDAKYnl0ZWMgMTggLy8gIm1hdGNoX21ha2VyKGFwcGxpY2F0aW9uLHVpbnQ2NCl1aW50OCIKPT0KYm56IG1haW5fbDEzCnR4bmEgQXBwbGljYXRpb25BcmdzIDAKYnl0ZWMgMTkgLy8gImFtZW5kX29yZGVyKHVpbnQ2NCx1aW50NjQsdWludDY0KXVpbnQ4Igo9PQpibnogbWFpbl9sMTIKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMApieXRlYyAyMCAvLyAibWF0Y2hfdGFrZXIoYXBwbGljYXRpb24pdWludDY0Igo9PQpibnogbWFpbl9sMTEKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMApwdXNoYnl0ZXMgMHgxMTllM2M0YiAvLyAiZGVsZXRlKCl1aW50OCIKPT0KYm56IG1haW5fbDEwCnR4bmEgQXBwbGljYXRpb25BcmdzIDAKcHVzaGJ5dGVzIDB4MjRjM2QyMzQgLy8gIm9uX3VwZGF0ZSgpdWludDY0Igo9PQpibnogbWFpbl9sOQplcnIKbWFpbl9sOToKdHhuIE9uQ29tcGxldGlvbgppbnRjXzMgLy8gVXBkYXRlQXBwbGljYXRpb24KPT0KdHhuIEFwcGxpY2F0aW9uSUQKaW50Y18wIC8vIDAKIT0KJiYKYXNzZXJ0CmNhbGxzdWIgb251cGRhdGVjYXN0ZXJfMzMKaW50Y18xIC8vIDEKcmV0dXJuCm1haW5fbDEwOgp0eG4gT25Db21wbGV0aW9uCnB1c2hpbnQgNSAvLyBEZWxldGVBcHBsaWNhdGlvbgo9PQp0eG4gQXBwbGljYXRpb25JRAppbnRjXzAgLy8gMAohPQomJgphc3NlcnQKY2FsbHN1YiBkZWxldGVjYXN0ZXJfMzIKaW50Y18xIC8vIDEKcmV0dXJuCm1haW5fbDExOgp0eG4gT25Db21wbGV0aW9uCmludGNfMCAvLyBOb09wCj09CnR4biBBcHBsaWNhdGlvbklECmludGNfMCAvLyAwCiE9CiYmCmFzc2VydApjYWxsc3ViIG1hdGNodGFrZXJjYXN0ZXJfMzEKaW50Y18xIC8vIDEKcmV0dXJuCm1haW5fbDEyOgp0eG4gT25Db21wbGV0aW9uCmludGNfMCAvLyBOb09wCj09CnR4biBBcHBsaWNhdGlvbklECmludGNfMCAvLyAwCiE9CiYmCmFzc2VydApjYWxsc3ViIGFtZW5kb3JkZXJjYXN0ZXJfMzAKaW50Y18xIC8vIDEKcmV0dXJuCm1haW5fbDEzOgp0eG4gT25Db21wbGV0aW9uCmludGNfMCAvLyBOb09wCj09CnR4biBBcHBsaWNhdGlvbklECmludGNfMCAvLyAwCiE9CiYmCmFzc2VydApjYWxsc3ViIG1hdGNobWFrZXJjYXN0ZXJfMjkKaW50Y18xIC8vIDEKcmV0dXJuCm1haW5fbDE0Ogp0eG4gT25Db21wbGV0aW9uCmludGNfMCAvLyBOb09wCj09CnR4biBBcHBsaWNhdGlvbklECmludGNfMCAvLyAwCiE9CiYmCmFzc2VydApjYWxsc3ViIHNldHVwY2FzdGVyXzI4CmludGNfMSAvLyAxCnJldHVybgptYWluX2wxNToKdHhuIE9uQ29tcGxldGlvbgppbnRjXzAgLy8gTm9PcAo9PQp0eG4gQXBwbGljYXRpb25JRAppbnRjXzAgLy8gMAo9PQomJgphc3NlcnQKY2FsbHN1YiBvbmNyZWF0ZWNhc3Rlcl8yNwppbnRjXzEgLy8gMQpyZXR1cm4KbWFpbl9sMTY6CnR4biBPbkNvbXBsZXRpb24KaW50Y18wIC8vIE5vT3AKPT0KYm56IG1haW5fbDE4CmVycgptYWluX2wxODoKdHhuIEFwcGxpY2F0aW9uSUQKaW50Y18wIC8vIDAKPT0KYXNzZXJ0CmNhbGxzdWIgY3JlYXRlXzgKaW50Y18xIC8vIDEKcmV0dXJuCgovLyBkaXZfcm91bmQKZGl2cm91bmRfMDoKcHJvdG8gMiAxCmZyYW1lX2RpZyAtMgpmcmFtZV9kaWcgLTEKLwpzdG9yZSA5CmZyYW1lX2RpZyAtMgpmcmFtZV9kaWcgLTEKJQpwdXNoaW50IDUwMCAvLyA1MDAKPgpibnogZGl2cm91bmRfMF9sMgpsb2FkIDkKcmV0c3ViCmRpdnJvdW5kXzBfbDI6CmxvYWQgOQppbnRjXzEgLy8gMQorCnJldHN1YgoKLy8gZGl2X2NlaWxfYnl0ZXMKZGl2Y2VpbGJ5dGVzXzE6CnByb3RvIDIgMQpmcmFtZV9kaWcgLTIKZnJhbWVfZGlnIC0xCmIvCnN0b3JlIDE3CmZyYW1lX2RpZyAtMgpmcmFtZV9kaWcgLTEKYiUKbGVuCmludGNfMCAvLyAwCj4KYm56IGRpdmNlaWxieXRlc18xX2wyCmxvYWQgMTcKcmV0c3ViCmRpdmNlaWxieXRlc18xX2wyOgpsb2FkIDE3CmludGNfMSAvLyAxCml0b2IKYisKcmV0c3ViCgovLyBjYWxjdWxhdGVfZmVlCmNhbGN1bGF0ZWZlZV8yOgpwcm90byAzIDEKZnJhbWVfZGlnIC0zCml0b2IKc3RvcmUgMgpmcmFtZV9kaWcgLTIKaXRvYgpzdG9yZSAzCmludGNfMiAvLyAxMDAwMDAwCmZyYW1lX2RpZyAtMgotCml0b2IKc3RvcmUgNApsb2FkIDIKbG9hZCAzCmIqCnN0b3JlIDIKbG9hZCAyCmxvYWQgNApiKgpzdG9yZSAyCmxvYWQgMgpmcmFtZV9kaWcgLTEKaXRvYgpiKgpzdG9yZSAyCmxvYWQgMgppbnRjIDUgLy8gMTAwMDAwMDAwMDAwMDAwMDAwMAppdG9iCmIvCmJ0b2kKcmV0c3ViCgovLyBjYWxjdWxhdGVfZmVlX2NvbW1pdApjYWxjdWxhdGVmZWVjb21taXRfMzoKcHJvdG8gMyAxCmZyYW1lX2RpZyAtMwppdG9iCnN0b3JlIDE0CmZyYW1lX2RpZyAtMgppdG9iCnN0b3JlIDE1CmludGNfMiAvLyAxMDAwMDAwCmZyYW1lX2RpZyAtMgotCml0b2IKc3RvcmUgMTYKbG9hZCAxNApsb2FkIDE1CmIqCnN0b3JlIDE0CmxvYWQgMTQKbG9hZCAxNgpiKgpzdG9yZSAxNApsb2FkIDE0CmZyYW1lX2RpZyAtMQppdG9iCmIqCnN0b3JlIDE0CmxvYWQgMTQKaW50YyA1IC8vIDEwMDAwMDAwMDAwMDAwMDAwMDAKaXRvYgpjYWxsc3ViIGRpdmNlaWxieXRlc18xCmJ0b2kKcmV0c3ViCgovLyBnbG9iYWxfbXVzdF9nZXQKZ2xvYmFsbXVzdGdldF80Ogpwcm90byAyIDEKZnJhbWVfZGlnIC0yCmZyYW1lX2RpZyAtMQphcHBfZ2xvYmFsX2dldF9leApzdG9yZSAxCnN0b3JlIDAKbG9hZCAxCmFzc2VydApsb2FkIDAKcmV0c3ViCgovLyBnZXRfYXBwX2FkZHIKZ2V0YXBwYWRkcl81Ogpwcm90byAxIDEKZnJhbWVfZGlnIC0xCmFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKc3RvcmUgNgpzdG9yZSA1CmxvYWQgNgphc3NlcnQKbG9hZCA1CnJldHN1YgoKLy8gc2VuZF9hc3NldApzZW5kYXNzZXRfNjoKcHJvdG8gNCAwCml0eG5fYmVnaW4KaW50Y18zIC8vIGF4ZmVyCml0eG5fZmllbGQgVHlwZUVudW0KZnJhbWVfZGlnIC00Cml0eG5fZmllbGQgU2VuZGVyCmZyYW1lX2RpZyAtMwppdHhuX2ZpZWxkIEFzc2V0QW1vdW50CmZyYW1lX2RpZyAtMgppdHhuX2ZpZWxkIFhmZXJBc3NldApmcmFtZV9kaWcgLTEKaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCml0eG5fc3VibWl0CnJldHN1YgoKLy8gZ2V0X2Z1bmRzX3RvX3RyYWRlcgpnZXRmdW5kc3RvdHJhZGVyXzc6CnByb3RvIDQgMApmcmFtZV9kaWcgLTQKZnJhbWVfZGlnIC0yCmFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQpzdG9yZSA4CnN0b3JlIDcKbG9hZCA4CmJueiBnZXRmdW5kc3RvdHJhZGVyXzdfbDIKZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKZnJhbWVfZGlnIC0xCmZyYW1lX2RpZyAtMgpmcmFtZV9kaWcgLTMKY2FsbHN1YiBzZW5kYXNzZXRfNgpiIGdldGZ1bmRzdG90cmFkZXJfN19sMwpnZXRmdW5kc3RvdHJhZGVyXzdfbDI6Cmdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCmZyYW1lX2RpZyAtMQpmcmFtZV9kaWcgLTIKZnJhbWVfZGlnIC00CmNhbGxzdWIgc2VuZGFzc2V0XzYKZ2V0ZnVuZHN0b3RyYWRlcl83X2wzOgpyZXRzdWIKCi8vIGNyZWF0ZQpjcmVhdGVfODoKcHJvdG8gMCAwCmJ5dGVjIDE1IC8vICJhc3NldF9saXN0ZWQiCmludGNfMCAvLyAwCmFwcF9nbG9iYWxfcHV0CmJ5dGVjIDcgLy8gImZlZV90aW1lcl9zdGFydCIKaW50Y18wIC8vIDAKYXBwX2dsb2JhbF9wdXQKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKaW50Y18wIC8vIDAKYXBwX2dsb2JhbF9wdXQKYnl0ZWMgNSAvLyAib3duZXIiCmJ5dGVjIDIxIC8vICIiCmFwcF9nbG9iYWxfcHV0CmJ5dGVjXzEgLy8gInBvc2l0aW9uIgppbnRjXzAgLy8gMAphcHBfZ2xvYmFsX3B1dApieXRlY18yIC8vICJwcmljZSIKaW50Y18wIC8vIDAKYXBwX2dsb2JhbF9wdXQKYnl0ZWMgNiAvLyAicXVhbnRpdHkiCmludGNfMCAvLyAwCmFwcF9nbG9iYWxfcHV0CmJ5dGVjIDggLy8gInF1YW50aXR5X2ZpbGxlZCIKaW50Y18wIC8vIDAKYXBwX2dsb2JhbF9wdXQKYnl0ZWNfMyAvLyAic2lkZSIKaW50Y18wIC8vIDAKYXBwX2dsb2JhbF9wdXQKYnl0ZWMgNCAvLyAic2xpcHBhZ2UiCmludGNfMCAvLyAwCmFwcF9nbG9iYWxfcHV0CnJldHN1YgoKLy8gb25fY3JlYXRlCm9uY3JlYXRlXzk6CnByb3RvIDAgMQppbnRjXzAgLy8gMAppbnRjXzEgLy8gMQpmcmFtZV9idXJ5IDAKZnJhbWVfZGlnIDAKaW50YyA0IC8vIDI1Ngo8CmFzc2VydApyZXRzdWIKCi8vIHNldHVwCnNldHVwXzEwOgpwcm90byA1IDEKaW50Y18wIC8vIDAKdHhuIFNlbmRlcgpnbG9iYWwgQ3JlYXRvckFkZHJlc3MKPT0KLy8gdW5hdXRob3JpemVkCmFzc2VydAp0eG4gVHlwZUVudW0KcHVzaGludCA2IC8vIGFwcGwKPT0KYXNzZXJ0CnR4bmEgQXBwbGljYXRpb25BcmdzIDAKYnl0ZWMgMTcgLy8gInNldHVwKHN0cmluZyxzdHJpbmcsc3RyaW5nLHN0cmluZyxzdHJpbmcpdWludDgiCj09CmFzc2VydApmcmFtZV9kaWcgLTUKZXh0cmFjdCAyIDAKYnRvaQppbnRjXzAgLy8gMAo9PQpmcmFtZV9kaWcgLTUKZXh0cmFjdCAyIDAKYnRvaQppbnRjXzEgLy8gMQo9PQp8fAphc3NlcnQKZnJhbWVfZGlnIC0zCmV4dHJhY3QgMiAwCmJ0b2kKaW50Y18wIC8vIDAKPT0KZnJhbWVfZGlnIC0zCmV4dHJhY3QgMiAwCmJ0b2kKaW50Y18xIC8vIDEKPT0KfHwKYXNzZXJ0CmZyYW1lX2RpZyAtNApleHRyYWN0IDIgMApidG9pCmludGNfMCAvLyAwCj4KYXNzZXJ0CmZyYW1lX2RpZyAtNApleHRyYWN0IDIgMApidG9pCmludGNfMiAvLyAxMDAwMDAwCjwKYXNzZXJ0CmZyYW1lX2RpZyAtMgpleHRyYWN0IDIgMApidG9pCmludGNfMCAvLyAwCj4KYXNzZXJ0CmJ5dGVjIDE1IC8vICJhc3NldF9saXN0ZWQiCmludGNfMCAvLyAwCnR4bmFzIEFzc2V0cwphcHBfZ2xvYmFsX3B1dApieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgpnbG9iYWwgQ2FsbGVyQXBwbGljYXRpb25JRAphcHBfZ2xvYmFsX3B1dApieXRlY18xIC8vICJwb3NpdGlvbiIKZnJhbWVfZGlnIC01CmV4dHJhY3QgMiAwCmJ0b2kKYXBwX2dsb2JhbF9wdXQKYnl0ZWNfMyAvLyAic2lkZSIKZnJhbWVfZGlnIC0zCmV4dHJhY3QgMiAwCmJ0b2kKYXBwX2dsb2JhbF9wdXQKYnl0ZWMgNiAvLyAicXVhbnRpdHkiCmZyYW1lX2RpZyAtMgpleHRyYWN0IDIgMApidG9pCmFwcF9nbG9iYWxfcHV0CmJ5dGVjIDggLy8gInF1YW50aXR5X2ZpbGxlZCIKaW50Y18wIC8vIDAKYXBwX2dsb2JhbF9wdXQKYnl0ZWNfMiAvLyAicHJpY2UiCmZyYW1lX2RpZyAtNApleHRyYWN0IDIgMApidG9pCmFwcF9nbG9iYWxfcHV0CmJ5dGVjIDUgLy8gIm93bmVyIgppbnRjXzEgLy8gMQp0eG5hcyBBY2NvdW50cwphcHBfZ2xvYmFsX3B1dApieXRlYyA0IC8vICJzbGlwcGFnZSIKZnJhbWVfZGlnIC0xCmV4dHJhY3QgMiAwCmJ0b2kKYXBwX2dsb2JhbF9wdXQKZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKaW50Y18wIC8vIDAKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgOSAvLyAiY29sbGF0ZXJhbF9hc3NldF9pZCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKY2FsbHN1YiBzZW5kYXNzZXRfNgpnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwppbnRjXzAgLy8gMApieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyAxMSAvLyAieWVzX2Fzc2V0X2lkIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNApnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwpjYWxsc3ViIHNlbmRhc3NldF82Cmdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCmludGNfMCAvLyAwCmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDEyIC8vICJub19hc3NldF9pZCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKY2FsbHN1YiBzZW5kYXNzZXRfNgpieXRlYyA3IC8vICJmZWVfdGltZXJfc3RhcnQiCmdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKYXBwX2dsb2JhbF9wdXQKaW50Y18xIC8vIDEKZnJhbWVfYnVyeSAwCmZyYW1lX2RpZyAwCmludGMgNCAvLyAyNTYKPAphc3NlcnQKcmV0c3ViCgovLyB2YWxpZGF0ZV9tYXRjaF9ncm91cAp2YWxpZGF0ZW1hdGNoZ3JvdXBfMTE6CnByb3RvIDEgMAp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQorCmd0eG5zIFR5cGVFbnVtCnB1c2hpbnQgNiAvLyBhcHBsCj09CmFzc2VydAp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQorCmd0eG5zYSBBcHBsaWNhdGlvbkFyZ3MgMApieXRlYyAyMCAvLyAibWF0Y2hfdGFrZXIoYXBwbGljYXRpb24pdWludDY0Igo9PQphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKKwpndHhucyBBcHBsaWNhdGlvbklECmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKPT0KYXNzZXJ0CnR4biBHcm91cEluZGV4CnB1c2hpbnQgMiAvLyAyCisKZ3R4bnMgVHlwZUVudW0KcHVzaGludCA2IC8vIGFwcGwKPT0KYXNzZXJ0CnR4biBHcm91cEluZGV4CnB1c2hpbnQgMiAvLyAyCisKZ3R4bnNhIEFwcGxpY2F0aW9uQXJncyAwCmJ5dGVjIDIyIC8vICJwcm9jZXNzX3BvdGVudGlhbF9tYXRjaChhcHBsaWNhdGlvbixhcHBsaWNhdGlvbil1aW50OCIKPT0KYXNzZXJ0CnR4biBHcm91cEluZGV4CnB1c2hpbnQgMiAvLyAyCisKZ3R4bnMgQXBwbGljYXRpb25JRApieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldAo9PQphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKKwpndHhucyBPbkNvbXBsZXRpb24KaW50Y18wIC8vIE5vT3AKPT0KYXNzZXJ0CnR4biBHcm91cEluZGV4CnB1c2hpbnQgMiAvLyAyCisKZ3R4bnMgT25Db21wbGV0aW9uCmludGNfMCAvLyBOb09wCj09CmFzc2VydApyZXRzdWIKCi8vIGhhbmRsZV9mZWVfdHJhbnNmZXIKaGFuZGxlZmVldHJhbnNmZXJfMTI6CnByb3RvIDUgMApmcmFtZV9kaWcgLTUKZnJhbWVfZGlnIC00CmZyYW1lX2RpZyAtMwpmcmFtZV9kaWcgLTIKY2FsbHN1YiBjYWxjdWxhdGVmZWVfMgpieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyA5IC8vICJjb2xsYXRlcmFsX2Fzc2V0X2lkIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNApmcmFtZV9kaWcgLTEKY2FsbHN1YiBzZW5kYXNzZXRfNgpyZXRzdWIKCi8vIGhhbmRsZV9iaWRfYXNrX21ha2VyX2JpZApoYW5kbGViaWRhc2ttYWtlcmJpZF8xMzoKcHJvdG8gMiAwCmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApmcmFtZV9kaWcgLTIKYnl0ZWNfMiAvLyAicHJpY2UiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmZyYW1lX2RpZyAtMgpieXRlYyA0IC8vICJzbGlwcGFnZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKLQo+PQphc3NlcnQKZnJhbWVfZGlnIC0yCmJ5dGVjIDUgLy8gIm93bmVyIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNApmcmFtZV9kaWcgLTIKY2FsbHN1YiBnZXRhcHBhZGRyXzUKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgOSAvLyAiY29sbGF0ZXJhbF9hc3NldF9pZCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKZnJhbWVfZGlnIC0xCmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldAoqCmludGNfMiAvLyAxMDAwMDAwCi8KZnJhbWVfZGlnIC0xCmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyAxMyAvLyAiZmVlX2Jhc2VfcGVyY2VudCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKY2FsbHN1YiBjYWxjdWxhdGVmZWVfMgotCmNhbGxzdWIgZ2V0ZnVuZHN0b3RyYWRlcl83Cmdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCmZyYW1lX2RpZyAtMQpieXRlY18yIC8vICJwcmljZSIKYXBwX2dsb2JhbF9nZXQKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgMTMgLy8gImZlZV9iYXNlX3BlcmNlbnQiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDE2IC8vICJmZWVfYWRkcmVzcyIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKY2FsbHN1YiBoYW5kbGVmZWV0cmFuc2Zlcl8xMgpyZXRzdWIKCi8vIGhhbmRsZV9iaWRfYXNrX21ha2VyX2FzawpoYW5kbGViaWRhc2ttYWtlcmFza18xNDoKcHJvdG8gMiAwCmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApmcmFtZV9kaWcgLTIKYnl0ZWNfMiAvLyAicHJpY2UiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmZyYW1lX2RpZyAtMgpieXRlYyA0IC8vICJzbGlwcGFnZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKKwo8PQphc3NlcnQKZnJhbWVfZGlnIC0yCmJ5dGVjIDUgLy8gIm93bmVyIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNApmcmFtZV9kaWcgLTIKY2FsbHN1YiBnZXRhcHBhZGRyXzUKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJueiBoYW5kbGViaWRhc2ttYWtlcmFza18xNF9sMgpieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyAxMSAvLyAieWVzX2Fzc2V0X2lkIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNApiIGhhbmRsZWJpZGFza21ha2VyYXNrXzE0X2wzCmhhbmRsZWJpZGFza21ha2VyYXNrXzE0X2wyOgpieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyAxMiAvLyAibm9fYXNzZXRfaWQiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmhhbmRsZWJpZGFza21ha2VyYXNrXzE0X2wzOgpmcmFtZV9kaWcgLTEKY2FsbHN1YiBnZXRmdW5kc3RvdHJhZGVyXzcKcmV0c3ViCgovLyBoYW5kbGVfbWFrZXJfYmlkX2JpZF9jb21wbGVtZW50CmhhbmRsZW1ha2VyYmlkYmlkY29tcGxlbWVudF8xNToKcHJvdG8gMiAwCmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApmcmFtZV9kaWcgLTIKYnl0ZWNfMiAvLyAicHJpY2UiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CisKZnJhbWVfZGlnIC0yCmJ5dGVjIDQgLy8gInNsaXBwYWdlIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNAorCmludGNfMiAvLyAxMDAwMDAwCj49CmFzc2VydApnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwpmcmFtZV9kaWcgLTEKYnl0ZWNfMiAvLyAicHJpY2UiCmFwcF9nbG9iYWxfZ2V0CioKaW50Y18yIC8vIDEwMDAwMDAKY2FsbHN1YiBkaXZyb3VuZF8wCmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDkgLy8gImNvbGxhdGVyYWxfYXNzZXRfaWQiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmNhbGxzdWIgZ2V0YXBwYWRkcl81CmNhbGxzdWIgc2VuZGFzc2V0XzYKcmV0c3ViCgovLyBoYW5kbGVfbWFrZXJfYXNrX2Fza19jb21wbGVtZW50CmhhbmRsZW1ha2VyYXNrYXNrY29tcGxlbWVudF8xNjoKcHJvdG8gMiAwCmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApmcmFtZV9kaWcgLTIKYnl0ZWNfMiAvLyAicHJpY2UiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmZyYW1lX2RpZyAtMgpieXRlYyA0IC8vICJzbGlwcGFnZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKLQorCmludGNfMiAvLyAxMDAwMDAwCjw9CmFzc2VydApnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwpmcmFtZV9kaWcgLTEKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJueiBoYW5kbGVtYWtlcmFza2Fza2NvbXBsZW1lbnRfMTZfbDIKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgMTEgLy8gInllc19hc3NldF9pZCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKYiBoYW5kbGVtYWtlcmFza2Fza2NvbXBsZW1lbnRfMTZfbDMKaGFuZGxlbWFrZXJhc2thc2tjb21wbGVtZW50XzE2X2wyOgpieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyAxMiAvLyAibm9fYXNzZXRfaWQiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmhhbmRsZW1ha2VyYXNrYXNrY29tcGxlbWVudF8xNl9sMzoKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKY2FsbHN1YiBnZXRhcHBhZGRyXzUKY2FsbHN1YiBzZW5kYXNzZXRfNgpyZXRzdWIKCi8vIG1hdGNoX21ha2VyCm1hdGNobWFrZXJfMTc6CnByb3RvIDIgMQppbnRjXzAgLy8gMApmcmFtZV9kaWcgLTIKY2FsbHN1YiB2YWxpZGF0ZW1hdGNoZ3JvdXBfMTEKZnJhbWVfZGlnIC0xCmJ5dGVjIDYgLy8gInF1YW50aXR5IgphcHBfZ2xvYmFsX2dldApieXRlYyA4IC8vICJxdWFudGl0eV9maWxsZWQiCmFwcF9nbG9iYWxfZ2V0Ci0KPD0KYXNzZXJ0CmJ5dGVjIDQgLy8gInNsaXBwYWdlIgphcHBfZ2xvYmFsX2dldAppbnRjXzAgLy8gMAo+CmJueiBtYXRjaG1ha2VyXzE3X2wxMQptYXRjaG1ha2VyXzE3X2wxOgpieXRlYyA0IC8vICJzbGlwcGFnZSIKYXBwX2dsb2JhbF9nZXQKaW50Y18wIC8vIDAKPgpibnogbWF0Y2htYWtlcl8xN19sMTAKbWF0Y2htYWtlcl8xN19sMjoKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18wIC8vIDAKPT0KJiYKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18wIC8vIDAKPT0KJiYKfHwKYm56IG1hdGNobWFrZXJfMTdfbDkKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18xIC8vIDEKPT0KJiYKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18xIC8vIDEKPT0KJiYKfHwKYm56IG1hdGNobWFrZXJfMTdfbDgKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18xIC8vIDEKPT0KJiYKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18xIC8vIDEKPT0KJiYKfHwKYm56IG1hdGNobWFrZXJfMTdfbDcKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18wIC8vIDAKPT0KJiYKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18wIC8vIDAKPT0KJiYKfHwKYnogbWF0Y2htYWtlcl8xN19sMTIKZnJhbWVfZGlnIC0yCnR4bmFzIEFwcGxpY2F0aW9ucwpmcmFtZV9kaWcgLTEKY2FsbHN1YiBoYW5kbGVtYWtlcmFza2Fza2NvbXBsZW1lbnRfMTYKYiBtYXRjaG1ha2VyXzE3X2wxMgptYXRjaG1ha2VyXzE3X2w3OgpmcmFtZV9kaWcgLTIKdHhuYXMgQXBwbGljYXRpb25zCmZyYW1lX2RpZyAtMQpjYWxsc3ViIGhhbmRsZW1ha2VyYmlkYmlkY29tcGxlbWVudF8xNQpiIG1hdGNobWFrZXJfMTdfbDEyCm1hdGNobWFrZXJfMTdfbDg6CmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKZnJhbWVfZGlnIC0xCmNhbGxzdWIgaGFuZGxlYmlkYXNrbWFrZXJhc2tfMTQKYiBtYXRjaG1ha2VyXzE3X2wxMgptYXRjaG1ha2VyXzE3X2w5OgpmcmFtZV9kaWcgLTIKdHhuYXMgQXBwbGljYXRpb25zCmZyYW1lX2RpZyAtMQpjYWxsc3ViIGhhbmRsZWJpZGFza21ha2VyYmlkXzEzCmIgbWF0Y2htYWtlcl8xN19sMTIKbWF0Y2htYWtlcl8xN19sMTA6Cmdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKYnl0ZWMgNyAvLyAiZmVlX3RpbWVyX3N0YXJ0IgphcHBfZ2xvYmFsX2dldApwdXNoaW50IDEyMCAvLyAxMjAKKwo8CmFzc2VydApiIG1hdGNobWFrZXJfMTdfbDIKbWF0Y2htYWtlcl8xN19sMTE6CmZyYW1lX2RpZyAtMgp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWMgNCAvLyAic2xpcHBhZ2UiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMCAvLyAwCj4KYnl0ZWMgNyAvLyAiZmVlX3RpbWVyX3N0YXJ0IgphcHBfZ2xvYmFsX2dldApmcmFtZV9kaWcgLTIKdHhuYXMgQXBwbGljYXRpb25zCmJ5dGVjIDcgLy8gImZlZV90aW1lcl9zdGFydCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKPD0KJiYKYXNzZXJ0CmIgbWF0Y2htYWtlcl8xN19sMQptYXRjaG1ha2VyXzE3X2wxMjoKYnl0ZWMgOCAvLyAicXVhbnRpdHlfZmlsbGVkIgpieXRlYyA4IC8vICJxdWFudGl0eV9maWxsZWQiCmFwcF9nbG9iYWxfZ2V0CmZyYW1lX2RpZyAtMQorCmFwcF9nbG9iYWxfcHV0CmludGNfMSAvLyAxCmZyYW1lX2J1cnkgMApmcmFtZV9kaWcgMAppbnRjIDQgLy8gMjU2CjwKYXNzZXJ0CnJldHN1YgoKLy8gdmFsaWRhdGVfdGFrZXJfbWF0Y2hfZ3JvdXAKdmFsaWRhdGV0YWtlcm1hdGNoZ3JvdXBfMTg6CnByb3RvIDEgMAp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQotCmd0eG5zIFR5cGVFbnVtCnB1c2hpbnQgNiAvLyBhcHBsCj09CmFzc2VydAp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQotCmd0eG5zYSBBcHBsaWNhdGlvbkFyZ3MgMApieXRlYyAxOCAvLyAibWF0Y2hfbWFrZXIoYXBwbGljYXRpb24sdWludDY0KXVpbnQ4Igo9PQphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKLQpndHhucyBBcHBsaWNhdGlvbklECmZyYW1lX2RpZyAtMQo9PQphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKKwpndHhucyBUeXBlRW51bQpwdXNoaW50IDYgLy8gYXBwbAo9PQphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKKwpndHhuc2EgQXBwbGljYXRpb25BcmdzIDAKYnl0ZWMgMjIgLy8gInByb2Nlc3NfcG90ZW50aWFsX21hdGNoKGFwcGxpY2F0aW9uLGFwcGxpY2F0aW9uKXVpbnQ4Igo9PQphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKKwpndHhucyBBcHBsaWNhdGlvbklECmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0Cj09CmFzc2VydAp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQotCmd0eG5zYSBBcHBsaWNhdGlvbkFyZ3MgMgpidG9pCmJ5dGVjIDYgLy8gInF1YW50aXR5IgphcHBfZ2xvYmFsX2dldApieXRlYyA4IC8vICJxdWFudGl0eV9maWxsZWQiCmFwcF9nbG9iYWxfZ2V0Ci0KPD0KYXNzZXJ0CnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCi0KZ3R4bnMgT25Db21wbGV0aW9uCmludGNfMCAvLyBOb09wCj09CmFzc2VydAp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQorCmd0eG5zIE9uQ29tcGxldGlvbgppbnRjXzAgLy8gTm9PcAo9PQphc3NlcnQKcmV0c3ViCgovLyBoYW5kbGVfdGFrZXJfYmlkX2Fza19iaWQKaGFuZGxldGFrZXJiaWRhc2tiaWRfMTk6CnByb3RvIDIgMApieXRlY18yIC8vICJwcmljZSIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgNCAvLyAic2xpcHBhZ2UiCmFwcF9nbG9iYWxfZ2V0CisKZnJhbWVfZGlnIC0yCmJ5dGVjXzIgLy8gInByaWNlIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNAo+PQphc3NlcnQKZnJhbWVfZGlnIC0yCmJ5dGVjIDUgLy8gIm93bmVyIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNApmcmFtZV9kaWcgLTIKY2FsbHN1YiBnZXRhcHBhZGRyXzUKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgOSAvLyAiY29sbGF0ZXJhbF9hc3NldF9pZCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKZnJhbWVfZGlnIC0xCmZyYW1lX2RpZyAtMgpieXRlY18yIC8vICJwcmljZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKKgppbnRjXzIgLy8gMTAwMDAwMAovCmNhbGxzdWIgZ2V0ZnVuZHN0b3RyYWRlcl83Cmdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCmZyYW1lX2RpZyAtMQpmcmFtZV9kaWcgLTIKYnl0ZWNfMiAvLyAicHJpY2UiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDEzIC8vICJmZWVfYmFzZV9wZXJjZW50IgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNApieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyAxNiAvLyAiZmVlX2FkZHJlc3MiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmNhbGxzdWIgaGFuZGxlZmVldHJhbnNmZXJfMTIKcmV0c3ViCgovLyBoYW5kbGVfdGFrZXJfYmlkX2Fza19hc2sKaGFuZGxldGFrZXJiaWRhc2thc2tfMjA6CnByb3RvIDIgMApieXRlY18yIC8vICJwcmljZSIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgNCAvLyAic2xpcHBhZ2UiCmFwcF9nbG9iYWxfZ2V0Ci0KZnJhbWVfZGlnIC0yCmJ5dGVjXzIgLy8gInByaWNlIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNAo8PQphc3NlcnQKZnJhbWVfZGlnIC0yCmJ5dGVjIDUgLy8gIm93bmVyIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNApmcmFtZV9kaWcgLTIKY2FsbHN1YiBnZXRhcHBhZGRyXzUKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJueiBoYW5kbGV0YWtlcmJpZGFza2Fza18yMF9sMgpieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyAxMSAvLyAieWVzX2Fzc2V0X2lkIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNApiIGhhbmRsZXRha2VyYmlkYXNrYXNrXzIwX2wzCmhhbmRsZXRha2VyYmlkYXNrYXNrXzIwX2wyOgpieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyAxMiAvLyAibm9fYXNzZXRfaWQiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmhhbmRsZXRha2VyYmlkYXNrYXNrXzIwX2wzOgpmcmFtZV9kaWcgLTEKY2FsbHN1YiBnZXRmdW5kc3RvdHJhZGVyXzcKcmV0c3ViCgovLyBoYW5kbGVfdGFrZXJfYmlkX2JpZF9jb21wbGVtZW50CmhhbmRsZXRha2VyYmlkYmlkY29tcGxlbWVudF8yMToKcHJvdG8gMiAwCmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApmcmFtZV9kaWcgLTIKYnl0ZWNfMiAvLyAicHJpY2UiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CisKYnl0ZWMgNCAvLyAic2xpcHBhZ2UiCmFwcF9nbG9iYWxfZ2V0CisKaW50Y18yIC8vIDEwMDAwMDAKPj0KYXNzZXJ0CmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApieXRlYyA0IC8vICJzbGlwcGFnZSIKYXBwX2dsb2JhbF9nZXQKKwppbnRjXzIgLy8gMTAwMDAwMApmcmFtZV9kaWcgLTIKYnl0ZWNfMiAvLyAicHJpY2UiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80Ci0KPgpibnogaGFuZGxldGFrZXJiaWRiaWRjb21wbGVtZW50XzIxX2wyCmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApieXRlYyA0IC8vICJzbGlwcGFnZSIKYXBwX2dsb2JhbF9nZXQKKwpzdG9yZSAxOApiIGhhbmRsZXRha2VyYmlkYmlkY29tcGxlbWVudF8yMV9sMwpoYW5kbGV0YWtlcmJpZGJpZGNvbXBsZW1lbnRfMjFfbDI6CmludGNfMiAvLyAxMDAwMDAwCmZyYW1lX2RpZyAtMgpieXRlY18yIC8vICJwcmljZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKLQpzdG9yZSAxOApoYW5kbGV0YWtlcmJpZGJpZGNvbXBsZW1lbnRfMjFfbDM6Cmdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCmZyYW1lX2RpZyAtMQpsb2FkIDE4CioKaW50Y18yIC8vIDEwMDAwMDAKY2FsbHN1YiBkaXZyb3VuZF8wCmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDkgLy8gImNvbGxhdGVyYWxfYXNzZXRfaWQiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmNhbGxzdWIgZ2V0YXBwYWRkcl81CmNhbGxzdWIgc2VuZGFzc2V0XzYKZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKZnJhbWVfZGlnIC0xCmxvYWQgMTgKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgMTMgLy8gImZlZV9iYXNlX3BlcmNlbnQiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDE2IC8vICJmZWVfYWRkcmVzcyIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKY2FsbHN1YiBoYW5kbGVmZWV0cmFuc2Zlcl8xMgpyZXRzdWIKCi8vIGhhbmRsZV90YWtlcl9hc2tfYXNrX2NvbXBsZW1lbnQKaGFuZGxldGFrZXJhc2thc2tjb21wbGVtZW50XzIyOgpwcm90byAyIDAKYnl0ZWNfMiAvLyAicHJpY2UiCmFwcF9nbG9iYWxfZ2V0CmZyYW1lX2RpZyAtMgpieXRlY18yIC8vICJwcmljZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKKwpieXRlYyA0IC8vICJzbGlwcGFnZSIKYXBwX2dsb2JhbF9nZXQKLQppbnRjXzIgLy8gMTAwMDAwMAo8PQphc3NlcnQKYnl0ZWNfMiAvLyAicHJpY2UiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDQgLy8gInNsaXBwYWdlIgphcHBfZ2xvYmFsX2dldAotCmludGNfMiAvLyAxMDAwMDAwCmZyYW1lX2RpZyAtMgpieXRlY18yIC8vICJwcmljZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKLQo8CmJueiBoYW5kbGV0YWtlcmFza2Fza2NvbXBsZW1lbnRfMjJfbDUKaW50Y18yIC8vIDEwMDAwMDAKZnJhbWVfZGlnIC0yCmJ5dGVjXzIgLy8gInByaWNlIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNAotCnN0b3JlIDE5CmhhbmRsZXRha2VyYXNrYXNrY29tcGxlbWVudF8yMl9sMjoKZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKZnJhbWVfZGlnIC0xCmJ5dGVjXzEgLy8gInBvc2l0aW9uIgphcHBfZ2xvYmFsX2dldAppbnRjXzAgLy8gMAo9PQpibnogaGFuZGxldGFrZXJhc2thc2tjb21wbGVtZW50XzIyX2w0CmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDExIC8vICJ5ZXNfYXNzZXRfaWQiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmIgaGFuZGxldGFrZXJhc2thc2tjb21wbGVtZW50XzIyX2w2CmhhbmRsZXRha2VyYXNrYXNrY29tcGxlbWVudF8yMl9sNDoKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgMTIgLy8gIm5vX2Fzc2V0X2lkIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNApiIGhhbmRsZXRha2VyYXNrYXNrY29tcGxlbWVudF8yMl9sNgpoYW5kbGV0YWtlcmFza2Fza2NvbXBsZW1lbnRfMjJfbDU6CmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApieXRlYyA0IC8vICJzbGlwcGFnZSIKYXBwX2dsb2JhbF9nZXQKLQpzdG9yZSAxOQpiIGhhbmRsZXRha2VyYXNrYXNrY29tcGxlbWVudF8yMl9sMgpoYW5kbGV0YWtlcmFza2Fza2NvbXBsZW1lbnRfMjJfbDY6CmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmNhbGxzdWIgZ2V0YXBwYWRkcl81CmNhbGxzdWIgc2VuZGFzc2V0XzYKcmV0c3ViCgovLyBhbWVuZF9vcmRlcgphbWVuZG9yZGVyXzIzOgpwcm90byAzIDEKaW50Y18wIC8vIDAKdHhuIFR5cGVFbnVtCnB1c2hpbnQgNiAvLyBhcHBsCj09CmFzc2VydAp0eG5hIEFwcGxpY2F0aW9uQXJncyAwCmJ5dGVjIDE5IC8vICJhbWVuZF9vcmRlcih1aW50NjQsdWludDY0LHVpbnQ2NCl1aW50OCIKPT0KYXNzZXJ0CnR4biBTZW5kZXIKYnl0ZWMgNSAvLyAib3duZXIiCmFwcF9nbG9iYWxfZ2V0Cj09CmFzc2VydApieXRlYyA4IC8vICJxdWFudGl0eV9maWxsZWQiCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmFzc2VydApmcmFtZV9kaWcgLTMKaW50Y18wIC8vIDAKPgphc3NlcnQKZnJhbWVfZGlnIC0zCmludGNfMiAvLyAxMDAwMDAwCjwKYXNzZXJ0CmZyYW1lX2RpZyAtMgppbnRjXzAgLy8gMAo+CmFzc2VydApmcmFtZV9kaWcgLTMKYnl0ZWNfMiAvLyAicHJpY2UiCmFwcF9nbG9iYWxfZ2V0CiE9CmZyYW1lX2RpZyAtMgpieXRlYyA2IC8vICJxdWFudGl0eSIKYXBwX2dsb2JhbF9nZXQKIT0KfHwKZnJhbWVfZGlnIC0xCmJ5dGVjIDQgLy8gInNsaXBwYWdlIgphcHBfZ2xvYmFsX2dldAohPQp8fAphc3NlcnQKYnl0ZWNfMyAvLyAic2lkZSIKYXBwX2dsb2JhbF9nZXQKaW50Y18xIC8vIDEKPT0KYm56IGFtZW5kb3JkZXJfMjNfbDUKYnl0ZWMgMTUgLy8gImFzc2V0X2xpc3RlZCIKYXBwX2dsb2JhbF9nZXQKc3RvcmUgMTMKZnJhbWVfZGlnIC0yCmJ5dGVjIDYgLy8gInF1YW50aXR5IgphcHBfZ2xvYmFsX2dldAo+CmJueiBhbWVuZG9yZGVyXzIzX2w0CmJ5dGVjIDYgLy8gInF1YW50aXR5IgphcHBfZ2xvYmFsX2dldApmcmFtZV9kaWcgLTIKLQpzdG9yZSAxMgpsb2FkIDEyCmludGNfMCAvLyAwCj4KYnogYW1lbmRvcmRlcl8yM19sOQpnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwpsb2FkIDEyCmxvYWQgMTMKdHhuIFNlbmRlcgpjYWxsc3ViIHNlbmRhc3NldF82CmIgYW1lbmRvcmRlcl8yM19sOQphbWVuZG9yZGVyXzIzX2w0OgpmcmFtZV9kaWcgLTIKYnl0ZWMgNiAvLyAicXVhbnRpdHkiCmFwcF9nbG9iYWxfZ2V0Ci0Kc3RvcmUgMTIKdHhuIEdyb3VwSW5kZXgKaW50Y18wIC8vIDAKPgphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKLQpndHhucyBUeXBlRW51bQppbnRjXzMgLy8gYXhmZXIKPT0KYXNzZXJ0CnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCi0KZ3R4bnMgU2VuZGVyCnR4biBTZW5kZXIKPT0KYXNzZXJ0CnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCi0KZ3R4bnMgQXNzZXRSZWNlaXZlcgpnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwo9PQphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKLQpndHhucyBYZmVyQXNzZXQKbG9hZCAxMwo9PQphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKLQpndHhucyBBc3NldEFtb3VudApsb2FkIDEyCj09CmFzc2VydApiIGFtZW5kb3JkZXJfMjNfbDkKYW1lbmRvcmRlcl8yM19sNToKYnl0ZWMgNiAvLyAicXVhbnRpdHkiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApieXRlYyA0IC8vICJzbGlwcGFnZSIKYXBwX2dsb2JhbF9nZXQKKwoqCmludGNfMiAvLyAxMDAwMDAwCi8KYnl0ZWMgNiAvLyAicXVhbnRpdHkiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjXzIgLy8gInByaWNlIgphcHBfZ2xvYmFsX2dldApieXRlYyA0IC8vICJzbGlwcGFnZSIKYXBwX2dsb2JhbF9nZXQKKwpieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyAxMyAvLyAiZmVlX2Jhc2VfcGVyY2VudCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKY2FsbHN1YiBjYWxjdWxhdGVmZWVjb21taXRfMworCnN0b3JlIDEwCmZyYW1lX2RpZyAtMgpmcmFtZV9kaWcgLTMKZnJhbWVfZGlnIC0xCisKKgppbnRjXzIgLy8gMTAwMDAwMAovCmZyYW1lX2RpZyAtMgpmcmFtZV9kaWcgLTMKZnJhbWVfZGlnIC0xCisKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgMTMgLy8gImZlZV9iYXNlX3BlcmNlbnQiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmNhbGxzdWIgY2FsY3VsYXRlZmVlY29tbWl0XzMKKwpzdG9yZSAxMQpsb2FkIDExCmxvYWQgMTAKPgpibnogYW1lbmRvcmRlcl8yM19sOApsb2FkIDEwCmxvYWQgMTEKLQpzdG9yZSAxMgpsb2FkIDEyCmludGNfMCAvLyAwCj4KYnogYW1lbmRvcmRlcl8yM19sOQpnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwpsb2FkIDEyCmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDkgLy8gImNvbGxhdGVyYWxfYXNzZXRfaWQiCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CnR4biBTZW5kZXIKY2FsbHN1YiBzZW5kYXNzZXRfNgpiIGFtZW5kb3JkZXJfMjNfbDkKYW1lbmRvcmRlcl8yM19sODoKbG9hZCAxMQpsb2FkIDEwCi0Kc3RvcmUgMTIKdHhuIEdyb3VwSW5kZXgKaW50Y18wIC8vIDAKPgphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKLQpndHhucyBUeXBlRW51bQppbnRjXzMgLy8gYXhmZXIKPT0KYXNzZXJ0CnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCi0KZ3R4bnMgU2VuZGVyCnR4biBTZW5kZXIKPT0KYXNzZXJ0CnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCi0KZ3R4bnMgQXNzZXRSZWNlaXZlcgpnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwo9PQphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKLQpndHhucyBYZmVyQXNzZXQKYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgOSAvLyAiY29sbGF0ZXJhbF9hc3NldF9pZCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKPT0KYXNzZXJ0CnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCi0KZ3R4bnMgQXNzZXRBbW91bnQKbG9hZCAxMgo9PQphc3NlcnQKYW1lbmRvcmRlcl8yM19sOToKYnl0ZWNfMiAvLyAicHJpY2UiCmZyYW1lX2RpZyAtMwphcHBfZ2xvYmFsX3B1dApieXRlYyA2IC8vICJxdWFudGl0eSIKZnJhbWVfZGlnIC0yCmFwcF9nbG9iYWxfcHV0CmJ5dGVjIDQgLy8gInNsaXBwYWdlIgpmcmFtZV9kaWcgLTEKYXBwX2dsb2JhbF9wdXQKYnl0ZWMgNyAvLyAiZmVlX3RpbWVyX3N0YXJ0IgpnbG9iYWwgTGF0ZXN0VGltZXN0YW1wCmFwcF9nbG9iYWxfcHV0CmludGNfMSAvLyAxCmZyYW1lX2J1cnkgMApmcmFtZV9kaWcgMAppbnRjIDQgLy8gMjU2CjwKYXNzZXJ0CnJldHN1YgoKLy8gbWF0Y2hfdGFrZXIKbWF0Y2h0YWtlcl8yNDoKcHJvdG8gMSAxCmludGNfMCAvLyAwCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKY2FsbHN1YiB2YWxpZGF0ZXRha2VybWF0Y2hncm91cF8xOApmcmFtZV9kaWcgLTEKdHhuYXMgQXBwbGljYXRpb25zCmJ5dGVjIDQgLy8gInNsaXBwYWdlIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNAppbnRjXzAgLy8gMAo+CmJueiBtYXRjaHRha2VyXzI0X2wxMQptYXRjaHRha2VyXzI0X2wxOgpieXRlYyA0IC8vICJzbGlwcGFnZSIKYXBwX2dsb2JhbF9nZXQKaW50Y18wIC8vIDAKPgpibnogbWF0Y2h0YWtlcl8yNF9sMTAKbWF0Y2h0YWtlcl8yNF9sMjoKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18wIC8vIDAKPT0KJiYKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18wIC8vIDAKPT0KJiYKfHwKYm56IG1hdGNodGFrZXJfMjRfbDkKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18xIC8vIDEKPT0KJiYKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18xIC8vIDEKPT0KJiYKfHwKYm56IG1hdGNodGFrZXJfMjRfbDgKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18xIC8vIDEKPT0KJiYKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18xIC8vIDEKPT0KJiYKfHwKYm56IG1hdGNodGFrZXJfMjRfbDcKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMSAvLyAxCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18wIC8vIDAKPT0KJiYKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmFwcF9nbG9iYWxfZ2V0CmludGNfMSAvLyAxCj09CmJ5dGVjXzMgLy8gInNpZGUiCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMSAvLyAicG9zaXRpb24iCmNhbGxzdWIgZ2xvYmFsbXVzdGdldF80CmludGNfMCAvLyAwCj09CiYmCmZyYW1lX2RpZyAtMQp0eG5hcyBBcHBsaWNhdGlvbnMKYnl0ZWNfMyAvLyAic2lkZSIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaW50Y18wIC8vIDAKPT0KJiYKfHwKYnogbWF0Y2h0YWtlcl8yNF9sMTIKZnJhbWVfZGlnIC0xCnR4bmFzIEFwcGxpY2F0aW9ucwp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQotCmd0eG5zYSBBcHBsaWNhdGlvbkFyZ3MgMgpidG9pCmNhbGxzdWIgaGFuZGxldGFrZXJhc2thc2tjb21wbGVtZW50XzIyCmIgbWF0Y2h0YWtlcl8yNF9sMTIKbWF0Y2h0YWtlcl8yNF9sNzoKZnJhbWVfZGlnIC0xCnR4bmFzIEFwcGxpY2F0aW9ucwp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQotCmd0eG5zYSBBcHBsaWNhdGlvbkFyZ3MgMgpidG9pCmNhbGxzdWIgaGFuZGxldGFrZXJiaWRiaWRjb21wbGVtZW50XzIxCmIgbWF0Y2h0YWtlcl8yNF9sMTIKbWF0Y2h0YWtlcl8yNF9sODoKZnJhbWVfZGlnIC0xCnR4bmFzIEFwcGxpY2F0aW9ucwp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQotCmd0eG5zYSBBcHBsaWNhdGlvbkFyZ3MgMgpidG9pCmNhbGxzdWIgaGFuZGxldGFrZXJiaWRhc2thc2tfMjAKYiBtYXRjaHRha2VyXzI0X2wxMgptYXRjaHRha2VyXzI0X2w5OgpmcmFtZV9kaWcgLTEKdHhuYXMgQXBwbGljYXRpb25zCnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCi0KZ3R4bnNhIEFwcGxpY2F0aW9uQXJncyAyCmJ0b2kKY2FsbHN1YiBoYW5kbGV0YWtlcmJpZGFza2JpZF8xOQpiIG1hdGNodGFrZXJfMjRfbDEyCm1hdGNodGFrZXJfMjRfbDEwOgpnbG9iYWwgTGF0ZXN0VGltZXN0YW1wCmJ5dGVjIDcgLy8gImZlZV90aW1lcl9zdGFydCIKYXBwX2dsb2JhbF9nZXQKcHVzaGludCAxMjAgLy8gMTIwCisKPAphc3NlcnQKYiBtYXRjaHRha2VyXzI0X2wyCm1hdGNodGFrZXJfMjRfbDExOgpieXRlYyA0IC8vICJzbGlwcGFnZSIKYXBwX2dsb2JhbF9nZXQKaW50Y18wIC8vIDAKPgpmcmFtZV9kaWcgLTEKdHhuYXMgQXBwbGljYXRpb25zCmJ5dGVjIDcgLy8gImZlZV90aW1lcl9zdGFydCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKYnl0ZWMgNyAvLyAiZmVlX3RpbWVyX3N0YXJ0IgphcHBfZ2xvYmFsX2dldAo8PQomJgphc3NlcnQKYiBtYXRjaHRha2VyXzI0X2wxCm1hdGNodGFrZXJfMjRfbDEyOgpieXRlYyA4IC8vICJxdWFudGl0eV9maWxsZWQiCmJ5dGVjIDggLy8gInF1YW50aXR5X2ZpbGxlZCIKYXBwX2dsb2JhbF9nZXQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKLQpndHhuc2EgQXBwbGljYXRpb25BcmdzIDIKYnRvaQorCmFwcF9nbG9iYWxfcHV0CmludGNfMSAvLyAxCmZyYW1lX2J1cnkgMApyZXRzdWIKCi8vIGRlbGV0ZQpkZWxldGVfMjU6CnByb3RvIDAgMQppbnRjXzAgLy8gMAp0eG4gU2VuZGVyCmdsb2JhbCBDcmVhdG9yQWRkcmVzcwo9PQp0eG4gU2VuZGVyCmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CnB1c2hieXRlcyAweDY1NzM2MzcyNmY3NzVmNjM2MTZlNjM2NTZjNWY2MTY0NjQ3MjY1NzM3MyAvLyAiZXNjcm93X2NhbmNlbF9hZGRyZXNzIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNAo9PQp8fAphc3NlcnQKaXR4bl9iZWdpbgppbnRjXzMgLy8gYXhmZXIKaXR4bl9maWVsZCBUeXBlRW51bQpieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApieXRlYyA5IC8vICJjb2xsYXRlcmFsX2Fzc2V0X2lkIgpjYWxsc3ViIGdsb2JhbG11c3RnZXRfNAppdHhuX2ZpZWxkIFhmZXJBc3NldApieXRlYyA1IC8vICJvd25lciIKYXBwX2dsb2JhbF9nZXQKaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCmludGNfMCAvLyAwCml0eG5fZmllbGQgRmVlCmludGNfMCAvLyAwCml0eG5fZmllbGQgQXNzZXRBbW91bnQKYnl0ZWMgNSAvLyAib3duZXIiCmFwcF9nbG9iYWxfZ2V0Cml0eG5fZmllbGQgQXNzZXRDbG9zZVRvCml0eG5fc3VibWl0Cml0eG5fYmVnaW4KaW50Y18zIC8vIGF4ZmVyCml0eG5fZmllbGQgVHlwZUVudW0KYnl0ZWNfMCAvLyAibWFya2V0X2FwcF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgMTEgLy8gInllc19hc3NldF9pZCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaXR4bl9maWVsZCBYZmVyQXNzZXQKYnl0ZWMgNSAvLyAib3duZXIiCmFwcF9nbG9iYWxfZ2V0Cml0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgppbnRjXzAgLy8gMAppdHhuX2ZpZWxkIEZlZQppbnRjXzAgLy8gMAppdHhuX2ZpZWxkIEFzc2V0QW1vdW50CmJ5dGVjIDUgLy8gIm93bmVyIgphcHBfZ2xvYmFsX2dldAppdHhuX2ZpZWxkIEFzc2V0Q2xvc2VUbwppdHhuX3N1Ym1pdAppdHhuX2JlZ2luCmludGNfMyAvLyBheGZlcgppdHhuX2ZpZWxkIFR5cGVFbnVtCmJ5dGVjXzAgLy8gIm1hcmtldF9hcHBfaWQiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDEyIC8vICJub19hc3NldF9pZCIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKaXR4bl9maWVsZCBYZmVyQXNzZXQKYnl0ZWMgNSAvLyAib3duZXIiCmFwcF9nbG9iYWxfZ2V0Cml0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgppbnRjXzAgLy8gMAppdHhuX2ZpZWxkIEZlZQppbnRjXzAgLy8gMAppdHhuX2ZpZWxkIEFzc2V0QW1vdW50CmJ5dGVjIDUgLy8gIm93bmVyIgphcHBfZ2xvYmFsX2dldAppdHhuX2ZpZWxkIEFzc2V0Q2xvc2VUbwppdHhuX3N1Ym1pdAppdHhuX2JlZ2luCmludGNfMSAvLyBwYXkKaXR4bl9maWVsZCBUeXBlRW51bQppbnRjXzAgLy8gMAppdHhuX2ZpZWxkIEFtb3VudApieXRlYyA1IC8vICJvd25lciIKYXBwX2dsb2JhbF9nZXQKaXR4bl9maWVsZCBSZWNlaXZlcgppbnRjXzAgLy8gMAppdHhuX2ZpZWxkIEZlZQpieXRlYyA1IC8vICJvd25lciIKYXBwX2dsb2JhbF9nZXQKaXR4bl9maWVsZCBDbG9zZVJlbWFpbmRlclRvCml0eG5fc3VibWl0CmludGNfMSAvLyAxCmZyYW1lX2J1cnkgMApmcmFtZV9kaWcgMAppbnRjIDQgLy8gMjU2CjwKYXNzZXJ0CnJldHN1YgoKLy8gb25fdXBkYXRlCm9udXBkYXRlXzI2Ogpwcm90byAwIDEKaW50Y18wIC8vIDAKdHhuIFNlbmRlcgpieXRlY18wIC8vICJtYXJrZXRfYXBwX2lkIgphcHBfZ2xvYmFsX2dldApwdXNoYnl0ZXMgMHg2ZDYxNzI2YjY1NzQ1ZjY2NzI2OTY1NmU2NDVmNjE2NDY0NzIgLy8gIm1hcmtldF9mcmllbmRfYWRkciIKY2FsbHN1YiBnbG9iYWxtdXN0Z2V0XzQKPT0KZ2xvYmFsIEdyb3VwU2l6ZQppbnRjXzEgLy8gMQo9PQomJgphc3NlcnQKaW50Y18xIC8vIDEKZnJhbWVfYnVyeSAwCnJldHN1YgoKLy8gb25fY3JlYXRlX2Nhc3RlcgpvbmNyZWF0ZWNhc3Rlcl8yNzoKcHJvdG8gMCAwCmludGNfMCAvLyAwCmNhbGxzdWIgb25jcmVhdGVfOQpmcmFtZV9idXJ5IDAKYnl0ZWMgMTAgLy8gMHgxNTFmN2M3NQpieXRlYyAxNCAvLyAweDAwCmludGNfMCAvLyAwCmZyYW1lX2RpZyAwCnNldGJ5dGUKY29uY2F0CmxvZwpyZXRzdWIKCi8vIHNldHVwX2Nhc3RlcgpzZXR1cGNhc3Rlcl8yODoKcHJvdG8gMCAwCmludGNfMCAvLyAwCmJ5dGVjIDIxIC8vICIiCmR1cG4gNAp0eG5hIEFwcGxpY2F0aW9uQXJncyAxCmZyYW1lX2J1cnkgMQp0eG5hIEFwcGxpY2F0aW9uQXJncyAyCmZyYW1lX2J1cnkgMgp0eG5hIEFwcGxpY2F0aW9uQXJncyAzCmZyYW1lX2J1cnkgMwp0eG5hIEFwcGxpY2F0aW9uQXJncyA0CmZyYW1lX2J1cnkgNAp0eG5hIEFwcGxpY2F0aW9uQXJncyA1CmZyYW1lX2J1cnkgNQpmcmFtZV9kaWcgMQpmcmFtZV9kaWcgMgpmcmFtZV9kaWcgMwpmcmFtZV9kaWcgNApmcmFtZV9kaWcgNQpjYWxsc3ViIHNldHVwXzEwCmZyYW1lX2J1cnkgMApieXRlYyAxMCAvLyAweDE1MWY3Yzc1CmJ5dGVjIDE0IC8vIDB4MDAKaW50Y18wIC8vIDAKZnJhbWVfZGlnIDAKc2V0Ynl0ZQpjb25jYXQKbG9nCnJldHN1YgoKLy8gbWF0Y2hfbWFrZXJfY2FzdGVyCm1hdGNobWFrZXJjYXN0ZXJfMjk6CnByb3RvIDAgMAppbnRjXzAgLy8gMApkdXBuIDIKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQppbnRjXzAgLy8gMApnZXRieXRlCmZyYW1lX2J1cnkgMQp0eG5hIEFwcGxpY2F0aW9uQXJncyAyCmJ0b2kKZnJhbWVfYnVyeSAyCmZyYW1lX2RpZyAxCmZyYW1lX2RpZyAyCmNhbGxzdWIgbWF0Y2htYWtlcl8xNwpmcmFtZV9idXJ5IDAKYnl0ZWMgMTAgLy8gMHgxNTFmN2M3NQpieXRlYyAxNCAvLyAweDAwCmludGNfMCAvLyAwCmZyYW1lX2RpZyAwCnNldGJ5dGUKY29uY2F0CmxvZwpyZXRzdWIKCi8vIGFtZW5kX29yZGVyX2Nhc3RlcgphbWVuZG9yZGVyY2FzdGVyXzMwOgpwcm90byAwIDAKaW50Y18wIC8vIDAKZHVwbiAzCnR4bmEgQXBwbGljYXRpb25BcmdzIDEKYnRvaQpmcmFtZV9idXJ5IDEKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgpidG9pCmZyYW1lX2J1cnkgMgp0eG5hIEFwcGxpY2F0aW9uQXJncyAzCmJ0b2kKZnJhbWVfYnVyeSAzCmZyYW1lX2RpZyAxCmZyYW1lX2RpZyAyCmZyYW1lX2RpZyAzCmNhbGxzdWIgYW1lbmRvcmRlcl8yMwpmcmFtZV9idXJ5IDAKYnl0ZWMgMTAgLy8gMHgxNTFmN2M3NQpieXRlYyAxNCAvLyAweDAwCmludGNfMCAvLyAwCmZyYW1lX2RpZyAwCnNldGJ5dGUKY29uY2F0CmxvZwpyZXRzdWIKCi8vIG1hdGNoX3Rha2VyX2Nhc3RlcgptYXRjaHRha2VyY2FzdGVyXzMxOgpwcm90byAwIDAKaW50Y18wIC8vIDAKZHVwCnR4bmEgQXBwbGljYXRpb25BcmdzIDEKaW50Y18wIC8vIDAKZ2V0Ynl0ZQpmcmFtZV9idXJ5IDEKZnJhbWVfZGlnIDEKY2FsbHN1YiBtYXRjaHRha2VyXzI0CmZyYW1lX2J1cnkgMApieXRlYyAxMCAvLyAweDE1MWY3Yzc1CmZyYW1lX2RpZyAwCml0b2IKY29uY2F0CmxvZwpyZXRzdWIKCi8vIGRlbGV0ZV9jYXN0ZXIKZGVsZXRlY2FzdGVyXzMyOgpwcm90byAwIDAKaW50Y18wIC8vIDAKY2FsbHN1YiBkZWxldGVfMjUKZnJhbWVfYnVyeSAwCmJ5dGVjIDEwIC8vIDB4MTUxZjdjNzUKYnl0ZWMgMTQgLy8gMHgwMAppbnRjXzAgLy8gMApmcmFtZV9kaWcgMApzZXRieXRlCmNvbmNhdApsb2cKcmV0c3ViCgovLyBvbl91cGRhdGVfY2FzdGVyCm9udXBkYXRlY2FzdGVyXzMzOgpwcm90byAwIDAKaW50Y18wIC8vIDAKY2FsbHN1YiBvbnVwZGF0ZV8yNgpmcmFtZV9idXJ5IDAKYnl0ZWMgMTAgLy8gMHgxNTFmN2M3NQpmcmFtZV9kaWcgMAppdG9iCmNvbmNhdApsb2cKcmV0c3Vi",
1336
+ "clear": "I3ByYWdtYSB2ZXJzaW9uIDgKcHVzaGludCAwIC8vIDAKcmV0dXJu"
1337
+ },
1338
+ "state": {
1339
+ "global": {
1340
+ "num_byte_slices": 1,
1341
+ "num_uints": 9
1342
+ },
1343
+ "local": {
1344
+ "num_byte_slices": 0,
1345
+ "num_uints": 0
1346
+ }
1347
+ },
1348
+ "schema": {
1349
+ "global": {
1350
+ "declared": {
1351
+ "asset_listed": {
1352
+ "type": "uint64",
1353
+ "key": "asset_listed",
1354
+ "descr": "The asset id of the escrow"
1355
+ },
1356
+ "fee_timer_start": {
1357
+ "type": "uint64",
1358
+ "key": "fee_timer_start",
1359
+ "descr": "The timestamp of the fee timer start"
1360
+ },
1361
+ "market_app_id": {
1362
+ "type": "uint64",
1363
+ "key": "market_app_id",
1364
+ "descr": "The id of the market app"
1365
+ },
1366
+ "owner": {
1367
+ "type": "bytes",
1368
+ "key": "owner",
1369
+ "descr": "The owner of the escrow"
1370
+ },
1371
+ "position": {
1372
+ "type": "uint64",
1373
+ "key": "position",
1374
+ "descr": "The position of the escrow: yes/no"
1375
+ },
1376
+ "price": {
1377
+ "type": "uint64",
1378
+ "key": "price",
1379
+ "descr": "The price of the escrow"
1380
+ },
1381
+ "quantity": {
1382
+ "type": "uint64",
1383
+ "key": "quantity",
1384
+ "descr": "The quantity of the escrow"
1385
+ },
1386
+ "quantity_filled": {
1387
+ "type": "uint64",
1388
+ "key": "quantity_filled",
1389
+ "descr": "The quantity of the escrow filled"
1390
+ },
1391
+ "side": {
1392
+ "type": "uint64",
1393
+ "key": "side",
1394
+ "descr": "The side of the escrow: buy/sell"
1395
+ },
1396
+ "slippage": {
1397
+ "type": "uint64",
1398
+ "key": "slippage",
1399
+ "descr": "The slippage of the escrow. 0 if limit."
1400
+ }
1401
+ },
1402
+ "reserved": {}
1403
+ },
1404
+ "local": {
1405
+ "declared": {},
1406
+ "reserved": {}
1407
+ }
1408
+ },
1409
+ "contract": {
1410
+ "name": "escrow_app",
1411
+ "methods": [
1412
+ {
1413
+ "name": "on_create",
1414
+ "args": [],
1415
+ "returns": {
1416
+ "type": "uint8"
1417
+ }
1418
+ },
1419
+ {
1420
+ "name": "setup",
1421
+ "args": [
1422
+ {
1423
+ "type": "string",
1424
+ "name": "position"
1425
+ },
1426
+ {
1427
+ "type": "string",
1428
+ "name": "price"
1429
+ },
1430
+ {
1431
+ "type": "string",
1432
+ "name": "side"
1433
+ },
1434
+ {
1435
+ "type": "string",
1436
+ "name": "quantity"
1437
+ },
1438
+ {
1439
+ "type": "string",
1440
+ "name": "slippage"
1441
+ }
1442
+ ],
1443
+ "returns": {
1444
+ "type": "uint8"
1445
+ }
1446
+ },
1447
+ {
1448
+ "name": "match_maker",
1449
+ "args": [
1450
+ {
1451
+ "type": "application",
1452
+ "name": "taker"
1453
+ },
1454
+ {
1455
+ "type": "uint64",
1456
+ "name": "match_quantity"
1457
+ }
1458
+ ],
1459
+ "returns": {
1460
+ "type": "uint8"
1461
+ }
1462
+ },
1463
+ {
1464
+ "name": "amend_order",
1465
+ "args": [
1466
+ {
1467
+ "type": "uint64",
1468
+ "name": "price"
1469
+ },
1470
+ {
1471
+ "type": "uint64",
1472
+ "name": "quantity"
1473
+ },
1474
+ {
1475
+ "type": "uint64",
1476
+ "name": "slippage"
1477
+ }
1478
+ ],
1479
+ "returns": {
1480
+ "type": "uint8"
1481
+ }
1482
+ },
1483
+ {
1484
+ "name": "match_taker",
1485
+ "args": [
1486
+ {
1487
+ "type": "application",
1488
+ "name": "maker"
1489
+ }
1490
+ ],
1491
+ "returns": {
1492
+ "type": "uint64"
1493
+ }
1494
+ },
1495
+ {
1496
+ "name": "delete",
1497
+ "args": [],
1498
+ "returns": {
1499
+ "type": "uint8"
1500
+ }
1501
+ },
1502
+ {
1503
+ "name": "on_update",
1504
+ "args": [],
1505
+ "returns": {
1506
+ "type": "uint64"
1507
+ }
1508
+ }
1509
+ ],
1510
+ "networks": {}
1511
+ },
1512
+ "bare_call_config": {
1513
+ "no_op": "CREATE"
1514
+ }
1515
+ };
1516
+ var EscrowAppCallFactory = class {
1517
+ /**
1518
+ * Gets available create call factories
1519
+ */
1520
+ static get create() {
1521
+ return {
1522
+ /**
1523
+ * Constructs a create call for the escrow_app smart contract using a bare call
1524
+ *
1525
+ * @param params Any parameters for the call
1526
+ * @returns A TypedCallParams object for the call
1527
+ */
1528
+ bare(params = {}) {
1529
+ return {
1530
+ method: void 0,
1531
+ methodArgs: void 0,
1532
+ ...params
1533
+ };
1534
+ },
1535
+ /**
1536
+ * Constructs a create call for the escrow_app smart contract using the on_create()uint8 ABI method
1537
+ *
1538
+ * @param args Any args for the contract call
1539
+ * @param params Any additional parameters for the call
1540
+ * @returns A TypedCallParams object for the call
1541
+ */
1542
+ onCreate(args, params = {}) {
1543
+ return {
1544
+ method: "on_create()uint8",
1545
+ methodArgs: Array.isArray(args) ? args : [],
1546
+ ...params
1547
+ };
1548
+ }
1549
+ };
1550
+ }
1551
+ /**
1552
+ * Gets available update call factories
1553
+ */
1554
+ static get update() {
1555
+ return {
1556
+ /**
1557
+ * Constructs an update call for the escrow_app smart contract using the on_update()uint64 ABI method
1558
+ *
1559
+ * @param args Any args for the contract call
1560
+ * @param params Any additional parameters for the call
1561
+ * @returns A TypedCallParams object for the call
1562
+ */
1563
+ onUpdate(args, params = {}) {
1564
+ return {
1565
+ method: "on_update()uint64",
1566
+ methodArgs: Array.isArray(args) ? args : [],
1567
+ ...params
1568
+ };
1569
+ }
1570
+ };
1571
+ }
1572
+ /**
1573
+ * Gets available delete call factories
1574
+ */
1575
+ static get delete() {
1576
+ return {
1577
+ /**
1578
+ * Constructs a delete call for the escrow_app smart contract using the delete()uint8 ABI method
1579
+ *
1580
+ * @param args Any args for the contract call
1581
+ * @param params Any additional parameters for the call
1582
+ * @returns A TypedCallParams object for the call
1583
+ */
1584
+ delete(args, params = {}) {
1585
+ return {
1586
+ method: "delete()uint8",
1587
+ methodArgs: Array.isArray(args) ? args : [],
1588
+ ...params
1589
+ };
1590
+ }
1591
+ };
1592
+ }
1593
+ /**
1594
+ * Constructs a no op call for the setup(string,string,string,string,string)uint8 ABI method
1595
+ *
1596
+ * @param args Any args for the contract call
1597
+ * @param params Any additional parameters for the call
1598
+ * @returns A TypedCallParams object for the call
1599
+ */
1600
+ static setup(args, params) {
1601
+ return {
1602
+ method: "setup(string,string,string,string,string)uint8",
1603
+ methodArgs: Array.isArray(args) ? args : [args.position, args.price, args.side, args.quantity, args.slippage],
1604
+ ...params
1605
+ };
1606
+ }
1607
+ /**
1608
+ * Constructs a no op call for the match_maker(application,uint64)uint8 ABI method
1609
+ *
1610
+ * @param args Any args for the contract call
1611
+ * @param params Any additional parameters for the call
1612
+ * @returns A TypedCallParams object for the call
1613
+ */
1614
+ static matchMaker(args, params) {
1615
+ return {
1616
+ method: "match_maker(application,uint64)uint8",
1617
+ methodArgs: Array.isArray(args) ? args : [args.taker, args.matchQuantity],
1618
+ ...params
1619
+ };
1620
+ }
1621
+ /**
1622
+ * Constructs a no op call for the amend_order(uint64,uint64,uint64)uint8 ABI method
1623
+ *
1624
+ * @param args Any args for the contract call
1625
+ * @param params Any additional parameters for the call
1626
+ * @returns A TypedCallParams object for the call
1627
+ */
1628
+ static amendOrder(args, params) {
1629
+ return {
1630
+ method: "amend_order(uint64,uint64,uint64)uint8",
1631
+ methodArgs: Array.isArray(args) ? args : [args.price, args.quantity, args.slippage],
1632
+ ...params
1633
+ };
1634
+ }
1635
+ /**
1636
+ * Constructs a no op call for the match_taker(application)uint64 ABI method
1637
+ *
1638
+ * @param args Any args for the contract call
1639
+ * @param params Any additional parameters for the call
1640
+ * @returns A TypedCallParams object for the call
1641
+ */
1642
+ static matchTaker(args, params) {
1643
+ return {
1644
+ method: "match_taker(application)uint64",
1645
+ methodArgs: Array.isArray(args) ? args : [args.maker],
1646
+ ...params
1647
+ };
1648
+ }
1649
+ };
1650
+ var EscrowAppClient = class _EscrowAppClient {
1651
+ /**
1652
+ * Creates a new instance of `EscrowAppClient`
1653
+ *
1654
+ * @param appDetails appDetails The details to identify the app to deploy
1655
+ * @param algod An algod client instance
1656
+ */
1657
+ constructor(appDetails, algod) {
1658
+ this.algod = algod;
1659
+ this.sender = appDetails.sender;
1660
+ this.appClient = algokit4__namespace.getAppClient({
1661
+ ...appDetails,
1662
+ app: APP_SPEC3
1663
+ }, algod);
1664
+ }
1665
+ /**
1666
+ * The underlying `ApplicationClient` for when you want to have more flexibility
1667
+ */
1668
+ appClient;
1669
+ sender;
1670
+ /**
1671
+ * Checks for decode errors on the AppCallTransactionResult and maps the return value to the specified generic type
1672
+ *
1673
+ * @param result The AppCallTransactionResult to be mapped
1674
+ * @param returnValueFormatter An optional delegate to format the return value if required
1675
+ * @returns The smart contract response with an updated return value
1676
+ */
1677
+ mapReturnValue(result, returnValueFormatter) {
1678
+ if (result.return?.decodeError) {
1679
+ throw result.return.decodeError;
1680
+ }
1681
+ const returnValue = result.return?.returnValue !== void 0 && returnValueFormatter !== void 0 ? returnValueFormatter(result.return.returnValue) : result.return?.returnValue;
1682
+ return { ...result, return: returnValue };
1683
+ }
1684
+ /**
1685
+ * Calls the ABI method with the matching signature using an onCompletion code of NO_OP
1686
+ *
1687
+ * @param typedCallParams An object containing the method signature, args, and any other relevant parameters
1688
+ * @param returnValueFormatter An optional delegate which when provided will be used to map non-undefined return values to the target type
1689
+ * @returns The result of the smart contract call
1690
+ */
1691
+ async call(typedCallParams, returnValueFormatter) {
1692
+ return this.mapReturnValue(await this.appClient.call(typedCallParams), returnValueFormatter);
1693
+ }
1694
+ /**
1695
+ * Idempotently deploys the escrow_app smart contract.
1696
+ *
1697
+ * @param params The arguments for the contract calls and any additional parameters for the call
1698
+ * @returns The deployment result
1699
+ */
1700
+ deploy(params = {}) {
1701
+ const createArgs = params.createCall?.(EscrowAppCallFactory.create);
1702
+ const updateArgs = params.updateCall?.(EscrowAppCallFactory.update);
1703
+ const deleteArgs = params.deleteCall?.(EscrowAppCallFactory.delete);
1704
+ return this.appClient.deploy({
1705
+ ...params,
1706
+ updateArgs,
1707
+ deleteArgs,
1708
+ createArgs,
1709
+ createOnCompleteAction: createArgs?.onCompleteAction
1710
+ });
1711
+ }
1712
+ /**
1713
+ * Gets available create methods
1714
+ */
1715
+ get create() {
1716
+ const $this = this;
1717
+ return {
1718
+ /**
1719
+ * Creates a new instance of the escrow_app smart contract using a bare call.
1720
+ *
1721
+ * @param args The arguments for the bare call
1722
+ * @returns The create result
1723
+ */
1724
+ async bare(args = {}) {
1725
+ return $this.mapReturnValue(await $this.appClient.create(args));
1726
+ },
1727
+ /**
1728
+ * Creates a new instance of the escrow_app smart contract using the on_create()uint8 ABI method.
1729
+ *
1730
+ * @param args The arguments for the smart contract call
1731
+ * @param params Any additional parameters for the call
1732
+ * @returns The create result
1733
+ */
1734
+ async onCreate(args, params = {}) {
1735
+ return $this.mapReturnValue(await $this.appClient.create(EscrowAppCallFactory.create.onCreate(args, params)));
1736
+ }
1737
+ };
1738
+ }
1739
+ /**
1740
+ * Gets available update methods
1741
+ */
1742
+ get update() {
1743
+ const $this = this;
1744
+ return {
1745
+ /**
1746
+ * Updates an existing instance of the escrow_app smart contract using the on_update()uint64 ABI method.
1747
+ *
1748
+ * @param args The arguments for the smart contract call
1749
+ * @param params Any additional parameters for the call
1750
+ * @returns The update result
1751
+ */
1752
+ async onUpdate(args, params = {}) {
1753
+ return $this.mapReturnValue(await $this.appClient.update(EscrowAppCallFactory.update.onUpdate(args, params)));
1754
+ }
1755
+ };
1756
+ }
1757
+ /**
1758
+ * Gets available delete methods
1759
+ */
1760
+ get delete() {
1761
+ const $this = this;
1762
+ return {
1763
+ /**
1764
+ * Deletes an existing instance of the escrow_app smart contract using the delete()uint8 ABI method.
1765
+ *
1766
+ * @param args The arguments for the smart contract call
1767
+ * @param params Any additional parameters for the call
1768
+ * @returns The delete result
1769
+ */
1770
+ async delete(args, params = {}) {
1771
+ return $this.mapReturnValue(await $this.appClient.delete(EscrowAppCallFactory.delete.delete(args, params)));
1772
+ }
1773
+ };
1774
+ }
1775
+ /**
1776
+ * Makes a clear_state call to an existing instance of the escrow_app smart contract.
1777
+ *
1778
+ * @param args The arguments for the bare call
1779
+ * @returns The clear_state result
1780
+ */
1781
+ clearState(args = {}) {
1782
+ return this.appClient.clearState(args);
1783
+ }
1784
+ /**
1785
+ * Calls the setup(string,string,string,string,string)uint8 ABI method.
1786
+ *
1787
+ * @param args The arguments for the contract call
1788
+ * @param params Any additional parameters for the call
1789
+ * @returns The result of the call
1790
+ */
1791
+ setup(args, params = {}) {
1792
+ return this.call(EscrowAppCallFactory.setup(args, params));
1793
+ }
1794
+ /**
1795
+ * Calls the match_maker(application,uint64)uint8 ABI method.
1796
+ *
1797
+ * @param args The arguments for the contract call
1798
+ * @param params Any additional parameters for the call
1799
+ * @returns The result of the call
1800
+ */
1801
+ matchMaker(args, params = {}) {
1802
+ return this.call(EscrowAppCallFactory.matchMaker(args, params));
1803
+ }
1804
+ /**
1805
+ * Calls the amend_order(uint64,uint64,uint64)uint8 ABI method.
1806
+ *
1807
+ * @param args The arguments for the contract call
1808
+ * @param params Any additional parameters for the call
1809
+ * @returns The result of the call
1810
+ */
1811
+ amendOrder(args, params = {}) {
1812
+ return this.call(EscrowAppCallFactory.amendOrder(args, params));
1813
+ }
1814
+ /**
1815
+ * Calls the match_taker(application)uint64 ABI method.
1816
+ *
1817
+ * @param args The arguments for the contract call
1818
+ * @param params Any additional parameters for the call
1819
+ * @returns The result of the call
1820
+ */
1821
+ matchTaker(args, params = {}) {
1822
+ return this.call(EscrowAppCallFactory.matchTaker(args, params));
1823
+ }
1824
+ /**
1825
+ * Extracts a binary state value out of an AppState dictionary
1826
+ *
1827
+ * @param state The state dictionary containing the state value
1828
+ * @param key The key of the state value
1829
+ * @returns A BinaryState instance containing the state value, or undefined if the key was not found
1830
+ */
1831
+ static getBinaryState(state, key) {
1832
+ const value = state[key];
1833
+ if (!value) return void 0;
1834
+ if (!("valueRaw" in value))
1835
+ throw new Error(`Failed to parse state value for ${key}; received an int when expected a byte array`);
1836
+ return {
1837
+ asString() {
1838
+ return value.value;
1839
+ },
1840
+ asByteArray() {
1841
+ return value.valueRaw;
1842
+ }
1843
+ };
1844
+ }
1845
+ /**
1846
+ * Extracts a integer state value out of an AppState dictionary
1847
+ *
1848
+ * @param state The state dictionary containing the state value
1849
+ * @param key The key of the state value
1850
+ * @returns An IntegerState instance containing the state value, or undefined if the key was not found
1851
+ */
1852
+ static getIntegerState(state, key) {
1853
+ const value = state[key];
1854
+ if (!value) return void 0;
1855
+ if ("valueRaw" in value)
1856
+ throw new Error(`Failed to parse state value for ${key}; received a byte array when expected a number`);
1857
+ return {
1858
+ asBigInt() {
1859
+ return typeof value.value === "bigint" ? value.value : BigInt(value.value);
1860
+ },
1861
+ asNumber() {
1862
+ return typeof value.value === "bigint" ? Number(value.value) : value.value;
1863
+ }
1864
+ };
1865
+ }
1866
+ /**
1867
+ * Returns the smart contract's global state wrapped in a strongly typed accessor with options to format the stored value
1868
+ */
1869
+ async getGlobalState() {
1870
+ const state = await this.appClient.getGlobalState();
1871
+ return {
1872
+ get assetListed() {
1873
+ return _EscrowAppClient.getIntegerState(state, "asset_listed");
1874
+ },
1875
+ get feeTimerStart() {
1876
+ return _EscrowAppClient.getIntegerState(state, "fee_timer_start");
1877
+ },
1878
+ get marketAppId() {
1879
+ return _EscrowAppClient.getIntegerState(state, "market_app_id");
1880
+ },
1881
+ get owner() {
1882
+ return _EscrowAppClient.getBinaryState(state, "owner");
1883
+ },
1884
+ get position() {
1885
+ return _EscrowAppClient.getIntegerState(state, "position");
1886
+ },
1887
+ get price() {
1888
+ return _EscrowAppClient.getIntegerState(state, "price");
1889
+ },
1890
+ get quantity() {
1891
+ return _EscrowAppClient.getIntegerState(state, "quantity");
1892
+ },
1893
+ get quantityFilled() {
1894
+ return _EscrowAppClient.getIntegerState(state, "quantity_filled");
1895
+ },
1896
+ get side() {
1897
+ return _EscrowAppClient.getIntegerState(state, "side");
1898
+ },
1899
+ get slippage() {
1900
+ return _EscrowAppClient.getIntegerState(state, "slippage");
1901
+ }
1902
+ };
1903
+ }
1904
+ compose() {
1905
+ const client = this;
1906
+ const atc = new algosdk2.AtomicTransactionComposer();
1907
+ let promiseChain = Promise.resolve();
1908
+ const resultMappers = [];
1909
+ return {
1910
+ setup(args, params) {
1911
+ promiseChain = promiseChain.then(() => client.setup(args, { ...params, sendParams: { ...params?.sendParams, skipSending: true, atc } }));
1912
+ resultMappers.push(void 0);
1913
+ return this;
1914
+ },
1915
+ matchMaker(args, params) {
1916
+ promiseChain = promiseChain.then(() => client.matchMaker(args, { ...params, sendParams: { ...params?.sendParams, skipSending: true, atc } }));
1917
+ resultMappers.push(void 0);
1918
+ return this;
1919
+ },
1920
+ amendOrder(args, params) {
1921
+ promiseChain = promiseChain.then(() => client.amendOrder(args, { ...params, sendParams: { ...params?.sendParams, skipSending: true, atc } }));
1922
+ resultMappers.push(void 0);
1923
+ return this;
1924
+ },
1925
+ matchTaker(args, params) {
1926
+ promiseChain = promiseChain.then(() => client.matchTaker(args, { ...params, sendParams: { ...params?.sendParams, skipSending: true, atc } }));
1927
+ resultMappers.push(void 0);
1928
+ return this;
1929
+ },
1930
+ get update() {
1931
+ const $this = this;
1932
+ return {
1933
+ onUpdate(args, params) {
1934
+ promiseChain = promiseChain.then(() => client.update.onUpdate(args, { ...params, sendParams: { ...params?.sendParams, skipSending: true, atc } }));
1935
+ resultMappers.push(void 0);
1936
+ return $this;
1937
+ }
1938
+ };
1939
+ },
1940
+ get delete() {
1941
+ const $this = this;
1942
+ return {
1943
+ delete(args, params) {
1944
+ promiseChain = promiseChain.then(() => client.delete.delete(args, { ...params, sendParams: { ...params?.sendParams, skipSending: true, atc } }));
1945
+ resultMappers.push(void 0);
1946
+ return $this;
1947
+ }
1948
+ };
1949
+ },
1950
+ clearState(args) {
1951
+ promiseChain = promiseChain.then(() => client.clearState({ ...args, sendParams: { ...args?.sendParams, skipSending: true, atc } }));
1952
+ resultMappers.push(void 0);
1953
+ return this;
1954
+ },
1955
+ addTransaction(txn, defaultSender) {
1956
+ promiseChain = promiseChain.then(async () => atc.addTransaction(await algokit4__namespace.getTransactionWithSigner(txn, defaultSender ?? client.sender)));
1957
+ return this;
1958
+ },
1959
+ async atc() {
1960
+ await promiseChain;
1961
+ return atc;
1962
+ },
1963
+ async simulate(options) {
1964
+ await promiseChain;
1965
+ const result = await atc.simulate(client.algod, new algosdk2.modelsv2.SimulateRequest({ txnGroups: [], ...options }));
1966
+ return {
1967
+ ...result,
1968
+ returns: result.methodResults?.map((val, i) => resultMappers[i] !== void 0 ? resultMappers[i](val.returnValue) : val.returnValue)
1969
+ };
1970
+ },
1971
+ async execute(sendParams) {
1972
+ await promiseChain;
1973
+ const result = await algokit4__namespace.sendAtomicTransactionComposer({ atc, sendParams }, client.algod);
1288
1974
  return {
1289
1975
  ...result,
1290
1976
  returns: result.returns?.map((val, i) => resultMappers[i] !== void 0 ? resultMappers[i](val.returnValue) : val.returnValue)
@@ -1659,7 +2345,7 @@ var createOrder = async (config, params) => {
1659
2345
  if (!isBuying) {
1660
2346
  const hasUsdcOptIn = await checkAssetOptIn(algodClient, activeAddress, usdcAssetId);
1661
2347
  if (!hasUsdcOptIn) {
1662
- const optInTxn = await algokit3__namespace.transferAsset(
2348
+ const optInTxn = await algokit4__namespace.transferAsset(
1663
2349
  { from: signerAccount, to: activeAddress, assetId: usdcAssetId, amount: 0, skipSending: true },
1664
2350
  algodClient
1665
2351
  );
@@ -1670,7 +2356,7 @@ var createOrder = async (config, params) => {
1670
2356
  const assetId = position === 1 ? yesAssetId : noAssetId;
1671
2357
  const hasAssetOptIn = await checkAssetOptIn(algodClient, activeAddress, assetId);
1672
2358
  if (!hasAssetOptIn) {
1673
- const optInTxn = await algokit3__namespace.transferAsset(
2359
+ const optInTxn = await algokit4__namespace.transferAsset(
1674
2360
  { from: signerAccount, to: activeAddress, assetId, amount: 0, skipSending: true },
1675
2361
  algodClient
1676
2362
  );
@@ -1678,15 +2364,15 @@ var createOrder = async (config, params) => {
1678
2364
  createEscrowTxnIndex++;
1679
2365
  }
1680
2366
  }
1681
- const paymentTxn = await algokit3__namespace.transferAlgos(
1682
- { from: signerAccount, to: marketAddress, amount: algokit3__namespace.microAlgos(957e3), skipSending: true },
2367
+ const paymentTxn = await algokit4__namespace.transferAlgos(
2368
+ { from: signerAccount, to: marketAddress, amount: algokit4__namespace.microAlgos(957e3), skipSending: true },
1683
2369
  algodClient
1684
2370
  );
1685
2371
  atc.addTransaction({ txn: paymentTxn.transaction, signer });
1686
2372
  createEscrowTxnIndex++;
1687
2373
  const fundAmount = isBuying ? Math.floor(quantity * (price + slippage) / 1e6) + fee : quantity;
1688
2374
  const fundAssetId = isBuying ? usdcAssetId : position === 1 ? yesAssetId : noAssetId;
1689
- const assetTransferTxn = await algokit3__namespace.transferAsset(
2375
+ const assetTransferTxn = await algokit4__namespace.transferAsset(
1690
2376
  { from: signerAccount, to: marketAddress, amount: fundAmount, assetId: fundAssetId, skipSending: true },
1691
2377
  algodClient
1692
2378
  );
@@ -1699,11 +2385,11 @@ var createOrder = async (config, params) => {
1699
2385
  atc.addTransaction({ txn: createEscrowTxn.transaction, signer });
1700
2386
  let matchIndex = 1;
1701
2387
  for (const matchingOrder of matchingOrders) {
1702
- const payCounterPartyTxn = await algokit3__namespace.transferAlgos(
2388
+ const payCounterPartyTxn = await algokit4__namespace.transferAlgos(
1703
2389
  {
1704
2390
  from: signerAccount,
1705
2391
  to: algosdk2.getApplicationAddress(matchingOrder.escrowAppId),
1706
- amount: algokit3__namespace.microAlgos(1e3 * (isBuying ? 1 : 2)),
2392
+ amount: algokit4__namespace.microAlgos(1e3 * (isBuying ? 1 : 2)),
1707
2393
  skipSending: true
1708
2394
  },
1709
2395
  algodClient
@@ -1722,7 +2408,7 @@ var createOrder = async (config, params) => {
1722
2408
  {
1723
2409
  assets: [usdcAssetId, yesAssetId, noAssetId],
1724
2410
  accounts: [activeAddress, marketFeeAddress, matchingOrder.owner],
1725
- sendParams: { skipSending: true, fee: algokit3__namespace.microAlgos(1e4) }
2411
+ sendParams: { skipSending: true, fee: algokit4__namespace.microAlgos(1e4) }
1726
2412
  }
1727
2413
  );
1728
2414
  atc.addTransaction({ txn: proposeAMatchTxn.transaction, signer });
@@ -1755,7 +2441,7 @@ var cancelOrder = async (config, params) => {
1755
2441
  apps: [escrowAppId],
1756
2442
  assets: [usdcAssetId, yesAssetId, noAssetId],
1757
2443
  accounts: [orderOwner],
1758
- sendParams: { skipSending: true, fee: algokit3__namespace.microAlgos(7e3) }
2444
+ sendParams: { skipSending: true, fee: algokit4__namespace.microAlgos(7e3) }
1759
2445
  }
1760
2446
  );
1761
2447
  atc.addTransaction({ txn: deleteCallTxn.transaction, signer });
@@ -1779,11 +2465,11 @@ var proposeMatch = async (config, params) => {
1779
2465
  algodClient
1780
2466
  );
1781
2467
  const atc = new algosdk2.AtomicTransactionComposer();
1782
- const payMakerTxn = await algokit3__namespace.transferAlgos(
2468
+ const payMakerTxn = await algokit4__namespace.transferAlgos(
1783
2469
  {
1784
2470
  from: signerAccount,
1785
2471
  to: algosdk2.getApplicationAddress(makerEscrowAppId),
1786
- amount: algokit3__namespace.microAlgos(2e3),
2472
+ amount: algokit4__namespace.microAlgos(2e3),
1787
2473
  skipSending: true
1788
2474
  },
1789
2475
  algodClient
@@ -1802,7 +2488,7 @@ var proposeMatch = async (config, params) => {
1802
2488
  {
1803
2489
  assets: [usdcAssetId, yesAssetId, noAssetId],
1804
2490
  accounts: [activeAddress, marketFeeAddress, makerAddress],
1805
- sendParams: { skipSending: true, fee: algokit3__namespace.microAlgos(1e4) }
2491
+ sendParams: { skipSending: true, fee: algokit4__namespace.microAlgos(1e4) }
1806
2492
  }
1807
2493
  );
1808
2494
  atc.addTransaction({ txn: proposeTxn.transaction, signer });
@@ -1813,6 +2499,68 @@ var proposeMatch = async (config, params) => {
1813
2499
  confirmedRound: result.confirmedRound
1814
2500
  };
1815
2501
  };
2502
+ var amendOrder = async (config, params) => {
2503
+ const { algodClient, signer, activeAddress, usdcAssetId } = config;
2504
+ const { marketAppId, escrowAppId, price, quantity, slippage = 0 } = params;
2505
+ const escrowAppInfo = await algodClient.getApplicationByID(escrowAppId).do();
2506
+ const escrowState = decodeGlobalState(
2507
+ escrowAppInfo.params?.["global-state"] ?? escrowAppInfo["params"]?.["global-state"] ?? []
2508
+ );
2509
+ if ((escrowState.quantity_filled ?? 0) > 0) {
2510
+ throw new Error("Cannot amend an order that has been partially or fully filled.");
2511
+ }
2512
+ const globalState = await getMarketGlobalState(algodClient, marketAppId);
2513
+ const yesAssetId = globalState.yes_asset_id;
2514
+ const noAssetId = globalState.no_asset_id;
2515
+ const feeBase = globalState.fee_base_percent;
2516
+ const isBuy = escrowState.side === 1;
2517
+ const position = escrowState.position;
2518
+ const computeCollateral = (qty, px, slip) => {
2519
+ if (isBuy) {
2520
+ const fee = calculateFee(qty, px + slip, feeBase);
2521
+ return Math.floor(qty * (px + slip) / 1e6) + fee;
2522
+ }
2523
+ return qty;
2524
+ };
2525
+ const oldCollateral = computeCollateral(
2526
+ escrowState.quantity ?? 0,
2527
+ escrowState.price ?? 0,
2528
+ escrowState.slippage ?? 0
2529
+ );
2530
+ const newCollateral = computeCollateral(quantity, price, slippage);
2531
+ const delta = newCollateral - oldCollateral;
2532
+ const fundAssetId = isBuy ? usdcAssetId : position === 1 ? yesAssetId : noAssetId;
2533
+ const escrowAddr = algosdk2.getApplicationAddress(escrowAppId).toString();
2534
+ const signerAccount = { signer, addr: activeAddress };
2535
+ const atc = new algosdk2.AtomicTransactionComposer();
2536
+ if (delta > 0) {
2537
+ const fundTxn = await algokit4__namespace.transferAsset(
2538
+ { from: signerAccount, to: escrowAddr, amount: delta, assetId: fundAssetId, skipSending: true },
2539
+ algodClient
2540
+ );
2541
+ atc.addTransaction({ txn: fundTxn.transaction, signer });
2542
+ }
2543
+ const escrowClient = new EscrowAppClient(
2544
+ { resolveBy: "id", id: escrowAppId, sender: signerAccount },
2545
+ algodClient
2546
+ );
2547
+ const feeMicros = delta <= 0 ? 2e3 : 1e3;
2548
+ const amendCall = await escrowClient.amendOrder(
2549
+ { price, quantity, slippage },
2550
+ {
2551
+ assets: [usdcAssetId, yesAssetId, noAssetId],
2552
+ apps: [marketAppId],
2553
+ sendParams: { fee: algokit4__namespace.microAlgos(feeMicros), skipSending: true }
2554
+ }
2555
+ );
2556
+ atc.addTransaction({ txn: amendCall.transaction, signer });
2557
+ const result = await atc.execute(algodClient, 4);
2558
+ return {
2559
+ success: true,
2560
+ txIds: result.txIDs,
2561
+ confirmedRound: result.confirmedRound
2562
+ };
2563
+ };
1816
2564
  var splitShares = async (config, params) => {
1817
2565
  const { algodClient, signer, activeAddress, usdcAssetId } = config;
1818
2566
  const { marketAppId, amount } = params;
@@ -1829,7 +2577,7 @@ var splitShares = async (config, params) => {
1829
2577
  let optInCosts = 0;
1830
2578
  const hasYesOptIn = await checkAssetOptIn(algodClient, activeAddress, yesAssetId);
1831
2579
  if (!hasYesOptIn) {
1832
- const optInTxn = await algokit3__namespace.transferAsset(
2580
+ const optInTxn = await algokit4__namespace.transferAsset(
1833
2581
  { from: signerAccount, to: activeAddress, assetId: yesAssetId, amount: 0, skipSending: true },
1834
2582
  algodClient
1835
2583
  );
@@ -1838,19 +2586,19 @@ var splitShares = async (config, params) => {
1838
2586
  }
1839
2587
  const hasNoOptIn = await checkAssetOptIn(algodClient, activeAddress, noAssetId);
1840
2588
  if (!hasNoOptIn) {
1841
- const optInTxn = await algokit3__namespace.transferAsset(
2589
+ const optInTxn = await algokit4__namespace.transferAsset(
1842
2590
  { from: signerAccount, to: activeAddress, assetId: noAssetId, amount: 0, skipSending: true },
1843
2591
  algodClient
1844
2592
  );
1845
2593
  atc.addTransaction({ txn: optInTxn.transaction, signer });
1846
2594
  optInCosts += 1e3;
1847
2595
  }
1848
- const algoPayment = await algokit3__namespace.transferAlgos(
1849
- { from: signerAccount, to: marketAddress, amount: algokit3__namespace.microAlgos(5e3 + optInCosts), skipSending: true },
2596
+ const algoPayment = await algokit4__namespace.transferAlgos(
2597
+ { from: signerAccount, to: marketAddress, amount: algokit4__namespace.microAlgos(5e3 + optInCosts), skipSending: true },
1850
2598
  algodClient
1851
2599
  );
1852
2600
  atc.addTransaction({ txn: algoPayment.transaction, signer });
1853
- const usdcTransfer = await algokit3__namespace.transferAsset(
2601
+ const usdcTransfer = await algokit4__namespace.transferAsset(
1854
2602
  { from: signerAccount, to: marketAddress, amount, assetId: usdcAssetId, skipSending: true },
1855
2603
  algodClient
1856
2604
  );
@@ -1883,24 +2631,24 @@ var mergeShares = async (config, params) => {
1883
2631
  let optInCosts = 0;
1884
2632
  const hasUsdcOptIn = await checkAssetOptIn(algodClient, activeAddress, usdcAssetId);
1885
2633
  if (!hasUsdcOptIn) {
1886
- const optInTxn = await algokit3__namespace.transferAsset(
2634
+ const optInTxn = await algokit4__namespace.transferAsset(
1887
2635
  { from: signerAccount, to: activeAddress, assetId: usdcAssetId, amount: 0, skipSending: true },
1888
2636
  algodClient
1889
2637
  );
1890
2638
  atc.addTransaction({ txn: optInTxn.transaction, signer });
1891
2639
  optInCosts += 1e3;
1892
2640
  }
1893
- const algoPayment = await algokit3__namespace.transferAlgos(
1894
- { from: signerAccount, to: marketAddress, amount: algokit3__namespace.microAlgos(5e3 + optInCosts), skipSending: true },
2641
+ const algoPayment = await algokit4__namespace.transferAlgos(
2642
+ { from: signerAccount, to: marketAddress, amount: algokit4__namespace.microAlgos(5e3 + optInCosts), skipSending: true },
1895
2643
  algodClient
1896
2644
  );
1897
2645
  atc.addTransaction({ txn: algoPayment.transaction, signer });
1898
- const yesTransfer = await algokit3__namespace.transferAsset(
2646
+ const yesTransfer = await algokit4__namespace.transferAsset(
1899
2647
  { from: signerAccount, to: marketAddress, amount, assetId: yesAssetId, skipSending: true },
1900
2648
  algodClient
1901
2649
  );
1902
2650
  atc.addTransaction({ txn: yesTransfer.transaction, signer });
1903
- const noTransfer = await algokit3__namespace.transferAsset(
2651
+ const noTransfer = await algokit4__namespace.transferAsset(
1904
2652
  { from: signerAccount, to: marketAddress, amount, assetId: noAssetId, skipSending: true },
1905
2653
  algodClient
1906
2654
  );
@@ -1937,7 +2685,7 @@ var claim = async (config, params) => {
1937
2685
  throw new Error("No tokens to claim");
1938
2686
  }
1939
2687
  const atc = new algosdk2.AtomicTransactionComposer();
1940
- const tokenTransfer = await algokit3__namespace.transferAsset(
2688
+ const tokenTransfer = await algokit4__namespace.transferAsset(
1941
2689
  { from: signerAccount, to: marketAddress, amount: tokenBalance, assetId, skipSending: true },
1942
2690
  algodClient
1943
2691
  );
@@ -1946,7 +2694,7 @@ var claim = async (config, params) => {
1946
2694
  {},
1947
2695
  {
1948
2696
  assets: [usdcAssetId, assetId],
1949
- sendParams: { skipSending: true, fee: algokit3__namespace.microAlgos(1e3) }
2697
+ sendParams: { skipSending: true, fee: algokit4__namespace.microAlgos(1e3) }
1950
2698
  }
1951
2699
  );
1952
2700
  atc.addTransaction({ txn: claimTxn.transaction, signer });
@@ -2284,6 +3032,21 @@ var AlphaClient = class {
2284
3032
  async proposeMatch(params) {
2285
3033
  return proposeMatch(this.config, params);
2286
3034
  }
3035
+ /**
3036
+ * Amends (edits) an existing unfilled order in-place.
3037
+ *
3038
+ * Cheaper and faster than cancel + recreate. The escrow contract adjusts
3039
+ * collateral automatically — sends you a refund if the new value is lower,
3040
+ * or requires extra funds if higher.
3041
+ *
3042
+ * Only works on orders with zero quantity filled.
3043
+ *
3044
+ * @param params - Amend parameters (marketAppId, escrowAppId, price, quantity, slippage?)
3045
+ * @returns Whether the amendment succeeded
3046
+ */
3047
+ async amendOrder(params) {
3048
+ return amendOrder(this.config, params);
3049
+ }
2287
3050
  // ============================================
2288
3051
  // Positions
2289
3052
  // ============================================