tx · DSF66GStJe5vyjV8emZZXmJMmJsMeG52mGBqK5ABjmrd

3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS:  -0.53000000 Waves

2023.10.18 13:04 [2803901] smart account 3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS > SELF 0.00000000 Waves

{ "type": 13, "id": "DSF66GStJe5vyjV8emZZXmJMmJsMeG52mGBqK5ABjmrd", "fee": 53000000, "feeAssetId": null, "timestamp": 1697623455911, "version": 2, "chainId": 84, "sender": "3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS", "senderPublicKey": "HP8sssVq1866F7CaPQJwgFrt6fsqhQjKwM84cL1wjD2a", "proofs": [ "4jsMDm9zvRXXNQdNXNztabkUP4bJ5C1MLWwLbj9JQFMg1jqEVKaDuz71nhnVh6rHLMXxsU5Q3BMQ47j98QUHe6Bf" ], "script": "base64:BgKiAQgCEgMKAQgSAwoBCBIECgIICBIFCgMIGBgSBQoDCAEIEgQKAggBEgYKBAEICAESBQoDAQgIEg8KDQgICAgICAgICAgICAgSAwoBCBIDCgEIEgUKAwgIARIGCgQIAQgIEgcKBQgICAEEEgUKAwgEARIMCgoICAgBAQEBAQEEEgkKBwgBAQEBAQESABIAEgASABIAEgASABIAEgMKAQgSAwoBCIUBAAdTRl9QT09MAgJTRgAHV1hfUE9PTAICV1gABENQTU0CBGNwbW0ABEZMQVQCBGZsYXQAD0NBUF9GRUVfTk9fTE9BTgIJY2FwTm9Mb2FuAAxDQVBfRkVFX0xPQU4CB2NhcExvYW4AFFNUT1BMT1NTX0ZFRV9OT19MT0FOAg5zdG9wTG9zc05vTG9hbgANU1RPUExPU1NfTE9BTgIMc3RvcExvc3NMb2FuAAhMT0FOX0ZFRQIEbG9hbgALTk9fTE9BTl9GRUUCBm5vTG9hbgAGTk9fRkVFAgVub0ZlZQAGU0NBTEU4AIDC1y8AB1NDQUxFMTAAgMivoCUAB1NDQUxFMTYJALYCAQCAgIT+pt7hEQAKRkVFX1NDQUxFNgDAhD0AFGtTRlBvb2xBQXNzZXRCYWxhbmNlAg9BX2Fzc2V0X2JhbGFuY2UAFGtTRlBvb2xCQXNzZXRCYWxhbmNlAg9CX2Fzc2V0X2JhbGFuY2UAD2tTRlBvb2xBQXNzZXRJZAIKQV9hc3NldF9pZAAPa1NGUG9vbEJBc3NldElkAgpCX2Fzc2V0X2lkAA5rU0ZQb29sU2hhcmVJZAIOc2hhcmVfYXNzZXRfaWQAEmtTRlBvb2xTaGFyZVN1cHBseQISc2hhcmVfYXNzZXRfc3VwcGx5AAprU0ZQb29sRmVlAgpjb21taXNzaW9uAA1rVXNlclBvc2l0aW9uAg1fdXNlclBvc2l0aW9uABFrVXNlclBvc2l0aW9uUG9vbAIRX3VzZXJQb3NpdGlvblBvb2wAEWtVc2VyQm9ycm93QW1vdW50AhlfdXNlclBvc2l0aW9uQm9ycm93QW1vdW50ABJrVXNlckJvcnJvd0Fzc2V0SWQCGl91c2VyUG9zaXRpb25Cb3Jyb3dBc3NldElkABBrVXNlclBvc2l0aW9uTnVtAhNfdXNlclBvc2l0aW9uTnVtYmVyABVrVXNlclBvc2l0aW9uSW50ZXJlc3QCFV91c2VyUG9zaXRpb25JbnRlcmVzdAAKa1Bvb2xUb3RhbAIKX3Bvb2xUb3RhbAAOa1Bvb2xUb3RhbExvYW4CDl9wb29sVG90YWxMb2FuABFrUG9vbEludGVyZXN0TG9hbgIRX3Bvb2xJbnRlcmVzdExvYW4AE2tQb29sSW50ZXJlc3ROb0xvYW4CE19wb29sSW50ZXJlc3ROb0xvYW4ADmtQb29sQ2FuQm9ycm93Ag5fcG9vbENhbkJvcnJvdwAVa0F4bHlJbkZlZVdpdGhvdXRMb2FuAg5fYXhseUZlZU5vTG9hbgASa0F4bHlJbkZlZVdpdGhMb2FuAhBfYXhseUZlZVdpdGhMb2FuABFrQXhseU5vTG9hbkNhcEZlZQIRX2F4bHlGZWVDYXBOb0xvYW4AE2tBeGx5V2l0aExvYW5DYXBGZWUCE19heGx5RmVlQ2FwV2l0aExvYW4AFmtBeGx5U3RvcExvc3NOb0xvYW5GZWUCGF9heGx5RmVlU3RvcGxvc3NXaXRoTG9hbgAUa0F4bHlTdG9wTG9zc0xvYW5GZWUCFl9heGx5RmVlU3RvcGxvc3NOb0xvYW4ACmtSZXF1ZXN0SWQCC19yZXF1ZXN0X2lkAAxrUmVxdWVzdEl0ZXICDXJlcXVlc3RzX2l0ZXIABWtQb29sAgVwb29sXwAJa1Bvb2xUeXBlAglfcG9vbFR5cGUACmtTaGFyZVBvb2wCDF9wb29sU2hhcmVJZAAOa1Bvb2xDYXBDaGFuZ2UCDl9wb29sQ2FwQ2hhbmdlAA9rVG9rZW5MYXN0UHJpY2UCCmxhc3RfcHJpY2UADmtQcmljZUluT3JhY2xlAgdfdHdhcDVCAAdrQWN0aXZlAgZhY3RpdmUADGtBY3RpdmVVc2VycwILYWN0aXZlVXNlcnMAC2tBY3RpdmVTRldYAgdfYWN0aXZlAAtrUG9vbEFjdGl2ZQILX2FjdGl2ZVBvb2wADWtVc2VyU3RvcExvc3MCCV9zdG9wTG9zcwAXa0ZhbGxiYWNrRXhjaGFuZ2VTd29wZmkCF19mYWxsYmFja0V4Y2hhbmdlU3dvcGZpAAlrTW9uZXlCb3gCDmF4bHlfbW9uZXlfYm94AA5rU0ZGYXJtaW5nQWRkcgITc3dvcGZpX2Zhcm1pbmdfYWRkcgAMa0xlbmRTZXJ2aWNlAhFsZW5kX3NlcnZpY2VfYWRkcgAPa09wZXJhdG9yQ2FsbFBLAhJhZG1pbl9jYWxsX3B1Yl9rZXkADGtQcmljZU9yYWNsZQIMcHJpY2Vfb3JhY2xlAAtrRXhDb250cmFjdAIRZXhjaGFuZ2VfY29udHJhY3QAD2tXeFN3YXBDb250cmFjdAIQd3hfc3dhcF9jb250cmFjdAAHa1N3b3BJZAIHc3dvcF9pZAAFa1d4SWQCBXd4X2lkAA9rR3JvdXAxQWRtaW4xUEsCFWdyb3VwMV9hZG1pbjFfcHViX2tleQAPa0dyb3VwMUFkbWluMlBLAhVncm91cDFfYWRtaW4yX3B1Yl9rZXkAD2tHcm91cDJBZG1pbjFQSwIVZ3JvdXAyX2FkbWluMV9wdWJfa2V5AA9rR3JvdXAyQWRtaW4yUEsCFWdyb3VwMl9hZG1pbjJfcHViX2tleQAIbW9uZXlCb3gJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUJa01vbmV5Qm94AhhObyBheGx5IG1vbmV5Qm94IGFkZHJlc3MACmV4Q29udHJhY3QJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwULa0V4Q29udHJhY3QCHE5vIGV4Y2hhbmdlIGNvbnRyYWN0IGFkZHJlc3MAD3ByaWNlT3JhY2xlQWRkcgkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQxrUHJpY2VPcmFjbGUCF05vIHByaWNlIG9yYWNsZSBhZGRyZXNzAA53eFN3YXBDb250cmFjdAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ9rV3hTd2FwQ29udHJhY3QCEk5vIHd4IHN3YXAgYWRkcmVzcwAGU1dPUElECQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQdrU3dvcElkAgpObyBzd29wIGlkAARXWElECQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQVrV3hJZAIITm8gd3ggaWQADmdyb3VwMUFkbWluMVBLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ9rR3JvdXAxQWRtaW4xUEsCGUNhbid0IGdldCBrR3JvdXAxQWRtaW4xUEsADmdyb3VwMUFkbWluMlBLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ9rR3JvdXAxQWRtaW4yUEsCGUNhbid0IGdldCBrR3JvdXAxQWRtaW4yUEsADmdyb3VwMkFkbWluMVBLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ9rR3JvdXAyQWRtaW4xUEsCGUNhbid0IGdldCBrR3JvdXAyQWRtaW4xUEsADmdyb3VwMkFkbWluMlBLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ9rR3JvdXAyQWRtaW4yUEsCGUNhbid0IGdldCBrR3JvdXAyQWRtaW4xUEsACm9wZXJhdG9yUEsJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFD2tPcGVyYXRvckNhbGxQSwIUQ2FuJ3QgZ2V0IG9wZXJhdG9yUEsBD3Vua25vd25Qb29sVHlwZQAJAAIBAg9Xcm9uZyBwb29sIHR5cGUBDmdldExlbmRTcnZBZGRyAAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQxrTGVuZFNlcnZpY2UCG0Nhbid0IGdldCBsZW5kIHNlcnZpY2UgYWRkcgEOaXNPcGVyYXRvckNhbGwBAWkDCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQpvcGVyYXRvclBLBQR1bml0CQACAQIkT25seSBvcGVyYXRvciBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQtpc0FkbWluQ2FsbAEBaQMDCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQ5ncm91cDFBZG1pbjFQSwYJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFDmdyb3VwMUFkbWluMlBLBQR1bml0CQACAQIoT25seSBhZG1pbiBncm91cDEgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgEKaXNTZWxmQ2FsbAEBaQMJAAACCAUBaQZjYWxsZXIFBHRoaXMFBHVuaXQJAAIBAitPbmx5IGNvbnRyYWN0IGl0c2VsZiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQppc0xhbmRDYWxsAQFpAwkAAAIIBQFpBmNhbGxlcgkBDmdldExlbmRTcnZBZGRyAAUEdW5pdAkAAgECKU9ubHkgbGFuZCBjb250cmFjdCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQhpc0FjdGl2ZQADCQAAAgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQdrQWN0aXZlBgYFBHVuaXQJAAIBAh9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50ARBpc0FjdGl2ZUZvclVzZXJzAAMDCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFB2tBY3RpdmUGCQAAAgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQxrQWN0aXZlVXNlcnMGBgcFBHVuaXQJAAIBAilEQXBwIGlzIGluYWN0aXZlIGZvciB1c2VycyBhdCB0aGlzIG1vbWVudAEMaXNQb29sQWN0aXZlAgRwb29sBHR5cGUECldYU0ZBY3RpdmUJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkArAICBQR0eXBlBQtrQWN0aXZlU0ZXWAYECnBvb2xBY3RpdmUJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkArAICBQRwb29sBQtrUG9vbEFjdGl2ZQYDAwUKV1hTRkFjdGl2ZQUKcG9vbEFjdGl2ZQcGBwEOYWNjb3VudEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAJAPAHAgUEdGhpcwUCaWQDCQABAgUHJG1hdGNoMAIEVW5pdAQFd2F2ZXMFByRtYXRjaDAICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQACAQILTWF0Y2ggZXJyb3IBEWdldFNGUG9vbEJhbGFuY2VzAQhwb29sQWRkcgkAlAoCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUIcG9vbEFkZHIFFGtTRlBvb2xBQXNzZXRCYWxhbmNlAh5DYW4ndCBnZXQgcG9vbCBBIGFzc2V0IGJhbGFuY2UJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQhwb29sQWRkcgUUa1NGUG9vbEJBc3NldEJhbGFuY2UCHkNhbid0IGdldCBwb29sIEIgYXNzZXQgYmFsYW5jZQERZ2V0V1hQb29sQmFsYW5jZXMDCHBvb2xBZGRyA2FJZANiSWQJAJQKAgoAAUAJAPwHBAUIcG9vbEFkZHICHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkJAMwIAgUDYUlkBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQKAAFACQD8BwQFCHBvb2xBZGRyAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFA2JJZAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQ9nZXRQb29sQmFsYW5jZXMECHBvb2xBZGRyBHR5cGUDYUlkA2JJZAMJAAACBQR0eXBlBQdTRl9QT09MCQERZ2V0U0ZQb29sQmFsYW5jZXMBBQhwb29sQWRkcgMJAAACBQR0eXBlBQdXWF9QT09MCQERZ2V0V1hQb29sQmFsYW5jZXMDBQhwb29sQWRkcgUDYUlkBQNiSWQJAQ91bmtub3duUG9vbFR5cGUAAQ1nZXRTRlBvb2xEYXRhAQhwb29sQWRkcgQLJHQwODA4OTgxMzgJARFnZXRTRlBvb2xCYWxhbmNlcwEFCHBvb2xBZGRyAwkAAAIFCyR0MDgwODk4MTM4BQskdDA4MDg5ODEzOAQEYmFsQggFCyR0MDgwODk4MTM4Al8yBARiYWxBCAULJHQwODA4OTgxMzgCXzEJAJcKBQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCHBvb2xBZGRyBQ9rU0ZQb29sQUFzc2V0SWQCGUNhbid0IGdldCBwb29sIEEgYXNzZXQgaWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQhwb29sQWRkcgUPa1NGUG9vbEJBc3NldElkAhlDYW4ndCBnZXQgcG9vbCBCIGFzc2V0IGlkBQRiYWxBBQRiYWxCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHIFDmtTRlBvb2xTaGFyZUlkAhhDYW4ndCBnZXQgc2hhcmUgYXNzZXQgaWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDWdldFdYUG9vbERhdGEBCHBvb2xBZGRyBANjZmcKAAFACQD8BwQFCHBvb2xBZGRyAhxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZBQNuaWwFA25pbAMJAAECBQFAAglMaXN0W0FueV0FAUAJAAIBCQCsAgIJAAMBBQFAAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0DCQAAAgUDY2ZnBQNjZmcEA2FJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCgABQAkAkQMCBQNjZmcABAMJAAECBQFAAgZTdHJpbmcFAUAFBHVuaXQCGUNhbid0IGdldCBwb29sIEEgYXNzZXQgaWQEA2JJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCgABQAkAkQMCBQNjZmcABQMJAAECBQFAAgZTdHJpbmcFAUAFBHVuaXQCGUNhbid0IGdldCBwb29sIEIgYXNzZXQgaWQEB3NoYXJlSWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgoAAUAJAJEDAgUDY2ZnAAMDCQABAgUBQAIGU3RyaW5nBQFABQR1bml0AhpDYW4ndCBnZXQgcG9vbCBMUCBhc3NldCBpZAQLJHQwODgzNTg4OTQJARFnZXRXWFBvb2xCYWxhbmNlcwMFCHBvb2xBZGRyBQNhSWQFA2JJZAMJAAACBQskdDA4ODM1ODg5NAULJHQwODgzNTg4OTQEBGJhbEIIBQskdDA4ODM1ODg5NAJfMgQEYmFsQQgFCyR0MDg4MzU4ODk0Al8xCQCXCgUFA2FJZAUDYklkBQRiYWxBBQRiYWxCBQdzaGFyZUlkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQtnZXRQb29sRGF0YQIIcG9vbEFkZHIEdHlwZQMJAAACBQR0eXBlBQdTRl9QT09MCQENZ2V0U0ZQb29sRGF0YQEFCHBvb2xBZGRyAwkAAAIFBHR5cGUFB1dYX1BPT0wJAQ1nZXRXWFBvb2xEYXRhAQUIcG9vbEFkZHIJAQ91bmtub3duUG9vbFR5cGUAAQ5nZXRTaGFyZVN1cHBseQMIcG9vbEFkZHIEdHlwZQdzaGFyZUlkAwkAAAIFBHR5cGUFB1NGX1BPT0wJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQhwb29sQWRkcgUSa1NGUG9vbFNoYXJlU3VwcGx5AhxDYW4ndCBnZXQgc2hhcmUgYXNzZXQgc3VwcGx5AwkAAAIFBHR5cGUFB1dYX1BPT0wICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQdzaGFyZUlkAg1Xcm9uZyBTaGFyZUlkCHF1YW50aXR5CQEPdW5rbm93blBvb2xUeXBlAAERZ2V0UG9vbFRvdGFsU2hhcmUBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQprUG9vbFRvdGFsAAABGWdldFBvb2xUb3RhbFNoYXJlV2l0aExvYW4BBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbFRvdGFsTG9hbgAAARhnZXROZXdVc2VyUG9zaXRpb25OdW1iZXIBBHVzZXIJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEdXNlcgUQa1VzZXJQb3NpdGlvbk51bQAAAAEBCmdldEF4bHlGZWUCBHBvb2wHZmVlVHlwZQMJAAACBQdmZWVUeXBlBQxDQVBfRkVFX0xPQU4JARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUTa0F4bHlXaXRoTG9hbkNhcEZlZQMJAAACBQdmZWVUeXBlBQ9DQVBfRkVFX05PX0xPQU4JARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAURa0F4bHlOb0xvYW5DYXBGZWUDCQAAAgUHZmVlVHlwZQUITE9BTl9GRUUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUSa0F4bHlJbkZlZVdpdGhMb2FuAwkAAAIFB2ZlZVR5cGUFC05PX0xPQU5fRkVFCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFFWtBeGx5SW5GZWVXaXRob3V0TG9hbgMJAAACBQdmZWVUeXBlBQZOT19GRUUAAAkAAgECDldyb25nIGZlZSB0eXBlARBnZXRTRkZhcm1pbmdBZGRyAAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ5rU0ZGYXJtaW5nQWRkcgIdQ2FuJ3QgZ2V0IHN3b3BmaSBmYXJtaW5nIGFkZHIBEGdldFdYRmFybWluZ0FkZHIBCHBvb2xBZGRyBAlmQ29udHJhY3QJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHICEyVzX19mYWN0b3J5Q29udHJhY3QCIkNhbid0IGdldCBXWCBmYWN0b3J5IGNvbnRyYWN0IGFkZHIECmZhY3Ryb3lDZmcJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCWZDb250cmFjdAIRJXNfX2ZhY3RvcnlDb25maWcCGENhbid0IGdldCBXWCBmYWN0b3J5IGNmZwICX18JAQdBZGRyZXNzAQkA2QQBCQCRAwIFCmZhY3Ryb3lDZmcAAQEMYXNzZXRJZFRvU3RyAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAmlkBQckbWF0Y2gwCQDYBAEFAmlkAwkAAQIFByRtYXRjaDACBFVuaXQEBXdhdmVzBQckbWF0Y2gwAgVXQVZFUwkAAgECDE5vdCBBc3NldCBpZAEOYXNzZXRJZEZyb21TdHIBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUHYXNzZXRJZAEQZ2V0QXNzZXREZWNpbWFscwEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwAIBAckbWF0Y2gwCQDsBwEJANkEAQUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgVBc3NldAQFYXNzZXQFByRtYXRjaDAIBQVhc3NldAhkZWNpbWFscwkAAgECEENhbid0IGZpbmQgYXNzZXQBEWdldEFzc2V0UHJlY2l0aW9uAQdhc3NldElkCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUHYXNzZXRJZAAAAAAFBERPV04BDmdldEFzc2V0c1ByaWNlAQhhc3NldElkcwoBCWdldFByaWNlcwIBYQdhc3NldElkBAphc3NldFByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFD3ByaWNlT3JhY2xlQWRkcgkArAICBQdhc3NldElkBQ5rUHJpY2VJbk9yYWNsZQD///////////8BCQDNCAIFAWEFCmFzc2V0UHJpY2UKAAIkbAUIYXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCWdldFByaWNlcwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyAQ1nZXRTaGFyZVByaWNlAQdzaGFyZUlkBARwb29sCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQdzaGFyZUlkBQprU2hhcmVQb29sAiBDYW4ndCBmaW5kIHBvb2wgYWRkciBieSBzaGFyZSBpZAQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCElBvb2wgaXMgbm90IGluaXRlZAQNJHQwMTE4ODMxMTk0OAkBC2dldFBvb2xEYXRhAgUIcG9vbEFkZHIFBXBUeXBlBANhSWQIBQ0kdDAxMTg4MzExOTQ4Al8xBANiSWQIBQ0kdDAxMTg4MzExOTQ4Al8yBAhhQmFsYW5jZQgFDSR0MDExODgzMTE5NDgCXzMECGJCYWxhbmNlCAUNJHQwMTE4ODMxMTk0OAJfNAQGcHJpY2VzCQEOZ2V0QXNzZXRzUHJpY2UBCQDMCAIFA2FJZAkAzAgCBQNiSWQFA25pbAQHZFByaWNlQQkAkQMCBQZwcmljZXMAAAQHZFByaWNlQgkAkQMCBQZwcmljZXMAAQMDCQBmAgAABQdkUHJpY2VBBgkAZgIAAAUHZFByaWNlQgD///////////8BBAtzaGFyZVN1cHBseQkBDmdldFNoYXJlU3VwcGx5AwUIcG9vbEFkZHIFBXBUeXBlBQdzaGFyZUlkBApBUHJlY2lzaW9uCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUDYUlkAAAAAAUERE9XTgQKQlByZWNpc2lvbgkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFA2JJZAAAAAAFBERPV04EDnNoYXJlUHJlY2lzaW9uCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUHc2hhcmVJZAAAAAAFBERPV04EA3N1bQkAZAIJAGsDBQhhQmFsYW5jZQUHZFByaWNlQQUKQVByZWNpc2lvbgkAawMFCGJCYWxhbmNlBQdkUHJpY2VCBQpCUHJlY2lzaW9uCQBrAwUDc3VtBQ5zaGFyZVByZWNpc2lvbgULc2hhcmVTdXBwbHkBDmdldFNoYXJlUHJpY2VzAQhzaGFyZUlkcwoBCWdldFByaWNlcwIBYQdzaGFyZUlkCQDNCAIFAWEJAQ1nZXRTaGFyZVByaWNlAQUHc2hhcmVJZAoAAiRsBQhzaGFyZUlkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJZ2V0UHJpY2VzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQBDmdldEN1cnNFbnRyaWVzBANhSWQDYklkB3NoYXJlSWQId0Ftb3VudHMEDGFzc2V0c1ByaWNlcwkBDmdldEFzc2V0c1ByaWNlAQkAzAgCBQNhSWQJAMwIAgUDYklkBQNuaWwECnNoYXJlUHJpY2UJAQ1nZXRTaGFyZVByaWNlAQUHc2hhcmVJZAQGcHJpY2VzCQDOCAIJAMwIAgkApAMBCQCRAwIFDGFzc2V0c1ByaWNlcwAACQDMCAIJAKQDAQkAkQMCBQxhc3NldHNQcmljZXMAAQkAzAgCCQCkAwEFCnNoYXJlUHJpY2UFA25pbAUId0Ftb3VudHMJAMwIAgkBC1N0cmluZ0VudHJ5AgUPa1Rva2VuTGFzdFByaWNlCQC5CQIFBnByaWNlcwIBLAUDbmlsARhjYWxjUmVwbGVuaXNoQnlUd29Ub2tlbnMIBXBUeXBlCHBvb2xBZGRyBHBtdEEDYUlkBHBtdEIDYklkBGJhbEEEYmFsQgMJAAACBQVwVHlwZQUHU0ZfUE9PTAQEcmVwbAoAAUAJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAiBjYWxjTFBSZXBsZW5pc2hUd29Ub2tlbnNSRUFET05MWQkAzAgCCQDMCAIJAKQDAQUEcG10QQkAzAgCCQCkAwEFBHBtdEIFA25pbAUDbmlsBQNuaWwDCQABAgUBQAIJTGlzdFtBbnldBQFACQACAQkArAICCQADAQUBQAIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAwkAAAIFBHJlcGwFBHJlcGwJAJcKBQoAAUAJAJEDAgUEcmVwbAADAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAoAAUAJAJEDAgUEcmVwbAAEAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAoAAUAJAJEDAgUEcmVwbAABAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAkBDGFzc2V0SWRUb1N0cgEJAJEDAgUEcmVwbAACCgABQAkAkQMCBQRyZXBsAAADCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBXBUeXBlBQdXWF9QT09MBA0kdDAxMzQ5MjEzNzQyCQCUCgIJALUJAgoAAUAJAPwHBAUIcG9vbEFkZHICIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZCQDMCAIFBHBtdEEFA25pbAUDbmlsAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEFAUACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwICX18JALUJAgoAAUAJAPwHBAUIcG9vbEFkZHICH2V2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkJAMwIAgUEcG10QgUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nAgJfXwMJAAACBQ0kdDAxMzQ5MjEzNzQyBQ0kdDAxMzQ5MjEzNzQyBApldmFsUHV0SW5CCAUNJHQwMTM0OTIxMzc0MgJfMgQKZXZhbFB1dEluQQgFDSR0MDEzNDkyMTM3NDICXzEEBWxwSW5BCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQQABBAVscEluQgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmV2YWxQdXRJbkIAAQMJAGYCBQVscEluQgUFbHBJbkEEA3BtdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmV2YWxQdXRJbkEACAkAlwoFBQRwbXRBBQNwbXQJAGUCBQRwbXRCBQNwbXQFA2JJZAUFbHBJbkIEA3BtdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmV2YWxQdXRJbkIABwkAlwoFBQNwbXQFBHBtdEIJAGUCBQRwbXRBBQNwbXQFA2FJZAUFbHBJbkEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAQ91bmtub3duUG9vbFR5cGUAARhyZXBsZW5pc2hUd29Ub2tlbnNCeVR5cGUGCHBvb2xBZGRyBXBUeXBlBHBtdEEDYUlkBHBtdEIDYklkBAhwYXltZW50cwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUDYUlkBQRwbXRBCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQNiSWQFBHBtdEIFA25pbAMJAAACBQVwVHlwZQUHU0ZfUE9PTAkA/AcEBQhwb29sQWRkcgIMY2FsbEZ1bmN0aW9uCQDMCAICFnJlcGxlbmlzaFdpdGhUd29Ub2tlbnMJAMwIAgkAzAgCAgVmYWxzZQkAzAgCAgEwBQNuaWwFA25pbAUIcGF5bWVudHMDCQAAAgUFcFR5cGUFB1dYX1BPT0wJAPwHBAUIcG9vbEFkZHICA3B1dAkAzAgCAMCEPQkAzAgCBwUDbmlsBQhwYXltZW50cwkBD3Vua25vd25Qb29sVHlwZQABF3JlcGxlbmlzaE9uZVRva2VuQnlUeXBlBAhwb29sQWRkcgVwVHlwZQNwbXQFcG10SWQECHBheW1lbnRzCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQVwbXRJZAUDcG10BQNuaWwDCQAAAgUFcFR5cGUFB1NGX1BPT0wJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAhVyZXBsZW5pc2hXaXRoT25lVG9rZW4JAMwIAgkAzAgCAgEwCQDMCAICBWZhbHNlCQDMCAICATAFA25pbAUDbmlsBQhwYXltZW50cwMJAAACBQVwVHlwZQUHV1hfUE9PTAQCZmMDCQAAAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQCsAgIJAKUIAQUIcG9vbEFkZHIFCWtQb29sVHlwZQIEY3BtbQUERkxBVAILcHV0T25lVGtuVjICCXB1dE9uZVRrbgkA/AcEBQhwb29sQWRkcgUCZmMJAMwIAgAACQDMCAIHBQNuaWwFCHBheW1lbnRzCQEPdW5rbm93blBvb2xUeXBlAAEHc3Rha2VMUAQEcG9vbAVwVHlwZQdzaGFyZUlkBmFtb3VudAQIcGF5bWVudHMJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUHc2hhcmVJZAUGYW1vdW50BQNuaWwDCQAAAgUFcFR5cGUFB1NGX1BPT0wJAPwHBAkBEGdldFNGRmFybWluZ0FkZHIAAg9sb2NrU2hhcmVUb2tlbnMJAMwIAgUEcG9vbAkAzAgCAAAFA25pbAUIcGF5bWVudHMDCQAAAgUFcFR5cGUFB1dYX1BPT0wJAPwHBAkBEGdldFdYRmFybWluZ0FkZHIBCQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sAgVzdGFrZQUDbmlsBQhwYXltZW50cwkBD3Vua25vd25Qb29sVHlwZQABCXVuc3Rha2VMUAQEcG9vbAVwVHlwZQdzaGFyZUlkBmFtb3VudAQNJHQwMTU1MjAxNTg3MAMJAAACBQVwVHlwZQUHU0ZfUE9PTAkAlQoDCQEQZ2V0U0ZGYXJtaW5nQWRkcgACE3dpdGhkcmF3U2hhcmVUb2tlbnMJAMwIAgUEcG9vbAkAzAgCBQZhbW91bnQFA25pbAMJAAACBQVwVHlwZQUHV1hfUE9PTAkAlQoDCQEQZ2V0V1hGYXJtaW5nQWRkcgEJAQdBZGRyZXNzAQkA2QQBBQRwb29sAgd1bnN0YWtlCQDMCAIFB3NoYXJlSWQJAMwIAgUGYW1vdW50BQNuaWwJAQ91bmtub3duUG9vbFR5cGUABAhmYXJtQWRkcggFDSR0MDE1NTIwMTU4NzACXzEEBWZOYW1lCAUNJHQwMTU1MjAxNTg3MAJfMgQGcGFyYW1zCAUNJHQwMTU1MjAxNTg3MAJfMwQDaW52CQD8BwQFCGZhcm1BZGRyBQVmTmFtZQUGcGFyYW1zBQNuaWwDCQAAAgUDaW52BQNpbnYFBmFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgERY2FsY0Ftb3VudFRvUGF5U0YHBHBvb2wIYXNzZXRJZEEIYXNzZXRJZEIEYmFsQQRiYWxCEGFtb3VudFRva2VuVG9HZXQPYXNzZXRUb2tlblRvR2V0BAhwb29sQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wECWZlZVNjYWxlNgDAhD0EA2ZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUIcG9vbEFkZHIFCmtTRlBvb2xGZWUEDGFtbnRHZXROb0ZlZQkAbgQFEGFtb3VudFRva2VuVG9HZXQFCWZlZVNjYWxlNgkAZQIFCWZlZVNjYWxlNgUDZmVlBQdDRUlMSU5HBA0kdDAxNjI5MjE2NTk4AwkAAAIFD2Fzc2V0VG9rZW5Ub0dldAUIYXNzZXRJZEEEC2Ftb3VudFRvUGF5CQBuBAUMYW1udEdldE5vRmVlBQRiYWxCCQBlAgUEYmFsQQUMYW1udEdldE5vRmVlBQdDRUlMSU5HCQCUCgIFC2Ftb3VudFRvUGF5BQhhc3NldElkQgQLYW1vdW50VG9QYXkJAG4EBQxhbW50R2V0Tm9GZWUFBGJhbEEJAGUCBQRiYWxCBQxhbW50R2V0Tm9GZWUFB0NFSUxJTkcJAJQKAgULYW1vdW50VG9QYXkFCGFzc2V0SWRBBAthbW91bnRUb1BheQgFDSR0MDE2MjkyMTY1OTgCXzEECmFzc2V0VG9QYXkIBQ0kdDAxNjI5MjE2NTk4Al8yCQCUCgIFCmFzc2V0VG9QYXkFC2Ftb3VudFRvUGF5AQ1nZXRXWFN3YXBGZWVzAQRwb29sBAhwb29sQWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAQJZkNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHICEyVzX19mYWN0b3J5Q29udHJhY3QCIkNhbid0IGdldCBXWCBmYWN0b3J5IGNvbnRyYWN0IGFkZHIEDnBvb2xGZWVEZWZhdWx0CQEFdmFsdWUBCQCaCAIFDnd4U3dhcENvbnRyYWN0Agslc19fcG9vbEZlZQQScHJvdG9jb2xGZWVEZWZhdWx0CQEFdmFsdWUBCQCaCAIFDnd4U3dhcENvbnRyYWN0Ag8lc19fcHJvdG9jb2xGZWUEByRtYXRjaDAJAPwHBAUJZkNvbnRyYWN0AhJnZXRTd2FwRmVlUkVBRE9OTFkJAMwIAgkApQgBBQhwb29sQWRkcgUDbmlsBQNuaWwDCQABAgUHJG1hdGNoMAIKKEludCwgSW50KQQEZmVlcwUHJG1hdGNoMAkAlAoCCAUEZmVlcwJfMQgFBGZlZXMCXzIJAJQKAgUOcG9vbEZlZURlZmF1bHQFEnByb3RvY29sRmVlRGVmYXVsdAERY2FsY0Ftb3VudFRvUGF5V1gHBHBvb2wIYXNzZXRJZEEIYXNzZXRJZEIEYmFsQQRiYWxCEGFtb3VudFRva2VuVG9HZXQPYXNzZXRUb2tlblRvR2V0BA0kdDAxNzMzODE3Mzc3CQENZ2V0V1hTd2FwRmVlcwEFBHBvb2wEBHBGZWUIBQ0kdDAxNzMzODE3Mzc3Al8xBAVwckZlZQgFDSR0MDE3MzM4MTczNzcCXzIECGZlZVNjYWxlCQC2AgEAgMLXLwQNJHQwMTc0MTcxNzcyNQMJAAACBQ9hc3NldFRva2VuVG9HZXQFCGFzc2V0SWRBBAthbW91bnRUb1BheQkAawMFEGFtb3VudFRva2VuVG9HZXQFBGJhbEIJAGUCBQRiYWxBBRBhbW91bnRUb2tlblRvR2V0CQCUCgIFC2Ftb3VudFRvUGF5BQhhc3NldElkQgQLYW1vdW50VG9QYXkJAGsDBRBhbW91bnRUb2tlblRvR2V0BQRiYWxBCQBlAgUEYmFsQgUQYW1vdW50VG9rZW5Ub0dldAkAlAoCBQthbW91bnRUb1BheQUIYXNzZXRJZEEEC2Ftb3VudFRvUGF5CAUNJHQwMTc0MTcxNzcyNQJfMQQKYXNzZXRUb1BheQgFDSR0MDE3NDE3MTc3MjUCXzIEEmFtb3VudFRvUGF5V2l0aEZlZQkAoAMBCQC9AgQJALYCAQULYW1vdW50VG9QYXkFCGZlZVNjYWxlCQC4AgIFCGZlZVNjYWxlCQC2AgEJAGQCBQVwckZlZQUEcEZlZQUHQ0VJTElORwkAlAoCBQphc3NldFRvUGF5BRJhbW91bnRUb1BheVdpdGhGZWUBEGV4Y2hhbmdlRGlyZWN0bHkIBXBUeXBlBHBvb2wIYXNzZXRJZEEIYXNzZXRJZEIEYmFsQQRiYWxCEGFtb3VudFRva2VuVG9HZXQPYXNzZXRUb2tlblRvR2V0BAZwb29sRkIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkArAICBQRwb29sBRdrRmFsbGJhY2tFeGNoYW5nZVN3b3BmaQIAAwMJAAACBQVwVHlwZQUHU0ZfUE9PTAYJAQIhPQIFBnBvb2xGQgIABA0kdDAxODE2NjE4Mzc4AwkAAAIFBnBvb2xGQgIACQCVCgMFBGJhbEEFBGJhbEIFBHBvb2wEDSR0MDE4MjcyMTgzNDUJARFnZXRTRlBvb2xCYWxhbmNlcwEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBnBvb2xGQgQGc2ZCYWxBCAUNJHQwMTgyNzIxODM0NQJfMQQGc2ZCYWxCCAUNJHQwMTgyNzIxODM0NQJfMgkAlQoDBQZzZkJhbEEFBnNmQmFsQgUGcG9vbEZCBAVwQmFsQQgFDSR0MDE4MTY2MTgzNzgCXzEEBXBCYWxCCAUNJHQwMTgxNjYxODM3OAJfMgQGZXhQb29sCAUNJHQwMTgxNjYxODM3OAJfMwQNJHQwMTgzODMxODUwOQkBEWNhbGNBbW91bnRUb1BheVNGBwUGZXhQb29sBQhhc3NldElkQQUIYXNzZXRJZEIFBXBCYWxBBQVwQmFsQgUQYW1vdW50VG9rZW5Ub0dldAUPYXNzZXRUb2tlblRvR2V0BAphc3NldFRvUGF5CAUNJHQwMTgzODMxODUwOQJfMQQLYW1vdW50VG9QYXkIBQ0kdDAxODM4MzE4NTA5Al8yCQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBmV4UG9vbAIMY2FsbEZ1bmN0aW9uCQDMCAICCGV4Y2hhbmdlCQDMCAIJAMwIAgkApAMBBRBhbW91bnRUb2tlblRvR2V0BQNuaWwFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUKYXNzZXRUb1BheQULYW1vdW50VG9QYXkFA25pbAMJAAACBQVwVHlwZQUHV1hfUE9PTAQNJHQwMTg3MTExODgzMwkBEWNhbGNBbW91bnRUb1BheVdYBwUEcG9vbAUIYXNzZXRJZEEFCGFzc2V0SWRCBQRiYWxBBQRiYWxCBRBhbW91bnRUb2tlblRvR2V0BQ9hc3NldFRva2VuVG9HZXQECmFzc2V0VG9QYXkIBQ0kdDAxODcxMTE4ODMzAl8xBAthbW91bnRUb1BheQgFDSR0MDE4NzExMTg4MzMCXzIJAPwHBAUOd3hTd2FwQ29udHJhY3QCBHN3YXAJAMwIAgUQYW1vdW50VG9rZW5Ub0dldAkAzAgCBQ9hc3NldFRva2VuVG9HZXQJAMwIAgkApQgBBQR0aGlzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFCmFzc2V0VG9QYXkFC2Ftb3VudFRvUGF5BQNuaWwJAQ91bmtub3duUG9vbFR5cGUAARpjYWxjV2l0aGRyYXdMUEZyb21Qb29sVmlydAQIcG9vbEFkZHIFcFR5cGUHc2hhcmVJZA91c2VyQ2FuV2l0aGRyYXcEDSR0MDE5MTIwMTk1ODQDCQAAAgUFcFR5cGUFB1NGX1BPT0wEA2ludgoAAUAJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAhB3aXRoZHJhd1JFQURPTkxZCQDMCAIJAMwIAgkApAMBBQ91c2VyQ2FuV2l0aGRyYXcFA25pbAUDbmlsBQNuaWwDCQABAgUBQAIJTGlzdFtBbnldBQFACQACAQkArAICCQADAQUBQAIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAwkAAAIFA2ludgUDaW52CQCUCgIKAAFACQCRAwIFA2ludgAAAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAoAAUAJAJEDAgUDaW52AAEDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBXBUeXBlBQdXWF9QT09MBANpbnYJALUJAgoAAUAJAPwHBAUIcG9vbEFkZHICE2V2YWx1YXRlR2V0UkVBRE9OTFkJAMwIAgUHc2hhcmVJZAkAzAgCBQ91c2VyQ2FuV2l0aGRyYXcFA25pbAUDbmlsAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEFAUACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwICX18DCQAAAgUDaW52BQNpbnYJAJQKAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2ludgABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDaW52AAIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAQ91bmtub3duUG9vbFR5cGUABAdhbW91bnRBCAUNJHQwMTkxMjAxOTU4NAJfMQQHYW1vdW50QggFDSR0MDE5MTIwMTk1ODQCXzIJAJQKAgUHYW1vdW50QQUHYW1vdW50QgELY2xhaW1GYXJtZWQCBXBUeXBlBHBvb2wDCQAAAgUFcFR5cGUFB1NGX1BPT0wECWJhbEJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQUGU1dPUElEAwkAAAIFCWJhbEJlZm9yZQUJYmFsQmVmb3JlBANpbnYJAPwHBAkBEGdldFNGRmFybWluZ0FkZHIAAgVjbGFpbQkAzAgCBQRwb29sBQNuaWwFA25pbAMJAAACBQNpbnYFA2ludgQIYmFsQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEFBlNXT1BJRAkAlAoCCQBlAgUIYmFsQWZ0ZXIFCWJhbEJlZm9yZQUGU1dPUElECQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBXBUeXBlBQdXWF9QT09MBA0kdDAxOTk1MjIwMDMxCQENZ2V0V1hQb29sRGF0YQEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBHBvb2wEA2FJZAgFDSR0MDE5OTUyMjAwMzECXzEEA2JJZAgFDSR0MDE5OTUyMjAwMzECXzIEBGFCYWwIBQ0kdDAxOTk1MjIwMDMxAl8zBARiQmFsCAUNJHQwMTk5NTIyMDAzMQJfNAQEbHBJZAgFDSR0MDE5OTUyMjAwMzECXzUECWJhbEJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQUEV1hJRAMJAAACBQliYWxCZWZvcmUFCWJhbEJlZm9yZQQDaW52CQD8BwQJARBnZXRXWEZhcm1pbmdBZGRyAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAIHY2xhaW1XeAkAzAgCBQRscElkBQNuaWwFA25pbAMJAAACBQNpbnYFA2ludgQIYmFsQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEFBFdYSUQJAJQKAgkAZQIFCGJhbEFmdGVyBQliYWxCZWZvcmUFBFdYSUQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAQ91bmtub3duUG9vbFR5cGUAAQ9yZXBsZW5pc2hCeVR5cGUKBXBUeXBlBHBvb2wHZmVlVHlwZQRwbXRBA2FJZARwbXRCA2JJZARiYWxBBGJhbEIETFBJZAQPbHBCYWxhbmNlQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBCQDZBAEFBExQSWQDCQAAAgUPbHBCYWxhbmNlQmVmb3JlBQ9scEJhbGFuY2VCZWZvcmUECHBvb2xBZGRyCQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sBA0kdDAyMDYyOTIxMDQ1AwMJAGYCBQRwbXRBAAAJAGYCBQRwbXRCAAAHBA0kdDAyMDY5NTIwODExCQEYY2FsY1JlcGxlbmlzaEJ5VHdvVG9rZW5zCAUFcFR5cGUFCHBvb2xBZGRyBQRwbXRBBQNhSWQFBHBtdEIFA2JJZAUEYmFsQQUEYmFsQgQGcG10SW5BCAUNJHQwMjA2OTUyMDgxMQJfMQQGcG10SW5CCAUNJHQwMjA2OTUyMDgxMQJfMgQGY2hhbmdlCAUNJHQwMjA2OTUyMDgxMQJfMwQIY2hhbmdlSWQIBQ0kdDAyMDY5NTIwODExAl80BANpbnYJARhyZXBsZW5pc2hUd29Ub2tlbnNCeVR5cGUGBQhwb29sQWRkcgUFcFR5cGUFBnBtdEluQQUDYUlkBQZwbXRJbkIFA2JJZAMJAAACBQNpbnYFA2ludgkAlAoCBQZjaGFuZ2UFCGNoYW5nZUlkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAZgIFBHBtdEEAAAkAlAoCBQRwbXRBBQNhSWQDCQBmAgUEcG10QgAACQCUCgIFBHBtdEIFA2JJZAkAAgECEHBtdHMgbXVzdCBiZSA+IDAEBmNoYW5nZQgFDSR0MDIwNjI5MjEwNDUCXzEECGNoYW5nZUlkCAUNJHQwMjA2MjkyMTA0NQJfMgQDaW52AwkAZgIFBmNoYW5nZQAACQEXcmVwbGVuaXNoT25lVG9rZW5CeVR5cGUEBQhwb29sQWRkcgUFcFR5cGUFBmNoYW5nZQUIY2hhbmdlSWQFA25pbAMJAAACBQNpbnYFA2ludgQObHBCYWxhbmNlQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEJANkEAQUETFBJZAQLdG90YWxTdGFrZWQJAGUCBQ5scEJhbGFuY2VBZnRlcgUPbHBCYWxhbmNlQmVmb3JlBA1heGx5RmVlQW1vdW50CQBrAwULdG90YWxTdGFrZWQJAQpnZXRBeGx5RmVlAgUEcG9vbAUHZmVlVHlwZQUKRkVFX1NDQUxFNgQRdXNlclNoYXJlRm9yU3Rha2UJAGUCBQt0b3RhbFN0YWtlZAUNYXhseUZlZUFtb3VudAMJAGcCAAAFEXVzZXJTaGFyZUZvclN0YWtlCQACAQIoYW1vdW50IG9mIHN0YWtlZCBzaGFyZXRva2VucyBtdXN0IGJlID4gMAQFaW52TFAJAQdzdGFrZUxQBAUEcG9vbAUFcFR5cGUFBExQSWQFEXVzZXJTaGFyZUZvclN0YWtlAwkAAAIFBWludkxQBQVpbnZMUAkAlAoCBRF1c2VyU2hhcmVGb3JTdGFrZQUNYXhseUZlZUFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEQcmVwbGVuaXNoRW50cmllcwgEcG9vbAR1c2VyDHN0YWtlZEFtb3VudA1heGx5RmVlQW1vdW50BnBvc051bQdzaGFyZUlkBHR5cGUId2l0aExvYW4EC3RvdGFsQW1vdW50CQERZ2V0UG9vbFRvdGFsU2hhcmUBBQRwb29sBA90b3RhbEFtb3VudExvYW4JARlnZXRQb29sVG90YWxTaGFyZVdpdGhMb2FuAQUEcG9vbAQNJHQwMjE5MDIyMjE0MAMFCHdpdGhMb2FuCQCUCgIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAURa1Bvb2xJbnRlcmVzdExvYW4JAGQCBQ90b3RhbEFtb3VudExvYW4FDHN0YWtlZEFtb3VudAkAlAoCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFE2tQb29sSW50ZXJlc3ROb0xvYW4FD3RvdGFsQW1vdW50TG9hbgQPY3VyUG9vbEludGVyZXN0CAUNJHQwMjE5MDIyMjE0MAJfMQQTdG90YWxTdGFrZWRXaXRoTG9hbggFDSR0MDIxOTAyMjIxNDACXzIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAkAZAIFC3RvdGFsQW1vdW50BQxzdGFrZWRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUOa1Bvb2xUb3RhbExvYW4FE3RvdGFsU3Rha2VkV2l0aExvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBnBvc051bQUNa1VzZXJQb3NpdGlvbgUMc3Rha2VkQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQZwb3NOdW0FFWtVc2VyUG9zaXRpb25JbnRlcmVzdAUPY3VyUG9vbEludGVyZXN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHVzZXICAV8JAKQDAQUGcG9zTnVtBRFrVXNlclBvc2l0aW9uUG9vbAUEcG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRBrVXNlclBvc2l0aW9uTnVtBQZwb3NOdW0JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIbW9uZXlCb3gFDWF4bHlGZWVBbW91bnQJANkEAQUHc2hhcmVJZAUDbmlsAQlsaXN0VG9JbnQCAWEEaXRlbQkAzQgCBQFhCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0BEGRpcmVjdFN3b3BmaUNQTU0CBXJBcmdzB3Rva2VuVG8EBGRBcHAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUFckFyZ3MAAQQEcG10UAkAtQkCCQCRAwIFBXJBcmdzAAICAXwEEnRva2VuQmFsYW5jZUJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUHdG9rZW5UbwMJAAACBRJ0b2tlbkJhbGFuY2VCZWZvcmUFEnRva2VuQmFsYW5jZUJlZm9yZQQDcG10CQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBCQCRAwIFBHBtdFAAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBHBtdFAAAQUDbmlsBAttaW5Ub1JlY2l2ZQkAkQMCBQVyQXJncwADBANpbnYJAPwHBAUEZEFwcAIMY2FsbEZ1bmN0aW9uCQDMCAICCGV4Y2hhbmdlCQDMCAIJAMwIAgULbWluVG9SZWNpdmUFA25pbAUDbmlsBQNwbXQDCQAAAgUDaW52BQNpbnYJAGUCCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b2tlblRvBRJ0b2tlbkJhbGFuY2VCZWZvcmUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BE2RpcmVjdFJvdXRpbmdTd29wZmkCBXJBcmdzB3Rva2VuVG8EBGRBcHAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUFckFyZ3MAAQQSdG9rZW5CYWxhbmNlQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b2tlblRvAwkAAAIFEnRva2VuQmFsYW5jZUJlZm9yZQUSdG9rZW5CYWxhbmNlQmVmb3JlBANwbXQEBHBtdFAJALUJAgkAkQMCBQVyQXJncwACAgF8CQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEJAJEDAgUEcG10UAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEcG10UAABBQNuaWwEBGFyZ3MEBWVBcmdzCQC1CQIJAJEDAgUFckFyZ3MAAwIBfAQKZXhjaGFuZ2VycwkAtQkCCQCRAwIFBWVBcmdzAAACASwEDmV4Y2hhbmdlcnNUeXBlCQC1CQIJAJEDAgUFZUFyZ3MAAQIBLAQFYXJnczEKAAIkbAkAtQkCCQCRAwIFBWVBcmdzAAICASwKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCWxpc3RUb0ludAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgMwkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwQFYXJnczIKAAIkbAkAtQkCCQCRAwIFBWVBcmdzAAMCASwKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCWxpc3RUb0ludAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgMwkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwQRcm91dGluZ0Fzc2V0c0tleXMJALUJAgkAkQMCBQVlQXJncwAEAgEsBAttaW5Ub1JlY2l2ZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWVBcmdzAAUJAMwIAgUKZXhjaGFuZ2VycwkAzAgCBQ5leGNoYW5nZXJzVHlwZQkAzAgCBQVhcmdzMQkAzAgCBQVhcmdzMgkAzAgCBRFyb3V0aW5nQXNzZXRzS2V5cwkAzAgCBQttaW5Ub1JlY2l2ZQUDbmlsBANpbnYJAPwHBAUEZEFwcAIMcm91dGluZ1RyYWRlBQRhcmdzBQNwbXQDCQAAAgUDaW52BQNpbnYJAGUCCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b2tlblRvBRJ0b2tlbkJhbGFuY2VCZWZvcmUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BCmNhcGl0YWxpemUEBHBvb2wFcFR5cGUHdG9rZW5JZAt0b2tlbkFtb3VudAQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBA0kdDAyNDI0NzI0MzEzCQELZ2V0UG9vbERhdGECBQhwb29sQWRkcgUFcFR5cGUEA0FJZAgFDSR0MDI0MjQ3MjQzMTMCXzEEA0JJZAgFDSR0MDI0MjQ3MjQzMTMCXzIEBGJhbEEIBQ0kdDAyNDI0NzI0MzEzAl8zBARiYWxCCAUNJHQwMjQyNDcyNDMxMwJfNAQHc2hhcmVJZAgFDSR0MDI0MjQ3MjQzMTMCXzUDAwkBAiE9AgUHdG9rZW5JZAUDQUlkCQECIT0CBQd0b2tlbklkBQNCSWQHCQACAQILV3JvbmcgYXNzZXQEEHRvdGFsU2hhcmVBbW91bnQJARFnZXRQb29sVG90YWxTaGFyZQEFBHBvb2wDCQAAAgUQdG90YWxTaGFyZUFtb3VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCG1vbmV5Qm94BQt0b2tlbkFtb3VudAkA2QQBBQd0b2tlbklkBQNuaWwEGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgkBGWdldFBvb2xUb3RhbFNoYXJlV2l0aExvYW4BBQRwb29sBAtsb2FuUGVyY2VudAkAawMFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgUGU0NBTEU4BRB0b3RhbFNoYXJlQW1vdW50BBB0b2tlbnNGb3JGZWVMb2FuCQBrAwULdG9rZW5BbW91bnQFC2xvYW5QZXJjZW50BQZTQ0FMRTgEEnRva2Vuc0ZvckZlZU5vTG9hbgkAZQIFC3Rva2VuQW1vdW50BRB0b2tlbnNGb3JGZWVMb2FuBAtheGx5RmVlTG9hbgkAawMFEHRva2Vuc0ZvckZlZUxvYW4JAQpnZXRBeGx5RmVlAgUEcG9vbAUMQ0FQX0ZFRV9MT0FOBQpGRUVfU0NBTEU2BA1heGx5RmVlTm9Mb2FuCQBrAwUSdG9rZW5zRm9yRmVlTm9Mb2FuCQEKZ2V0QXhseUZlZQIFBHBvb2wFD0NBUF9GRUVfTk9fTE9BTgUKRkVFX1NDQUxFNgQHYXhseUZlZQkAZAIFC2F4bHlGZWVMb2FuBQ1heGx5RmVlTm9Mb2FuBA0kdDAyNTA1ODI1MTU4AwkAAAIFB3Rva2VuSWQFA0FJZAkAlAoCCQBlAgULdG9rZW5BbW91bnQFB2F4bHlGZWUAAAkAlAoCAAAJAGUCBQt0b2tlbkFtb3VudAUHYXhseUZlZQQEcG10QQgFDSR0MDI1MDU4MjUxNTgCXzEEBHBtdEIIBQ0kdDAyNTA1ODI1MTU4Al8yBA0kdDAyNTE2MTI1MjY1CQEPcmVwbGVuaXNoQnlUeXBlCgUFcFR5cGUFBHBvb2wFBk5PX0ZFRQUEcG10QQUDQUlkBQRwbXRCBQNCSWQFBGJhbEEFBGJhbEIFB3NoYXJlSWQEDHN0YWtlZEFtb3VudAgFDSR0MDI1MTYxMjUyNjUCXzEEAm5mCAUNJHQwMjUxNjEyNTI2NQJfMgQTY3VyUG9vbEludGVyZXN0TG9hbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFEWtQb29sSW50ZXJlc3RMb2FuAAAEFWN1clBvb2xJbnRlcmVzdE5vTG9hbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFE2tQb29sSW50ZXJlc3ROb0xvYW4AAAQKc3Rha2VkTG9hbgkAawMFDHN0YWtlZEFtb3VudAULbG9hblBlcmNlbnQFBlNDQUxFOAQMc3Rha2VkTm9Mb2FuCQBlAgUMc3Rha2VkQW1vdW50BQpzdGFrZWRMb2FuBA9uZXdJbnRlcmVzdExvYW4DCQBmAgUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuAAAJAGQCBRNjdXJQb29sSW50ZXJlc3RMb2FuCQBrAwUKc3Rha2VkTG9hbgUHU0NBTEUxMAUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuAAAEEW5ld0ludGVyZXN0Tm9Mb2FuAwkAZgIJAGUCBRB0b3RhbFNoYXJlQW1vdW50BRh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4AAAkAZAIFFWN1clBvb2xJbnRlcmVzdE5vTG9hbgkAawMFDHN0YWtlZE5vTG9hbgUHU0NBTEUxMAkAZQIFEHRvdGFsU2hhcmVBbW91bnQFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgAACQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa1Bvb2xJbnRlcmVzdExvYW4FD25ld0ludGVyZXN0TG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrUG9vbEludGVyZXN0Tm9Mb2FuBRFuZXdJbnRlcmVzdE5vTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQprUG9vbFRvdGFsCQBkAgUQdG90YWxTaGFyZUFtb3VudAUMc3Rha2VkQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sVG90YWxMb2FuCQBkAgUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuBQpzdGFrZWRMb2FuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCG1vbmV5Qm94BQdheGx5RmVlCQEOYXNzZXRJZEZyb21TdHIBBQd0b2tlbklkBQNuaWwJAQ5nZXRDdXJzRW50cmllcwQFA0FJZAUDQklkBQdzaGFyZUlkBQNuaWwBGHVzZXJDYW5XaXRoZHJhd1NoYXJlQ2FsYwQEdXNlcgRwb29sBXBvc0lkCGJvcnJvd2VkBAdwQW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBQ1rVXNlclBvc2l0aW9uAhBVbmtub3duIHBvc2l0aW9uBAx1c2VySW50ZXJlc3QJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUVa1VzZXJQb3NpdGlvbkludGVyZXN0BAxwb29sSW50ZXJlc3QDBQhib3Jyb3dlZAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRFrUG9vbEludGVyZXN0TG9hbgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRNrUG9vbEludGVyZXN0Tm9Mb2FuCQBkAgUHcEFtb3VudAkAawMFB3BBbW91bnQJAGUCBQxwb29sSW50ZXJlc3QFDHVzZXJJbnRlcmVzdAUHU0NBTEUxMAEPY2FsY1N0b3BMb3NzRmVlBARwb29sCmlzQm9ycm93ZWQIc3RvcExvc3MKbHBXaXRoZHJhdwQHZmVlVHlwZQMFCmlzQm9ycm93ZWQFDVNUT1BMT1NTX0xPQU4FFFNUT1BMT1NTX0ZFRV9OT19MT0FOAwUIc3RvcExvc3MJAGsDBQpscFdpdGhkcmF3CQEKZ2V0QXhseUZlZQIFBHBvb2wFB2ZlZVR5cGUFCkZFRV9TQ0FMRTYAAAEOd2l0aGRyYXdUb1VzZXIEBHVzZXIEcG9vbAVwb3NJZAhzdG9wTG9zcwQHcEFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUNa1VzZXJQb3NpdGlvbgIQVW5rbm93biBwb3NpdGlvbgQKaXNCb3Jyb3dlZAkAZgIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRFrVXNlckJvcnJvd0Ftb3VudAAAAAAED3VzZXJDYW5XaXRoZHJhdwkBGHVzZXJDYW5XaXRoZHJhd1NoYXJlQ2FsYwQFBHVzZXIFBHBvb2wFBXBvc0lkBQppc0JvcnJvd2VkBA5wb29sVG90YWxTaGFyZQkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAQScG9vbFRvdGFsU2hhcmVMb2FuCQEZZ2V0UG9vbFRvdGFsU2hhcmVXaXRoTG9hbgEFBHBvb2wECHVzZXJBZGRyCQEHQWRkcmVzcwEJANkEAQUEdXNlcgQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCDFVua25vd24gcG9vbAQNJHQwMjc3OTQyNzg2NgkBC2dldFBvb2xEYXRhAgUIcG9vbEFkZHIFBXBUeXBlBAZpZEFTdHIIBQ0kdDAyNzc5NDI3ODY2Al8xBAZpZEJTdHIIBQ0kdDAyNzc5NDI3ODY2Al8yBARiYWxBCAUNJHQwMjc3OTQyNzg2NgJfMwQEYmFsQggFDSR0MDI3Nzk0Mjc4NjYCXzQEB3NoYXJlSWQIBQ0kdDAyNzc5NDI3ODY2Al81BA0kdDAyNzg2OTI3OTM2CQCUCgIJAQ5hc3NldElkRnJvbVN0cgEFBmlkQVN0cgkBDmFzc2V0SWRGcm9tU3RyAQUGaWRCU3RyBANpZEEIBQ0kdDAyNzg2OTI3OTM2Al8xBANpZEIIBQ0kdDAyNzg2OTI3OTM2Al8yBAtzdG9wTG9zc0ZlZQkBD2NhbGNTdG9wTG9zc0ZlZQQFBHBvb2wFCmlzQm9ycm93ZWQFCHN0b3BMb3NzBQ91c2VyQ2FuV2l0aGRyYXcEC2NCYWxBQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBBQNpZEEDCQAAAgULY0JhbEFCZWZvcmUFC2NCYWxBQmVmb3JlBAtjQmFsQkJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQUDaWRCAwkAAAIFC2NCYWxCQmVmb3JlBQtjQmFsQkJlZm9yZQQDaW52AwkAAAIFBXBUeXBlBQdTRl9QT09MBANpbnYJAQl1bnN0YWtlTFAEBQRwb29sBQVwVHlwZQUHc2hhcmVJZAULc3RvcExvc3NGZWUDCQAAAgUDaW52BQNpbnYJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAgh3aXRoZHJhdwkAzAgCCQDMCAIJAKQDAQUPdXNlckNhbldpdGhkcmF3BQNuaWwFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBXBUeXBlBQdXWF9QT09MBANpbnYJAQl1bnN0YWtlTFAEBQRwb29sBQVwVHlwZQUHc2hhcmVJZAkAZAIFD3VzZXJDYW5XaXRoZHJhdwULc3RvcExvc3NGZWUDCQAAAgUDaW52BQNpbnYJAPwHBAUIcG9vbEFkZHICA2dldAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQdzaGFyZUlkBQ91c2VyQ2FuV2l0aGRyYXcFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkBD3Vua25vd25Qb29sVHlwZQADCQAAAgUDaW52BQNpbnYECmNCYWxBQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEFA2lkQQMJAAACBQpjQmFsQUFmdGVyBQpjQmFsQUFmdGVyBApjQmFsQkFmdGVyCQEOYWNjb3VudEJhbGFuY2UBBQNpZEIDCQAAAgUKY0JhbEJBZnRlcgUKY0JhbEJBZnRlcgQNJHQwMjg2MzEyODcyMAkAlAoCCQBlAgUKY0JhbEFBZnRlcgULY0JhbEFCZWZvcmUJAGUCBQpjQmFsQkFmdGVyBQtjQmFsQkJlZm9yZQQNdG9rZW5zQW1vdW50QQgFDSR0MDI4NjMxMjg3MjACXzEEDXRva2Vuc0Ftb3VudEIIBQ0kdDAyODYzMTI4NzIwAl8yBA0kdDAyODcyMzI5OTU5AwUKaXNCb3Jyb3dlZAQLYm9ycm93QXNzZXQJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUSa1VzZXJCb3Jyb3dBc3NldElkBARkZWJ0CgABQAkA/AcECQEOZ2V0TGVuZFNydkFkZHIAAgxnZXRBc3NldERlYnQJAMwIAgcJAMwIAgkArAICCQCsAgIFBHVzZXICAV8FBXBvc0lkCQDMCAIFC2JvcnJvd0Fzc2V0BQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQDCQAAAgUEZGVidAUEZGVidAQNYW1vdW50VG9HZXRFeAMDCQAAAgULYm9ycm93QXNzZXQFBmlkQVN0cgkAZgIFBGRlYnQFDXRva2Vuc0Ftb3VudEEHCQBlAgUEZGVidAUNdG9rZW5zQW1vdW50QQMDCQAAAgULYm9ycm93QXNzZXQFBmlkQlN0cgkAZgIFBGRlYnQFDXRva2Vuc0Ftb3VudEIHCQBlAgUEZGVidAUNdG9rZW5zQW1vdW50QgAABAVleEludgMJAGYCBQ1hbW91bnRUb0dldEV4AAAJARBleGNoYW5nZURpcmVjdGx5CAUFcFR5cGUFBHBvb2wFBmlkQVN0cgUGaWRCU3RyCQBlAgUEYmFsQQUNdG9rZW5zQW1vdW50QQkAZQIFBGJhbEIFDXRva2Vuc0Ftb3VudEIFDWFtb3VudFRvR2V0RXgFC2JvcnJvd0Fzc2V0BQNuaWwDCQAAAgUFZXhJbnYFBWV4SW52BA9jQmFsQUFmdGVyUmVwYXkJAQ5hY2NvdW50QmFsYW5jZQEFA2lkQQMJAAACBQ9jQmFsQUFmdGVyUmVwYXkFD2NCYWxBQWZ0ZXJSZXBheQQPY0JhbEJBZnRlclJlcGF5CQEOYWNjb3VudEJhbGFuY2UBBQNpZEIDCQAAAgUPY0JhbEJBZnRlclJlcGF5BQ9jQmFsQkFmdGVyUmVwYXkEC2Nsb3NlRGJ0SW52AwkAZgIFBGRlYnQAAAkA/AcECQEOZ2V0TGVuZFNydkFkZHIAAghyZXBheUZvcgkAzAgCCQCsAgIJAKwCAgUEdXNlcgIBXwUFcG9zSWQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQULYm9ycm93QXNzZXQFBGRlYnQFA25pbAAAAwkAAAIFC2Nsb3NlRGJ0SW52BQtjbG9zZURidEludgMJAAACBQtib3Jyb3dBc3NldAUGaWRBU3RyCQCUCgIJAGUCCQBlAgUPY0JhbEFBZnRlclJlcGF5BQtjQmFsQUJlZm9yZQUEZGVidAkAZQIFD2NCYWxCQWZ0ZXJSZXBheQULY0JhbEJCZWZvcmUJAJQKAgkAZQIFD2NCYWxBQWZ0ZXJSZXBheQULY0JhbEFCZWZvcmUJAGUCCQBlAgUPY0JhbEJBZnRlclJlcGF5BQtjQmFsQkJlZm9yZQUEZGVidAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCBQ10b2tlbnNBbW91bnRBBQ10b2tlbnNBbW91bnRCBAd0b1VzZXJBCAUNJHQwMjg3MjMyOTk1OQJfMQQHdG9Vc2VyQggFDSR0MDI4NzIzMjk5NTkCXzIEFHBvb2xUb3RhbExvYW5FbnRyaWVzAwUKaXNCb3Jyb3dlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbFRvdGFsTG9hbgkAZQIJAGUCBRJwb29sVG90YWxTaGFyZUxvYW4FD3VzZXJDYW5XaXRoZHJhdwULc3RvcExvc3NGZWUFA25pbAUDbmlsBAdlbnRyaWVzCQDOCAIJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFDWtVc2VyUG9zaXRpb24JAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwUFcG9zSWQFEWtVc2VyUG9zaXRpb25Qb29sCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAURa1VzZXJCb3Jyb3dBbW91bnQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRJrVXNlckJvcnJvd0Fzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRVrVXNlclBvc2l0aW9uSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAkAZQIJAGUCBQ5wb29sVG90YWxTaGFyZQUPdXNlckNhbldpdGhkcmF3BQtzdG9wTG9zc0ZlZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQh1c2VyQWRkcgUHdG9Vc2VyQQUDaWRBCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCHVzZXJBZGRyBQd0b1VzZXJCBQNpZEIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIbW9uZXlCb3gFC3N0b3BMb3NzRmVlCQDZBAEFB3NoYXJlSWQFA25pbAUUcG9vbFRvdGFsTG9hbkVudHJpZXMJAQ5nZXRDdXJzRW50cmllcwQFBmlkQVN0cgUGaWRCU3RyBQdzaGFyZUlkBQNuaWwJAJQKAgUHZW50cmllcwkAzAgCBQd0b1VzZXJBCQDMCAIFB3RvVXNlckIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEMcGFyc2VSZXF1ZXN0AQlyZXF1ZXN0SWQEB3JlcXVlc3QJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUJcmVxdWVzdElkBQprUmVxdWVzdElkCQCsAgICE05vIHJlcXVlc3Qgd2l0aCBpZCAFCXJlcXVlc3RJZAIBLAQEdXNlcgkAkQMCBQdyZXF1ZXN0AAAEBHBvb2wJAJEDAgUHcmVxdWVzdAABBARwbXRBCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAACBANBSWQJAJEDAgUHcmVxdWVzdAADBARwbXRCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAAEBANCSWQJAJEDAgUHcmVxdWVzdAAFBARiYWxBCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAAGBARiYWxCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAAHBAdzaGFyZUlkCQCRAwIFB3JlcXVlc3QACAQHYndBc3NldAkAkQMCBQdyZXF1ZXN0AAkECGJ3QW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAAKCQCdCgsFBHVzZXIFBHBvb2wFBHBtdEEFA0FJZAUEcG10QgUDQklkBQRiYWxBBQRiYWxCBQdzaGFyZUlkBQdid0Fzc2V0BQhid0Ftb3VudAEQY2FsY0JvcnJvd0Ftb3VudAYEcG10QQRwbXRCA2FJZANiSWQIbGV2ZXJhZ2UIYm9ycm93SWQDAwkBAiE9AgUIYm9ycm93SWQFA2FJZAkBAiE9AgUIYm9ycm93SWQFA2JJZAcJAAIBAhJXcm9uZyBib3Jyb3cgYXNzZXQEB2RQcmljZUEJARFAZXh0ck5hdGl2ZSgxMDUwKQIFD3ByaWNlT3JhY2xlQWRkcgkArAICBQNhSWQFDmtQcmljZUluT3JhY2xlBAdkUHJpY2VCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9wcmljZU9yYWNsZUFkZHIJAKwCAgUDYklkBQ5rUHJpY2VJbk9yYWNsZQQGZGVjUHJBCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUDYUlkAAAAAAUERE9XTgQGZGVjUHJCCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUDYklkAAAAAAUERE9XTgQMcGF5ZEluRG9sbGFyCQBkAgkAawMFB2RQcmljZUEFBHBtdEEFBmRlY1ByQQkAawMFB2RQcmljZUIFBHBtdEIFBmRlY1ByQgQNJHQwMzE5NDEzMjAzOAMJAAACBQhib3Jyb3dJZAUDYUlkCQCUCgIFB2RQcmljZUEFBmRlY1ByQQkAlAoCBQdkUHJpY2VCBQZkZWNQckIEC2JvcnJvd1ByaWNlCAUNJHQwMzE5NDEzMjAzOAJfMQQLYm9ycm93RGVjUHIIBQ0kdDAzMTk0MTMyMDM4Al8yCQBrAwkAawMFDHBheWRJbkRvbGxhcgkAZQIFCGxldmVyYWdlAGQAZAULYm9ycm93RGVjUHIFC2JvcnJvd1ByaWNlARJwYXJzZVJlcGxlbmlzaFBtdHMDBHBtdHMDQUlkA0JJZAMJAAACCQCQAwEFBHBtdHMAAgMJAQIhPQIJAQxhc3NldElkVG9TdHIBCAkAkQMCBQRwbXRzAAAHYXNzZXRJZAUDQUlkCQACAQIVV3JvbmcgcGF5bWVudCBhc3NldCBBAwkBAiE9AgkBDGFzc2V0SWRUb1N0cgEICQCRAwIFBHBtdHMAAQdhc3NldElkBQNCSWQJAAIBAhVXcm9uZyBwYXltZW50IGFzc2V0IEIJAJQKAggJAJEDAgUEcG10cwAABmFtb3VudAgJAJEDAgUEcG10cwABBmFtb3VudAMJAAACCQCQAwEFBHBtdHMAAQMJAAACCQEMYXNzZXRJZFRvU3RyAQgJAJEDAgUEcG10cwAAB2Fzc2V0SWQFA0FJZAkAlAoCCAkAkQMCBQRwbXRzAAAGYW1vdW50AAADCQAAAgkBDGFzc2V0SWRUb1N0cgEICQCRAwIFBHBtdHMAAAdhc3NldElkBQNCSWQJAJQKAgAACAkAkQMCBQRwbXRzAAAGYW1vdW50CQACAQINV3JvbmcgcGF5bWVudAkAAgECHE9uZSBvciB0d28gcGF5bWVudHMgZXhwZWN0ZWQBD2NhbGNQcmljZUltcGFjdAQEYmFsQQRiYWxCB25ld0JhbEEHbmV3QmFsQgQDcHJpCQBoAgkAZQIFBlNDQUxFOAkAawMJAGsDBQRiYWxCBQZTQ0FMRTgFBGJhbEEFBlNDQUxFOAkAawMFB25ld0JhbEIFBlNDQUxFOAUHbmV3QmFsQQBkAwkAZgIAAAUDcHJpCQBoAgUDcHJpAP///////////wEFA3ByaQERY2xhaW1BbmRDaGVja0FtbnQFBHBvb2wFcFR5cGUFY2xhaW0GYW1vdW50BmNoYW5nZQQNJHQwMzMwMzgzMzMwMAMFBWNsYWltCQELY2xhaW1GYXJtZWQCBQVwVHlwZQUEcG9vbAQMY2xhaW1lZEFzc2V0AwkAAAIFBXBUeXBlBQdTRl9QT09MBQZTV09QSUQDCQAAAgUFcFR5cGUFB1dYX1BPT0wFBFdYSUQJAQ91bmtub3duUG9vbFR5cGUACQCUCgIFBmFtb3VudAUMY2xhaW1lZEFzc2V0AwkAAAIFDSR0MDMzMDM4MzMzMDAFDSR0MDMzMDM4MzMzMDAECmNsYWltQXNzZXQIBQ0kdDAzMzAzODMzMzAwAl8yBAtjbGFpbUFtb3VudAgFDSR0MDMzMDM4MzMzMDACXzEEA2JhbAkBDmFjY291bnRCYWxhbmNlAQUKY2xhaW1Bc3NldAMJAAACBQNiYWwFA2JhbAMJAGYCBQZhbW91bnQFA2JhbAkAAgECGVRvIGJpZyBhbW91bnQgdG8gZXhjaGFuZ2UJAJQKAgULY2xhaW1BbW91bnQFCmNsYWltQXNzZXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4bAWkBE2dldFBvb2xJbmZvUkVBRE9OTFkBBHBvb2wECHBvb2xBZGRyCQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCElBvb2wgaXMgbm90IGluaXRlZAQNJHQwMzM2NjczMzc1NwkBC2dldFBvb2xEYXRhAgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBANBSWQIBQ0kdDAzMzY2NzMzNzU3Al8xBANCSWQIBQ0kdDAzMzY2NzMzNzU3Al8yBARiYWxBCAUNJHQwMzM2NjczMzc1NwJfMwQEYmFsQggFDSR0MDMzNjY3MzM3NTcCXzQEB3NoYXJlSWQIBQ0kdDAzMzY2NzMzNzU3Al81BAtzaGFyZVN1cHBseQkBDmdldFNoYXJlU3VwcGx5AwUIcG9vbEFkZHIFBXBUeXBlBQdzaGFyZUlkCQCUCgIFA25pbAkAmAoGBQNBSWQFA0JJZAUHc2hhcmVJZAUEYmFsQQUEYmFsQgULc2hhcmVTdXBwbHkBaQEaZ2V0U2hhcmVBc3NldFByaWNlUkVBRE9OTFkBB3NoYXJlSWQEC3NoYXJlUHJpY2VzCQENZ2V0U2hhcmVQcmljZQEFB3NoYXJlSWQJAJQKAgUDbmlsBQtzaGFyZVByaWNlcwFpASJnZXRVc2VyUG9zaXRpb25TaGFyZUFtb3VudFJFQURPTkxZAgR1c2VyBnBvc051bQQEcG9vbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHVzZXICAV8FBnBvc051bQURa1VzZXJQb3NpdGlvblBvb2wCEFVua25vd24gcG9zaXRpb24EDGJvcnJvd0Ftb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBnBvc051bQURa1VzZXJCb3Jyb3dBbW91bnQED3VzZXJDYW5XaXRoZHJhdwkBGHVzZXJDYW5XaXRoZHJhd1NoYXJlQ2FsYwQFBHVzZXIFBHBvb2wFBnBvc051bQkAZgIFDGJvcnJvd0Ftb3VudAAACQCUCgIFA25pbAUPdXNlckNhbldpdGhkcmF3AWkBF2dldFVzZXJQb3NpdGlvblJFQURPTkxZAwR1c2VyBXBvb2xzBnBvc051bQoBB3VzZXJQb3MCAWEEcG9vbAQNJHQwMzQ2MzAzNDcwMAUBYQQJd0Ftb3VudHNBCAUNJHQwMzQ2MzAzNDcwMAJfMQQJd0Ftb3VudHNCCAUNJHQwMzQ2MzAzNDcwMAJfMgQFZGVidHMIBQ0kdDAzNDYzMDM0NzAwAl8zBAtlcVdBbW91bnRzQQgFDSR0MDM0NjMwMzQ3MDACXzQEC2VxV0Ftb3VudHNCCAUNJHQwMzQ2MzAzNDcwMAJfNQQFaW5kZXgIBQ0kdDAzNDYzMDM0NzAwAl82AwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkAkQMCBQZwb3NOdW0FBWluZGV4BQ1rVXNlclBvc2l0aW9uCQCYCgYJAM0IAgUJd0Ftb3VudHNBAAAJAM0IAgUJd0Ftb3VudHNCAAAJAM0IAgUFZGVidHMAAAkAzQgCBQtlcVdBbW91bnRzQQAACQDNCAIFC2VxV0Ftb3VudHNCAAAJAGQCBQVpbmRleAABBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCElBvb2wgaXMgbm90IGluaXRlZAQNJHQwMzQ5NzkzNTA2OQkBC2dldFBvb2xEYXRhAgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBANBSWQIBQ0kdDAzNDk3OTM1MDY5Al8xBANCSWQIBQ0kdDAzNDk3OTM1MDY5Al8yBARiYWxBCAUNJHQwMzQ5NzkzNTA2OQJfMwQEYmFsQggFDSR0MDM0OTc5MzUwNjkCXzQEB3NoYXJlSWQIBQ0kdDAzNDk3OTM1MDY5Al81BAxib3Jyb3dBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAJEDAgUGcG9zTnVtBQVpbmRleAURa1VzZXJCb3Jyb3dBbW91bnQAAAQPdXNlckNhbldpdGhkcmF3CQEYdXNlckNhbldpdGhkcmF3U2hhcmVDYWxjBAUEdXNlcgUEcG9vbAkAkQMCBQZwb3NOdW0FBWluZGV4CQBmAgUMYm9ycm93QW1vdW50AAAEDSR0MDM1Mjg1MzU0MDUJARpjYWxjV2l0aGRyYXdMUEZyb21Qb29sVmlydAQJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQUHc2hhcmVJZAUPdXNlckNhbldpdGhkcmF3BAh3QW1vdW50QQgFDSR0MDM1Mjg1MzU0MDUCXzEECHdBbW91bnRCCAUNJHQwMzUyODUzNTQwNQJfMgMJAGYCBQxib3Jyb3dBbW91bnQAAAQLYm9ycm93QXNzZXQJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCRAwIFBnBvc051bQUFaW5kZXgFEmtVc2VyQm9ycm93QXNzZXRJZAQEZGVidAoAAUAJAPwHBAkBDmdldExlbmRTcnZBZGRyAAIMZ2V0QXNzZXREZWJ0CQDMCAIHCQDMCAIJAKwCAgkArAICBQR1c2VyAgFfCQCRAwIFBnBvc051bQUFaW5kZXgJAMwIAgULYm9ycm93QXNzZXQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQRkZWJ0BQRkZWJ0BA1hbW91bnRUb0dldEV4AwMJAAACBQtib3Jyb3dBc3NldAUDQUlkCQBmAgUEZGVidAUId0Ftb3VudEEHCQBlAgUEZGVidAUId0Ftb3VudEEDAwkAAAIFC2JvcnJvd0Fzc2V0BQNCSWQJAGYCBQRkZWJ0BQh3QW1vdW50QgcJAGUCBQRkZWJ0BQh3QW1vdW50QgAABAthbW91bnRUb1BheQMJAGYCBQ1hbW91bnRUb0dldEV4AAADCQAAAgUFcFR5cGUFB1NGX1BPT0wEAmV4CQERY2FsY0Ftb3VudFRvUGF5U0YHBQRwb29sBQNBSWQFA0JJZAUEYmFsQQUEYmFsQgUNYW1vdW50VG9HZXRFeAULYm9ycm93QXNzZXQIBQJleAJfMgMJAAACBQVwVHlwZQUHV1hfUE9PTAQCZXgJARFjYWxjQW1vdW50VG9QYXlXWAcFBHBvb2wFA0FJZAUDQklkBQRiYWxBBQRiYWxCBQ1hbW91bnRUb0dldEV4BQtib3Jyb3dBc3NldAgFAmV4Al8yCQEPdW5rbm93blBvb2xUeXBlAAAABA0kdDAzNjMxNzM2NTM2AwkAAAIFC2JvcnJvd0Fzc2V0BQNBSWQJAJQKAgkAZQIJAGQCBQh3QW1vdW50QQUNYW1vdW50VG9HZXRFeAUEZGVidAkAZQIFCHdBbW91bnRCBQthbW91bnRUb1BheQkAlAoCCQBlAgUId0Ftb3VudEEFC2Ftb3VudFRvUGF5CQBlAgkAZAIFCHdBbW91bnRCBQ1hbW91bnRUb0dldEV4BQRkZWJ0BAplcVdBbW91bnRBCAUNJHQwMzYzMTczNjUzNgJfMQQKZXFXQW1vdW50QggFDSR0MDM2MzE3MzY1MzYCXzIJAJgKBgkAzQgCBQl3QW1vdW50c0EFCHdBbW91bnRBCQDNCAIFCXdBbW91bnRzQgUId0Ftb3VudEIJAM0IAgUFZGVidHMFBGRlYnQJAM0IAgULZXFXQW1vdW50c0EFCmVxV0Ftb3VudEEJAM0IAgULZXFXQW1vdW50c0IFCmVxV0Ftb3VudEIJAGQCBQVpbmRleAABCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCYCgYJAM0IAgUJd0Ftb3VudHNBBQh3QW1vdW50QQkAzQgCBQl3QW1vdW50c0IFCHdBbW91bnRCBQVkZWJ0cwkAzQgCBQl3QW1vdW50c0EFCHdBbW91bnRBCQDNCAIFCXdBbW91bnRzQgUId0Ftb3VudEIJAGQCBQVpbmRleAABBA0kdDAzNjc5MTM2OTAyCgACJGwFBXBvb2xzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAmAoGBQNuaWwFA25pbAUDbmlsBQNuaWwFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQd1c2VyUG9zAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQECXdBbW91bnRzQQgFDSR0MDM2NzkxMzY5MDICXzEECXdBbW91bnRzQggFDSR0MDM2NzkxMzY5MDICXzIEBWRlYnRzCAUNJHQwMzY3OTEzNjkwMgJfMwQLZXFXQW1vdW50c0EIBQ0kdDAzNjc5MTM2OTAyAl80BAtlcVdBbW91bnRzQggFDSR0MDM2NzkxMzY5MDICXzUJAJQKAgUDbmlsCQCXCgUFCXdBbW91bnRzQQUJd0Ftb3VudHNCBQVkZWJ0cwULZXFXQW1vdW50c0EFC2VxV0Ftb3VudHNCAWkBCXJlcGxlbmlzaAMEcG9vbAhsZXZlcmFnZQhib3Jyb3dJZAkBC3ZhbHVlT3JFbHNlAgkBEGlzQWN0aXZlRm9yVXNlcnMABAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCElBvb2wgaXMgbm90IGluaXRlZAMJAQEhAQkBDGlzUG9vbEFjdGl2ZQIFBHBvb2wFBXBUeXBlCQACAQIeUG9vbCBub3QgYWN0aXZlIGF0IHRoaXMgbW9tZW50AwMJAGYCAGQFCGxldmVyYWdlBgkAZgIFCGxldmVyYWdlAKwCCQACAQIfTGV2ZXJhZ2UgY2FuJ3QgYmUgPDEwMCBhbmQgPjMwMAMDCQEBIQEJARFAZXh0ck5hdGl2ZSgxMDUxKQIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xDYW5Cb3Jyb3cJAGYCBQhsZXZlcmFnZQBkBwkAAgECHVlvdSBjYW4ndCBib3Jyb3cgaW4gdGhpcyBwb29sBA0kdDAzNzUwMDM3NTkwCQELZ2V0UG9vbERhdGECCQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUEA0FJZAgFDSR0MDM3NTAwMzc1OTACXzEEA0JJZAgFDSR0MDM3NTAwMzc1OTACXzIEBGJhbEEIBQ0kdDAzNzUwMDM3NTkwAl8zBARiYWxCCAUNJHQwMzc1MDAzNzU5MAJfNAQHc2hhcmVJZAgFDSR0MDM3NTAwMzc1OTACXzUDAwkBAiE9AgUIYm9ycm93SWQFA0FJZAkBAiE9AgUIYm9ycm93SWQFA0JJZAcJAAIBAhJXcm9uZyBib3Jyb3cgYXNzZXQEDSR0MDM3NjcxMzc3MzAJARJwYXJzZVJlcGxlbmlzaFBtdHMDCAUBaQhwYXltZW50cwUDQUlkBQNCSWQEBHBtdEEIBQ0kdDAzNzY3MTM3NzMwAl8xBARwbXRCCAUNJHQwMzc2NzEzNzczMAJfMgQEdXNlcgkApQgBCAUBaQZjYWxsZXIECW5ld1Bvc051bQkBGGdldE5ld1VzZXJQb3NpdGlvbk51bWJlcgEFBHVzZXIDCQBmAgUIbGV2ZXJhZ2UAZAQMYm9ycm93QW1vdW50CQEQY2FsY0JvcnJvd0Ftb3VudAYFBHBtdEEFBHBtdEIFA0FJZAUDQklkBQhsZXZlcmFnZQUIYm9ycm93SWQEB3JlcXVlc3QJALkJAgkAzAgCBQR1c2VyCQDMCAIFBHBvb2wJAMwIAgkApAMBBQRwbXRBCQDMCAIFA0FJZAkAzAgCCQCkAwEFBHBtdEIJAMwIAgUDQklkCQDMCAIJAKQDAQUEYmFsQQkAzAgCCQCkAwEFBGJhbEIJAMwIAgUHc2hhcmVJZAkAzAgCBQhib3Jyb3dJZAkAzAgCCQCkAwEFDGJvcnJvd0Ftb3VudAUDbmlsAgEsBAxuZXdSZXF1ZXN0SWQKAAFACQD8BwQFBHRoaXMCEGNyZWF0ZU5ld1JlcXVlc3QJAMwIAgUHcmVxdWVzdAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFDG5ld1JlcXVlc3RJZAUMbmV3UmVxdWVzdElkBARhcmdzCQDMCAIJAKwCAgkArAICBQR1c2VyAgFfCQCkAwEFCW5ld1Bvc051bQkAzAgCBQdzaGFyZUlkCQDMCAIFCGJvcnJvd0lkCQDMCAIFDGJvcnJvd0Ftb3VudAkAzAgCCQClCAEFBHRoaXMJAMwIAgIRcmVwbGVuaXNoRnJvbUxhbmQJAMwIAgkApAMBCQETdmFsdWVPckVycm9yTWVzc2FnZQIFDG5ld1JlcXVlc3RJZAIYQ2FuJ3QgY3JlYXRlIG5ldyByZXF1ZXN0BQNuaWwEA2ludgkA/QcECQEOZ2V0TGVuZFNydkFkZHIAAg1mbGFzaFBvc2l0aW9uBQRhcmdzBQNuaWwDCQAAAgUDaW52BQNpbnYECnVzZXJTdGFrZWQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFCW5ld1Bvc051bQUNa1VzZXJQb3NpdGlvbgQNJHQwMzg3MTkzODgxMwkBD2dldFBvb2xCYWxhbmNlcwQJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQUDQUlkBQNCSWQDCQAAAgUNJHQwMzg3MTkzODgxMwUNJHQwMzg3MTkzODgxMwQHbmV3QmFsQggFDSR0MDM4NzE5Mzg4MTMCXzIEB25ld0JhbEEIBQ0kdDAzODcxOTM4ODEzAl8xBAhwckltcGFjdAkBD2NhbGNQcmljZUltcGFjdAQFBGJhbEEFBGJhbEIFB25ld0JhbEEFB25ld0JhbEIEDSR0MDM4ODgzMzg5OTgJARpjYWxjV2l0aGRyYXdMUEZyb21Qb29sVmlydAQJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQUHc2hhcmVJZAUKdXNlclN0YWtlZAQId0Ftb3VudEEIBQ0kdDAzODg4MzM4OTk4Al8xBAh3QW1vdW50QggFDSR0MDM4ODgzMzg5OTgCXzIJAJQKAgUDbmlsCQDMCAIFCHBySW1wYWN0CQDMCAIFCHdBbW91bnRBCQDMCAIFCHdBbW91bnRCBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EDSR0MDM5MDUxMzkxNjYJAQ9yZXBsZW5pc2hCeVR5cGUKBQVwVHlwZQUEcG9vbAULTk9fTE9BTl9GRUUFBHBtdEEFA0FJZAUEcG10QgUDQklkBQRiYWxBBQRiYWxCBQdzaGFyZUlkAwkAAAIFDSR0MDM5MDUxMzkxNjYFDSR0MDM5MDUxMzkxNjYEB2F4bHlGZWUIBQ0kdDAzOTA1MTM5MTY2Al8yBAp1c2VyU3Rha2VkCAUNJHQwMzkwNTEzOTE2NgJfMQQNJHQwMzkxNzIzOTI2NgkBD2dldFBvb2xCYWxhbmNlcwQJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQUDQUlkBQNCSWQDCQAAAgUNJHQwMzkxNzIzOTI2NgUNJHQwMzkxNzIzOTI2NgQHbmV3QmFsQggFDSR0MDM5MTcyMzkyNjYCXzIEB25ld0JhbEEIBQ0kdDAzOTE3MjM5MjY2Al8xBAhwckltcGFjdAkBD2NhbGNQcmljZUltcGFjdAQFBGJhbEEFBGJhbEIFB25ld0JhbEEFB25ld0JhbEIEDSR0MDM5MzM2Mzk0NTEJARpjYWxjV2l0aGRyYXdMUEZyb21Qb29sVmlydAQJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQUHc2hhcmVJZAUKdXNlclN0YWtlZAQId0Ftb3VudEEIBQ0kdDAzOTMzNjM5NDUxAl8xBAh3QW1vdW50QggFDSR0MDM5MzM2Mzk0NTECXzIJAJQKAgkAzggCCQEQcmVwbGVuaXNoRW50cmllcwgFBHBvb2wFBHVzZXIFCnVzZXJTdGFrZWQFB2F4bHlGZWUFCW5ld1Bvc051bQUHc2hhcmVJZAUFcFR5cGUHCQEOZ2V0Q3Vyc0VudHJpZXMEBQNBSWQFA0JJZAUHc2hhcmVJZAkAzAgCCQCkAwEFCHdBbW91bnRBCQDMCAIJAKQDAQUId0Ftb3VudEIFA25pbAkAzAgCBQhwckltcGFjdAkAzAgCBQh3QW1vdW50QQkAzAgCBQh3QW1vdW50QgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCHdpdGhkcmF3AgRwb29sBXBvc0lkCQELdmFsdWVPckVsc2UCCQEQaXNBY3RpdmVGb3JVc2VycwAEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAISUG9vbCBpcyBub3QgaW5pdGVkAwkBASEBCQEMaXNQb29sQWN0aXZlAgUEcG9vbAUFcFR5cGUJAAIBAh5Qb29sIG5vdCBhY3RpdmUgYXQgdGhpcyBtb21lbnQJAQ53aXRoZHJhd1RvVXNlcgQJAKUIAQgFAWkGY2FsbGVyBQRwb29sCQCkAwEFBXBvc0lkBwFpARRjcmVhdGVVcGRhdGVTdG9wTG9zcwQFcG9zSWQGcG9vbElkB2Fzc2V0SWQFcHJpY2UJAQt2YWx1ZU9yRWxzZQIJARBpc0FjdGl2ZUZvclVzZXJzAAQQdG9rZW5PcmFjbGVQcmljZQkBEUBleHRyTmF0aXZlKDEwNTApAgUPcHJpY2VPcmFjbGVBZGRyCQCsAgIFB2Fzc2V0SWQFDmtQcmljZUluT3JhY2xlBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBnBvb2xJZAISUG9vbCBpcyBub3QgaW5pdGVkAwkBASEBCQEMaXNQb29sQWN0aXZlAgUGcG9vbElkBQVwVHlwZQkAAgECHlBvb2wgbm90IGFjdGl2ZSBhdCB0aGlzIG1vbWVudAMJAQEhAQkBCWlzRGVmaW5lZAEJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBnBvb2xJZAIBXwkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQUFcG9zSWQFDWtVc2VyUG9zaXRpb24JAAIBAhpUaGVyZSBhcmUgbm8gdXNlciBwb3NpdGlvbgMJAGcCAAAFBXByaWNlCQACAQIcUHJpY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCBQVwcmljZQUQdG9rZW5PcmFjbGVQcmljZQkAAgECK1ByaWNlIG11c3QgYmUgbGVzcyB0aGFuIGN1cnJlbnQgdG9rZW4gcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQUFcG9zSWQCAV8FBnBvb2xJZAIBXwUHYXNzZXRJZAUNa1VzZXJTdG9wTG9zcwUFcHJpY2UFA25pbAFpAQ5kZWxldGVTdG9wTG9zcwMFcG9zSWQGcG9vbElkB2Fzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJARBpc0FjdGl2ZUZvclVzZXJzAAQFcFR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQZwb29sSWQCElBvb2wgaXMgbm90IGluaXRlZAMJAQEhAQkBDGlzUG9vbEFjdGl2ZQIFBnBvb2xJZAUFcFR5cGUJAAIBAh5Qb29sIG5vdCBhY3RpdmUgYXQgdGhpcyBtb21lbnQDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQUFcG9zSWQCAV8FBnBvb2xJZAIBXwUHYXNzZXRJZAUNa1VzZXJTdG9wTG9zcwkAAgECCE5vIGVudHJ5CQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQUFcG9zSWQCAV8FBnBvb2xJZAIBXwUHYXNzZXRJZAUNa1VzZXJTdG9wTG9zcwUDbmlsAWkBBGluaXQNDG1vbmV5Qm94QWRkcg1zZkZhcm1pbmdBZGRyCGxlbmRBZGRyD3ByaWNlT3JhY2xlQWRkchBrZWVwZXJFeENvbnRyYWN0Dnd4U3dhcENvbnRyYWN0C3N3b3BBc3NldElkCXd4QXNzZXRJZA5vcGVyYXRvclB1YktleRJncm91cDFBZG1pbjFQdWJLZXkSZ3JvdXAxQWRtaW4yUHViS2V5Emdyb3VwMkFkbWluMVB1YktleRJncm91cDJBZG1pbjJQdWJLZXkJAQt2YWx1ZU9yRWxzZQIJAQppc1NlbGZDYWxsAQUBaQMJAQlpc0RlZmluZWQBCQCiCAEFD2tPcGVyYXRvckNhbGxQSwkAAgECDkFscmVhZHkgaW5pdGVkAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQxtb25leUJveEFkZHIJAAIBAiNtb25leUJveEFkZHIgaXMgbm90IGNvcnJlY3QgYWRkcmVzcwMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUNc2ZGYXJtaW5nQWRkcgkAAgECJHNmRmFybWluZ0FkZHIgaXMgbm90IGNvcnJlY3QgYWRkcmVzcwMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUIbGVuZEFkZHIJAAIBAh9sZW5kQWRkciBpcyBub3QgY29ycmVjdCBhZGRyZXNzAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQ9wcmljZU9yYWNsZUFkZHIJAAIBAiZwcmljZU9yYWNsZUFkZHIgaXMgbm90IGNvcnJlY3QgYWRkcmVzcwMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUQa2VlcGVyRXhDb250cmFjdAkAAgECJ2tlZXBlckV4Q29udHJhY3QgaXMgbm90IGNvcnJlY3QgYWRkcmVzcwMJAQEhAQkBCWlzRGVmaW5lZAEJAOwHAQkA2QQBBQtzd29wQXNzZXRJZAkAAgECI3N3b3BBc3NldElkIGlzIG5vdCBjb3JyZWN0IGFzc2V0IGlkAwkBASEBCQEJaXNEZWZpbmVkAQkA7AcBCQDZBAEFCXd4QXNzZXRJZAkAAgECI3N3b3BBc3NldElkIGlzIG5vdCBjb3JyZWN0IGFzc2V0IGlkAwkBAiE9AgkAyAEBCQDZBAEFDm9wZXJhdG9yUHViS2V5ACAJAAIBAh1vcGVyYXRvclB1YktleSBpcyBub3QgY29ycmVjdAMJAQIhPQIJAMgBAQkA2QQBBRJncm91cDFBZG1pbjFQdWJLZXkAIAkAAgECIWdyb3VwMUFkbWluMVB1YktleSBpcyBub3QgY29ycmVjdAMJAQIhPQIJAMgBAQkA2QQBBRJncm91cDFBZG1pbjJQdWJLZXkAIAkAAgECIWdyb3VwMUFkbWluMlB1YktleSBpcyBub3QgY29ycmVjdAMJAQIhPQIJAMgBAQkA2QQBBRJncm91cDJBZG1pbjFQdWJLZXkAIAkAAgECIWdyb3VwMkFkbWluMVB1YktleSBpcyBub3QgY29ycmVjdAMJAQIhPQIJAMgBAQkA2QQBBRJncm91cDJBZG1pbjJQdWJLZXkAIAkAAgECIWdyb3VwMkFkbWluMlB1YktleSBpcyBub3QgY29ycmVjdAkAzAgCCQELU3RyaW5nRW50cnkCBQlrTW9uZXlCb3gFDG1vbmV5Qm94QWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQ5rU0ZGYXJtaW5nQWRkcgUNc2ZGYXJtaW5nQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQxrTGVuZFNlcnZpY2UFCGxlbmRBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIFDGtQcmljZU9yYWNsZQUPcHJpY2VPcmFjbGVBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIFC2tFeENvbnRyYWN0BRBrZWVwZXJFeENvbnRyYWN0CQDMCAIJAQtTdHJpbmdFbnRyeQIFD2tXeFN3YXBDb250cmFjdAUOd3hTd2FwQ29udHJhY3QJAMwIAgkBC1N0cmluZ0VudHJ5AgUHa1N3b3BJZAULc3dvcEFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUFa1d4SWQFCXd4QXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCBQ9rT3BlcmF0b3JDYWxsUEsFDm9wZXJhdG9yUHViS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIFD2tHcm91cDFBZG1pbjFQSwUSZ3JvdXAxQWRtaW4xUHViS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIFD2tHcm91cDFBZG1pbjJQSwUSZ3JvdXAxQWRtaW4yUHViS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIFD2tHcm91cDJBZG1pbjFQSwUSZ3JvdXAyQWRtaW4xUHViS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIFD2tHcm91cDJBZG1pbjJQSwUSZ3JvdXAyQWRtaW4yUHViS2V5BQNuaWwBaQEQY3JlYXRlTmV3UmVxdWVzdAEGcGFyYW1zCQELdmFsdWVPckVsc2UCCQEKaXNTZWxmQ2FsbAEFAWkEDG5ld1JlcXVlc3RJZAkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUMa1JlcXVlc3RJdGVyAAAAAQkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkApAMBBQxuZXdSZXF1ZXN0SWQFCmtSZXF1ZXN0SWQFBnBhcmFtcwkAzAgCCQEMSW50ZWdlckVudHJ5AgUMa1JlcXVlc3RJdGVyBQxuZXdSZXF1ZXN0SWQFA25pbAUMbmV3UmVxdWVzdElkAWkBEXJlcGxlbmlzaEZyb21MYW5kAQlyZXF1ZXN0SWQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQppc0xhbmRDYWxsAQUBaQQNJHQwNDQyOTA0NDM5NAkBDHBhcnNlUmVxdWVzdAEFCXJlcXVlc3RJZAQEdXNlcggFDSR0MDQ0MjkwNDQzOTQCXzEEBHBvb2wIBQ0kdDA0NDI5MDQ0Mzk0Al8yBARwbXRBCAUNJHQwNDQyOTA0NDM5NAJfMwQDQUlkCAUNJHQwNDQyOTA0NDM5NAJfNAQEcG10QggFDSR0MDQ0MjkwNDQzOTQCXzUEA0JJZAgFDSR0MDQ0MjkwNDQzOTQCXzYEBGJhbEEIBQ0kdDA0NDI5MDQ0Mzk0Al83BARiYWxCCAUNJHQwNDQyOTA0NDM5NAJfOAQHc2hhcmVJZAgFDSR0MDQ0MjkwNDQzOTQCXzkEB2J3QXNzZXQIBQ0kdDA0NDI5MDQ0Mzk0A18xMAQIYndBbW91bnQIBQ0kdDA0NDI5MDQ0Mzk0A18xMQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECEldyb25nIHBheW1lbnQgc2l6ZQMDCQECIT0CCQEMYXNzZXRJZFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQdid0Fzc2V0BgkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFCGJ3QW1vdW50CQACAQINV3JvbmcgcGF5bWVudAQNJHQwNDQ1ODQ0NDY4NAMJAAACBQNBSWQFB2J3QXNzZXQJAJQKAgkAZAIFBHBtdEEFCGJ3QW1vdW50BQRwbXRCCQCUCgIFBHBtdEEJAGQCBQRwbXRCBQhid0Ftb3VudAQHcG10QWxsQQgFDSR0MDQ0NTg0NDQ2ODQCXzEEB3BtdEFsbEIIBQ0kdDA0NDU4NDQ0Njg0Al8yBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCDFVua25vd24gcG9vbAQNJHQwNDQ3NjY0NDg4MQkBD3JlcGxlbmlzaEJ5VHlwZQoFBXBUeXBlBQRwb29sBQhMT0FOX0ZFRQUHcG10QWxsQQUDQUlkBQdwbXRBbGxCBQNCSWQFBGJhbEEFBGJhbEIFB3NoYXJlSWQECnVzZXJTdGFrZWQIBQ0kdDA0NDc2NjQ0ODgxAl8xBAdheGx5RmVlCAUNJHQwNDQ3NjY0NDg4MQJfMgQGcG9zTnVtCQEYZ2V0TmV3VXNlclBvc2l0aW9uTnVtYmVyAQUEdXNlcgQNYm9ycm93RW50cmllcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUGcG9zTnVtBRFrVXNlckJvcnJvd0Ftb3VudAUIYndBbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUGcG9zTnVtBRJrVXNlckJvcnJvd0Fzc2V0SWQFB2J3QXNzZXQFA25pbAQHZW50cmllcwkBEHJlcGxlbmlzaEVudHJpZXMIBQRwb29sBQR1c2VyBQp1c2VyU3Rha2VkBQdheGx5RmVlBQZwb3NOdW0FB3NoYXJlSWQFBXBUeXBlBgQNJHQwNDUyNDE0NTM1NgkBGmNhbGNXaXRoZHJhd0xQRnJvbVBvb2xWaXJ0BAkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBQdzaGFyZUlkBQp1c2VyU3Rha2VkBAh3QW1vdW50QQgFDSR0MDQ1MjQxNDUzNTYCXzEECHdBbW91bnRCCAUNJHQwNDUyNDE0NTM1NgJfMgkAlAoCCQDNCAIJAM4IAgkAzggCBQdlbnRyaWVzCQEOZ2V0Q3Vyc0VudHJpZXMEBQNBSWQFA0JJZAUHc2hhcmVJZAkAzAgCCQCkAwEFCHdBbW91bnRBCQDMCAIJAKQDAQUId0Ftb3VudEIFA25pbAUNYm9ycm93RW50cmllcwkBC0RlbGV0ZUVudHJ5AQkArAICBQlyZXF1ZXN0SWQFCmtSZXF1ZXN0SWQFCnVzZXJTdGFrZWQBaQEJbGlxdWlkYXRlAwR1c2VyBXBvc0lkD2xpcXVpZGF0ZUFtb3VudAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBCmlzTGFuZENhbGwBBQFpBARwb29sCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwUFcG9zSWQFEWtVc2VyUG9zaXRpb25Qb29sAgtubyBwb3NpdGlvbgQFcFR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sAhJQb29sIGlzIG5vdCBpbml0ZWQEDSR0MDQ1ODc3NDU5NjcJAQtnZXRQb29sRGF0YQIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQQDQUlkCAUNJHQwNDU4Nzc0NTk2NwJfMQQDQklkCAUNJHQwNDU4Nzc0NTk2NwJfMgQEYmFsQQgFDSR0MDQ1ODc3NDU5NjcCXzMEBGJhbEIIBQ0kdDA0NTg3NzQ1OTY3Al80BAdzaGFyZUlkCAUNJHQwNDU4Nzc0NTk2NwJfNQQGYW1vdW50CQEJdW5zdGFrZUxQBAUEcG9vbAUFcFR5cGUFB3NoYXJlSWQFD2xpcXVpZGF0ZUFtb3VudAQMYm9ycm93QW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFEWtVc2VyQm9ycm93QW1vdW50BAtib3Jyb3dBc3NldAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRJrVXNlckJvcnJvd0Fzc2V0SWQED3VzZXJDYW5XaXRoZHJhdwkBGHVzZXJDYW5XaXRoZHJhd1NoYXJlQ2FsYwQFBHVzZXIFBHBvb2wFBXBvc0lkCQBmAgUMYm9ycm93QW1vdW50AAADCQBmAgUPbGlxdWlkYXRlQW1vdW50BQ91c2VyQ2FuV2l0aGRyYXcJAAIBAidZb3UgY2FuJ3QgbGlxdWlkYXRlIG1vcmUgdGhhbiB1c2VyIGhhdmUDCQAAAgUMYm9ycm93QW1vdW50AAAJAAIBAitZb3UgY2FuJ3QgbGlxdWlkYXRlIHBvc2l0aW9uIHdpdGhvdXQgYm9ycm93CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFFWtVc2VyUG9zaXRpb25JbnRlcmVzdAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRFrUG9vbEludGVyZXN0TG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbFRvdGFsTG9hbgkAZQIJARlnZXRQb29sVG90YWxTaGFyZVdpdGhMb2FuAQUEcG9vbAUPbGlxdWlkYXRlQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFCmtQb29sVG90YWwJAGUCCQERZ2V0UG9vbFRvdGFsU2hhcmUBBQRwb29sBQ9saXF1aWRhdGVBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUNa1VzZXJQb3NpdGlvbgkAZQIFD3VzZXJDYW5XaXRoZHJhdwUPbGlxdWlkYXRlQW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUGYW1vdW50CQDZBAEFB3NoYXJlSWQFA25pbAFpAQhzdG9wTG9zcwQEdXNlcgVwb3NJZARwb29sB2Fzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQ5pc09wZXJhdG9yQ2FsbAEFAWkEEHRva2VuT3JhY2xlUHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFD3ByaWNlT3JhY2xlQWRkcgkArAICBQdhc3NldElkBQ5rUHJpY2VJbk9yYWNsZQQNc3RvcExvc3NQcmljZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwkApAMBBQVwb3NJZAIBXwUEcG9vbAIBXwUHYXNzZXRJZAUNa1VzZXJTdG9wTG9zcwIITm8gZW50cnkDCQBmAgUQdG9rZW5PcmFjbGVQcmljZQUNc3RvcExvc3NQcmljZQkAAgECI1Rva2VuIHByaWNlIGdyZWF0ZXIgc3RvcCBsb3NzIHByaWNlBANyZXMJAQ53aXRoZHJhd1RvVXNlcgQFBHVzZXIFBHBvb2wJAKQDAQUFcG9zSWQGCQCUCgIJAM0IAggFA3JlcwJfMQkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfCQCkAwEFBXBvc0lkAgFfBQRwb29sAgFfBQdhc3NldElkBQ1rVXNlclN0b3BMb3NzCAUDcmVzAl8yAWkBDGNhcGl0YWxpemVFeAUEcG9vbAVyb3V0ZQl0b2tlblRvSWQQYW1vdW50VG9FeGNoYW5nZQVjbGFpbQkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBDmlzT3BlcmF0b3JDYWxsAQUBaQQFcFR5cGUJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wEBmNoYW5nZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFDmtQb29sQ2FwQ2hhbmdlAAAEDSR0MDQ3OTM3NDgwMzkJARFjbGFpbUFuZENoZWNrQW1udAUFBHBvb2wFBXBUeXBlBQVjbGFpbQUQYW1vdW50VG9FeGNoYW5nZQUGY2hhbmdlAwkAAAIFDSR0MDQ3OTM3NDgwMzkFDSR0MDQ3OTM3NDgwMzkEDGNsYWltZWRBc3NldAgFDSR0MDQ3OTM3NDgwMzkCXzIEDWNsYWltZWRBbW91bnQIBQ0kdDA0NzkzNzQ4MDM5Al8xBAVyQXJncwkAtQkCBQVyb3V0ZQICX18ED2V4Y2hhbmdlZEFtb3VudAMJAAACCQCRAwIFBXJBcmdzAAACEGRpcmVjdFN3b3BmaUNQTU0JARBkaXJlY3RTd29wZmlDUE1NAgUFckFyZ3MFCXRva2VuVG9JZAMJAAACCQCRAwIFBXJBcmdzAAACDXJvdXRpbmdTd29wZmkJARNkaXJlY3RSb3V0aW5nU3dvcGZpAgUFckFyZ3MFCXRva2VuVG9JZAkAAgECC1dyb25nIHJvdXRlAwkAAAIFD2V4Y2hhbmdlZEFtb3VudAUPZXhjaGFuZ2VkQW1vdW50BAluZXdDaGFuZ2UJAGUCCQBkAgUNY2xhaW1lZEFtb3VudAUGY2hhbmdlBRBhbW91bnRUb0V4Y2hhbmdlBAtjaGFuZ2VFbnRyeQMJAGcCBQluZXdDaGFuZ2UAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbENhcENoYW5nZQUJbmV3Q2hhbmdlBQNuaWwFA25pbAkAzggCCQEKY2FwaXRhbGl6ZQQFBHBvb2wFBXBUeXBlBQl0b2tlblRvSWQFD2V4Y2hhbmdlZEFtb3VudAULY2hhbmdlRW50cnkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY2FwaXRhbGl6ZU5vRXgDBHBvb2wFY2xhaW0RYW1vdW50RnJvbUJhbGFuY2UJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQ5pc09wZXJhdG9yQ2FsbAEFAWkEBXBUeXBlCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sBA0kdDA0ODcyMzQ4ODIxCQERY2xhaW1BbmRDaGVja0FtbnQFBQRwb29sBQVwVHlwZQUFY2xhaW0FEWFtb3VudEZyb21CYWxhbmNlAAADCQAAAgUNJHQwNDg3MjM0ODgyMQUNJHQwNDg3MjM0ODgyMQQMY2xhaW1lZEFzc2V0CAUNJHQwNDg3MjM0ODgyMQJfMgQNY2xhaW1lZEFtb3VudAgFDSR0MDQ4NzIzNDg4MjECXzEJAQpjYXBpdGFsaXplBAUEcG9vbAUFcFR5cGUJAQxhc3NldElkVG9TdHIBBQxjbGFpbWVkQXNzZXQJAGQCBQ1jbGFpbWVkQW1vdW50BRFhbW91bnRGcm9tQmFsYW5jZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtpbml0TmV3UG9vbAoEdHlwZQhwb29sVHlwZQhwb29sQWRkcgtpbkZlZU5vTG9hbglpbkZlZUxvYW4MY2FwRmVlTm9Mb2FuDmNhcEZlZVdpdGhMb2FuEXN0b3Bsb3NzRmVlTm9Mb2FuE3N0b3Bsb3NzRmVlV2l0aExvYW4JY2FuQm9ycm93CQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwMJAQIhPQIFBHR5cGUFB1NGX1BPT0wJAQIhPQIFBHR5cGUFB1dYX1BPT0wHCQACAQIKV3JvbmcgdHlwZQMDCQECIT0CBQhwb29sVHlwZQUEQ1BNTQkBAiE9AgUIcG9vbFR5cGUFBEZMQVQHCQACAQIPV3JvbmcgcG9vbCB0eXBlBA0kdDA0OTM0MjQ5NDM2CQELZ2V0UG9vbERhdGECCQEHQWRkcmVzcwEJANkEAQUIcG9vbEFkZHIFBHR5cGUEA2FJZAgFDSR0MDQ5MzQyNDk0MzYCXzEEA2JJZAgFDSR0MDQ5MzQyNDk0MzYCXzIEBGFCYWwIBQ0kdDA0OTM0MjQ5NDM2Al8zBARiQmFsCAUNJHQwNDkzNDI0OTQzNgJfNAQHc2hhcmVJZAgFDSR0MDQ5MzQyNDk0MzYCXzUDCQBmAgAABQtpbkZlZU5vTG9hbgkAAgECImluRmVlTm9Mb2FuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgAABQlpbkZlZUxvYW4JAAIBAiBpbkZlZUxvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFDGNhcEZlZU5vTG9hbgkAAgECI2NhcEZlZU5vTG9hbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwAwkAZgIAAAUOY2FwRmVlV2l0aExvYW4JAAIBAiVjYXBGZWVXaXRoTG9hbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwAwkAZgIAAAURc3RvcGxvc3NGZWVOb0xvYW4JAAIBAihzdG9wbG9zc0ZlZU5vTG9hbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwAwkAZgIAAAUTc3RvcGxvc3NGZWVXaXRoTG9hbgkAAgECKnN0b3Bsb3NzRmVlV2l0aExvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUVa0F4bHlJbkZlZVdpdGhvdXRMb2FuBQtpbkZlZU5vTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUSa0F4bHlJbkZlZVdpdGhMb2FuBQlpbkZlZUxvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFEWtBeGx5Tm9Mb2FuQ2FwRmVlBQxjYXBGZWVOb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFE2tBeGx5V2l0aExvYW5DYXBGZWUFDmNhcEZlZVdpdGhMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRZrQXhseVN0b3BMb3NzTm9Mb2FuRmVlBRFzdG9wbG9zc0ZlZU5vTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUUa0F4bHlTdG9wTG9zc0xvYW5GZWUFE3N0b3Bsb3NzRmVlV2l0aExvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFEWtQb29sSW50ZXJlc3RMb2FuAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFE2tQb29sSW50ZXJlc3ROb0xvYW4AAAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBWtQb29sBQhwb29sQWRkcgUEdHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCHBvb2xBZGRyBQlrUG9vbFR5cGUFCHBvb2xUeXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUHc2hhcmVJZAUKa1NoYXJlUG9vbAUIcG9vbEFkZHIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgUIcG9vbEFkZHIFDmtQb29sQ2FuQm9ycm93BQljYW5Cb3Jyb3cFA25pbAFpAQ51cGRhdGVQb29sRmVlcwcIcG9vbEFkZHILaW5GZWVOb0xvYW4JaW5GZWVMb2FuDGNhcEZlZU5vTG9hbg5jYXBGZWVXaXRoTG9hbhFzdG9wbG9zc0ZlZU5vTG9hbhNzdG9wbG9zc0ZlZVdpdGhMb2FuCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQhwb29sQWRkcgkAAgEJAKwCAgIaQ2FuJ3QgZmluZCBwb29sIHdpdGggYWRkciAFCHBvb2xBZGRyAwkAZgIAAAULaW5GZWVOb0xvYW4JAAIBAiJpbkZlZU5vTG9hbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwAwkAZgIAAAUJaW5GZWVMb2FuCQACAQIgaW5GZWVMb2FuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgAABQxjYXBGZWVOb0xvYW4JAAIBAiNjYXBGZWVOb0xvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFDmNhcEZlZVdpdGhMb2FuCQACAQIlY2FwRmVlV2l0aExvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFEXN0b3Bsb3NzRmVlTm9Mb2FuCQACAQIoc3RvcGxvc3NGZWVOb0xvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFE3N0b3Bsb3NzRmVlV2l0aExvYW4JAAIBAipzdG9wbG9zc0ZlZVdpdGhMb2FuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFFWtBeGx5SW5GZWVXaXRob3V0TG9hbgULaW5GZWVOb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFEmtBeGx5SW5GZWVXaXRoTG9hbgUJaW5GZWVMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRFrQXhseU5vTG9hbkNhcEZlZQUMY2FwRmVlTm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRNrQXhseVdpdGhMb2FuQ2FwRmVlBQ5jYXBGZWVXaXRoTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUWa0F4bHlTdG9wTG9zc05vTG9hbkZlZQURc3RvcGxvc3NGZWVOb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFFGtBeGx5U3RvcExvc3NMb2FuRmVlBRNzdG9wbG9zc0ZlZVdpdGhMb2FuBQNuaWwBaQEIYWN0aXZhdGUACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQdrQWN0aXZlBgkAAgECE2RBcHAgYWxyZWFkeSBhY3RpdmUJAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUGBQNuaWwBaQEIc2h1dGRvd24ACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBASEBCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFB2tBY3RpdmUGCQACAQIVZEFwcCBhbHJlYWR5IHNodXRkb3duCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBwUDbmlsAWkBEGFjdGl2YXRlRm9yVXNlcnMACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQxrQWN0aXZlVXNlcnMGCQACAQIdZEFwcCBhbHJlYWR5IGFjdGl2ZSBmb3IgdXNlcnMJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDGtBY3RpdmVVc2VycwYFA25pbAFpARBzaHV0ZG93bkZvclVzZXJzAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQEhAQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQxrQWN0aXZlVXNlcnMGCQACAQIfZEFwcCBhbHJlYWR5IHNodXRkb3duIGZvciB1c2VycwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUMa0FjdGl2ZVVzZXJzBwUDbmlsAWkBCmFjdGl2YXRlU0YACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIFB1NGX1BPT0wFC2tBY3RpdmVTRldYBgkAAgECFVNXT1BGSSBhbHJlYWR5IGFjdGl2ZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICBQdTRl9QT09MBQtrQWN0aXZlU0ZXWAYFA25pbAFpAQpzaHV0ZG93blNGAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQEhAQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIFB1NGX1BPT0wFC2tBY3RpdmVTRldYBgkAAgECF1NXT1BGSSBhbHJlYWR5IHNodXRkb3duCQDMCAIJAQxCb29sZWFuRW50cnkCCQCsAgIFB1NGX1BPT0wFC2tBY3RpdmVTRldYBwUDbmlsAWkBCmFjdGl2YXRlV1gACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIFB1dYX1BPT0wFC2tBY3RpdmVTRldYBgkAAgECEVdYIGFscmVhZHkgYWN0aXZlCQDMCAIJAQxCb29sZWFuRW50cnkCCQCsAgIFB1dYX1BPT0wFC2tBY3RpdmVTRldYBgUDbmlsAWkBCnNodXRkb3duV1gACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBASEBCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMJAKwCAgUHV1hfUE9PTAULa0FjdGl2ZVNGV1gGCQACAQITV1ggYWxyZWFkeSBzaHV0ZG93bgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICBQdXWF9QT09MBQtrQWN0aXZlU0ZXWAcFA25pbAFpAQxhY3RpdmF0ZVBvb2wBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQEBIQEJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wJAAIBAgxVbmtub3duIHBvb2wDCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMJAKwCAgUEcG9vbAULa1Bvb2xBY3RpdmUGCQACAQITUG9vbCBhbHJlYWR5IGFjdGl2ZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICBQRwb29sBQtrUG9vbEFjdGl2ZQYFA25pbAFpAQxzaHV0ZG93blBvb2wBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQEBIQEJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wJAAIBAgxVbmtub3duIHBvb2wDCQEBIQEJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkArAICBQRwb29sBQtrUG9vbEFjdGl2ZQYJAAIBAhVQb29sIGFscmVhZHkgc2h1dGRvd24JAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgUEcG9vbAULa1Bvb2xBY3RpdmUHBQNuaWwAG1VqsA==", "height": 2803901, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CUiARNrn5WceECGMy34NycbZ3AfeBxHLYWXWzM8bYR5u Next: 4M2PVDWnzvVtmNfFftF8nMZfRvKBHCoeedabQqmhBELP Diff:
OldNewDifferences
8585
8686 let P = "pool_"
8787
88-let Q = "_poolShareId"
88+let Q = "_poolType"
8989
90-let R = "_poolCapChange"
90+let R = "_poolShareId"
9191
92-let S = "last_price"
92+let S = "_poolCapChange"
9393
94-let T = "_twap5B"
94+let T = "last_price"
9595
96-let U = "active"
96+let U = "_twap5B"
9797
98-let V = "activeUsers"
98+let V = "active"
9999
100-let W = "_active"
100+let W = "activeUsers"
101101
102-let X = "_activePool"
102+let X = "_active"
103103
104-let Y = "_stopLoss"
104+let Y = "_activePool"
105105
106-let Z = "_fallbackExchangeSwopfi"
106+let Z = "_stopLoss"
107107
108-let aa = "axly_money_box"
108+let aa = "_fallbackExchangeSwopfi"
109109
110-let ab = "swopfi_farming_addr"
110+let ab = "axly_money_box"
111111
112-let ac = "lend_service_addr"
112+let ac = "swopfi_farming_addr"
113113
114-let ad = "admin_call_pub_key"
114+let ad = "lend_service_addr"
115115
116-let ae = "price_oracle"
116+let ae = "admin_call_pub_key"
117117
118-let af = "exchange_contract"
118+let af = "price_oracle"
119119
120-let ag = "wx_swap_contract"
120+let ag = "exchange_contract"
121121
122-let ah = "swop_id"
122+let ah = "wx_swap_contract"
123123
124-let ai = "wx_id"
124+let ai = "swop_id"
125125
126-let aj = "group1_admin1_pub_key"
126+let aj = "wx_id"
127127
128-let ak = "group1_admin2_pub_key"
128+let ak = "group1_admin1_pub_key"
129129
130-let al = "group2_admin1_pub_key"
130+let al = "group1_admin2_pub_key"
131131
132-let am = "group2_admin2_pub_key"
132+let am = "group2_admin1_pub_key"
133133
134-let an = Address(fromBase58String(valueOrErrorMessage(getString(this, aa), "No axly moneyBox address")))
134+let an = "group2_admin2_pub_key"
135135
136-let ao = Address(fromBase58String(valueOrErrorMessage(getString(this, af), "No exchange contract address")))
136+let ao = Address(fromBase58String(valueOrErrorMessage(getString(this, ab), "No axly moneyBox address")))
137137
138-let ap = Address(fromBase58String(valueOrErrorMessage(getString(this, ae), "No price oracle address")))
138+let ap = Address(fromBase58String(valueOrErrorMessage(getString(this, ag), "No exchange contract address")))
139139
140-let aq = Address(fromBase58String(valueOrErrorMessage(getString(this, ag), "No wx swap address")))
140+let aq = Address(fromBase58String(valueOrErrorMessage(getString(this, af), "No price oracle address")))
141141
142-let ar = fromBase58String(valueOrErrorMessage(getString(this, ah), "No swop id"))
142+let ar = Address(fromBase58String(valueOrErrorMessage(getString(this, ah), "No wx swap address")))
143143
144-let as = fromBase58String(valueOrErrorMessage(getString(this, ai), "No wx id"))
144+let as = fromBase58String(valueOrErrorMessage(getString(this, ai), "No swop id"))
145145
146-let at = fromBase58String(valueOrErrorMessage(getString(this, aj), "Can't get kGroup1Admin1PK"))
146+let at = fromBase58String(valueOrErrorMessage(getString(this, aj), "No wx id"))
147147
148-let au = fromBase58String(valueOrErrorMessage(getString(this, ak), "Can't get kGroup1Admin2PK"))
148+let au = fromBase58String(valueOrErrorMessage(getString(this, ak), "Can't get kGroup1Admin1PK"))
149149
150-let av = fromBase58String(valueOrErrorMessage(getString(this, al), "Can't get kGroup2Admin1PK"))
150+let av = fromBase58String(valueOrErrorMessage(getString(this, al), "Can't get kGroup1Admin2PK"))
151151
152152 let aw = fromBase58String(valueOrErrorMessage(getString(this, am), "Can't get kGroup2Admin1PK"))
153153
154-let ax = fromBase58String(valueOrErrorMessage(getString(this, ad), "Can't get operatorPK"))
154+let ax = fromBase58String(valueOrErrorMessage(getString(this, an), "Can't get kGroup2Admin1PK"))
155155
156-func ay () = throw("Wrong pool type")
156+let ay = fromBase58String(valueOrErrorMessage(getString(this, ae), "Can't get operatorPK"))
157+
158+func az () = throw("Wrong pool type")
157159
158160
159-func az () = Address(fromBase58String(valueOrErrorMessage(getString(this, ac), "Can't get lend service addr")))
161+func aA () = Address(fromBase58String(valueOrErrorMessage(getString(this, ad), "Can't get lend service addr")))
160162
161163
162-func aA (aB) = if ((aB.callerPublicKey == ax))
164+func aB (aC) = if ((aC.callerPublicKey == ay))
163165 then unit
164166 else throw("Only operator can call this function")
165167
166168
167-func aC (aB) = if (if ((aB.callerPublicKey == at))
169+func aD (aC) = if (if ((aC.callerPublicKey == au))
168170 then true
169- else (aB.callerPublicKey == au))
171+ else (aC.callerPublicKey == av))
170172 then unit
171173 else throw("Only admin group1 can call this function")
172174
173175
174-func aD (aB) = if ((aB.caller == this))
176+func aE (aC) = if ((aC.caller == this))
175177 then unit
176178 else throw("Only contract itself can call this function")
177179
178180
179-func aE (aB) = if ((aB.caller == az()))
181+func aF (aC) = if ((aC.caller == aA()))
180182 then unit
181183 else throw("Only land contract can call this function")
182184
183185
184-func aF () = if ((valueOrElse(getBoolean(this, U), true) == true))
186+func aG () = if ((valueOrElse(getBoolean(this, V), true) == true))
185187 then unit
186188 else throw("DApp is inactive at this moment")
187189
188190
189-func aG () = if (if (valueOrElse(getBoolean(this, U), true))
190- then (valueOrElse(getBoolean(this, V), true) == true)
191+func aH () = if (if (valueOrElse(getBoolean(this, V), true))
192+ then (valueOrElse(getBoolean(this, W), true) == true)
191193 else false)
192194 then unit
193195 else throw("DApp is inactive for users at this moment")
194196
195197
196-func aH (aI,aJ) = {
197- let aK = valueOrElse(getBoolean(this, (aJ + W)), true)
198- let aL = valueOrElse(getBoolean(this, (aI + X)), true)
199- if (if (aK)
200- then aL
198+func aI (aJ,aK) = {
199+ let aL = valueOrElse(getBoolean(this, (aK + X)), true)
200+ let aM = valueOrElse(getBoolean(this, (aJ + Y)), true)
201+ if (if (aL)
202+ then aM
201203 else false)
202204 then true
203205 else false
204206 }
205207
206208
207-func aM (aN) = {
208- let aO = aN
209- if ($isInstanceOf(aO, "ByteVector"))
209+func aN (aO) = {
210+ let aP = aO
211+ if ($isInstanceOf(aP, "ByteVector"))
210212 then {
211- let aP = aO
212- assetBalance(this, aP)
213+ let aQ = aP
214+ assetBalance(this, aQ)
213215 }
214- else if ($isInstanceOf(aO, "Unit"))
216+ else if ($isInstanceOf(aP, "Unit"))
215217 then {
216- let aQ = aO
218+ let aR = aP
217219 wavesBalance(this).available
218220 }
219221 else throw("Match error")
220222 }
221223
222224
223-func aR (aS) = $Tuple2(valueOrErrorMessage(getInteger(aS, p), "Can't get pool A asset balance"), valueOrErrorMessage(getInteger(aS, q), "Can't get pool B asset balance"))
225+func aS (aT) = $Tuple2(valueOrErrorMessage(getInteger(aT, p), "Can't get pool A asset balance"), valueOrErrorMessage(getInteger(aT, q), "Can't get pool B asset balance"))
224226
225227
226-func aT (aS,aU,aV) = $Tuple2({
227- let aW = invoke(aS, "getAccBalanceWrapperREADONLY", [aU], nil)
228- if ($isInstanceOf(aW, "Int"))
229- then aW
230- else throw(($getType(aW) + " couldn't be cast to Int"))
228+func aU (aT,aV,aW) = $Tuple2({
229+ let aX = invoke(aT, "getAccBalanceWrapperREADONLY", [aV], nil)
230+ if ($isInstanceOf(aX, "Int"))
231+ then aX
232+ else throw(($getType(aX) + " couldn't be cast to Int"))
231233 }, {
232- let aW = invoke(aS, "getAccBalanceWrapperREADONLY", [aV], nil)
233- if ($isInstanceOf(aW, "Int"))
234- then aW
235- else throw(($getType(aW) + " couldn't be cast to Int"))
234+ let aX = invoke(aT, "getAccBalanceWrapperREADONLY", [aW], nil)
235+ if ($isInstanceOf(aX, "Int"))
236+ then aX
237+ else throw(($getType(aX) + " couldn't be cast to Int"))
236238 })
237239
238240
239-func aX (aS,aJ,aU,aV) = if ((aJ == a))
240- then aR(aS)
241- else if ((aJ == b))
242- then aT(aS, aU, aV)
243- else ay()
241+func aY (aT,aK,aV,aW) = if ((aK == a))
242+ then aS(aT)
243+ else if ((aK == b))
244+ then aU(aT, aV, aW)
245+ else az()
244246
245247
246-func aY (aS) = {
247- let aZ = aR(aS)
248- if ((aZ == aZ))
248+func aZ (aT) = {
249+ let ba = aS(aT)
250+ if ((ba == ba))
249251 then {
250- let ba = aZ._2
251- let bb = aZ._1
252- $Tuple5(valueOrErrorMessage(getString(aS, r), "Can't get pool A asset id"), valueOrErrorMessage(getString(aS, s), "Can't get pool B asset id"), bb, ba, valueOrErrorMessage(getString(aS, t), "Can't get share asset id"))
252+ let bb = ba._2
253+ let bc = ba._1
254+ $Tuple5(valueOrErrorMessage(getString(aT, r), "Can't get pool A asset id"), valueOrErrorMessage(getString(aT, s), "Can't get pool B asset id"), bc, bb, valueOrErrorMessage(getString(aT, t), "Can't get share asset id"))
253255 }
254256 else throw("Strict value is not equal to itself.")
255257 }
256258
257259
258-func bc (aS) = {
259- let bd = {
260- let aW = invoke(aS, "getPoolConfigWrapperREADONLY", nil, nil)
261- if ($isInstanceOf(aW, "List[Any]"))
262- then aW
263- else throw(($getType(aW) + " couldn't be cast to List[Any]"))
260+func bd (aT) = {
261+ let be = {
262+ let aX = invoke(aT, "getPoolConfigWrapperREADONLY", nil, nil)
263+ if ($isInstanceOf(aX, "List[Any]"))
264+ then aX
265+ else throw(($getType(aX) + " couldn't be cast to List[Any]"))
264266 }
265- if ((bd == bd))
267+ if ((be == be))
266268 then {
267- let aU = valueOrErrorMessage({
268- let aW = bd[4]
269- if ($isInstanceOf(aW, "String"))
270- then aW
269+ let aV = valueOrErrorMessage({
270+ let aX = be[4]
271+ if ($isInstanceOf(aX, "String"))
272+ then aX
271273 else unit
272274 }, "Can't get pool A asset id")
273- let aV = valueOrErrorMessage({
274- let aW = bd[5]
275- if ($isInstanceOf(aW, "String"))
276- then aW
275+ let aW = valueOrErrorMessage({
276+ let aX = be[5]
277+ if ($isInstanceOf(aX, "String"))
278+ then aX
277279 else unit
278280 }, "Can't get pool B asset id")
279- let be = valueOrErrorMessage({
280- let aW = bd[3]
281- if ($isInstanceOf(aW, "String"))
282- then aW
281+ let bf = valueOrErrorMessage({
282+ let aX = be[3]
283+ if ($isInstanceOf(aX, "String"))
284+ then aX
283285 else unit
284286 }, "Can't get pool LP asset id")
285- let bf = aT(aS, aU, aV)
286- if ((bf == bf))
287+ let bg = aU(aT, aV, aW)
288+ if ((bg == bg))
287289 then {
288- let ba = bf._2
289- let bb = bf._1
290- $Tuple5(aU, aV, bb, ba, be)
290+ let bb = bg._2
291+ let bc = bg._1
292+ $Tuple5(aV, aW, bc, bb, bf)
291293 }
292294 else throw("Strict value is not equal to itself.")
293295 }
295297 }
296298
297299
298-func bg (aS,aJ) = if ((aJ == a))
299- then aY(aS)
300- else if ((aJ == b))
301- then bc(aS)
302- else ay()
300+func bh (aT,aK) = if ((aK == a))
301+ then aZ(aT)
302+ else if ((aK == b))
303+ then bd(aT)
304+ else az()
303305
304306
305-func bh (aS,aJ,be) = if ((aJ == a))
306- then valueOrErrorMessage(getInteger(aS, u), "Can't get share asset supply")
307- else if ((aJ == b))
308- then valueOrErrorMessage(assetInfo(fromBase58String(be)), "Wrong ShareId").quantity
309- else ay()
307+func bi (aT,aK,bf) = if ((aK == a))
308+ then valueOrErrorMessage(getInteger(aT, u), "Can't get share asset supply")
309+ else if ((aK == b))
310+ then valueOrErrorMessage(assetInfo(fromBase58String(bf)), "Wrong ShareId").quantity
311+ else az()
310312
311313
312-func bi (aI) = valueOrElse(getInteger(this, (aI + C)), 0)
314+func bj (aJ) = valueOrElse(getInteger(this, (aJ + C)), 0)
313315
314316
315-func bj (aI) = valueOrElse(getInteger(this, (aI + D)), 0)
317+func bk (aJ) = valueOrElse(getInteger(this, (aJ + D)), 0)
316318
317319
318-func bk (bl) = (valueOrElse(getInteger(this, (bl + A)), 0) + 1)
320+func bl (bm) = (valueOrElse(getInteger(this, (bm + A)), 0) + 1)
319321
320322
321-func bm (aI,bn) = if ((bn == f))
322- then getIntegerValue(this, (aI + K))
323- else if ((bn == e))
324- then getIntegerValue(this, (aI + J))
325- else if ((bn == i))
326- then getIntegerValue(this, (aI + I))
327- else if ((bn == j))
328- then getIntegerValue(this, (aI + H))
329- else if ((bn == k))
323+func bn (aJ,bo) = if ((bo == f))
324+ then getIntegerValue(this, (aJ + K))
325+ else if ((bo == e))
326+ then getIntegerValue(this, (aJ + J))
327+ else if ((bo == i))
328+ then getIntegerValue(this, (aJ + I))
329+ else if ((bo == j))
330+ then getIntegerValue(this, (aJ + H))
331+ else if ((bo == k))
330332 then 0
331333 else throw("Wrong fee type")
332334
333335
334-func bo () = Address(fromBase58String(valueOrErrorMessage(getString(this, ab), "Can't get swopfi farming addr")))
336+func bp () = Address(fromBase58String(valueOrErrorMessage(getString(this, ac), "Can't get swopfi farming addr")))
335337
336338
337-func bp (aS) = {
338- let bq = Address(fromBase58String(valueOrErrorMessage(getString(aS, "%s__factoryContract"), "Can't get WX factory contract addr")))
339- let br = split(valueOrErrorMessage(getString(bq, "%s__factoryConfig"), "Can't get WX factory cfg"), "__")
340- Address(fromBase58String(br[1]))
339+func bq (aT) = {
340+ let br = Address(fromBase58String(valueOrErrorMessage(getString(aT, "%s__factoryContract"), "Can't get WX factory contract addr")))
341+ let bs = split(valueOrErrorMessage(getString(br, "%s__factoryConfig"), "Can't get WX factory cfg"), "__")
342+ Address(fromBase58String(bs[1]))
341343 }
342344
343345
344-func bs (aN) = {
345- let aO = aN
346- if ($isInstanceOf(aO, "ByteVector"))
346+func bt (aO) = {
347+ let aP = aO
348+ if ($isInstanceOf(aP, "ByteVector"))
347349 then {
348- let aP = aO
349- toBase58String(aP)
350+ let aQ = aP
351+ toBase58String(aQ)
350352 }
351- else if ($isInstanceOf(aO, "Unit"))
353+ else if ($isInstanceOf(aP, "Unit"))
352354 then {
353- let aQ = aO
355+ let aR = aP
354356 "WAVES"
355357 }
356358 else throw("Not Asset id")
357359 }
358360
359361
360-func bt (aN) = if ((aN == "WAVES"))
362+func bu (aO) = if ((aO == "WAVES"))
361363 then unit
362- else fromBase58String(aN)
364+ else fromBase58String(aO)
363365
364366
365-func bu (aN) = if ((aN == "WAVES"))
367+func bv (aO) = if ((aO == "WAVES"))
366368 then 8
367369 else {
368- let aO = assetInfo(fromBase58String(aN))
369- if ($isInstanceOf(aO, "Asset"))
370+ let aP = assetInfo(fromBase58String(aO))
371+ if ($isInstanceOf(aP, "Asset"))
370372 then {
371- let bv = aO
372- bv.decimals
373+ let bw = aP
374+ bw.decimals
373375 }
374376 else throw("Can't find asset")
375377 }
376378
377379
378-func bw (aN) = pow(10, 0, bu(aN), 0, 0, DOWN)
380+func bx (aO) = pow(10, 0, bv(aO), 0, 0, DOWN)
379381
380382
381-func bx (by) = {
382- func bz (bA,aN) = {
383- let bB = valueOrElse(getInteger(ap, (aN + T)), -1)
384- (bA :+ bB)
383+func by (bz) = {
384+ func bA (bB,aO) = {
385+ let bC = valueOrElse(getInteger(aq, (aO + U)), -1)
386+ (bB :+ bC)
385387 }
386388
387- let bC = by
388- let bD = size(bC)
389- let bE = nil
390- func bF (bG,bH) = if ((bH >= bD))
391- then bG
392- else bz(bG, bC[bH])
389+ let bD = bz
390+ let bE = size(bD)
391+ let bF = nil
392+ func bG (bH,bI) = if ((bI >= bE))
393+ then bH
394+ else bA(bH, bD[bI])
393395
394- func bI (bG,bH) = if ((bH >= bD))
395- then bG
396+ func bJ (bH,bI) = if ((bI >= bE))
397+ then bH
396398 else throw("List size exceeds 50")
397399
398- bI(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bE, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
400+ bJ(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bF, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
399401 }
400402
401403
402-func bJ (be) = {
403- let aI = valueOrErrorMessage(getString(this, (be + Q)), "Can't find pool addr by share id")
404- let aS = Address(fromBase58String(aI))
405- let bK = valueOrErrorMessage(getString(this, (P + aI)), "Pool is not inited")
406- let bL = bg(aS, bK)
407- let aU = bL._1
408- let aV = bL._2
409- let bM = bL._3
410- let bN = bL._4
411- let bO = bx([aU, aV])
412- let bP = bO[0]
413- let bQ = bO[1]
414- if (if ((0 > bP))
404+func bK (bf) = {
405+ let aJ = valueOrErrorMessage(getString(this, (bf + R)), "Can't find pool addr by share id")
406+ let aT = Address(fromBase58String(aJ))
407+ let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Pool is not inited")
408+ let bM = bh(aT, bL)
409+ let aV = bM._1
410+ let aW = bM._2
411+ let bN = bM._3
412+ let bO = bM._4
413+ let bP = by([aV, aW])
414+ let bQ = bP[0]
415+ let bR = bP[1]
416+ if (if ((0 > bQ))
415417 then true
416- else (0 > bQ))
418+ else (0 > bR))
417419 then -1
418420 else {
419- let bR = bh(aS, bK, be)
420- let bS = pow(10, 0, bu(aU), 0, 0, DOWN)
421- let bT = pow(10, 0, bu(aV), 0, 0, DOWN)
422- let bU = pow(10, 0, bu(be), 0, 0, DOWN)
423- let bV = (fraction(bM, bP, bS) + fraction(bN, bQ, bT))
424- fraction(bV, bU, bR)
421+ let bS = bi(aT, bL, bf)
422+ let bT = pow(10, 0, bv(aV), 0, 0, DOWN)
423+ let bU = pow(10, 0, bv(aW), 0, 0, DOWN)
424+ let bV = pow(10, 0, bv(bf), 0, 0, DOWN)
425+ let bW = (fraction(bN, bQ, bT) + fraction(bO, bR, bU))
426+ fraction(bW, bV, bS)
425427 }
426428 }
427429
428430
429-func bW (bX) = {
430- func bz (bA,be) = (bA :+ bJ(be))
431+func bX (bY) = {
432+ func bA (bB,bf) = (bB :+ bK(bf))
431433
432- let bC = bX
433- let bD = size(bC)
434- let bE = nil
435- func bF (bG,bH) = if ((bH >= bD))
436- then bG
437- else bz(bG, bC[bH])
434+ let bD = bY
435+ let bE = size(bD)
436+ let bF = nil
437+ func bG (bH,bI) = if ((bI >= bE))
438+ then bH
439+ else bA(bH, bD[bI])
438440
439- func bI (bG,bH) = if ((bH >= bD))
440- then bG
441+ func bJ (bH,bI) = if ((bI >= bE))
442+ then bH
441443 else throw("List size exceeds 20")
442444
443- bI(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bE, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
445+ bJ(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bF, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
444446 }
445447
446448
447-func bY (aU,aV,be,bZ) = {
448- let ca = bx([aU, aV])
449- let cb = bJ(be)
450- let bO = ([toString(ca[0]), toString(ca[1]), toString(cb)] ++ bZ)
451-[StringEntry(S, makeString(bO, ","))]
449+func bZ (aV,aW,bf,ca) = {
450+ let cb = by([aV, aW])
451+ let cc = bK(bf)
452+ let bP = ([toString(cb[0]), toString(cb[1]), toString(cc)] ++ ca)
453+[StringEntry(T, makeString(bP, ","))]
452454 }
453455
454456
455-func cc (bK,aS,cd,aU,ce,aV,bb,ba) = if ((bK == a))
457+func cd (bL,aT,ce,aV,cf,aW,bc,bb) = if ((bL == a))
456458 then {
457- let cf = {
458- let aW = invoke(aS, "callFunction", ["calcLPReplenishTwoTokensREADONLY", [toString(cd), toString(ce)]], nil)
459- if ($isInstanceOf(aW, "List[Any]"))
460- then aW
461- else throw(($getType(aW) + " couldn't be cast to List[Any]"))
459+ let cg = {
460+ let aX = invoke(aT, "callFunction", ["calcLPReplenishTwoTokensREADONLY", [toString(ce), toString(cf)]], nil)
461+ if ($isInstanceOf(aX, "List[Any]"))
462+ then aX
463+ else throw(($getType(aX) + " couldn't be cast to List[Any]"))
462464 }
463- if ((cf == cf))
465+ if ((cg == cg))
464466 then $Tuple5({
465- let aW = cf[3]
466- if ($isInstanceOf(aW, "Int"))
467- then aW
468- else throw(($getType(aW) + " couldn't be cast to Int"))
467+ let aX = cg[3]
468+ if ($isInstanceOf(aX, "Int"))
469+ then aX
470+ else throw(($getType(aX) + " couldn't be cast to Int"))
469471 }, {
470- let aW = cf[4]
471- if ($isInstanceOf(aW, "Int"))
472- then aW
473- else throw(($getType(aW) + " couldn't be cast to Int"))
472+ let aX = cg[4]
473+ if ($isInstanceOf(aX, "Int"))
474+ then aX
475+ else throw(($getType(aX) + " couldn't be cast to Int"))
474476 }, {
475- let aW = cf[1]
476- if ($isInstanceOf(aW, "Int"))
477- then aW
478- else throw(($getType(aW) + " couldn't be cast to Int"))
479- }, bs(cf[2]), {
480- let aW = cf[0]
481- if ($isInstanceOf(aW, "Int"))
482- then aW
483- else throw(($getType(aW) + " couldn't be cast to Int"))
477+ let aX = cg[1]
478+ if ($isInstanceOf(aX, "Int"))
479+ then aX
480+ else throw(($getType(aX) + " couldn't be cast to Int"))
481+ }, bt(cg[2]), {
482+ let aX = cg[0]
483+ if ($isInstanceOf(aX, "Int"))
484+ then aX
485+ else throw(($getType(aX) + " couldn't be cast to Int"))
484486 })
485487 else throw("Strict value is not equal to itself.")
486488 }
487- else if ((bK == b))
489+ else if ((bL == b))
488490 then {
489- let cg = $Tuple2(split({
490- let aW = invoke(aS, "evaluatePutByAmountAssetREADONLY", [cd], nil)
491- if ($isInstanceOf(aW, "String"))
492- then aW
493- else throw(($getType(aW) + " couldn't be cast to String"))
491+ let ch = $Tuple2(split({
492+ let aX = invoke(aT, "evaluatePutByAmountAssetREADONLY", [ce], nil)
493+ if ($isInstanceOf(aX, "String"))
494+ then aX
495+ else throw(($getType(aX) + " couldn't be cast to String"))
494496 }, "__"), split({
495- let aW = invoke(aS, "evaluatePutByPriceAssetREADONLY", [ce], nil)
496- if ($isInstanceOf(aW, "String"))
497- then aW
498- else throw(($getType(aW) + " couldn't be cast to String"))
497+ let aX = invoke(aT, "evaluatePutByPriceAssetREADONLY", [cf], nil)
498+ if ($isInstanceOf(aX, "String"))
499+ then aX
500+ else throw(($getType(aX) + " couldn't be cast to String"))
499501 }, "__"))
500- if ((cg == cg))
502+ if ((ch == ch))
501503 then {
502- let ch = cg._2
503- let ci = cg._1
504- let cj = parseIntValue(ci[1])
505- let ck = parseIntValue(ch[1])
506- if ((ck > cj))
504+ let ci = ch._2
505+ let cj = ch._1
506+ let ck = parseIntValue(cj[1])
507+ let cl = parseIntValue(ci[1])
508+ if ((cl > ck))
507509 then {
508- let cl = parseIntValue(ci[8])
509- $Tuple5(cd, cl, (ce - cl), aV, ck)
510+ let cm = parseIntValue(cj[8])
511+ $Tuple5(ce, cm, (cf - cm), aW, cl)
510512 }
511513 else {
512- let cl = parseIntValue(ch[7])
513- $Tuple5(cl, ce, (cd - cl), aU, cj)
514+ let cm = parseIntValue(ci[7])
515+ $Tuple5(cm, cf, (ce - cm), aV, ck)
514516 }
515517 }
516518 else throw("Strict value is not equal to itself.")
517519 }
518- else ay()
520+ else az()
519521
520522
521-func cm (aS,bK,cd,aU,ce,aV) = {
522- let cn = [AttachedPayment(bt(aU), cd), AttachedPayment(bt(aV), ce)]
523- if ((bK == a))
524- then invoke(aS, "callFunction", ["replenishWithTwoTokens", ["false", "0"]], cn)
525- else if ((bK == b))
526- then invoke(aS, "put", [1000000, false], cn)
527- else ay()
523+func cn (aT,bL,ce,aV,cf,aW) = {
524+ let co = [AttachedPayment(bu(aV), ce), AttachedPayment(bu(aW), cf)]
525+ if ((bL == a))
526+ then invoke(aT, "callFunction", ["replenishWithTwoTokens", ["false", "0"]], co)
527+ else if ((bL == b))
528+ then invoke(aT, "put", [1000000, false], co)
529+ else az()
528530 }
529531
530532
531-func co (aS,bK,cl,cp) = {
532- let cn = [AttachedPayment(bt(cp), cl)]
533- if ((bK == a))
534- then invoke(aS, "callFunction", ["replenishWithOneToken", ["0", "false", "0"]], cn)
535- else if ((bK == b))
536- then invoke(aS, "putOneTkn", [0, false], cn)
537- else ay()
533+func cp (aT,bL,cm,cq) = {
534+ let co = [AttachedPayment(bu(cq), cm)]
535+ if ((bL == a))
536+ then invoke(aT, "callFunction", ["replenishWithOneToken", ["0", "false", "0"]], co)
537+ else if ((bL == b))
538+ then {
539+ let cr = if ((valueOrElse(getString(this, (toString(aT) + Q)), "cpmm") == d))
540+ then "putOneTknV2"
541+ else "putOneTkn"
542+ invoke(aT, cr, [0, false], co)
543+ }
544+ else az()
538545 }
539546
540547
541-func cq (aI,bK,be,cr) = {
542- let cn = [AttachedPayment(fromBase58String(be), cr)]
543- if ((bK == a))
544- then invoke(bo(), "lockShareTokens", [aI, 0], cn)
545- else if ((bK == b))
546- then invoke(bp(addressFromStringValue(aI)), "stake", nil, cn)
547- else ay()
548+func cs (aJ,bL,bf,ct) = {
549+ let co = [AttachedPayment(fromBase58String(bf), ct)]
550+ if ((bL == a))
551+ then invoke(bp(), "lockShareTokens", [aJ, 0], co)
552+ else if ((bL == b))
553+ then invoke(bq(addressFromStringValue(aJ)), "stake", nil, co)
554+ else az()
548555 }
549556
550557
551-func cs (aI,bK,be,cr) = {
552- let ct = if ((bK == a))
553- then $Tuple3(bo(), "withdrawShareTokens", [aI, cr])
554- else if ((bK == b))
555- then $Tuple3(bp(Address(fromBase58String(aI))), "unstake", [be, cr])
556- else ay()
557- let cu = ct._1
558- let cv = ct._2
559- let cw = ct._3
560- let cx = invoke(cu, cv, cw, nil)
561- if ((cx == cx))
562- then cr
558+func cu (aJ,bL,bf,ct) = {
559+ let cv = if ((bL == a))
560+ then $Tuple3(bp(), "withdrawShareTokens", [aJ, ct])
561+ else if ((bL == b))
562+ then $Tuple3(bq(Address(fromBase58String(aJ))), "unstake", [bf, ct])
563+ else az()
564+ let cw = cv._1
565+ let cx = cv._2
566+ let cy = cv._3
567+ let cz = invoke(cw, cx, cy, nil)
568+ if ((cz == cz))
569+ then ct
563570 else throw("Strict value is not equal to itself.")
564571 }
565572
566573
567-func cy (aI,cz,cA,bb,ba,cB,cC) = {
568- let aS = Address(fromBase58String(aI))
569- let cD = 1000000
570- let cE = getIntegerValue(aS, v)
571- let cF = fraction(cB, cD, (cD - cE), CEILING)
572- let cG = if ((cC == cz))
574+func cA (aJ,cB,cC,bc,bb,cD,cE) = {
575+ let aT = Address(fromBase58String(aJ))
576+ let cF = 1000000
577+ let cG = getIntegerValue(aT, v)
578+ let cH = fraction(cD, cF, (cF - cG), CEILING)
579+ let cI = if ((cE == cB))
573580 then {
574- let cH = fraction(cF, ba, (bb - cF), CEILING)
575- $Tuple2(cH, cA)
581+ let cJ = fraction(cH, bb, (bc - cH), CEILING)
582+ $Tuple2(cJ, cC)
576583 }
577584 else {
578- let cH = fraction(cF, bb, (ba - cF), CEILING)
579- $Tuple2(cH, cz)
585+ let cJ = fraction(cH, bc, (bb - cH), CEILING)
586+ $Tuple2(cJ, cB)
580587 }
581- let cH = cG._1
582- let cI = cG._2
583- $Tuple2(cI, cH)
588+ let cJ = cI._1
589+ let cK = cI._2
590+ $Tuple2(cK, cJ)
584591 }
585592
586593
587-func cJ (aI) = {
588- let aS = addressFromStringValue(aI)
589- let bq = addressFromStringValue(valueOrErrorMessage(getString(aS, "%s__factoryContract"), "Can't get WX factory contract addr"))
590- let cK = value(getInteger(aq, "%s__poolFee"))
591- let cL = value(getInteger(aq, "%s__protocolFee"))
592- let aO = invoke(bq, "getSwapFeeREADONLY", [toString(aS)], nil)
593- if ($isInstanceOf(aO, "(Int, Int)"))
594+func cL (aJ) = {
595+ let aT = addressFromStringValue(aJ)
596+ let br = addressFromStringValue(valueOrErrorMessage(getString(aT, "%s__factoryContract"), "Can't get WX factory contract addr"))
597+ let cM = value(getInteger(ar, "%s__poolFee"))
598+ let cN = value(getInteger(ar, "%s__protocolFee"))
599+ let aP = invoke(br, "getSwapFeeREADONLY", [toString(aT)], nil)
600+ if ($isInstanceOf(aP, "(Int, Int)"))
594601 then {
595- let cM = aO
596- $Tuple2(cM._1, cM._2)
602+ let cO = aP
603+ $Tuple2(cO._1, cO._2)
597604 }
598- else $Tuple2(cK, cL)
605+ else $Tuple2(cM, cN)
599606 }
600607
601608
602-func cN (aI,cz,cA,bb,ba,cB,cC) = {
603- let cO = cJ(aI)
604- let cP = cO._1
605- let cQ = cO._2
606- let cR = toBigInt(100000000)
607- let cS = if ((cC == cz))
609+func cP (aJ,cB,cC,bc,bb,cD,cE) = {
610+ let cQ = cL(aJ)
611+ let cR = cQ._1
612+ let cS = cQ._2
613+ let cT = toBigInt(100000000)
614+ let cU = if ((cE == cB))
608615 then {
609- let cH = fraction(cB, ba, (bb - cB))
610- $Tuple2(cH, cA)
616+ let cJ = fraction(cD, bb, (bc - cD))
617+ $Tuple2(cJ, cC)
611618 }
612619 else {
613- let cH = fraction(cB, bb, (ba - cB))
614- $Tuple2(cH, cz)
620+ let cJ = fraction(cD, bc, (bb - cD))
621+ $Tuple2(cJ, cB)
615622 }
616- let cH = cS._1
617- let cI = cS._2
618- let cT = toInt(fraction(toBigInt(cH), cR, (cR - toBigInt((cQ + cP))), CEILING))
619- $Tuple2(cI, cT)
623+ let cJ = cU._1
624+ let cK = cU._2
625+ let cV = toInt(fraction(toBigInt(cJ), cT, (cT - toBigInt((cS + cR))), CEILING))
626+ $Tuple2(cK, cV)
620627 }
621628
622629
623-func cU (bK,aI,cz,cA,bb,ba,cB,cC) = {
624- let cV = valueOrElse(getString(this, (aI + Z)), "")
625- if (if ((bK == a))
630+func cW (bL,aJ,cB,cC,bc,bb,cD,cE) = {
631+ let cX = valueOrElse(getString(this, (aJ + aa)), "")
632+ if (if ((bL == a))
626633 then true
627- else (cV != ""))
634+ else (cX != ""))
628635 then {
629- let cW = if ((cV == ""))
630- then $Tuple3(bb, ba, aI)
636+ let cY = if ((cX == ""))
637+ then $Tuple3(bc, bb, aJ)
631638 else {
632- let cX = aR(addressFromStringValue(cV))
633- let cY = cX._1
634- let cZ = cX._2
635- $Tuple3(cY, cZ, cV)
639+ let cZ = aS(addressFromStringValue(cX))
640+ let da = cZ._1
641+ let db = cZ._2
642+ $Tuple3(da, db, cX)
636643 }
637- let da = cW._1
638- let db = cW._2
639- let dc = cW._3
640- let dd = cy(dc, cz, cA, da, db, cB, cC)
641- let cI = dd._1
642- let cH = dd._2
643- invoke(addressFromStringValue(dc), "callFunction", ["exchange", [toString(cB)]], [AttachedPayment(bt(cI), cH)])
644+ let dc = cY._1
645+ let dd = cY._2
646+ let de = cY._3
647+ let df = cA(de, cB, cC, dc, dd, cD, cE)
648+ let cK = df._1
649+ let cJ = df._2
650+ invoke(addressFromStringValue(de), "callFunction", ["exchange", [toString(cD)]], [AttachedPayment(bu(cK), cJ)])
644651 }
645- else if ((bK == b))
652+ else if ((bL == b))
646653 then {
647- let de = cN(aI, cz, cA, bb, ba, cB, cC)
648- let cI = de._1
649- let cH = de._2
650- invoke(aq, "swap", [cB, cC, toString(this)], [AttachedPayment(bt(cI), cH)])
654+ let dg = cP(aJ, cB, cC, bc, bb, cD, cE)
655+ let cK = dg._1
656+ let cJ = dg._2
657+ invoke(ar, "swap", [cD, cE, toString(this)], [AttachedPayment(bu(cK), cJ)])
651658 }
652- else ay()
659+ else az()
653660 }
654661
655662
656-func df (aS,bK,be,dg) = {
657- let dh = if ((bK == a))
663+func dh (aT,bL,bf,di) = {
664+ let dj = if ((bL == a))
658665 then {
659- let cx = {
660- let aW = invoke(aS, "callFunction", ["withdrawREADONLY", [toString(dg)]], nil)
661- if ($isInstanceOf(aW, "List[Any]"))
662- then aW
663- else throw(($getType(aW) + " couldn't be cast to List[Any]"))
666+ let cz = {
667+ let aX = invoke(aT, "callFunction", ["withdrawREADONLY", [toString(di)]], nil)
668+ if ($isInstanceOf(aX, "List[Any]"))
669+ then aX
670+ else throw(($getType(aX) + " couldn't be cast to List[Any]"))
664671 }
665- if ((cx == cx))
672+ if ((cz == cz))
666673 then $Tuple2({
667- let aW = cx[0]
668- if ($isInstanceOf(aW, "Int"))
669- then aW
670- else throw(($getType(aW) + " couldn't be cast to Int"))
674+ let aX = cz[0]
675+ if ($isInstanceOf(aX, "Int"))
676+ then aX
677+ else throw(($getType(aX) + " couldn't be cast to Int"))
671678 }, {
672- let aW = cx[1]
673- if ($isInstanceOf(aW, "Int"))
674- then aW
675- else throw(($getType(aW) + " couldn't be cast to Int"))
679+ let aX = cz[1]
680+ if ($isInstanceOf(aX, "Int"))
681+ then aX
682+ else throw(($getType(aX) + " couldn't be cast to Int"))
676683 })
677684 else throw("Strict value is not equal to itself.")
678685 }
679- else if ((bK == b))
686+ else if ((bL == b))
680687 then {
681- let cx = split({
682- let aW = invoke(aS, "evaluateGetREADONLY", [be, dg], nil)
683- if ($isInstanceOf(aW, "String"))
684- then aW
685- else throw(($getType(aW) + " couldn't be cast to String"))
688+ let cz = split({
689+ let aX = invoke(aT, "evaluateGetREADONLY", [bf, di], nil)
690+ if ($isInstanceOf(aX, "String"))
691+ then aX
692+ else throw(($getType(aX) + " couldn't be cast to String"))
686693 }, "__")
687- if ((cx == cx))
688- then $Tuple2(parseIntValue(cx[1]), parseIntValue(cx[2]))
694+ if ((cz == cz))
695+ then $Tuple2(parseIntValue(cz[1]), parseIntValue(cz[2]))
689696 else throw("Strict value is not equal to itself.")
690697 }
691- else ay()
692- let di = dh._1
693- let dj = dh._2
694- $Tuple2(di, dj)
698+ else az()
699+ let dk = dj._1
700+ let dl = dj._2
701+ $Tuple2(dk, dl)
695702 }
696703
697704
698-func dk (bK,aI) = if ((bK == a))
705+func dm (bL,aJ) = if ((bL == a))
699706 then {
700- let dl = aM(ar)
701- if ((dl == dl))
707+ let dn = aN(as)
708+ if ((dn == dn))
702709 then {
703- let cx = invoke(bo(), "claim", [aI], nil)
704- if ((cx == cx))
710+ let cz = invoke(bp(), "claim", [aJ], nil)
711+ if ((cz == cz))
705712 then {
706- let dm = aM(ar)
707- $Tuple2((dm - dl), ar)
713+ let do = aN(as)
714+ $Tuple2((do - dn), as)
708715 }
709716 else throw("Strict value is not equal to itself.")
710717 }
711718 else throw("Strict value is not equal to itself.")
712719 }
713- else if ((bK == b))
720+ else if ((bL == b))
714721 then {
715- let dn = bc(addressFromStringValue(aI))
716- let aU = dn._1
717- let aV = dn._2
718- let do = dn._3
719- let dp = dn._4
720- let dq = dn._5
721- let dl = aM(as)
722- if ((dl == dl))
722+ let dp = bd(addressFromStringValue(aJ))
723+ let aV = dp._1
724+ let aW = dp._2
725+ let dq = dp._3
726+ let dr = dp._4
727+ let ds = dp._5
728+ let dn = aN(at)
729+ if ((dn == dn))
723730 then {
724- let cx = invoke(bp(addressFromStringValue(aI)), "claimWx", [dq], nil)
725- if ((cx == cx))
731+ let cz = invoke(bq(addressFromStringValue(aJ)), "claimWx", [ds], nil)
732+ if ((cz == cz))
726733 then {
727- let dm = aM(as)
728- $Tuple2((dm - dl), as)
734+ let do = aN(at)
735+ $Tuple2((do - dn), at)
729736 }
730737 else throw("Strict value is not equal to itself.")
731738 }
732739 else throw("Strict value is not equal to itself.")
733740 }
734- else ay()
741+ else az()
735742
736743
737-func dr (bK,aI,bn,cd,aU,ce,aV,bb,ba,ds) = {
738- let dt = aM(fromBase58String(ds))
739- if ((dt == dt))
744+func dt (bL,aJ,bo,ce,aV,cf,aW,bc,bb,du) = {
745+ let dv = aN(fromBase58String(du))
746+ if ((dv == dv))
740747 then {
741- let aS = addressFromStringValue(aI)
742- let du = if (if ((cd > 0))
743- then (ce > 0)
748+ let aT = addressFromStringValue(aJ)
749+ let dw = if (if ((ce > 0))
750+ then (cf > 0)
744751 else false)
745752 then {
746- let dv = cc(bK, aS, cd, aU, ce, aV, bb, ba)
747- let dw = dv._1
748- let dx = dv._2
749- let dy = dv._3
750- let dz = dv._4
751- let cx = cm(aS, bK, dw, aU, dx, aV)
752- if ((cx == cx))
753- then $Tuple2(dy, dz)
753+ let dx = cd(bL, aT, ce, aV, cf, aW, bc, bb)
754+ let dy = dx._1
755+ let dz = dx._2
756+ let dA = dx._3
757+ let dB = dx._4
758+ let cz = cn(aT, bL, dy, aV, dz, aW)
759+ if ((cz == cz))
760+ then $Tuple2(dA, dB)
754761 else throw("Strict value is not equal to itself.")
755762 }
756- else if ((cd > 0))
757- then $Tuple2(cd, aU)
758- else if ((ce > 0))
759- then $Tuple2(ce, aV)
763+ else if ((ce > 0))
764+ then $Tuple2(ce, aV)
765+ else if ((cf > 0))
766+ then $Tuple2(cf, aW)
760767 else throw("pmts must be > 0")
761- let dy = du._1
762- let dz = du._2
763- let cx = if ((dy > 0))
764- then co(aS, bK, dy, dz)
768+ let dA = dw._1
769+ let dB = dw._2
770+ let cz = if ((dA > 0))
771+ then cp(aT, bL, dA, dB)
765772 else nil
766- if ((cx == cx))
773+ if ((cz == cz))
767774 then {
768- let dA = aM(fromBase58String(ds))
769- let dB = (dA - dt)
770- let dC = fraction(dB, bm(aI, bn), o)
771- let dD = (dB - dC)
772- if ((0 >= dD))
775+ let dC = aN(fromBase58String(du))
776+ let dD = (dC - dv)
777+ let dE = fraction(dD, bn(aJ, bo), o)
778+ let dF = (dD - dE)
779+ if ((0 >= dF))
773780 then throw("amount of staked sharetokens must be > 0")
774781 else {
775- let dE = cq(aI, bK, ds, dD)
776- if ((dE == dE))
777- then $Tuple2(dD, dC)
782+ let dG = cs(aJ, bL, du, dF)
783+ if ((dG == dG))
784+ then $Tuple2(dF, dE)
778785 else throw("Strict value is not equal to itself.")
779786 }
780787 }
784791 }
785792
786793
787-func dF (aI,bl,dG,dC,dH,be,aJ,dI) = {
788- let dJ = bi(aI)
789- let dK = bj(aI)
790- let dL = if (dI)
791- then $Tuple2(getIntegerValue(this, (aI + E)), (dK + dG))
792- else $Tuple2(getIntegerValue(this, (aI + F)), dK)
793- let dM = dL._1
794- let dN = dL._2
795-[IntegerEntry((aI + C), (dJ + dG)), IntegerEntry((aI + D), dN), IntegerEntry((((((aI + "_") + bl) + "_") + toString(dH)) + w), dG), IntegerEntry((((((aI + "_") + bl) + "_") + toString(dH)) + B), dM), StringEntry((((bl + "_") + toString(dH)) + x), aI), IntegerEntry((bl + A), dH), ScriptTransfer(an, dC, fromBase58String(be))]
794+func dH (aJ,bm,dI,dE,dJ,bf,aK,dK) = {
795+ let dL = bj(aJ)
796+ let dM = bk(aJ)
797+ let dN = if (dK)
798+ then $Tuple2(getIntegerValue(this, (aJ + E)), (dM + dI))
799+ else $Tuple2(getIntegerValue(this, (aJ + F)), dM)
800+ let dO = dN._1
801+ let dP = dN._2
802+[IntegerEntry((aJ + C), (dL + dI)), IntegerEntry((aJ + D), dP), IntegerEntry((((((aJ + "_") + bm) + "_") + toString(dJ)) + w), dI), IntegerEntry((((((aJ + "_") + bm) + "_") + toString(dJ)) + B), dO), StringEntry((((bm + "_") + toString(dJ)) + x), aJ), IntegerEntry((bm + A), dJ), ScriptTransfer(ao, dE, fromBase58String(bf))]
796803 }
797804
798805
799-func dO (bA,dP) = (bA :+ parseIntValue(dP))
806+func dQ (bB,dR) = (bB :+ parseIntValue(dR))
800807
801808
802-func dQ (dR,dS) = {
803- let dT = addressFromStringValue(dR[1])
804- let dU = split(dR[2], "|")
805- let dV = aM(bt(dS))
806- if ((dV == dV))
809+func dS (dT,dU) = {
810+ let dV = addressFromStringValue(dT[1])
811+ let dW = split(dT[2], "|")
812+ let dX = aN(bu(dU))
813+ if ((dX == dX))
807814 then {
808- let cl = [AttachedPayment(bt(dU[0]), parseIntValue(dU[1]))]
809- let dW = dR[3]
810- let cx = invoke(dT, "callFunction", ["exchange", [dW]], cl)
811- if ((cx == cx))
812- then (aM(bt(dS)) - dV)
815+ let cm = [AttachedPayment(bu(dW[0]), parseIntValue(dW[1]))]
816+ let dY = dT[3]
817+ let cz = invoke(dV, "callFunction", ["exchange", [dY]], cm)
818+ if ((cz == cz))
819+ then (aN(bu(dU)) - dX)
813820 else throw("Strict value is not equal to itself.")
814821 }
815822 else throw("Strict value is not equal to itself.")
816823 }
817824
818825
819-func dX (dR,dS) = {
820- let dT = addressFromStringValue(dR[1])
821- let dV = aM(bt(dS))
822- if ((dV == dV))
826+func dZ (dT,dU) = {
827+ let dV = addressFromStringValue(dT[1])
828+ let dX = aN(bu(dU))
829+ if ((dX == dX))
823830 then {
824- let cl = {
825- let dU = split(dR[2], "|")
826-[AttachedPayment(fromBase58String(dU[0]), parseIntValue(dU[1]))]
831+ let cm = {
832+ let dW = split(dT[2], "|")
833+[AttachedPayment(fromBase58String(dW[0]), parseIntValue(dW[1]))]
827834 }
828- let dY = {
829- let dZ = split(dR[3], "|")
830- let ea = split(dZ[0], ",")
831- let eb = split(dZ[1], ",")
832- let ec = {
833- let bC = split(dZ[2], ",")
834- let bD = size(bC)
835- let bE = nil
836- func bF (bG,bH) = if ((bH >= bD))
837- then bG
838- else dO(bG, bC[bH])
835+ let ea = {
836+ let eb = split(dT[3], "|")
837+ let ec = split(eb[0], ",")
838+ let ed = split(eb[1], ",")
839+ let ee = {
840+ let bD = split(eb[2], ",")
841+ let bE = size(bD)
842+ let bF = nil
843+ func bG (bH,bI) = if ((bI >= bE))
844+ then bH
845+ else dQ(bH, bD[bI])
839846
840- func bI (bG,bH) = if ((bH >= bD))
841- then bG
847+ func bJ (bH,bI) = if ((bI >= bE))
848+ then bH
842849 else throw("List size exceeds 3")
843850
844- bI(bF(bF(bF(bE, 0), 1), 2), 3)
851+ bJ(bG(bG(bG(bF, 0), 1), 2), 3)
845852 }
846- let ed = {
847- let bC = split(dZ[3], ",")
848- let bD = size(bC)
849- let bE = nil
850- func ee (bG,bH) = if ((bH >= bD))
851- then bG
852- else dO(bG, bC[bH])
853+ let ef = {
854+ let bD = split(eb[3], ",")
855+ let bE = size(bD)
856+ let bF = nil
857+ func eg (bH,bI) = if ((bI >= bE))
858+ then bH
859+ else dQ(bH, bD[bI])
853860
854- func ef (bG,bH) = if ((bH >= bD))
855- then bG
861+ func eh (bH,bI) = if ((bI >= bE))
862+ then bH
856863 else throw("List size exceeds 3")
857864
858- ef(ee(ee(ee(bE, 0), 1), 2), 3)
865+ eh(eg(eg(eg(bF, 0), 1), 2), 3)
859866 }
860- let eg = split(dZ[4], ",")
861- let dW = parseIntValue(dZ[5])
862-[ea, eb, ec, ed, eg, dW]
867+ let ei = split(eb[4], ",")
868+ let dY = parseIntValue(eb[5])
869+[ec, ed, ee, ef, ei, dY]
863870 }
864- let cx = invoke(dT, "routingTrade", dY, cl)
865- if ((cx == cx))
866- then (aM(bt(dS)) - dV)
871+ let cz = invoke(dV, "routingTrade", ea, cm)
872+ if ((cz == cz))
873+ then (aN(bu(dU)) - dX)
867874 else throw("Strict value is not equal to itself.")
868875 }
869876 else throw("Strict value is not equal to itself.")
870877 }
871878
872879
873-func eh (aI,bK,ei,ej) = {
874- let aS = Address(fromBase58String(aI))
875- let ek = bg(aS, bK)
876- let el = ek._1
877- let em = ek._2
878- let bb = ek._3
879- let ba = ek._4
880- let be = ek._5
881- if (if ((ei != el))
882- then (ei != em)
880+func ej (aJ,bL,ek,el) = {
881+ let aT = Address(fromBase58String(aJ))
882+ let em = bh(aT, bL)
883+ let en = em._1
884+ let eo = em._2
885+ let bc = em._3
886+ let bb = em._4
887+ let bf = em._5
888+ if (if ((ek != en))
889+ then (ek != eo)
883890 else false)
884891 then throw("Wrong asset")
885892 else {
886- let en = bi(aI)
887- if ((en == 0))
888- then [ScriptTransfer(an, ej, fromBase58String(ei))]
893+ let ep = bj(aJ)
894+ if ((ep == 0))
895+ then [ScriptTransfer(ao, el, fromBase58String(ek))]
889896 else {
890- let eo = bj(aI)
891- let ep = fraction(eo, l, en)
892- let eq = fraction(ej, ep, l)
893- let er = (ej - eq)
894- let es = fraction(eq, bm(aI, f), o)
895- let et = fraction(er, bm(aI, e), o)
896- let eu = (es + et)
897- let ev = if ((ei == el))
898- then $Tuple2((ej - eu), 0)
899- else $Tuple2(0, (ej - eu))
900- let cd = ev._1
901- let ce = ev._2
902- let ew = dr(bK, aI, k, cd, el, ce, em, bb, ba, be)
903- let dG = ew._1
904- let ex = ew._2
905- let ey = valueOrElse(getInteger(this, (aI + E)), 0)
906- let ez = valueOrElse(getInteger(this, (aI + F)), 0)
907- let eA = fraction(dG, ep, l)
908- let eB = (dG - eA)
909- let eC = if ((eo > 0))
910- then (ey + fraction(eA, m, eo))
897+ let eq = bk(aJ)
898+ let er = fraction(eq, l, ep)
899+ let es = fraction(el, er, l)
900+ let et = (el - es)
901+ let eu = fraction(es, bn(aJ, f), o)
902+ let ev = fraction(et, bn(aJ, e), o)
903+ let ew = (eu + ev)
904+ let ex = if ((ek == en))
905+ then $Tuple2((el - ew), 0)
906+ else $Tuple2(0, (el - ew))
907+ let ce = ex._1
908+ let cf = ex._2
909+ let ey = dt(bL, aJ, k, ce, en, cf, eo, bc, bb, bf)
910+ let dI = ey._1
911+ let ez = ey._2
912+ let eA = valueOrElse(getInteger(this, (aJ + E)), 0)
913+ let eB = valueOrElse(getInteger(this, (aJ + F)), 0)
914+ let eC = fraction(dI, er, l)
915+ let eD = (dI - eC)
916+ let eE = if ((eq > 0))
917+ then (eA + fraction(eC, m, eq))
911918 else 0
912- let eD = if (((en - eo) > 0))
913- then (ez + fraction(eB, m, (en - eo)))
919+ let eF = if (((ep - eq) > 0))
920+ then (eB + fraction(eD, m, (ep - eq)))
914921 else 0
915- ([IntegerEntry((aI + E), eC), IntegerEntry((aI + F), eD), IntegerEntry((aI + C), (en + dG)), IntegerEntry((aI + D), (eo + eA)), ScriptTransfer(an, eu, bt(ei))] ++ bY(el, em, be, nil))
922+ ([IntegerEntry((aJ + E), eE), IntegerEntry((aJ + F), eF), IntegerEntry((aJ + C), (ep + dI)), IntegerEntry((aJ + D), (eq + eC)), ScriptTransfer(ao, ew, bu(ek))] ++ bZ(en, eo, bf, nil))
916923 }
917924 }
918925 }
919926
920927
921-func eE (bl,aI,eF,eG) = {
922- let eH = valueOrErrorMessage(getInteger(this, (((((aI + "_") + bl) + "_") + eF) + w)), "Unknown position")
923- let eI = getIntegerValue(this, (((((aI + "_") + bl) + "_") + eF) + B))
924- let eJ = if (eG)
925- then getIntegerValue(this, (aI + E))
926- else getIntegerValue(this, (aI + F))
927- (eH + fraction(eH, (eJ - eI), m))
928+func eG (bm,aJ,eH,eI) = {
929+ let eJ = valueOrErrorMessage(getInteger(this, (((((aJ + "_") + bm) + "_") + eH) + w)), "Unknown position")
930+ let eK = getIntegerValue(this, (((((aJ + "_") + bm) + "_") + eH) + B))
931+ let eL = if (eI)
932+ then getIntegerValue(this, (aJ + E))
933+ else getIntegerValue(this, (aJ + F))
934+ (eJ + fraction(eJ, (eL - eK), m))
928935 }
929936
930937
931-func eK (aI,eL,eM,eN) = {
932- let bn = if (eL)
938+func eM (aJ,eN,eO,eP) = {
939+ let bo = if (eN)
933940 then h
934941 else g
935- if (eM)
936- then fraction(eN, bm(aI, bn), o)
942+ if (eO)
943+ then fraction(eP, bn(aJ, bo), o)
937944 else 0
938945 }
939946
940947
941-func eO (bl,aI,eF,eM) = {
942- let eH = valueOrErrorMessage(getInteger(this, (((((aI + "_") + bl) + "_") + eF) + w)), "Unknown position")
943- let eL = (valueOrElse(getInteger(this, (((((aI + "_") + bl) + "_") + eF) + y)), 0) > 0)
944- let dg = eE(bl, aI, eF, eL)
945- let eP = bi(aI)
946- let eQ = bj(aI)
947- let eR = Address(fromBase58String(bl))
948- let aS = Address(fromBase58String(aI))
949- let bK = valueOrErrorMessage(getString(this, (P + aI)), "Unknown pool")
950- let eS = bg(aS, bK)
951- let eT = eS._1
952- let eU = eS._2
953- let bb = eS._3
954- let ba = eS._4
955- let be = eS._5
956- let eV = $Tuple2(bt(eT), bt(eU))
957- let eW = eV._1
958- let eX = eV._2
959- let eY = eK(aI, eL, eM, dg)
960- let eZ = aM(eW)
961- if ((eZ == eZ))
948+func eQ (bm,aJ,eH,eO) = {
949+ let eJ = valueOrErrorMessage(getInteger(this, (((((aJ + "_") + bm) + "_") + eH) + w)), "Unknown position")
950+ let eN = (valueOrElse(getInteger(this, (((((aJ + "_") + bm) + "_") + eH) + y)), 0) > 0)
951+ let di = eG(bm, aJ, eH, eN)
952+ let eR = bj(aJ)
953+ let eS = bk(aJ)
954+ let eT = Address(fromBase58String(bm))
955+ let aT = Address(fromBase58String(aJ))
956+ let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Unknown pool")
957+ let eU = bh(aT, bL)
958+ let eV = eU._1
959+ let eW = eU._2
960+ let bc = eU._3
961+ let bb = eU._4
962+ let bf = eU._5
963+ let eX = $Tuple2(bu(eV), bu(eW))
964+ let eY = eX._1
965+ let eZ = eX._2
966+ let fa = eM(aJ, eN, eO, di)
967+ let fb = aN(eY)
968+ if ((fb == fb))
962969 then {
963- let fa = aM(eX)
964- if ((fa == fa))
970+ let fc = aN(eZ)
971+ if ((fc == fc))
965972 then {
966- let cx = if ((bK == a))
973+ let cz = if ((bL == a))
967974 then {
968- let cx = cs(aI, bK, be, eY)
969- if ((cx == cx))
970- then invoke(aS, "callFunction", ["withdraw", [toString(dg)]], nil)
975+ let cz = cu(aJ, bL, bf, fa)
976+ if ((cz == cz))
977+ then invoke(aT, "callFunction", ["withdraw", [toString(di)]], nil)
971978 else throw("Strict value is not equal to itself.")
972979 }
973- else if ((bK == b))
980+ else if ((bL == b))
974981 then {
975- let cx = cs(aI, bK, be, (dg + eY))
976- if ((cx == cx))
977- then invoke(aS, "get", nil, [AttachedPayment(bt(be), dg)])
982+ let cz = cu(aJ, bL, bf, (di + fa))
983+ if ((cz == cz))
984+ then invoke(aT, "get", nil, [AttachedPayment(bu(bf), di)])
978985 else throw("Strict value is not equal to itself.")
979986 }
980- else ay()
981- if ((cx == cx))
987+ else az()
988+ if ((cz == cz))
982989 then {
983- let fb = aM(eW)
984- if ((fb == fb))
990+ let fd = aN(eY)
991+ if ((fd == fd))
985992 then {
986- let fc = aM(eX)
987- if ((fc == fc))
993+ let fe = aN(eZ)
994+ if ((fe == fe))
988995 then {
989- let fd = $Tuple2((fb - eZ), (fc - fa))
990- let fe = fd._1
991- let ff = fd._2
992- let fg = if (eL)
996+ let ff = $Tuple2((fd - fb), (fe - fc))
997+ let fg = ff._1
998+ let fh = ff._2
999+ let fi = if (eN)
9931000 then {
994- let fh = getStringValue(this, (((((aI + "_") + bl) + "_") + eF) + z))
995- let fi = {
996- let aW = invoke(az(), "getAssetDebt", [false, ((bl + "_") + eF), fh], nil)
997- if ($isInstanceOf(aW, "Int"))
998- then aW
999- else throw(($getType(aW) + " couldn't be cast to Int"))
1001+ let fj = getStringValue(this, (((((aJ + "_") + bm) + "_") + eH) + z))
1002+ let fk = {
1003+ let aX = invoke(aA(), "getAssetDebt", [false, ((bm + "_") + eH), fj], nil)
1004+ if ($isInstanceOf(aX, "Int"))
1005+ then aX
1006+ else throw(($getType(aX) + " couldn't be cast to Int"))
10001007 }
1001- if ((fi == fi))
1008+ if ((fk == fk))
10021009 then {
1003- let fj = if (if ((fh == eT))
1004- then (fi > fe)
1010+ let fl = if (if ((fj == eV))
1011+ then (fk > fg)
10051012 else false)
1006- then (fi - fe)
1007- else if (if ((fh == eU))
1008- then (fi > ff)
1013+ then (fk - fg)
1014+ else if (if ((fj == eW))
1015+ then (fk > fh)
10091016 else false)
1010- then (fi - ff)
1017+ then (fk - fh)
10111018 else 0
1012- let fk = if ((fj > 0))
1013- then cU(bK, aI, eT, eU, (bb - fe), (ba - ff), fj, fh)
1019+ let fm = if ((fl > 0))
1020+ then cW(bL, aJ, eV, eW, (bc - fg), (bb - fh), fl, fj)
10141021 else nil
1015- if ((fk == fk))
1022+ if ((fm == fm))
10161023 then {
1017- let fl = aM(eW)
1018- if ((fl == fl))
1024+ let fn = aN(eY)
1025+ if ((fn == fn))
10191026 then {
1020- let fm = aM(eX)
1021- if ((fm == fm))
1027+ let fo = aN(eZ)
1028+ if ((fo == fo))
10221029 then {
1023- let fn = if ((fi > 0))
1024- then invoke(az(), "repayFor", [((bl + "_") + eF)], [AttachedPayment(bt(fh), fi)])
1030+ let fp = if ((fk > 0))
1031+ then invoke(aA(), "repayFor", [((bm + "_") + eH)], [AttachedPayment(bu(fj), fk)])
10251032 else 0
1026- if ((fn == fn))
1027- then if ((fh == eT))
1028- then $Tuple2(((fl - eZ) - fi), (fm - fa))
1029- else $Tuple2((fl - eZ), ((fm - fa) - fi))
1033+ if ((fp == fp))
1034+ then if ((fj == eV))
1035+ then $Tuple2(((fn - fb) - fk), (fo - fc))
1036+ else $Tuple2((fn - fb), ((fo - fc) - fk))
10301037 else throw("Strict value is not equal to itself.")
10311038 }
10321039 else throw("Strict value is not equal to itself.")
10371044 }
10381045 else throw("Strict value is not equal to itself.")
10391046 }
1040- else $Tuple2(fe, ff)
1041- let fo = fg._1
1042- let fp = fg._2
1043- let fq = if (eL)
1044- then [IntegerEntry((aI + D), ((eQ - dg) - eY))]
1047+ else $Tuple2(fg, fh)
1048+ let fq = fi._1
1049+ let fr = fi._2
1050+ let fs = if (eN)
1051+ then [IntegerEntry((aJ + D), ((eS - di) - fa))]
10451052 else nil
1046- let fr = (([DeleteEntry((((((aI + "_") + bl) + "_") + eF) + w)), DeleteEntry((((bl + "_") + eF) + x)), DeleteEntry((((((aI + "_") + bl) + "_") + eF) + y)), DeleteEntry((((((aI + "_") + bl) + "_") + eF) + z)), DeleteEntry((((((aI + "_") + bl) + "_") + eF) + B)), IntegerEntry((aI + C), ((eP - dg) - eY)), ScriptTransfer(eR, fo, eW), ScriptTransfer(eR, fp, eX), ScriptTransfer(an, eY, fromBase58String(be))] ++ fq) ++ bY(eT, eU, be, nil))
1047- $Tuple2(fr, [fo, fp])
1053+ let ft = (([DeleteEntry((((((aJ + "_") + bm) + "_") + eH) + w)), DeleteEntry((((bm + "_") + eH) + x)), DeleteEntry((((((aJ + "_") + bm) + "_") + eH) + y)), DeleteEntry((((((aJ + "_") + bm) + "_") + eH) + z)), DeleteEntry((((((aJ + "_") + bm) + "_") + eH) + B)), IntegerEntry((aJ + C), ((eR - di) - fa)), ScriptTransfer(eT, fq, eY), ScriptTransfer(eT, fr, eZ), ScriptTransfer(ao, fa, fromBase58String(bf))] ++ fs) ++ bZ(eV, eW, bf, nil))
1054+ $Tuple2(ft, [fq, fr])
10481055 }
10491056 else throw("Strict value is not equal to itself.")
10501057 }
10581065 }
10591066
10601067
1061-func fs (ft) = {
1062- let fu = split(valueOrErrorMessage(getString(this, (ft + N)), ("No request with id " + ft)), ",")
1063- let bl = fu[0]
1064- let aI = fu[1]
1065- let cd = parseIntValue(fu[2])
1066- let el = fu[3]
1067- let ce = parseIntValue(fu[4])
1068- let em = fu[5]
1069- let bb = parseIntValue(fu[6])
1070- let ba = parseIntValue(fu[7])
1071- let be = fu[8]
1072- let fv = fu[9]
1073- let fw = parseIntValue(fu[10])
1074- $Tuple11(bl, aI, cd, el, ce, em, bb, ba, be, fv, fw)
1068+func fu (fv) = {
1069+ let fw = split(valueOrErrorMessage(getString(this, (fv + N)), ("No request with id " + fv)), ",")
1070+ let bm = fw[0]
1071+ let aJ = fw[1]
1072+ let ce = parseIntValue(fw[2])
1073+ let en = fw[3]
1074+ let cf = parseIntValue(fw[4])
1075+ let eo = fw[5]
1076+ let bc = parseIntValue(fw[6])
1077+ let bb = parseIntValue(fw[7])
1078+ let bf = fw[8]
1079+ let fx = fw[9]
1080+ let fy = parseIntValue(fw[10])
1081+ $Tuple11(bm, aJ, ce, en, cf, eo, bc, bb, bf, fx, fy)
10751082 }
10761083
10771084
1078-func fx (cd,ce,aU,aV,fy,fz) = if (if ((fz != aU))
1079- then (fz != aV)
1085+func fz (ce,cf,aV,aW,fA,fB) = if (if ((fB != aV))
1086+ then (fB != aW)
10801087 else false)
10811088 then throw("Wrong borrow asset")
10821089 else {
1083- let bP = getIntegerValue(ap, (aU + T))
1084- let bQ = getIntegerValue(ap, (aV + T))
1085- let fA = pow(10, 0, bu(aU), 0, 0, DOWN)
1086- let fB = pow(10, 0, bu(aV), 0, 0, DOWN)
1087- let fC = (fraction(bP, cd, fA) + fraction(bQ, ce, fB))
1088- let fD = if ((fz == aU))
1089- then $Tuple2(bP, fA)
1090- else $Tuple2(bQ, fB)
1091- let fE = fD._1
1092- let fF = fD._2
1093- fraction(fraction(fC, (fy - 100), 100), fF, fE)
1090+ let bQ = getIntegerValue(aq, (aV + U))
1091+ let bR = getIntegerValue(aq, (aW + U))
1092+ let fC = pow(10, 0, bv(aV), 0, 0, DOWN)
1093+ let fD = pow(10, 0, bv(aW), 0, 0, DOWN)
1094+ let fE = (fraction(bQ, ce, fC) + fraction(bR, cf, fD))
1095+ let fF = if ((fB == aV))
1096+ then $Tuple2(bQ, fC)
1097+ else $Tuple2(bR, fD)
1098+ let fG = fF._1
1099+ let fH = fF._2
1100+ fraction(fraction(fE, (fA - 100), 100), fH, fG)
10941101 }
10951102
10961103
1097-func fG (fH,el,em) = if ((size(fH) == 2))
1098- then if ((bs(fH[0].assetId) != el))
1104+func fI (fJ,en,eo) = if ((size(fJ) == 2))
1105+ then if ((bt(fJ[0].assetId) != en))
10991106 then throw("Wrong payment asset A")
1100- else if ((bs(fH[1].assetId) != em))
1107+ else if ((bt(fJ[1].assetId) != eo))
11011108 then throw("Wrong payment asset B")
1102- else $Tuple2(fH[0].amount, fH[1].amount)
1103- else if ((size(fH) == 1))
1104- then if ((bs(fH[0].assetId) == el))
1105- then $Tuple2(fH[0].amount, 0)
1106- else if ((bs(fH[0].assetId) == em))
1107- then $Tuple2(0, fH[0].amount)
1109+ else $Tuple2(fJ[0].amount, fJ[1].amount)
1110+ else if ((size(fJ) == 1))
1111+ then if ((bt(fJ[0].assetId) == en))
1112+ then $Tuple2(fJ[0].amount, 0)
1113+ else if ((bt(fJ[0].assetId) == eo))
1114+ then $Tuple2(0, fJ[0].amount)
11081115 else throw("Wrong payment")
11091116 else throw("One or two payments expected")
11101117
11111118
1112-func fI (bb,ba,fJ,fK) = {
1113- let fL = ((l - fraction(fraction(ba, l, bb), l, fraction(fK, l, fJ))) * 100)
1114- if ((0 > fL))
1115- then (fL * -1)
1116- else fL
1119+func fK (bc,bb,fL,fM) = {
1120+ let fN = ((l - fraction(fraction(bb, l, bc), l, fraction(fM, l, fL))) * 100)
1121+ if ((0 > fN))
1122+ then (fN * -1)
1123+ else fN
11171124 }
11181125
11191126
1120-func fM (aI,bK,fN,cr,dy) = {
1121- let fO = if (fN)
1122- then dk(bK, aI)
1127+func fO (aJ,bL,fP,ct,dA) = {
1128+ let fQ = if (fP)
1129+ then dm(bL, aJ)
11231130 else {
1124- let fP = if ((bK == a))
1125- then ar
1126- else if ((bK == b))
1127- then as
1128- else ay()
1129- $Tuple2(cr, fP)
1131+ let fR = if ((bL == a))
1132+ then as
1133+ else if ((bL == b))
1134+ then at
1135+ else az()
1136+ $Tuple2(ct, fR)
11301137 }
1131- if ((fO == fO))
1138+ if ((fQ == fQ))
11321139 then {
1133- let fQ = fO._2
1134- let fR = fO._1
1135- let fS = aM(fQ)
1136- if ((fS == fS))
1137- then if ((cr > fS))
1140+ let fS = fQ._2
1141+ let fT = fQ._1
1142+ let fU = aN(fS)
1143+ if ((fU == fU))
1144+ then if ((ct > fU))
11381145 then throw("To big amount to exchange")
1139- else $Tuple2(fR, fQ)
1146+ else $Tuple2(fT, fS)
11401147 else throw("Strict value is not equal to itself.")
11411148 }
11421149 else throw("Strict value is not equal to itself.")
11431150 }
11441151
11451152
1146-@Callable(aB)
1147-func getPoolInfoREADONLY (aI) = {
1148- let aS = addressFromStringValue(aI)
1149- let bK = valueOrErrorMessage(getString(this, (P + aI)), "Pool is not inited")
1150- let fT = bg(Address(fromBase58String(aI)), bK)
1151- let el = fT._1
1152- let em = fT._2
1153- let bb = fT._3
1154- let ba = fT._4
1155- let be = fT._5
1156- let bR = bh(aS, bK, be)
1157- $Tuple2(nil, $Tuple6(el, em, be, bb, ba, bR))
1153+@Callable(aC)
1154+func getPoolInfoREADONLY (aJ) = {
1155+ let aT = addressFromStringValue(aJ)
1156+ let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Pool is not inited")
1157+ let fV = bh(Address(fromBase58String(aJ)), bL)
1158+ let en = fV._1
1159+ let eo = fV._2
1160+ let bc = fV._3
1161+ let bb = fV._4
1162+ let bf = fV._5
1163+ let bS = bi(aT, bL, bf)
1164+ $Tuple2(nil, $Tuple6(en, eo, bf, bc, bb, bS))
11581165 }
11591166
11601167
11611168
1162-@Callable(aB)
1163-func getShareAssetPriceREADONLY (be) = {
1164- let fU = bJ(be)
1165- $Tuple2(nil, fU)
1169+@Callable(aC)
1170+func getShareAssetPriceREADONLY (bf) = {
1171+ let fW = bK(bf)
1172+ $Tuple2(nil, fW)
11661173 }
11671174
11681175
11691176
1170-@Callable(aB)
1171-func getUserPositionShareAmountREADONLY (bl,dH) = {
1172- let aI = valueOrErrorMessage(getString(this, (((bl + "_") + dH) + x)), "Unknown position")
1173- let fV = getIntegerValue(this, (((((aI + "_") + bl) + "_") + dH) + y))
1174- let dg = eE(bl, aI, dH, (fV > 0))
1175- $Tuple2(nil, dg)
1177+@Callable(aC)
1178+func getUserPositionShareAmountREADONLY (bm,dJ) = {
1179+ let aJ = valueOrErrorMessage(getString(this, (((bm + "_") + dJ) + x)), "Unknown position")
1180+ let fX = getIntegerValue(this, (((((aJ + "_") + bm) + "_") + dJ) + y))
1181+ let di = eG(bm, aJ, dJ, (fX > 0))
1182+ $Tuple2(nil, di)
11761183 }
11771184
11781185
11791186
1180-@Callable(aB)
1181-func getUserPositionREADONLY (bl,fW,dH) = {
1182- func fX (bA,aI) = {
1183- let fY = bA
1184- let fZ = fY._1
1185- let ga = fY._2
1186- let gb = fY._3
1187- let gc = fY._4
1188- let gd = fY._5
1189- let ge = fY._6
1190- if (!(isDefined(getInteger(this, (((((aI + "_") + bl) + "_") + dH[ge]) + w)))))
1191- then $Tuple6((fZ :+ 0), (ga :+ 0), (gb :+ 0), (gc :+ 0), (gd :+ 0), (ge + 1))
1187+@Callable(aC)
1188+func getUserPositionREADONLY (bm,fY,dJ) = {
1189+ func fZ (bB,aJ) = {
1190+ let ga = bB
1191+ let gb = ga._1
1192+ let gc = ga._2
1193+ let gd = ga._3
1194+ let ge = ga._4
1195+ let gf = ga._5
1196+ let gg = ga._6
1197+ if (!(isDefined(getInteger(this, (((((aJ + "_") + bm) + "_") + dJ[gg]) + w)))))
1198+ then $Tuple6((gb :+ 0), (gc :+ 0), (gd :+ 0), (ge :+ 0), (gf :+ 0), (gg + 1))
11921199 else {
1193- let bK = valueOrErrorMessage(getString(this, (P + aI)), "Pool is not inited")
1194- let gf = bg(Address(fromBase58String(aI)), bK)
1195- let el = gf._1
1196- let em = gf._2
1197- let bb = gf._3
1198- let ba = gf._4
1199- let be = gf._5
1200- let fV = valueOrElse(getInteger(this, (((((aI + "_") + bl) + "_") + dH[ge]) + y)), 0)
1201- let dg = eE(bl, aI, dH[ge], (fV > 0))
1202- let gg = df(Address(fromBase58String(aI)), bK, be, dg)
1203- let gh = gg._1
1204- let gi = gg._2
1205- if ((fV > 0))
1200+ let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Pool is not inited")
1201+ let gh = bh(Address(fromBase58String(aJ)), bL)
1202+ let en = gh._1
1203+ let eo = gh._2
1204+ let bc = gh._3
1205+ let bb = gh._4
1206+ let bf = gh._5
1207+ let fX = valueOrElse(getInteger(this, (((((aJ + "_") + bm) + "_") + dJ[gg]) + y)), 0)
1208+ let di = eG(bm, aJ, dJ[gg], (fX > 0))
1209+ let gi = dh(Address(fromBase58String(aJ)), bL, bf, di)
1210+ let gj = gi._1
1211+ let gk = gi._2
1212+ if ((fX > 0))
12061213 then {
1207- let fh = getStringValue(this, (((((aI + "_") + bl) + "_") + dH[ge]) + z))
1208- let fi = {
1209- let aW = invoke(az(), "getAssetDebt", [false, ((bl + "_") + dH[ge]), fh], nil)
1210- if ($isInstanceOf(aW, "Int"))
1211- then aW
1212- else throw(($getType(aW) + " couldn't be cast to Int"))
1214+ let fj = getStringValue(this, (((((aJ + "_") + bm) + "_") + dJ[gg]) + z))
1215+ let fk = {
1216+ let aX = invoke(aA(), "getAssetDebt", [false, ((bm + "_") + dJ[gg]), fj], nil)
1217+ if ($isInstanceOf(aX, "Int"))
1218+ then aX
1219+ else throw(($getType(aX) + " couldn't be cast to Int"))
12131220 }
1214- if ((fi == fi))
1221+ if ((fk == fk))
12151222 then {
1216- let fj = if (if ((fh == el))
1217- then (fi > gh)
1223+ let fl = if (if ((fj == en))
1224+ then (fk > gj)
12181225 else false)
1219- then (fi - gh)
1220- else if (if ((fh == em))
1221- then (fi > gi)
1226+ then (fk - gj)
1227+ else if (if ((fj == eo))
1228+ then (fk > gk)
12221229 else false)
1223- then (fi - gi)
1230+ then (fk - gk)
12241231 else 0
1225- let cH = if ((fj > 0))
1226- then if ((bK == a))
1232+ let cJ = if ((fl > 0))
1233+ then if ((bL == a))
12271234 then {
1228- let gj = cy(aI, el, em, bb, ba, fj, fh)
1229- gj._2
1235+ let gl = cA(aJ, en, eo, bc, bb, fl, fj)
1236+ gl._2
12301237 }
1231- else if ((bK == b))
1238+ else if ((bL == b))
12321239 then {
1233- let gj = cN(aI, el, em, bb, ba, fj, fh)
1234- gj._2
1240+ let gl = cP(aJ, en, eo, bc, bb, fl, fj)
1241+ gl._2
12351242 }
1236- else ay()
1243+ else az()
12371244 else 0
1238- let gk = if ((fh == el))
1239- then $Tuple2(((gh + fj) - fi), (gi - cH))
1240- else $Tuple2((gh - cH), ((gi + fj) - fi))
1241- let gl = gk._1
1242- let gm = gk._2
1243- $Tuple6((fZ :+ gh), (ga :+ gi), (gb :+ fi), (gc :+ gl), (gd :+ gm), (ge + 1))
1245+ let gm = if ((fj == en))
1246+ then $Tuple2(((gj + fl) - fk), (gk - cJ))
1247+ else $Tuple2((gj - cJ), ((gk + fl) - fk))
1248+ let gn = gm._1
1249+ let go = gm._2
1250+ $Tuple6((gb :+ gj), (gc :+ gk), (gd :+ fk), (ge :+ gn), (gf :+ go), (gg + 1))
12441251 }
12451252 else throw("Strict value is not equal to itself.")
12461253 }
1247- else $Tuple6((fZ :+ gh), (ga :+ gi), gb, (fZ :+ gh), (ga :+ gi), (ge + 1))
1254+ else $Tuple6((gb :+ gj), (gc :+ gk), gd, (gb :+ gj), (gc :+ gk), (gg + 1))
12481255 }
12491256 }
12501257
1251- let gn = {
1252- let bC = fW
1253- let bD = size(bC)
1254- let bE = $Tuple6(nil, nil, nil, nil, nil, 0)
1255- func bF (bG,bH) = if ((bH >= bD))
1256- then bG
1257- else fX(bG, bC[bH])
1258+ let gp = {
1259+ let bD = fY
1260+ let bE = size(bD)
1261+ let bF = $Tuple6(nil, nil, nil, nil, nil, 0)
1262+ func bG (bH,bI) = if ((bI >= bE))
1263+ then bH
1264+ else fZ(bH, bD[bI])
12581265
1259- func bI (bG,bH) = if ((bH >= bD))
1260- then bG
1266+ func bJ (bH,bI) = if ((bI >= bE))
1267+ then bH
12611268 else throw("List size exceeds 20")
12621269
1263- bI(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bE, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
1270+ bJ(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bF, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
12641271 }
1265- let fZ = gn._1
1266- let ga = gn._2
1267- let gb = gn._3
1268- let gc = gn._4
1269- let gd = gn._5
1270- $Tuple2(nil, $Tuple5(fZ, ga, gb, gc, gd))
1272+ let gb = gp._1
1273+ let gc = gp._2
1274+ let gd = gp._3
1275+ let ge = gp._4
1276+ let gf = gp._5
1277+ $Tuple2(nil, $Tuple5(gb, gc, gd, ge, gf))
12711278 }
12721279
12731280
12741281
1275-@Callable(aB)
1276-func replenish (aI,fy,fz) = valueOrElse(aG(), {
1277- let bK = valueOrErrorMessage(getString(this, (P + aI)), "Pool is not inited")
1278- if (!(aH(aI, bK)))
1282+@Callable(aC)
1283+func replenish (aJ,fA,fB) = valueOrElse(aH(), {
1284+ let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Pool is not inited")
1285+ if (!(aI(aJ, bL)))
12791286 then throw("Pool not active at this moment")
1280- else if (if ((100 > fy))
1287+ else if (if ((100 > fA))
12811288 then true
1282- else (fy > 300))
1289+ else (fA > 300))
12831290 then throw("Leverage can't be <100 and >300")
1284- else if (if (!(getBooleanValue(this, (aI + G))))
1285- then (fy > 100)
1291+ else if (if (!(getBooleanValue(this, (aJ + G))))
1292+ then (fA > 100)
12861293 else false)
12871294 then throw("You can't borrow in this pool")
12881295 else {
1289- let go = bg(Address(fromBase58String(aI)), bK)
1290- let el = go._1
1291- let em = go._2
1292- let bb = go._3
1293- let ba = go._4
1294- let be = go._5
1295- if (if ((fz != el))
1296- then (fz != em)
1296+ let gq = bh(Address(fromBase58String(aJ)), bL)
1297+ let en = gq._1
1298+ let eo = gq._2
1299+ let bc = gq._3
1300+ let bb = gq._4
1301+ let bf = gq._5
1302+ if (if ((fB != en))
1303+ then (fB != eo)
12971304 else false)
12981305 then throw("Wrong borrow asset")
12991306 else {
1300- let gp = fG(aB.payments, el, em)
1301- let cd = gp._1
1302- let ce = gp._2
1303- let bl = toString(aB.caller)
1304- let gq = bk(bl)
1305- if ((fy > 100))
1307+ let gr = fI(aC.payments, en, eo)
1308+ let ce = gr._1
1309+ let cf = gr._2
1310+ let bm = toString(aC.caller)
1311+ let gs = bl(bm)
1312+ if ((fA > 100))
13061313 then {
1307- let fV = fx(cd, ce, el, em, fy, fz)
1308- let fu = makeString([bl, aI, toString(cd), el, toString(ce), em, toString(bb), toString(ba), be, fz, toString(fV)], ",")
1309- let gr = {
1310- let aW = invoke(this, "createNewRequest", [fu], nil)
1311- if ($isInstanceOf(aW, "Int"))
1312- then aW
1313- else throw(($getType(aW) + " couldn't be cast to Int"))
1314+ let fX = fz(ce, cf, en, eo, fA, fB)
1315+ let fw = makeString([bm, aJ, toString(ce), en, toString(cf), eo, toString(bc), toString(bb), bf, fB, toString(fX)], ",")
1316+ let gt = {
1317+ let aX = invoke(this, "createNewRequest", [fw], nil)
1318+ if ($isInstanceOf(aX, "Int"))
1319+ then aX
1320+ else throw(($getType(aX) + " couldn't be cast to Int"))
13141321 }
1315- if ((gr == gr))
1322+ if ((gt == gt))
13161323 then {
1317- let dY = [((bl + "_") + toString(gq)), be, fz, fV, toString(this), "replenishFromLand", toString(valueOrErrorMessage(gr, "Can't create new request"))]
1318- let cx = reentrantInvoke(az(), "flashPosition", dY, nil)
1319- if ((cx == cx))
1324+ let ea = [((bm + "_") + toString(gs)), bf, fB, fX, toString(this), "replenishFromLand", toString(valueOrErrorMessage(gt, "Can't create new request"))]
1325+ let cz = reentrantInvoke(aA(), "flashPosition", ea, nil)
1326+ if ((cz == cz))
13201327 then {
1321- let gs = getIntegerValue(this, (((((aI + "_") + bl) + "_") + toString(gq)) + w))
1322- let gt = aX(Address(fromBase58String(aI)), bK, el, em)
1323- if ((gt == gt))
1328+ let gu = getIntegerValue(this, (((((aJ + "_") + bm) + "_") + toString(gs)) + w))
1329+ let gv = aY(Address(fromBase58String(aJ)), bL, en, eo)
1330+ if ((gv == gv))
13241331 then {
1325- let fK = gt._2
1326- let fJ = gt._1
1327- let gu = fI(bb, ba, fJ, fK)
1328- let gv = df(Address(fromBase58String(aI)), bK, be, gs)
1329- let gh = gv._1
1330- let gi = gv._2
1331- $Tuple2(nil, [gu, gh, gi])
1332+ let fM = gv._2
1333+ let fL = gv._1
1334+ let gw = fK(bc, bb, fL, fM)
1335+ let gx = dh(Address(fromBase58String(aJ)), bL, bf, gu)
1336+ let gj = gx._1
1337+ let gk = gx._2
1338+ $Tuple2(nil, [gw, gj, gk])
13321339 }
13331340 else throw("Strict value is not equal to itself.")
13341341 }
13371344 else throw("Strict value is not equal to itself.")
13381345 }
13391346 else {
1340- let gw = dr(bK, aI, j, cd, el, ce, em, bb, ba, be)
1341- if ((gw == gw))
1347+ let gy = dt(bL, aJ, j, ce, en, cf, eo, bc, bb, bf)
1348+ if ((gy == gy))
13421349 then {
1343- let eu = gw._2
1344- let gs = gw._1
1345- let gx = aX(Address(fromBase58String(aI)), bK, el, em)
1346- if ((gx == gx))
1350+ let ew = gy._2
1351+ let gu = gy._1
1352+ let gz = aY(Address(fromBase58String(aJ)), bL, en, eo)
1353+ if ((gz == gz))
13471354 then {
1348- let fK = gx._2
1349- let fJ = gx._1
1350- let gu = fI(bb, ba, fJ, fK)
1351- let gy = df(Address(fromBase58String(aI)), bK, be, gs)
1352- let gh = gy._1
1353- let gi = gy._2
1354- $Tuple2((dF(aI, bl, gs, eu, gq, be, bK, false) ++ bY(el, em, be, [toString(gh), toString(gi)])), [gu, gh, gi])
1355+ let fM = gz._2
1356+ let fL = gz._1
1357+ let gw = fK(bc, bb, fL, fM)
1358+ let gA = dh(Address(fromBase58String(aJ)), bL, bf, gu)
1359+ let gj = gA._1
1360+ let gk = gA._2
1361+ $Tuple2((dH(aJ, bm, gu, ew, gs, bf, bL, false) ++ bZ(en, eo, bf, [toString(gj), toString(gk)])), [gw, gj, gk])
13551362 }
13561363 else throw("Strict value is not equal to itself.")
13571364 }
13631370
13641371
13651372
1366-@Callable(aB)
1367-func withdraw (aI,eF) = valueOrElse(aG(), {
1368- let bK = valueOrErrorMessage(getString(this, (P + aI)), "Pool is not inited")
1369- if (!(aH(aI, bK)))
1373+@Callable(aC)
1374+func withdraw (aJ,eH) = valueOrElse(aH(), {
1375+ let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Pool is not inited")
1376+ if (!(aI(aJ, bL)))
13701377 then throw("Pool not active at this moment")
1371- else eO(toString(aB.caller), aI, toString(eF), false)
1378+ else eQ(toString(aC.caller), aJ, toString(eH), false)
13721379 })
13731380
13741381
13751382
1376-@Callable(aB)
1377-func createUpdateStopLoss (eF,gz,aN,gA) = valueOrElse(aG(), {
1378- let gB = getIntegerValue(ap, (aN + T))
1379- let bK = valueOrErrorMessage(getString(this, (P + gz)), "Pool is not inited")
1380- if (!(aH(gz, bK)))
1383+@Callable(aC)
1384+func createUpdateStopLoss (eH,gB,aO,gC) = valueOrElse(aH(), {
1385+ let gD = getIntegerValue(aq, (aO + U))
1386+ let bL = valueOrErrorMessage(getString(this, (P + gB)), "Pool is not inited")
1387+ if (!(aI(gB, bL)))
13811388 then throw("Pool not active at this moment")
1382- else if (!(isDefined(getInteger(this, (((((gz + "_") + toString(aB.caller)) + "_") + toString(eF)) + w)))))
1389+ else if (!(isDefined(getInteger(this, (((((gB + "_") + toString(aC.caller)) + "_") + toString(eH)) + w)))))
13831390 then throw("There are no user position")
1384- else if ((0 >= gA))
1391+ else if ((0 >= gC))
13851392 then throw("Price must be greater than 0")
1386- else if ((gA > gB))
1393+ else if ((gC > gD))
13871394 then throw("Price must be less than current token price")
1388- else [IntegerEntry((((((((toString(aB.caller) + "_") + toString(eF)) + "_") + gz) + "_") + aN) + Y), gA)]
1395+ else [IntegerEntry((((((((toString(aC.caller) + "_") + toString(eH)) + "_") + gB) + "_") + aO) + Z), gC)]
13891396 })
13901397
13911398
13921399
1393-@Callable(aB)
1394-func deleteStopLoss (eF,gz,aN) = valueOrElse(aG(), {
1395- let bK = valueOrErrorMessage(getString(this, (P + gz)), "Pool is not inited")
1396- if (!(aH(gz, bK)))
1400+@Callable(aC)
1401+func deleteStopLoss (eH,gB,aO) = valueOrElse(aH(), {
1402+ let bL = valueOrErrorMessage(getString(this, (P + gB)), "Pool is not inited")
1403+ if (!(aI(gB, bL)))
13971404 then throw("Pool not active at this moment")
1398- else if (!(isDefined(getInteger(this, (((((((toString(aB.caller) + "_") + toString(eF)) + "_") + gz) + "_") + aN) + Y)))))
1405+ else if (!(isDefined(getInteger(this, (((((((toString(aC.caller) + "_") + toString(eH)) + "_") + gB) + "_") + aO) + Z)))))
13991406 then throw("No entry")
1400- else [DeleteEntry((((((((toString(aB.caller) + "_") + toString(eF)) + "_") + gz) + "_") + aN) + Y))]
1407+ else [DeleteEntry((((((((toString(aC.caller) + "_") + toString(eH)) + "_") + gB) + "_") + aO) + Z))]
14011408 })
14021409
14031410
14041411
1405-@Callable(aB)
1406-func init (gC,gD,gE,ap,gF,aq,gG,gH,gI,gJ,gK,gL,gM) = valueOrElse(aD(aB), if (isDefined(getString(ad)))
1412+@Callable(aC)
1413+func init (gE,gF,gG,aq,gH,ar,gI,gJ,gK,gL,gM,gN,gO) = valueOrElse(aE(aC), if (isDefined(getString(ae)))
14071414 then throw("Already inited")
1408- else if (!(isDefined(addressFromString(gC))))
1415+ else if (!(isDefined(addressFromString(gE))))
14091416 then throw("moneyBoxAddr is not correct address")
1410- else if (!(isDefined(addressFromString(gD))))
1417+ else if (!(isDefined(addressFromString(gF))))
14111418 then throw("sfFarmingAddr is not correct address")
1412- else if (!(isDefined(addressFromString(gE))))
1419+ else if (!(isDefined(addressFromString(gG))))
14131420 then throw("lendAddr is not correct address")
1414- else if (!(isDefined(addressFromString(ap))))
1421+ else if (!(isDefined(addressFromString(aq))))
14151422 then throw("priceOracleAddr is not correct address")
1416- else if (!(isDefined(addressFromString(gF))))
1423+ else if (!(isDefined(addressFromString(gH))))
14171424 then throw("keeperExContract is not correct address")
1418- else if (!(isDefined(assetInfo(fromBase58String(gG)))))
1425+ else if (!(isDefined(assetInfo(fromBase58String(gI)))))
14191426 then throw("swopAssetId is not correct asset id")
1420- else if (!(isDefined(assetInfo(fromBase58String(gH)))))
1427+ else if (!(isDefined(assetInfo(fromBase58String(gJ)))))
14211428 then throw("swopAssetId is not correct asset id")
1422- else if ((size(fromBase58String(gI)) != 32))
1429+ else if ((size(fromBase58String(gK)) != 32))
14231430 then throw("operatorPubKey is not correct")
1424- else if ((size(fromBase58String(gJ)) != 32))
1431+ else if ((size(fromBase58String(gL)) != 32))
14251432 then throw("group1Admin1PubKey is not correct")
1426- else if ((size(fromBase58String(gK)) != 32))
1433+ else if ((size(fromBase58String(gM)) != 32))
14271434 then throw("group1Admin2PubKey is not correct")
1428- else if ((size(fromBase58String(gL)) != 32))
1435+ else if ((size(fromBase58String(gN)) != 32))
14291436 then throw("group2Admin1PubKey is not correct")
1430- else if ((size(fromBase58String(gM)) != 32))
1437+ else if ((size(fromBase58String(gO)) != 32))
14311438 then throw("group2Admin2PubKey is not correct")
1432- else [StringEntry(aa, gC), StringEntry(ab, gD), StringEntry(ac, gE), StringEntry(ae, ap), StringEntry(af, gF), StringEntry(ag, aq), StringEntry(ah, gG), StringEntry(ai, gH), StringEntry(ad, gI), StringEntry(aj, gJ), StringEntry(ak, gK), StringEntry(al, gL), StringEntry(am, gM)])
1439+ else [StringEntry(ab, gE), StringEntry(ac, gF), StringEntry(ad, gG), StringEntry(af, aq), StringEntry(ag, gH), StringEntry(ah, ar), StringEntry(ai, gI), StringEntry(aj, gJ), StringEntry(ae, gK), StringEntry(ak, gL), StringEntry(al, gM), StringEntry(am, gN), StringEntry(an, gO)])
14331440
14341441
14351442
1436-@Callable(aB)
1437-func createNewRequest (cw) = valueOrElse(aD(aB), {
1438- let gr = (valueOrElse(getInteger(this, O), 0) + 1)
1439- $Tuple2([StringEntry((toString(gr) + N), cw), IntegerEntry(O, gr)], gr)
1443+@Callable(aC)
1444+func createNewRequest (cy) = valueOrElse(aE(aC), {
1445+ let gt = (valueOrElse(getInteger(this, O), 0) + 1)
1446+ $Tuple2([StringEntry((toString(gt) + N), cy), IntegerEntry(O, gt)], gt)
14401447 })
14411448
14421449
14431450
1444-@Callable(aB)
1445-func replenishFromLand (ft) = valueOrElse(aF(), valueOrElse(aE(aB), {
1446- let gN = fs(ft)
1447- let bl = gN._1
1448- let aI = gN._2
1449- let cd = gN._3
1450- let el = gN._4
1451- let ce = gN._5
1452- let em = gN._6
1453- let bb = gN._7
1454- let ba = gN._8
1455- let be = gN._9
1456- let fv = gN._10
1457- let fw = gN._11
1458- if ((size(aB.payments) != 1))
1451+@Callable(aC)
1452+func replenishFromLand (fv) = valueOrElse(aG(), valueOrElse(aF(aC), {
1453+ let gP = fu(fv)
1454+ let bm = gP._1
1455+ let aJ = gP._2
1456+ let ce = gP._3
1457+ let en = gP._4
1458+ let cf = gP._5
1459+ let eo = gP._6
1460+ let bc = gP._7
1461+ let bb = gP._8
1462+ let bf = gP._9
1463+ let fx = gP._10
1464+ let fy = gP._11
1465+ if ((size(aC.payments) != 1))
14591466 then throw("Wrong payment size")
1460- else if (if ((bs(aB.payments[0].assetId) != fv))
1467+ else if (if ((bt(aC.payments[0].assetId) != fx))
14611468 then true
1462- else (aB.payments[0].amount != fw))
1469+ else (aC.payments[0].amount != fy))
14631470 then throw("Wrong payment")
14641471 else {
1465- let gO = if ((el == fv))
1466- then $Tuple2((cd + fw), ce)
1467- else $Tuple2(cd, (ce + fw))
1468- let gP = gO._1
1469- let gQ = gO._2
1470- let bK = valueOrErrorMessage(getString(this, (P + aI)), "Unknown pool")
1471- let gR = dr(bK, aI, i, gP, el, gQ, em, bb, ba, be)
1472- let gs = gR._1
1473- let eu = gR._2
1474- let dH = bk(bl)
1475- let gS = [IntegerEntry((((((aI + "_") + bl) + "_") + toString(dH)) + y), fw), StringEntry((((((aI + "_") + bl) + "_") + toString(dH)) + z), fv)]
1476- let fr = dF(aI, bl, gs, eu, dH, be, bK, true)
1477- let gT = df(Address(fromBase58String(aI)), bK, be, gs)
1478- let gh = gT._1
1479- let gi = gT._2
1480- $Tuple2((((fr ++ bY(el, em, be, [toString(gh), toString(gi)])) ++ gS) :+ DeleteEntry((ft + N))), gs)
1472+ let gQ = if ((en == fx))
1473+ then $Tuple2((ce + fy), cf)
1474+ else $Tuple2(ce, (cf + fy))
1475+ let gR = gQ._1
1476+ let gS = gQ._2
1477+ let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Unknown pool")
1478+ let gT = dt(bL, aJ, i, gR, en, gS, eo, bc, bb, bf)
1479+ let gu = gT._1
1480+ let ew = gT._2
1481+ let dJ = bl(bm)
1482+ let gU = [IntegerEntry((((((aJ + "_") + bm) + "_") + toString(dJ)) + y), fy), StringEntry((((((aJ + "_") + bm) + "_") + toString(dJ)) + z), fx)]
1483+ let ft = dH(aJ, bm, gu, ew, dJ, bf, bL, true)
1484+ let gV = dh(Address(fromBase58String(aJ)), bL, bf, gu)
1485+ let gj = gV._1
1486+ let gk = gV._2
1487+ $Tuple2((((ft ++ bZ(en, eo, bf, [toString(gj), toString(gk)])) ++ gU) :+ DeleteEntry((fv + N))), gu)
14811488 }
14821489 }))
14831490
14841491
14851492
1486-@Callable(aB)
1487-func liquidate (bl,eF,gU) = valueOrElse(aF(), valueOrElse(aE(aB), {
1488- let aI = valueOrErrorMessage(getString(this, (((bl + "_") + eF) + x)), "no position")
1489- let bK = valueOrErrorMessage(getString(this, (P + aI)), "Pool is not inited")
1490- let gV = bg(Address(fromBase58String(aI)), bK)
1491- let el = gV._1
1492- let em = gV._2
1493- let bb = gV._3
1494- let ba = gV._4
1495- let be = gV._5
1496- let cr = cs(aI, bK, be, gU)
1497- let fV = getIntegerValue(this, (((((aI + "_") + bl) + "_") + eF) + y))
1498- let fh = getStringValue(this, (((((aI + "_") + bl) + "_") + eF) + z))
1499- let dg = eE(bl, aI, eF, (fV > 0))
1500- if ((gU > dg))
1493+@Callable(aC)
1494+func liquidate (bm,eH,gW) = valueOrElse(aG(), valueOrElse(aF(aC), {
1495+ let aJ = valueOrErrorMessage(getString(this, (((bm + "_") + eH) + x)), "no position")
1496+ let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Pool is not inited")
1497+ let gX = bh(Address(fromBase58String(aJ)), bL)
1498+ let en = gX._1
1499+ let eo = gX._2
1500+ let bc = gX._3
1501+ let bb = gX._4
1502+ let bf = gX._5
1503+ let ct = cu(aJ, bL, bf, gW)
1504+ let fX = getIntegerValue(this, (((((aJ + "_") + bm) + "_") + eH) + y))
1505+ let fj = getStringValue(this, (((((aJ + "_") + bm) + "_") + eH) + z))
1506+ let di = eG(bm, aJ, eH, (fX > 0))
1507+ if ((gW > di))
15011508 then throw("You can't liquidate more than user have")
1502- else if ((fV == 0))
1509+ else if ((fX == 0))
15031510 then throw("You can't liquidate position without borrow")
1504- else [IntegerEntry((((((aI + "_") + bl) + "_") + eF) + B), getIntegerValue(this, (aI + E))), IntegerEntry((aI + D), (bj(aI) - gU)), IntegerEntry((aI + C), (bi(aI) - gU)), IntegerEntry((((((aI + "_") + bl) + "_") + eF) + w), (dg - gU)), ScriptTransfer(aB.caller, cr, fromBase58String(be))]
1511+ else [IntegerEntry((((((aJ + "_") + bm) + "_") + eH) + B), getIntegerValue(this, (aJ + E))), IntegerEntry((aJ + D), (bk(aJ) - gW)), IntegerEntry((aJ + C), (bj(aJ) - gW)), IntegerEntry((((((aJ + "_") + bm) + "_") + eH) + w), (di - gW)), ScriptTransfer(aC.caller, ct, fromBase58String(bf))]
15051512 }))
15061513
15071514
15081515
1509-@Callable(aB)
1510-func stopLoss (bl,eF,aI,aN) = valueOrElse(aF(), valueOrElse(aA(aB), {
1511- let gB = getIntegerValue(ap, (aN + T))
1512- let gW = valueOrErrorMessage(getInteger(this, (((((((bl + "_") + toString(eF)) + "_") + aI) + "_") + aN) + Y)), "No entry")
1513- if ((gB > gW))
1516+@Callable(aC)
1517+func stopLoss (bm,eH,aJ,aO) = valueOrElse(aG(), valueOrElse(aB(aC), {
1518+ let gD = getIntegerValue(aq, (aO + U))
1519+ let gY = valueOrErrorMessage(getInteger(this, (((((((bm + "_") + toString(eH)) + "_") + aJ) + "_") + aO) + Z)), "No entry")
1520+ if ((gD > gY))
15141521 then throw("Token price greater stop loss price")
15151522 else {
1516- let gX = eO(bl, aI, toString(eF), true)
1517- $Tuple2((gX._1 :+ DeleteEntry((((((((bl + "_") + toString(eF)) + "_") + aI) + "_") + aN) + Y))), gX._2)
1523+ let gZ = eQ(bm, aJ, toString(eH), true)
1524+ $Tuple2((gZ._1 :+ DeleteEntry((((((((bm + "_") + toString(eH)) + "_") + aJ) + "_") + aO) + Z))), gZ._2)
15181525 }
15191526 }))
15201527
15211528
15221529
1523-@Callable(aB)
1524-func capitalizeEx (aI,gY,gZ,ha,fN) = valueOrElse(aF(), valueOrElse(aA(aB), {
1525- let bK = getStringValue(this, (P + aI))
1526- let dy = valueOrElse(getInteger(this, (aI + R)), 0)
1527- let hb = fM(aI, bK, fN, ha, dy)
1528- if ((hb == hb))
1530+@Callable(aC)
1531+func capitalizeEx (aJ,ha,hb,hc,fP) = valueOrElse(aG(), valueOrElse(aB(aC), {
1532+ let bL = getStringValue(this, (P + aJ))
1533+ let dA = valueOrElse(getInteger(this, (aJ + S)), 0)
1534+ let hd = fO(aJ, bL, fP, hc, dA)
1535+ if ((hd == hd))
15291536 then {
1530- let fP = hb._2
1531- let hc = hb._1
1532- let dR = split(gY, "__")
1533- let hd = if ((dR[0] == "directSwopfiCPMM"))
1534- then dQ(dR, gZ)
1535- else if ((dR[0] == "routingSwopfi"))
1536- then dX(dR, gZ)
1537+ let fR = hd._2
1538+ let he = hd._1
1539+ let dT = split(ha, "__")
1540+ let hf = if ((dT[0] == "directSwopfiCPMM"))
1541+ then dS(dT, hb)
1542+ else if ((dT[0] == "routingSwopfi"))
1543+ then dZ(dT, hb)
15371544 else throw("Wrong route")
1538- if ((hd == hd))
1545+ if ((hf == hf))
15391546 then {
1540- let he = ((hc + dy) - ha)
1541- let hf = if ((he >= 0))
1542- then [IntegerEntry((aI + R), he)]
1547+ let hg = ((he + dA) - hc)
1548+ let hh = if ((hg >= 0))
1549+ then [IntegerEntry((aJ + S), hg)]
15431550 else nil
1544- (eh(aI, bK, gZ, hd) ++ hf)
1551+ (ej(aJ, bL, hb, hf) ++ hh)
15451552 }
15461553 else throw("Strict value is not equal to itself.")
15471554 }
15501557
15511558
15521559
1553-@Callable(aB)
1554-func capitalizeNoEx (aI,fN,hg) = valueOrElse(aF(), valueOrElse(aA(aB), {
1555- let bK = getStringValue(this, (P + aI))
1556- let hh = fM(aI, bK, fN, hg, 0)
1557- if ((hh == hh))
1560+@Callable(aC)
1561+func capitalizeNoEx (aJ,fP,hi) = valueOrElse(aG(), valueOrElse(aB(aC), {
1562+ let bL = getStringValue(this, (P + aJ))
1563+ let hj = fO(aJ, bL, fP, hi, 0)
1564+ if ((hj == hj))
15581565 then {
1559- let fP = hh._2
1560- let hc = hh._1
1561- eh(aI, bK, bs(fP), (hc + hg))
1566+ let fR = hj._2
1567+ let he = hj._1
1568+ ej(aJ, bL, bt(fR), (he + hi))
15621569 }
15631570 else throw("Strict value is not equal to itself.")
15641571 }))
15651572
15661573
15671574
1568-@Callable(aB)
1569-func initNewPool (aJ,hi,aS,hj,hk,hl,hm,hn,ho,hp) = valueOrElse(aF(), valueOrElse(aC(aB), if (if ((aJ != a))
1570- then (aJ != b)
1575+@Callable(aC)
1576+func initNewPool (aK,hk,aT,hl,hm,hn,ho,hp,hq,hr) = valueOrElse(aG(), valueOrElse(aD(aC), if (if ((aK != a))
1577+ then (aK != b)
15711578 else false)
15721579 then throw("Wrong type")
1573- else if (if ((hi != c))
1574- then (hi != d)
1580+ else if (if ((hk != c))
1581+ then (hk != d)
15751582 else false)
15761583 then throw("Wrong pool type")
15771584 else {
1578- let hq = bg(Address(fromBase58String(aS)), aJ)
1579- let aU = hq._1
1580- let aV = hq._2
1581- let do = hq._3
1582- let dp = hq._4
1583- let be = hq._5
1584- if ((0 > hj))
1585+ let hs = bh(Address(fromBase58String(aT)), aK)
1586+ let aV = hs._1
1587+ let aW = hs._2
1588+ let dq = hs._3
1589+ let dr = hs._4
1590+ let bf = hs._5
1591+ if ((0 > hl))
15851592 then throw("inFeeNoLoan must be greater than 0")
1586- else if ((0 > hk))
1593+ else if ((0 > hm))
15871594 then throw("inFeeLoan must be greater than 0")
1588- else if ((0 > hl))
1595+ else if ((0 > hn))
15891596 then throw("capFeeNoLoan must be greater than 0")
1590- else if ((0 > hm))
1597+ else if ((0 > ho))
15911598 then throw("capFeeWithLoan must be greater than 0")
1592- else if ((0 > hn))
1599+ else if ((0 > hp))
15931600 then throw("stoplossFeeNoLoan must be greater than 0")
1594- else if ((0 > ho))
1601+ else if ((0 > hq))
15951602 then throw("stoplossFeeWithLoan must be greater than 0")
1596- else [IntegerEntry((aS + H), hj), IntegerEntry((aS + I), hk), IntegerEntry((aS + J), hl), IntegerEntry((aS + K), hm), IntegerEntry((aS + L), hn), IntegerEntry((aS + M), ho), IntegerEntry((aS + E), 0), IntegerEntry((aS + F), 0), StringEntry((P + aS), aJ), StringEntry((be + Q), aS), BooleanEntry((aS + G), hp)]
1603+ else [IntegerEntry((aT + H), hl), IntegerEntry((aT + I), hm), IntegerEntry((aT + J), hn), IntegerEntry((aT + K), ho), IntegerEntry((aT + L), hp), IntegerEntry((aT + M), hq), IntegerEntry((aT + E), 0), IntegerEntry((aT + F), 0), StringEntry((P + aT), aK), StringEntry((aT + Q), hk), StringEntry((bf + R), aT), BooleanEntry((aT + G), hr)]
15971604 }))
15981605
15991606
16001607
1601-@Callable(aB)
1602-func updatePoolFees (aS,hj,hk,hl,hm,hn,ho) = valueOrElse(aF(), valueOrElse(aC(aB), if (!(isDefined(getString(this, (P + aS)))))
1603- then throw(("Can't find pool with addr " + aS))
1604- else if ((0 > hj))
1608+@Callable(aC)
1609+func updatePoolFees (aT,hl,hm,hn,ho,hp,hq) = valueOrElse(aG(), valueOrElse(aD(aC), if (!(isDefined(getString(this, (P + aT)))))
1610+ then throw(("Can't find pool with addr " + aT))
1611+ else if ((0 > hl))
16051612 then throw("inFeeNoLoan must be greater than 0")
1606- else if ((0 > hk))
1613+ else if ((0 > hm))
16071614 then throw("inFeeLoan must be greater than 0")
1608- else if ((0 > hl))
1615+ else if ((0 > hn))
16091616 then throw("capFeeNoLoan must be greater than 0")
1610- else if ((0 > hm))
1617+ else if ((0 > ho))
16111618 then throw("capFeeWithLoan must be greater than 0")
1612- else if ((0 > hn))
1619+ else if ((0 > hp))
16131620 then throw("stoplossFeeNoLoan must be greater than 0")
1614- else if ((0 > ho))
1621+ else if ((0 > hq))
16151622 then throw("stoplossFeeWithLoan must be greater than 0")
1616- else [IntegerEntry((aS + H), hj), IntegerEntry((aS + I), hk), IntegerEntry((aS + J), hl), IntegerEntry((aS + K), hm), IntegerEntry((aS + L), hn), IntegerEntry((aS + M), ho)]))
1623+ else [IntegerEntry((aT + H), hl), IntegerEntry((aT + I), hm), IntegerEntry((aT + J), hn), IntegerEntry((aT + K), ho), IntegerEntry((aT + L), hp), IntegerEntry((aT + M), hq)]))
16171624
16181625
16191626
1620-@Callable(aB)
1621-func activate () = valueOrElse(aC(aB), if (valueOrElse(getBoolean(this, U), true))
1627+@Callable(aC)
1628+func activate () = valueOrElse(aD(aC), if (valueOrElse(getBoolean(this, V), true))
16221629 then throw("dApp already active")
1623- else [BooleanEntry(U, true)])
1624-
1625-
1626-
1627-@Callable(aB)
1628-func shutdown () = valueOrElse(aC(aB), if (!(valueOrElse(getBoolean(this, U), true)))
1629- then throw("dApp already shutdown")
1630- else [BooleanEntry(U, false)])
1631-
1632-
1633-
1634-@Callable(aB)
1635-func activateForUsers () = valueOrElse(aC(aB), if (valueOrElse(getBoolean(this, V), true))
1636- then throw("dApp already active for users")
16371630 else [BooleanEntry(V, true)])
16381631
16391632
16401633
1641-@Callable(aB)
1642-func shutdownForUsers () = valueOrElse(aC(aB), if (!(valueOrElse(getBoolean(this, V), true)))
1643- then throw("dApp already shutdown for users")
1634+@Callable(aC)
1635+func shutdown () = valueOrElse(aD(aC), if (!(valueOrElse(getBoolean(this, V), true)))
1636+ then throw("dApp already shutdown")
16441637 else [BooleanEntry(V, false)])
16451638
16461639
16471640
1648-@Callable(aB)
1649-func activateSF () = valueOrElse(aC(aB), if (valueOrElse(getBoolean(this, (a + W)), true))
1650- then throw("SWOPFI already active")
1651- else [BooleanEntry((a + W), true)])
1641+@Callable(aC)
1642+func activateForUsers () = valueOrElse(aD(aC), if (valueOrElse(getBoolean(this, W), true))
1643+ then throw("dApp already active for users")
1644+ else [BooleanEntry(W, true)])
16521645
16531646
16541647
1655-@Callable(aB)
1656-func shutdownSF () = valueOrElse(aC(aB), if (!(valueOrElse(getBoolean(this, (a + W)), true)))
1657- then throw("SWOPFI already shutdown")
1658- else [BooleanEntry((a + W), false)])
1648+@Callable(aC)
1649+func shutdownForUsers () = valueOrElse(aD(aC), if (!(valueOrElse(getBoolean(this, W), true)))
1650+ then throw("dApp already shutdown for users")
1651+ else [BooleanEntry(W, false)])
16591652
16601653
16611654
1662-@Callable(aB)
1663-func activateWX () = valueOrElse(aC(aB), if (valueOrElse(getBoolean(this, (b + W)), true))
1664- then throw("WX already active")
1665- else [BooleanEntry((b + W), true)])
1655+@Callable(aC)
1656+func activateSF () = valueOrElse(aD(aC), if (valueOrElse(getBoolean(this, (a + X)), true))
1657+ then throw("SWOPFI already active")
1658+ else [BooleanEntry((a + X), true)])
16661659
16671660
16681661
1669-@Callable(aB)
1670-func shutdownWX () = valueOrElse(aC(aB), if (!(valueOrElse(getBoolean(this, (b + W)), true)))
1671- then throw("WX already shutdown")
1672- else [BooleanEntry((b + W), false)])
1662+@Callable(aC)
1663+func shutdownSF () = valueOrElse(aD(aC), if (!(valueOrElse(getBoolean(this, (a + X)), true)))
1664+ then throw("SWOPFI already shutdown")
1665+ else [BooleanEntry((a + X), false)])
16731666
16741667
16751668
1676-@Callable(aB)
1677-func activatePool (aI) = valueOrElse(aC(aB), if (!(isDefined(getString(this, (P + aI)))))
1678- then throw("Unknown pool")
1679- else if (valueOrElse(getBoolean(this, (aI + X)), true))
1680- then throw("Pool already active")
1681- else [BooleanEntry((aI + X), true)])
1669+@Callable(aC)
1670+func activateWX () = valueOrElse(aD(aC), if (valueOrElse(getBoolean(this, (b + X)), true))
1671+ then throw("WX already active")
1672+ else [BooleanEntry((b + X), true)])
16821673
16831674
16841675
1685-@Callable(aB)
1686-func shutdownPool (aI) = valueOrElse(aC(aB), if (!(isDefined(getString(this, (P + aI)))))
1676+@Callable(aC)
1677+func shutdownWX () = valueOrElse(aD(aC), if (!(valueOrElse(getBoolean(this, (b + X)), true)))
1678+ then throw("WX already shutdown")
1679+ else [BooleanEntry((b + X), false)])
1680+
1681+
1682+
1683+@Callable(aC)
1684+func activatePool (aJ) = valueOrElse(aD(aC), if (!(isDefined(getString(this, (P + aJ)))))
16871685 then throw("Unknown pool")
1688- else if (!(valueOrElse(getBoolean(this, (aI + X)), true)))
1686+ else if (valueOrElse(getBoolean(this, (aJ + Y)), true))
1687+ then throw("Pool already active")
1688+ else [BooleanEntry((aJ + Y), true)])
1689+
1690+
1691+
1692+@Callable(aC)
1693+func shutdownPool (aJ) = valueOrElse(aD(aC), if (!(isDefined(getString(this, (P + aJ)))))
1694+ then throw("Unknown pool")
1695+ else if (!(valueOrElse(getBoolean(this, (aJ + Y)), true)))
16891696 then throw("Pool already shutdown")
1690- else [BooleanEntry((aI + X), false)])
1697+ else [BooleanEntry((aJ + Y), false)])
16911698
16921699
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "SF"
55
66 let b = "WX"
77
88 let c = "cpmm"
99
1010 let d = "flat"
1111
1212 let e = "capNoLoan"
1313
1414 let f = "capLoan"
1515
1616 let g = "stopLossNoLoan"
1717
1818 let h = "stopLossLoan"
1919
2020 let i = "loan"
2121
2222 let j = "noLoan"
2323
2424 let k = "noFee"
2525
2626 let l = 100000000
2727
2828 let m = 10000000000
2929
3030 let n = toBigInt(10000000000000000)
3131
3232 let o = 1000000
3333
3434 let p = "A_asset_balance"
3535
3636 let q = "B_asset_balance"
3737
3838 let r = "A_asset_id"
3939
4040 let s = "B_asset_id"
4141
4242 let t = "share_asset_id"
4343
4444 let u = "share_asset_supply"
4545
4646 let v = "commission"
4747
4848 let w = "_userPosition"
4949
5050 let x = "_userPositionPool"
5151
5252 let y = "_userPositionBorrowAmount"
5353
5454 let z = "_userPositionBorrowAssetId"
5555
5656 let A = "_userPositionNumber"
5757
5858 let B = "_userPositionInterest"
5959
6060 let C = "_poolTotal"
6161
6262 let D = "_poolTotalLoan"
6363
6464 let E = "_poolInterestLoan"
6565
6666 let F = "_poolInterestNoLoan"
6767
6868 let G = "_poolCanBorrow"
6969
7070 let H = "_axlyFeeNoLoan"
7171
7272 let I = "_axlyFeeWithLoan"
7373
7474 let J = "_axlyFeeCapNoLoan"
7575
7676 let K = "_axlyFeeCapWithLoan"
7777
7878 let L = "_axlyFeeStoplossWithLoan"
7979
8080 let M = "_axlyFeeStoplossNoLoan"
8181
8282 let N = "_request_id"
8383
8484 let O = "requests_iter"
8585
8686 let P = "pool_"
8787
88-let Q = "_poolShareId"
88+let Q = "_poolType"
8989
90-let R = "_poolCapChange"
90+let R = "_poolShareId"
9191
92-let S = "last_price"
92+let S = "_poolCapChange"
9393
94-let T = "_twap5B"
94+let T = "last_price"
9595
96-let U = "active"
96+let U = "_twap5B"
9797
98-let V = "activeUsers"
98+let V = "active"
9999
100-let W = "_active"
100+let W = "activeUsers"
101101
102-let X = "_activePool"
102+let X = "_active"
103103
104-let Y = "_stopLoss"
104+let Y = "_activePool"
105105
106-let Z = "_fallbackExchangeSwopfi"
106+let Z = "_stopLoss"
107107
108-let aa = "axly_money_box"
108+let aa = "_fallbackExchangeSwopfi"
109109
110-let ab = "swopfi_farming_addr"
110+let ab = "axly_money_box"
111111
112-let ac = "lend_service_addr"
112+let ac = "swopfi_farming_addr"
113113
114-let ad = "admin_call_pub_key"
114+let ad = "lend_service_addr"
115115
116-let ae = "price_oracle"
116+let ae = "admin_call_pub_key"
117117
118-let af = "exchange_contract"
118+let af = "price_oracle"
119119
120-let ag = "wx_swap_contract"
120+let ag = "exchange_contract"
121121
122-let ah = "swop_id"
122+let ah = "wx_swap_contract"
123123
124-let ai = "wx_id"
124+let ai = "swop_id"
125125
126-let aj = "group1_admin1_pub_key"
126+let aj = "wx_id"
127127
128-let ak = "group1_admin2_pub_key"
128+let ak = "group1_admin1_pub_key"
129129
130-let al = "group2_admin1_pub_key"
130+let al = "group1_admin2_pub_key"
131131
132-let am = "group2_admin2_pub_key"
132+let am = "group2_admin1_pub_key"
133133
134-let an = Address(fromBase58String(valueOrErrorMessage(getString(this, aa), "No axly moneyBox address")))
134+let an = "group2_admin2_pub_key"
135135
136-let ao = Address(fromBase58String(valueOrErrorMessage(getString(this, af), "No exchange contract address")))
136+let ao = Address(fromBase58String(valueOrErrorMessage(getString(this, ab), "No axly moneyBox address")))
137137
138-let ap = Address(fromBase58String(valueOrErrorMessage(getString(this, ae), "No price oracle address")))
138+let ap = Address(fromBase58String(valueOrErrorMessage(getString(this, ag), "No exchange contract address")))
139139
140-let aq = Address(fromBase58String(valueOrErrorMessage(getString(this, ag), "No wx swap address")))
140+let aq = Address(fromBase58String(valueOrErrorMessage(getString(this, af), "No price oracle address")))
141141
142-let ar = fromBase58String(valueOrErrorMessage(getString(this, ah), "No swop id"))
142+let ar = Address(fromBase58String(valueOrErrorMessage(getString(this, ah), "No wx swap address")))
143143
144-let as = fromBase58String(valueOrErrorMessage(getString(this, ai), "No wx id"))
144+let as = fromBase58String(valueOrErrorMessage(getString(this, ai), "No swop id"))
145145
146-let at = fromBase58String(valueOrErrorMessage(getString(this, aj), "Can't get kGroup1Admin1PK"))
146+let at = fromBase58String(valueOrErrorMessage(getString(this, aj), "No wx id"))
147147
148-let au = fromBase58String(valueOrErrorMessage(getString(this, ak), "Can't get kGroup1Admin2PK"))
148+let au = fromBase58String(valueOrErrorMessage(getString(this, ak), "Can't get kGroup1Admin1PK"))
149149
150-let av = fromBase58String(valueOrErrorMessage(getString(this, al), "Can't get kGroup2Admin1PK"))
150+let av = fromBase58String(valueOrErrorMessage(getString(this, al), "Can't get kGroup1Admin2PK"))
151151
152152 let aw = fromBase58String(valueOrErrorMessage(getString(this, am), "Can't get kGroup2Admin1PK"))
153153
154-let ax = fromBase58String(valueOrErrorMessage(getString(this, ad), "Can't get operatorPK"))
154+let ax = fromBase58String(valueOrErrorMessage(getString(this, an), "Can't get kGroup2Admin1PK"))
155155
156-func ay () = throw("Wrong pool type")
156+let ay = fromBase58String(valueOrErrorMessage(getString(this, ae), "Can't get operatorPK"))
157+
158+func az () = throw("Wrong pool type")
157159
158160
159-func az () = Address(fromBase58String(valueOrErrorMessage(getString(this, ac), "Can't get lend service addr")))
161+func aA () = Address(fromBase58String(valueOrErrorMessage(getString(this, ad), "Can't get lend service addr")))
160162
161163
162-func aA (aB) = if ((aB.callerPublicKey == ax))
164+func aB (aC) = if ((aC.callerPublicKey == ay))
163165 then unit
164166 else throw("Only operator can call this function")
165167
166168
167-func aC (aB) = if (if ((aB.callerPublicKey == at))
169+func aD (aC) = if (if ((aC.callerPublicKey == au))
168170 then true
169- else (aB.callerPublicKey == au))
171+ else (aC.callerPublicKey == av))
170172 then unit
171173 else throw("Only admin group1 can call this function")
172174
173175
174-func aD (aB) = if ((aB.caller == this))
176+func aE (aC) = if ((aC.caller == this))
175177 then unit
176178 else throw("Only contract itself can call this function")
177179
178180
179-func aE (aB) = if ((aB.caller == az()))
181+func aF (aC) = if ((aC.caller == aA()))
180182 then unit
181183 else throw("Only land contract can call this function")
182184
183185
184-func aF () = if ((valueOrElse(getBoolean(this, U), true) == true))
186+func aG () = if ((valueOrElse(getBoolean(this, V), true) == true))
185187 then unit
186188 else throw("DApp is inactive at this moment")
187189
188190
189-func aG () = if (if (valueOrElse(getBoolean(this, U), true))
190- then (valueOrElse(getBoolean(this, V), true) == true)
191+func aH () = if (if (valueOrElse(getBoolean(this, V), true))
192+ then (valueOrElse(getBoolean(this, W), true) == true)
191193 else false)
192194 then unit
193195 else throw("DApp is inactive for users at this moment")
194196
195197
196-func aH (aI,aJ) = {
197- let aK = valueOrElse(getBoolean(this, (aJ + W)), true)
198- let aL = valueOrElse(getBoolean(this, (aI + X)), true)
199- if (if (aK)
200- then aL
198+func aI (aJ,aK) = {
199+ let aL = valueOrElse(getBoolean(this, (aK + X)), true)
200+ let aM = valueOrElse(getBoolean(this, (aJ + Y)), true)
201+ if (if (aL)
202+ then aM
201203 else false)
202204 then true
203205 else false
204206 }
205207
206208
207-func aM (aN) = {
208- let aO = aN
209- if ($isInstanceOf(aO, "ByteVector"))
209+func aN (aO) = {
210+ let aP = aO
211+ if ($isInstanceOf(aP, "ByteVector"))
210212 then {
211- let aP = aO
212- assetBalance(this, aP)
213+ let aQ = aP
214+ assetBalance(this, aQ)
213215 }
214- else if ($isInstanceOf(aO, "Unit"))
216+ else if ($isInstanceOf(aP, "Unit"))
215217 then {
216- let aQ = aO
218+ let aR = aP
217219 wavesBalance(this).available
218220 }
219221 else throw("Match error")
220222 }
221223
222224
223-func aR (aS) = $Tuple2(valueOrErrorMessage(getInteger(aS, p), "Can't get pool A asset balance"), valueOrErrorMessage(getInteger(aS, q), "Can't get pool B asset balance"))
225+func aS (aT) = $Tuple2(valueOrErrorMessage(getInteger(aT, p), "Can't get pool A asset balance"), valueOrErrorMessage(getInteger(aT, q), "Can't get pool B asset balance"))
224226
225227
226-func aT (aS,aU,aV) = $Tuple2({
227- let aW = invoke(aS, "getAccBalanceWrapperREADONLY", [aU], nil)
228- if ($isInstanceOf(aW, "Int"))
229- then aW
230- else throw(($getType(aW) + " couldn't be cast to Int"))
228+func aU (aT,aV,aW) = $Tuple2({
229+ let aX = invoke(aT, "getAccBalanceWrapperREADONLY", [aV], nil)
230+ if ($isInstanceOf(aX, "Int"))
231+ then aX
232+ else throw(($getType(aX) + " couldn't be cast to Int"))
231233 }, {
232- let aW = invoke(aS, "getAccBalanceWrapperREADONLY", [aV], nil)
233- if ($isInstanceOf(aW, "Int"))
234- then aW
235- else throw(($getType(aW) + " couldn't be cast to Int"))
234+ let aX = invoke(aT, "getAccBalanceWrapperREADONLY", [aW], nil)
235+ if ($isInstanceOf(aX, "Int"))
236+ then aX
237+ else throw(($getType(aX) + " couldn't be cast to Int"))
236238 })
237239
238240
239-func aX (aS,aJ,aU,aV) = if ((aJ == a))
240- then aR(aS)
241- else if ((aJ == b))
242- then aT(aS, aU, aV)
243- else ay()
241+func aY (aT,aK,aV,aW) = if ((aK == a))
242+ then aS(aT)
243+ else if ((aK == b))
244+ then aU(aT, aV, aW)
245+ else az()
244246
245247
246-func aY (aS) = {
247- let aZ = aR(aS)
248- if ((aZ == aZ))
248+func aZ (aT) = {
249+ let ba = aS(aT)
250+ if ((ba == ba))
249251 then {
250- let ba = aZ._2
251- let bb = aZ._1
252- $Tuple5(valueOrErrorMessage(getString(aS, r), "Can't get pool A asset id"), valueOrErrorMessage(getString(aS, s), "Can't get pool B asset id"), bb, ba, valueOrErrorMessage(getString(aS, t), "Can't get share asset id"))
252+ let bb = ba._2
253+ let bc = ba._1
254+ $Tuple5(valueOrErrorMessage(getString(aT, r), "Can't get pool A asset id"), valueOrErrorMessage(getString(aT, s), "Can't get pool B asset id"), bc, bb, valueOrErrorMessage(getString(aT, t), "Can't get share asset id"))
253255 }
254256 else throw("Strict value is not equal to itself.")
255257 }
256258
257259
258-func bc (aS) = {
259- let bd = {
260- let aW = invoke(aS, "getPoolConfigWrapperREADONLY", nil, nil)
261- if ($isInstanceOf(aW, "List[Any]"))
262- then aW
263- else throw(($getType(aW) + " couldn't be cast to List[Any]"))
260+func bd (aT) = {
261+ let be = {
262+ let aX = invoke(aT, "getPoolConfigWrapperREADONLY", nil, nil)
263+ if ($isInstanceOf(aX, "List[Any]"))
264+ then aX
265+ else throw(($getType(aX) + " couldn't be cast to List[Any]"))
264266 }
265- if ((bd == bd))
267+ if ((be == be))
266268 then {
267- let aU = valueOrErrorMessage({
268- let aW = bd[4]
269- if ($isInstanceOf(aW, "String"))
270- then aW
269+ let aV = valueOrErrorMessage({
270+ let aX = be[4]
271+ if ($isInstanceOf(aX, "String"))
272+ then aX
271273 else unit
272274 }, "Can't get pool A asset id")
273- let aV = valueOrErrorMessage({
274- let aW = bd[5]
275- if ($isInstanceOf(aW, "String"))
276- then aW
275+ let aW = valueOrErrorMessage({
276+ let aX = be[5]
277+ if ($isInstanceOf(aX, "String"))
278+ then aX
277279 else unit
278280 }, "Can't get pool B asset id")
279- let be = valueOrErrorMessage({
280- let aW = bd[3]
281- if ($isInstanceOf(aW, "String"))
282- then aW
281+ let bf = valueOrErrorMessage({
282+ let aX = be[3]
283+ if ($isInstanceOf(aX, "String"))
284+ then aX
283285 else unit
284286 }, "Can't get pool LP asset id")
285- let bf = aT(aS, aU, aV)
286- if ((bf == bf))
287+ let bg = aU(aT, aV, aW)
288+ if ((bg == bg))
287289 then {
288- let ba = bf._2
289- let bb = bf._1
290- $Tuple5(aU, aV, bb, ba, be)
290+ let bb = bg._2
291+ let bc = bg._1
292+ $Tuple5(aV, aW, bc, bb, bf)
291293 }
292294 else throw("Strict value is not equal to itself.")
293295 }
294296 else throw("Strict value is not equal to itself.")
295297 }
296298
297299
298-func bg (aS,aJ) = if ((aJ == a))
299- then aY(aS)
300- else if ((aJ == b))
301- then bc(aS)
302- else ay()
300+func bh (aT,aK) = if ((aK == a))
301+ then aZ(aT)
302+ else if ((aK == b))
303+ then bd(aT)
304+ else az()
303305
304306
305-func bh (aS,aJ,be) = if ((aJ == a))
306- then valueOrErrorMessage(getInteger(aS, u), "Can't get share asset supply")
307- else if ((aJ == b))
308- then valueOrErrorMessage(assetInfo(fromBase58String(be)), "Wrong ShareId").quantity
309- else ay()
307+func bi (aT,aK,bf) = if ((aK == a))
308+ then valueOrErrorMessage(getInteger(aT, u), "Can't get share asset supply")
309+ else if ((aK == b))
310+ then valueOrErrorMessage(assetInfo(fromBase58String(bf)), "Wrong ShareId").quantity
311+ else az()
310312
311313
312-func bi (aI) = valueOrElse(getInteger(this, (aI + C)), 0)
314+func bj (aJ) = valueOrElse(getInteger(this, (aJ + C)), 0)
313315
314316
315-func bj (aI) = valueOrElse(getInteger(this, (aI + D)), 0)
317+func bk (aJ) = valueOrElse(getInteger(this, (aJ + D)), 0)
316318
317319
318-func bk (bl) = (valueOrElse(getInteger(this, (bl + A)), 0) + 1)
320+func bl (bm) = (valueOrElse(getInteger(this, (bm + A)), 0) + 1)
319321
320322
321-func bm (aI,bn) = if ((bn == f))
322- then getIntegerValue(this, (aI + K))
323- else if ((bn == e))
324- then getIntegerValue(this, (aI + J))
325- else if ((bn == i))
326- then getIntegerValue(this, (aI + I))
327- else if ((bn == j))
328- then getIntegerValue(this, (aI + H))
329- else if ((bn == k))
323+func bn (aJ,bo) = if ((bo == f))
324+ then getIntegerValue(this, (aJ + K))
325+ else if ((bo == e))
326+ then getIntegerValue(this, (aJ + J))
327+ else if ((bo == i))
328+ then getIntegerValue(this, (aJ + I))
329+ else if ((bo == j))
330+ then getIntegerValue(this, (aJ + H))
331+ else if ((bo == k))
330332 then 0
331333 else throw("Wrong fee type")
332334
333335
334-func bo () = Address(fromBase58String(valueOrErrorMessage(getString(this, ab), "Can't get swopfi farming addr")))
336+func bp () = Address(fromBase58String(valueOrErrorMessage(getString(this, ac), "Can't get swopfi farming addr")))
335337
336338
337-func bp (aS) = {
338- let bq = Address(fromBase58String(valueOrErrorMessage(getString(aS, "%s__factoryContract"), "Can't get WX factory contract addr")))
339- let br = split(valueOrErrorMessage(getString(bq, "%s__factoryConfig"), "Can't get WX factory cfg"), "__")
340- Address(fromBase58String(br[1]))
339+func bq (aT) = {
340+ let br = Address(fromBase58String(valueOrErrorMessage(getString(aT, "%s__factoryContract"), "Can't get WX factory contract addr")))
341+ let bs = split(valueOrErrorMessage(getString(br, "%s__factoryConfig"), "Can't get WX factory cfg"), "__")
342+ Address(fromBase58String(bs[1]))
341343 }
342344
343345
344-func bs (aN) = {
345- let aO = aN
346- if ($isInstanceOf(aO, "ByteVector"))
346+func bt (aO) = {
347+ let aP = aO
348+ if ($isInstanceOf(aP, "ByteVector"))
347349 then {
348- let aP = aO
349- toBase58String(aP)
350+ let aQ = aP
351+ toBase58String(aQ)
350352 }
351- else if ($isInstanceOf(aO, "Unit"))
353+ else if ($isInstanceOf(aP, "Unit"))
352354 then {
353- let aQ = aO
355+ let aR = aP
354356 "WAVES"
355357 }
356358 else throw("Not Asset id")
357359 }
358360
359361
360-func bt (aN) = if ((aN == "WAVES"))
362+func bu (aO) = if ((aO == "WAVES"))
361363 then unit
362- else fromBase58String(aN)
364+ else fromBase58String(aO)
363365
364366
365-func bu (aN) = if ((aN == "WAVES"))
367+func bv (aO) = if ((aO == "WAVES"))
366368 then 8
367369 else {
368- let aO = assetInfo(fromBase58String(aN))
369- if ($isInstanceOf(aO, "Asset"))
370+ let aP = assetInfo(fromBase58String(aO))
371+ if ($isInstanceOf(aP, "Asset"))
370372 then {
371- let bv = aO
372- bv.decimals
373+ let bw = aP
374+ bw.decimals
373375 }
374376 else throw("Can't find asset")
375377 }
376378
377379
378-func bw (aN) = pow(10, 0, bu(aN), 0, 0, DOWN)
380+func bx (aO) = pow(10, 0, bv(aO), 0, 0, DOWN)
379381
380382
381-func bx (by) = {
382- func bz (bA,aN) = {
383- let bB = valueOrElse(getInteger(ap, (aN + T)), -1)
384- (bA :+ bB)
383+func by (bz) = {
384+ func bA (bB,aO) = {
385+ let bC = valueOrElse(getInteger(aq, (aO + U)), -1)
386+ (bB :+ bC)
385387 }
386388
387- let bC = by
388- let bD = size(bC)
389- let bE = nil
390- func bF (bG,bH) = if ((bH >= bD))
391- then bG
392- else bz(bG, bC[bH])
389+ let bD = bz
390+ let bE = size(bD)
391+ let bF = nil
392+ func bG (bH,bI) = if ((bI >= bE))
393+ then bH
394+ else bA(bH, bD[bI])
393395
394- func bI (bG,bH) = if ((bH >= bD))
395- then bG
396+ func bJ (bH,bI) = if ((bI >= bE))
397+ then bH
396398 else throw("List size exceeds 50")
397399
398- bI(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bE, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
400+ bJ(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bF, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
399401 }
400402
401403
402-func bJ (be) = {
403- let aI = valueOrErrorMessage(getString(this, (be + Q)), "Can't find pool addr by share id")
404- let aS = Address(fromBase58String(aI))
405- let bK = valueOrErrorMessage(getString(this, (P + aI)), "Pool is not inited")
406- let bL = bg(aS, bK)
407- let aU = bL._1
408- let aV = bL._2
409- let bM = bL._3
410- let bN = bL._4
411- let bO = bx([aU, aV])
412- let bP = bO[0]
413- let bQ = bO[1]
414- if (if ((0 > bP))
404+func bK (bf) = {
405+ let aJ = valueOrErrorMessage(getString(this, (bf + R)), "Can't find pool addr by share id")
406+ let aT = Address(fromBase58String(aJ))
407+ let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Pool is not inited")
408+ let bM = bh(aT, bL)
409+ let aV = bM._1
410+ let aW = bM._2
411+ let bN = bM._3
412+ let bO = bM._4
413+ let bP = by([aV, aW])
414+ let bQ = bP[0]
415+ let bR = bP[1]
416+ if (if ((0 > bQ))
415417 then true
416- else (0 > bQ))
418+ else (0 > bR))
417419 then -1
418420 else {
419- let bR = bh(aS, bK, be)
420- let bS = pow(10, 0, bu(aU), 0, 0, DOWN)
421- let bT = pow(10, 0, bu(aV), 0, 0, DOWN)
422- let bU = pow(10, 0, bu(be), 0, 0, DOWN)
423- let bV = (fraction(bM, bP, bS) + fraction(bN, bQ, bT))
424- fraction(bV, bU, bR)
421+ let bS = bi(aT, bL, bf)
422+ let bT = pow(10, 0, bv(aV), 0, 0, DOWN)
423+ let bU = pow(10, 0, bv(aW), 0, 0, DOWN)
424+ let bV = pow(10, 0, bv(bf), 0, 0, DOWN)
425+ let bW = (fraction(bN, bQ, bT) + fraction(bO, bR, bU))
426+ fraction(bW, bV, bS)
425427 }
426428 }
427429
428430
429-func bW (bX) = {
430- func bz (bA,be) = (bA :+ bJ(be))
431+func bX (bY) = {
432+ func bA (bB,bf) = (bB :+ bK(bf))
431433
432- let bC = bX
433- let bD = size(bC)
434- let bE = nil
435- func bF (bG,bH) = if ((bH >= bD))
436- then bG
437- else bz(bG, bC[bH])
434+ let bD = bY
435+ let bE = size(bD)
436+ let bF = nil
437+ func bG (bH,bI) = if ((bI >= bE))
438+ then bH
439+ else bA(bH, bD[bI])
438440
439- func bI (bG,bH) = if ((bH >= bD))
440- then bG
441+ func bJ (bH,bI) = if ((bI >= bE))
442+ then bH
441443 else throw("List size exceeds 20")
442444
443- bI(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bE, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
445+ bJ(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bF, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
444446 }
445447
446448
447-func bY (aU,aV,be,bZ) = {
448- let ca = bx([aU, aV])
449- let cb = bJ(be)
450- let bO = ([toString(ca[0]), toString(ca[1]), toString(cb)] ++ bZ)
451-[StringEntry(S, makeString(bO, ","))]
449+func bZ (aV,aW,bf,ca) = {
450+ let cb = by([aV, aW])
451+ let cc = bK(bf)
452+ let bP = ([toString(cb[0]), toString(cb[1]), toString(cc)] ++ ca)
453+[StringEntry(T, makeString(bP, ","))]
452454 }
453455
454456
455-func cc (bK,aS,cd,aU,ce,aV,bb,ba) = if ((bK == a))
457+func cd (bL,aT,ce,aV,cf,aW,bc,bb) = if ((bL == a))
456458 then {
457- let cf = {
458- let aW = invoke(aS, "callFunction", ["calcLPReplenishTwoTokensREADONLY", [toString(cd), toString(ce)]], nil)
459- if ($isInstanceOf(aW, "List[Any]"))
460- then aW
461- else throw(($getType(aW) + " couldn't be cast to List[Any]"))
459+ let cg = {
460+ let aX = invoke(aT, "callFunction", ["calcLPReplenishTwoTokensREADONLY", [toString(ce), toString(cf)]], nil)
461+ if ($isInstanceOf(aX, "List[Any]"))
462+ then aX
463+ else throw(($getType(aX) + " couldn't be cast to List[Any]"))
462464 }
463- if ((cf == cf))
465+ if ((cg == cg))
464466 then $Tuple5({
465- let aW = cf[3]
466- if ($isInstanceOf(aW, "Int"))
467- then aW
468- else throw(($getType(aW) + " couldn't be cast to Int"))
467+ let aX = cg[3]
468+ if ($isInstanceOf(aX, "Int"))
469+ then aX
470+ else throw(($getType(aX) + " couldn't be cast to Int"))
469471 }, {
470- let aW = cf[4]
471- if ($isInstanceOf(aW, "Int"))
472- then aW
473- else throw(($getType(aW) + " couldn't be cast to Int"))
472+ let aX = cg[4]
473+ if ($isInstanceOf(aX, "Int"))
474+ then aX
475+ else throw(($getType(aX) + " couldn't be cast to Int"))
474476 }, {
475- let aW = cf[1]
476- if ($isInstanceOf(aW, "Int"))
477- then aW
478- else throw(($getType(aW) + " couldn't be cast to Int"))
479- }, bs(cf[2]), {
480- let aW = cf[0]
481- if ($isInstanceOf(aW, "Int"))
482- then aW
483- else throw(($getType(aW) + " couldn't be cast to Int"))
477+ let aX = cg[1]
478+ if ($isInstanceOf(aX, "Int"))
479+ then aX
480+ else throw(($getType(aX) + " couldn't be cast to Int"))
481+ }, bt(cg[2]), {
482+ let aX = cg[0]
483+ if ($isInstanceOf(aX, "Int"))
484+ then aX
485+ else throw(($getType(aX) + " couldn't be cast to Int"))
484486 })
485487 else throw("Strict value is not equal to itself.")
486488 }
487- else if ((bK == b))
489+ else if ((bL == b))
488490 then {
489- let cg = $Tuple2(split({
490- let aW = invoke(aS, "evaluatePutByAmountAssetREADONLY", [cd], nil)
491- if ($isInstanceOf(aW, "String"))
492- then aW
493- else throw(($getType(aW) + " couldn't be cast to String"))
491+ let ch = $Tuple2(split({
492+ let aX = invoke(aT, "evaluatePutByAmountAssetREADONLY", [ce], nil)
493+ if ($isInstanceOf(aX, "String"))
494+ then aX
495+ else throw(($getType(aX) + " couldn't be cast to String"))
494496 }, "__"), split({
495- let aW = invoke(aS, "evaluatePutByPriceAssetREADONLY", [ce], nil)
496- if ($isInstanceOf(aW, "String"))
497- then aW
498- else throw(($getType(aW) + " couldn't be cast to String"))
497+ let aX = invoke(aT, "evaluatePutByPriceAssetREADONLY", [cf], nil)
498+ if ($isInstanceOf(aX, "String"))
499+ then aX
500+ else throw(($getType(aX) + " couldn't be cast to String"))
499501 }, "__"))
500- if ((cg == cg))
502+ if ((ch == ch))
501503 then {
502- let ch = cg._2
503- let ci = cg._1
504- let cj = parseIntValue(ci[1])
505- let ck = parseIntValue(ch[1])
506- if ((ck > cj))
504+ let ci = ch._2
505+ let cj = ch._1
506+ let ck = parseIntValue(cj[1])
507+ let cl = parseIntValue(ci[1])
508+ if ((cl > ck))
507509 then {
508- let cl = parseIntValue(ci[8])
509- $Tuple5(cd, cl, (ce - cl), aV, ck)
510+ let cm = parseIntValue(cj[8])
511+ $Tuple5(ce, cm, (cf - cm), aW, cl)
510512 }
511513 else {
512- let cl = parseIntValue(ch[7])
513- $Tuple5(cl, ce, (cd - cl), aU, cj)
514+ let cm = parseIntValue(ci[7])
515+ $Tuple5(cm, cf, (ce - cm), aV, ck)
514516 }
515517 }
516518 else throw("Strict value is not equal to itself.")
517519 }
518- else ay()
520+ else az()
519521
520522
521-func cm (aS,bK,cd,aU,ce,aV) = {
522- let cn = [AttachedPayment(bt(aU), cd), AttachedPayment(bt(aV), ce)]
523- if ((bK == a))
524- then invoke(aS, "callFunction", ["replenishWithTwoTokens", ["false", "0"]], cn)
525- else if ((bK == b))
526- then invoke(aS, "put", [1000000, false], cn)
527- else ay()
523+func cn (aT,bL,ce,aV,cf,aW) = {
524+ let co = [AttachedPayment(bu(aV), ce), AttachedPayment(bu(aW), cf)]
525+ if ((bL == a))
526+ then invoke(aT, "callFunction", ["replenishWithTwoTokens", ["false", "0"]], co)
527+ else if ((bL == b))
528+ then invoke(aT, "put", [1000000, false], co)
529+ else az()
528530 }
529531
530532
531-func co (aS,bK,cl,cp) = {
532- let cn = [AttachedPayment(bt(cp), cl)]
533- if ((bK == a))
534- then invoke(aS, "callFunction", ["replenishWithOneToken", ["0", "false", "0"]], cn)
535- else if ((bK == b))
536- then invoke(aS, "putOneTkn", [0, false], cn)
537- else ay()
533+func cp (aT,bL,cm,cq) = {
534+ let co = [AttachedPayment(bu(cq), cm)]
535+ if ((bL == a))
536+ then invoke(aT, "callFunction", ["replenishWithOneToken", ["0", "false", "0"]], co)
537+ else if ((bL == b))
538+ then {
539+ let cr = if ((valueOrElse(getString(this, (toString(aT) + Q)), "cpmm") == d))
540+ then "putOneTknV2"
541+ else "putOneTkn"
542+ invoke(aT, cr, [0, false], co)
543+ }
544+ else az()
538545 }
539546
540547
541-func cq (aI,bK,be,cr) = {
542- let cn = [AttachedPayment(fromBase58String(be), cr)]
543- if ((bK == a))
544- then invoke(bo(), "lockShareTokens", [aI, 0], cn)
545- else if ((bK == b))
546- then invoke(bp(addressFromStringValue(aI)), "stake", nil, cn)
547- else ay()
548+func cs (aJ,bL,bf,ct) = {
549+ let co = [AttachedPayment(fromBase58String(bf), ct)]
550+ if ((bL == a))
551+ then invoke(bp(), "lockShareTokens", [aJ, 0], co)
552+ else if ((bL == b))
553+ then invoke(bq(addressFromStringValue(aJ)), "stake", nil, co)
554+ else az()
548555 }
549556
550557
551-func cs (aI,bK,be,cr) = {
552- let ct = if ((bK == a))
553- then $Tuple3(bo(), "withdrawShareTokens", [aI, cr])
554- else if ((bK == b))
555- then $Tuple3(bp(Address(fromBase58String(aI))), "unstake", [be, cr])
556- else ay()
557- let cu = ct._1
558- let cv = ct._2
559- let cw = ct._3
560- let cx = invoke(cu, cv, cw, nil)
561- if ((cx == cx))
562- then cr
558+func cu (aJ,bL,bf,ct) = {
559+ let cv = if ((bL == a))
560+ then $Tuple3(bp(), "withdrawShareTokens", [aJ, ct])
561+ else if ((bL == b))
562+ then $Tuple3(bq(Address(fromBase58String(aJ))), "unstake", [bf, ct])
563+ else az()
564+ let cw = cv._1
565+ let cx = cv._2
566+ let cy = cv._3
567+ let cz = invoke(cw, cx, cy, nil)
568+ if ((cz == cz))
569+ then ct
563570 else throw("Strict value is not equal to itself.")
564571 }
565572
566573
567-func cy (aI,cz,cA,bb,ba,cB,cC) = {
568- let aS = Address(fromBase58String(aI))
569- let cD = 1000000
570- let cE = getIntegerValue(aS, v)
571- let cF = fraction(cB, cD, (cD - cE), CEILING)
572- let cG = if ((cC == cz))
574+func cA (aJ,cB,cC,bc,bb,cD,cE) = {
575+ let aT = Address(fromBase58String(aJ))
576+ let cF = 1000000
577+ let cG = getIntegerValue(aT, v)
578+ let cH = fraction(cD, cF, (cF - cG), CEILING)
579+ let cI = if ((cE == cB))
573580 then {
574- let cH = fraction(cF, ba, (bb - cF), CEILING)
575- $Tuple2(cH, cA)
581+ let cJ = fraction(cH, bb, (bc - cH), CEILING)
582+ $Tuple2(cJ, cC)
576583 }
577584 else {
578- let cH = fraction(cF, bb, (ba - cF), CEILING)
579- $Tuple2(cH, cz)
585+ let cJ = fraction(cH, bc, (bb - cH), CEILING)
586+ $Tuple2(cJ, cB)
580587 }
581- let cH = cG._1
582- let cI = cG._2
583- $Tuple2(cI, cH)
588+ let cJ = cI._1
589+ let cK = cI._2
590+ $Tuple2(cK, cJ)
584591 }
585592
586593
587-func cJ (aI) = {
588- let aS = addressFromStringValue(aI)
589- let bq = addressFromStringValue(valueOrErrorMessage(getString(aS, "%s__factoryContract"), "Can't get WX factory contract addr"))
590- let cK = value(getInteger(aq, "%s__poolFee"))
591- let cL = value(getInteger(aq, "%s__protocolFee"))
592- let aO = invoke(bq, "getSwapFeeREADONLY", [toString(aS)], nil)
593- if ($isInstanceOf(aO, "(Int, Int)"))
594+func cL (aJ) = {
595+ let aT = addressFromStringValue(aJ)
596+ let br = addressFromStringValue(valueOrErrorMessage(getString(aT, "%s__factoryContract"), "Can't get WX factory contract addr"))
597+ let cM = value(getInteger(ar, "%s__poolFee"))
598+ let cN = value(getInteger(ar, "%s__protocolFee"))
599+ let aP = invoke(br, "getSwapFeeREADONLY", [toString(aT)], nil)
600+ if ($isInstanceOf(aP, "(Int, Int)"))
594601 then {
595- let cM = aO
596- $Tuple2(cM._1, cM._2)
602+ let cO = aP
603+ $Tuple2(cO._1, cO._2)
597604 }
598- else $Tuple2(cK, cL)
605+ else $Tuple2(cM, cN)
599606 }
600607
601608
602-func cN (aI,cz,cA,bb,ba,cB,cC) = {
603- let cO = cJ(aI)
604- let cP = cO._1
605- let cQ = cO._2
606- let cR = toBigInt(100000000)
607- let cS = if ((cC == cz))
609+func cP (aJ,cB,cC,bc,bb,cD,cE) = {
610+ let cQ = cL(aJ)
611+ let cR = cQ._1
612+ let cS = cQ._2
613+ let cT = toBigInt(100000000)
614+ let cU = if ((cE == cB))
608615 then {
609- let cH = fraction(cB, ba, (bb - cB))
610- $Tuple2(cH, cA)
616+ let cJ = fraction(cD, bb, (bc - cD))
617+ $Tuple2(cJ, cC)
611618 }
612619 else {
613- let cH = fraction(cB, bb, (ba - cB))
614- $Tuple2(cH, cz)
620+ let cJ = fraction(cD, bc, (bb - cD))
621+ $Tuple2(cJ, cB)
615622 }
616- let cH = cS._1
617- let cI = cS._2
618- let cT = toInt(fraction(toBigInt(cH), cR, (cR - toBigInt((cQ + cP))), CEILING))
619- $Tuple2(cI, cT)
623+ let cJ = cU._1
624+ let cK = cU._2
625+ let cV = toInt(fraction(toBigInt(cJ), cT, (cT - toBigInt((cS + cR))), CEILING))
626+ $Tuple2(cK, cV)
620627 }
621628
622629
623-func cU (bK,aI,cz,cA,bb,ba,cB,cC) = {
624- let cV = valueOrElse(getString(this, (aI + Z)), "")
625- if (if ((bK == a))
630+func cW (bL,aJ,cB,cC,bc,bb,cD,cE) = {
631+ let cX = valueOrElse(getString(this, (aJ + aa)), "")
632+ if (if ((bL == a))
626633 then true
627- else (cV != ""))
634+ else (cX != ""))
628635 then {
629- let cW = if ((cV == ""))
630- then $Tuple3(bb, ba, aI)
636+ let cY = if ((cX == ""))
637+ then $Tuple3(bc, bb, aJ)
631638 else {
632- let cX = aR(addressFromStringValue(cV))
633- let cY = cX._1
634- let cZ = cX._2
635- $Tuple3(cY, cZ, cV)
639+ let cZ = aS(addressFromStringValue(cX))
640+ let da = cZ._1
641+ let db = cZ._2
642+ $Tuple3(da, db, cX)
636643 }
637- let da = cW._1
638- let db = cW._2
639- let dc = cW._3
640- let dd = cy(dc, cz, cA, da, db, cB, cC)
641- let cI = dd._1
642- let cH = dd._2
643- invoke(addressFromStringValue(dc), "callFunction", ["exchange", [toString(cB)]], [AttachedPayment(bt(cI), cH)])
644+ let dc = cY._1
645+ let dd = cY._2
646+ let de = cY._3
647+ let df = cA(de, cB, cC, dc, dd, cD, cE)
648+ let cK = df._1
649+ let cJ = df._2
650+ invoke(addressFromStringValue(de), "callFunction", ["exchange", [toString(cD)]], [AttachedPayment(bu(cK), cJ)])
644651 }
645- else if ((bK == b))
652+ else if ((bL == b))
646653 then {
647- let de = cN(aI, cz, cA, bb, ba, cB, cC)
648- let cI = de._1
649- let cH = de._2
650- invoke(aq, "swap", [cB, cC, toString(this)], [AttachedPayment(bt(cI), cH)])
654+ let dg = cP(aJ, cB, cC, bc, bb, cD, cE)
655+ let cK = dg._1
656+ let cJ = dg._2
657+ invoke(ar, "swap", [cD, cE, toString(this)], [AttachedPayment(bu(cK), cJ)])
651658 }
652- else ay()
659+ else az()
653660 }
654661
655662
656-func df (aS,bK,be,dg) = {
657- let dh = if ((bK == a))
663+func dh (aT,bL,bf,di) = {
664+ let dj = if ((bL == a))
658665 then {
659- let cx = {
660- let aW = invoke(aS, "callFunction", ["withdrawREADONLY", [toString(dg)]], nil)
661- if ($isInstanceOf(aW, "List[Any]"))
662- then aW
663- else throw(($getType(aW) + " couldn't be cast to List[Any]"))
666+ let cz = {
667+ let aX = invoke(aT, "callFunction", ["withdrawREADONLY", [toString(di)]], nil)
668+ if ($isInstanceOf(aX, "List[Any]"))
669+ then aX
670+ else throw(($getType(aX) + " couldn't be cast to List[Any]"))
664671 }
665- if ((cx == cx))
672+ if ((cz == cz))
666673 then $Tuple2({
667- let aW = cx[0]
668- if ($isInstanceOf(aW, "Int"))
669- then aW
670- else throw(($getType(aW) + " couldn't be cast to Int"))
674+ let aX = cz[0]
675+ if ($isInstanceOf(aX, "Int"))
676+ then aX
677+ else throw(($getType(aX) + " couldn't be cast to Int"))
671678 }, {
672- let aW = cx[1]
673- if ($isInstanceOf(aW, "Int"))
674- then aW
675- else throw(($getType(aW) + " couldn't be cast to Int"))
679+ let aX = cz[1]
680+ if ($isInstanceOf(aX, "Int"))
681+ then aX
682+ else throw(($getType(aX) + " couldn't be cast to Int"))
676683 })
677684 else throw("Strict value is not equal to itself.")
678685 }
679- else if ((bK == b))
686+ else if ((bL == b))
680687 then {
681- let cx = split({
682- let aW = invoke(aS, "evaluateGetREADONLY", [be, dg], nil)
683- if ($isInstanceOf(aW, "String"))
684- then aW
685- else throw(($getType(aW) + " couldn't be cast to String"))
688+ let cz = split({
689+ let aX = invoke(aT, "evaluateGetREADONLY", [bf, di], nil)
690+ if ($isInstanceOf(aX, "String"))
691+ then aX
692+ else throw(($getType(aX) + " couldn't be cast to String"))
686693 }, "__")
687- if ((cx == cx))
688- then $Tuple2(parseIntValue(cx[1]), parseIntValue(cx[2]))
694+ if ((cz == cz))
695+ then $Tuple2(parseIntValue(cz[1]), parseIntValue(cz[2]))
689696 else throw("Strict value is not equal to itself.")
690697 }
691- else ay()
692- let di = dh._1
693- let dj = dh._2
694- $Tuple2(di, dj)
698+ else az()
699+ let dk = dj._1
700+ let dl = dj._2
701+ $Tuple2(dk, dl)
695702 }
696703
697704
698-func dk (bK,aI) = if ((bK == a))
705+func dm (bL,aJ) = if ((bL == a))
699706 then {
700- let dl = aM(ar)
701- if ((dl == dl))
707+ let dn = aN(as)
708+ if ((dn == dn))
702709 then {
703- let cx = invoke(bo(), "claim", [aI], nil)
704- if ((cx == cx))
710+ let cz = invoke(bp(), "claim", [aJ], nil)
711+ if ((cz == cz))
705712 then {
706- let dm = aM(ar)
707- $Tuple2((dm - dl), ar)
713+ let do = aN(as)
714+ $Tuple2((do - dn), as)
708715 }
709716 else throw("Strict value is not equal to itself.")
710717 }
711718 else throw("Strict value is not equal to itself.")
712719 }
713- else if ((bK == b))
720+ else if ((bL == b))
714721 then {
715- let dn = bc(addressFromStringValue(aI))
716- let aU = dn._1
717- let aV = dn._2
718- let do = dn._3
719- let dp = dn._4
720- let dq = dn._5
721- let dl = aM(as)
722- if ((dl == dl))
722+ let dp = bd(addressFromStringValue(aJ))
723+ let aV = dp._1
724+ let aW = dp._2
725+ let dq = dp._3
726+ let dr = dp._4
727+ let ds = dp._5
728+ let dn = aN(at)
729+ if ((dn == dn))
723730 then {
724- let cx = invoke(bp(addressFromStringValue(aI)), "claimWx", [dq], nil)
725- if ((cx == cx))
731+ let cz = invoke(bq(addressFromStringValue(aJ)), "claimWx", [ds], nil)
732+ if ((cz == cz))
726733 then {
727- let dm = aM(as)
728- $Tuple2((dm - dl), as)
734+ let do = aN(at)
735+ $Tuple2((do - dn), at)
729736 }
730737 else throw("Strict value is not equal to itself.")
731738 }
732739 else throw("Strict value is not equal to itself.")
733740 }
734- else ay()
741+ else az()
735742
736743
737-func dr (bK,aI,bn,cd,aU,ce,aV,bb,ba,ds) = {
738- let dt = aM(fromBase58String(ds))
739- if ((dt == dt))
744+func dt (bL,aJ,bo,ce,aV,cf,aW,bc,bb,du) = {
745+ let dv = aN(fromBase58String(du))
746+ if ((dv == dv))
740747 then {
741- let aS = addressFromStringValue(aI)
742- let du = if (if ((cd > 0))
743- then (ce > 0)
748+ let aT = addressFromStringValue(aJ)
749+ let dw = if (if ((ce > 0))
750+ then (cf > 0)
744751 else false)
745752 then {
746- let dv = cc(bK, aS, cd, aU, ce, aV, bb, ba)
747- let dw = dv._1
748- let dx = dv._2
749- let dy = dv._3
750- let dz = dv._4
751- let cx = cm(aS, bK, dw, aU, dx, aV)
752- if ((cx == cx))
753- then $Tuple2(dy, dz)
753+ let dx = cd(bL, aT, ce, aV, cf, aW, bc, bb)
754+ let dy = dx._1
755+ let dz = dx._2
756+ let dA = dx._3
757+ let dB = dx._4
758+ let cz = cn(aT, bL, dy, aV, dz, aW)
759+ if ((cz == cz))
760+ then $Tuple2(dA, dB)
754761 else throw("Strict value is not equal to itself.")
755762 }
756- else if ((cd > 0))
757- then $Tuple2(cd, aU)
758- else if ((ce > 0))
759- then $Tuple2(ce, aV)
763+ else if ((ce > 0))
764+ then $Tuple2(ce, aV)
765+ else if ((cf > 0))
766+ then $Tuple2(cf, aW)
760767 else throw("pmts must be > 0")
761- let dy = du._1
762- let dz = du._2
763- let cx = if ((dy > 0))
764- then co(aS, bK, dy, dz)
768+ let dA = dw._1
769+ let dB = dw._2
770+ let cz = if ((dA > 0))
771+ then cp(aT, bL, dA, dB)
765772 else nil
766- if ((cx == cx))
773+ if ((cz == cz))
767774 then {
768- let dA = aM(fromBase58String(ds))
769- let dB = (dA - dt)
770- let dC = fraction(dB, bm(aI, bn), o)
771- let dD = (dB - dC)
772- if ((0 >= dD))
775+ let dC = aN(fromBase58String(du))
776+ let dD = (dC - dv)
777+ let dE = fraction(dD, bn(aJ, bo), o)
778+ let dF = (dD - dE)
779+ if ((0 >= dF))
773780 then throw("amount of staked sharetokens must be > 0")
774781 else {
775- let dE = cq(aI, bK, ds, dD)
776- if ((dE == dE))
777- then $Tuple2(dD, dC)
782+ let dG = cs(aJ, bL, du, dF)
783+ if ((dG == dG))
784+ then $Tuple2(dF, dE)
778785 else throw("Strict value is not equal to itself.")
779786 }
780787 }
781788 else throw("Strict value is not equal to itself.")
782789 }
783790 else throw("Strict value is not equal to itself.")
784791 }
785792
786793
787-func dF (aI,bl,dG,dC,dH,be,aJ,dI) = {
788- let dJ = bi(aI)
789- let dK = bj(aI)
790- let dL = if (dI)
791- then $Tuple2(getIntegerValue(this, (aI + E)), (dK + dG))
792- else $Tuple2(getIntegerValue(this, (aI + F)), dK)
793- let dM = dL._1
794- let dN = dL._2
795-[IntegerEntry((aI + C), (dJ + dG)), IntegerEntry((aI + D), dN), IntegerEntry((((((aI + "_") + bl) + "_") + toString(dH)) + w), dG), IntegerEntry((((((aI + "_") + bl) + "_") + toString(dH)) + B), dM), StringEntry((((bl + "_") + toString(dH)) + x), aI), IntegerEntry((bl + A), dH), ScriptTransfer(an, dC, fromBase58String(be))]
794+func dH (aJ,bm,dI,dE,dJ,bf,aK,dK) = {
795+ let dL = bj(aJ)
796+ let dM = bk(aJ)
797+ let dN = if (dK)
798+ then $Tuple2(getIntegerValue(this, (aJ + E)), (dM + dI))
799+ else $Tuple2(getIntegerValue(this, (aJ + F)), dM)
800+ let dO = dN._1
801+ let dP = dN._2
802+[IntegerEntry((aJ + C), (dL + dI)), IntegerEntry((aJ + D), dP), IntegerEntry((((((aJ + "_") + bm) + "_") + toString(dJ)) + w), dI), IntegerEntry((((((aJ + "_") + bm) + "_") + toString(dJ)) + B), dO), StringEntry((((bm + "_") + toString(dJ)) + x), aJ), IntegerEntry((bm + A), dJ), ScriptTransfer(ao, dE, fromBase58String(bf))]
796803 }
797804
798805
799-func dO (bA,dP) = (bA :+ parseIntValue(dP))
806+func dQ (bB,dR) = (bB :+ parseIntValue(dR))
800807
801808
802-func dQ (dR,dS) = {
803- let dT = addressFromStringValue(dR[1])
804- let dU = split(dR[2], "|")
805- let dV = aM(bt(dS))
806- if ((dV == dV))
809+func dS (dT,dU) = {
810+ let dV = addressFromStringValue(dT[1])
811+ let dW = split(dT[2], "|")
812+ let dX = aN(bu(dU))
813+ if ((dX == dX))
807814 then {
808- let cl = [AttachedPayment(bt(dU[0]), parseIntValue(dU[1]))]
809- let dW = dR[3]
810- let cx = invoke(dT, "callFunction", ["exchange", [dW]], cl)
811- if ((cx == cx))
812- then (aM(bt(dS)) - dV)
815+ let cm = [AttachedPayment(bu(dW[0]), parseIntValue(dW[1]))]
816+ let dY = dT[3]
817+ let cz = invoke(dV, "callFunction", ["exchange", [dY]], cm)
818+ if ((cz == cz))
819+ then (aN(bu(dU)) - dX)
813820 else throw("Strict value is not equal to itself.")
814821 }
815822 else throw("Strict value is not equal to itself.")
816823 }
817824
818825
819-func dX (dR,dS) = {
820- let dT = addressFromStringValue(dR[1])
821- let dV = aM(bt(dS))
822- if ((dV == dV))
826+func dZ (dT,dU) = {
827+ let dV = addressFromStringValue(dT[1])
828+ let dX = aN(bu(dU))
829+ if ((dX == dX))
823830 then {
824- let cl = {
825- let dU = split(dR[2], "|")
826-[AttachedPayment(fromBase58String(dU[0]), parseIntValue(dU[1]))]
831+ let cm = {
832+ let dW = split(dT[2], "|")
833+[AttachedPayment(fromBase58String(dW[0]), parseIntValue(dW[1]))]
827834 }
828- let dY = {
829- let dZ = split(dR[3], "|")
830- let ea = split(dZ[0], ",")
831- let eb = split(dZ[1], ",")
832- let ec = {
833- let bC = split(dZ[2], ",")
834- let bD = size(bC)
835- let bE = nil
836- func bF (bG,bH) = if ((bH >= bD))
837- then bG
838- else dO(bG, bC[bH])
835+ let ea = {
836+ let eb = split(dT[3], "|")
837+ let ec = split(eb[0], ",")
838+ let ed = split(eb[1], ",")
839+ let ee = {
840+ let bD = split(eb[2], ",")
841+ let bE = size(bD)
842+ let bF = nil
843+ func bG (bH,bI) = if ((bI >= bE))
844+ then bH
845+ else dQ(bH, bD[bI])
839846
840- func bI (bG,bH) = if ((bH >= bD))
841- then bG
847+ func bJ (bH,bI) = if ((bI >= bE))
848+ then bH
842849 else throw("List size exceeds 3")
843850
844- bI(bF(bF(bF(bE, 0), 1), 2), 3)
851+ bJ(bG(bG(bG(bF, 0), 1), 2), 3)
845852 }
846- let ed = {
847- let bC = split(dZ[3], ",")
848- let bD = size(bC)
849- let bE = nil
850- func ee (bG,bH) = if ((bH >= bD))
851- then bG
852- else dO(bG, bC[bH])
853+ let ef = {
854+ let bD = split(eb[3], ",")
855+ let bE = size(bD)
856+ let bF = nil
857+ func eg (bH,bI) = if ((bI >= bE))
858+ then bH
859+ else dQ(bH, bD[bI])
853860
854- func ef (bG,bH) = if ((bH >= bD))
855- then bG
861+ func eh (bH,bI) = if ((bI >= bE))
862+ then bH
856863 else throw("List size exceeds 3")
857864
858- ef(ee(ee(ee(bE, 0), 1), 2), 3)
865+ eh(eg(eg(eg(bF, 0), 1), 2), 3)
859866 }
860- let eg = split(dZ[4], ",")
861- let dW = parseIntValue(dZ[5])
862-[ea, eb, ec, ed, eg, dW]
867+ let ei = split(eb[4], ",")
868+ let dY = parseIntValue(eb[5])
869+[ec, ed, ee, ef, ei, dY]
863870 }
864- let cx = invoke(dT, "routingTrade", dY, cl)
865- if ((cx == cx))
866- then (aM(bt(dS)) - dV)
871+ let cz = invoke(dV, "routingTrade", ea, cm)
872+ if ((cz == cz))
873+ then (aN(bu(dU)) - dX)
867874 else throw("Strict value is not equal to itself.")
868875 }
869876 else throw("Strict value is not equal to itself.")
870877 }
871878
872879
873-func eh (aI,bK,ei,ej) = {
874- let aS = Address(fromBase58String(aI))
875- let ek = bg(aS, bK)
876- let el = ek._1
877- let em = ek._2
878- let bb = ek._3
879- let ba = ek._4
880- let be = ek._5
881- if (if ((ei != el))
882- then (ei != em)
880+func ej (aJ,bL,ek,el) = {
881+ let aT = Address(fromBase58String(aJ))
882+ let em = bh(aT, bL)
883+ let en = em._1
884+ let eo = em._2
885+ let bc = em._3
886+ let bb = em._4
887+ let bf = em._5
888+ if (if ((ek != en))
889+ then (ek != eo)
883890 else false)
884891 then throw("Wrong asset")
885892 else {
886- let en = bi(aI)
887- if ((en == 0))
888- then [ScriptTransfer(an, ej, fromBase58String(ei))]
893+ let ep = bj(aJ)
894+ if ((ep == 0))
895+ then [ScriptTransfer(ao, el, fromBase58String(ek))]
889896 else {
890- let eo = bj(aI)
891- let ep = fraction(eo, l, en)
892- let eq = fraction(ej, ep, l)
893- let er = (ej - eq)
894- let es = fraction(eq, bm(aI, f), o)
895- let et = fraction(er, bm(aI, e), o)
896- let eu = (es + et)
897- let ev = if ((ei == el))
898- then $Tuple2((ej - eu), 0)
899- else $Tuple2(0, (ej - eu))
900- let cd = ev._1
901- let ce = ev._2
902- let ew = dr(bK, aI, k, cd, el, ce, em, bb, ba, be)
903- let dG = ew._1
904- let ex = ew._2
905- let ey = valueOrElse(getInteger(this, (aI + E)), 0)
906- let ez = valueOrElse(getInteger(this, (aI + F)), 0)
907- let eA = fraction(dG, ep, l)
908- let eB = (dG - eA)
909- let eC = if ((eo > 0))
910- then (ey + fraction(eA, m, eo))
897+ let eq = bk(aJ)
898+ let er = fraction(eq, l, ep)
899+ let es = fraction(el, er, l)
900+ let et = (el - es)
901+ let eu = fraction(es, bn(aJ, f), o)
902+ let ev = fraction(et, bn(aJ, e), o)
903+ let ew = (eu + ev)
904+ let ex = if ((ek == en))
905+ then $Tuple2((el - ew), 0)
906+ else $Tuple2(0, (el - ew))
907+ let ce = ex._1
908+ let cf = ex._2
909+ let ey = dt(bL, aJ, k, ce, en, cf, eo, bc, bb, bf)
910+ let dI = ey._1
911+ let ez = ey._2
912+ let eA = valueOrElse(getInteger(this, (aJ + E)), 0)
913+ let eB = valueOrElse(getInteger(this, (aJ + F)), 0)
914+ let eC = fraction(dI, er, l)
915+ let eD = (dI - eC)
916+ let eE = if ((eq > 0))
917+ then (eA + fraction(eC, m, eq))
911918 else 0
912- let eD = if (((en - eo) > 0))
913- then (ez + fraction(eB, m, (en - eo)))
919+ let eF = if (((ep - eq) > 0))
920+ then (eB + fraction(eD, m, (ep - eq)))
914921 else 0
915- ([IntegerEntry((aI + E), eC), IntegerEntry((aI + F), eD), IntegerEntry((aI + C), (en + dG)), IntegerEntry((aI + D), (eo + eA)), ScriptTransfer(an, eu, bt(ei))] ++ bY(el, em, be, nil))
922+ ([IntegerEntry((aJ + E), eE), IntegerEntry((aJ + F), eF), IntegerEntry((aJ + C), (ep + dI)), IntegerEntry((aJ + D), (eq + eC)), ScriptTransfer(ao, ew, bu(ek))] ++ bZ(en, eo, bf, nil))
916923 }
917924 }
918925 }
919926
920927
921-func eE (bl,aI,eF,eG) = {
922- let eH = valueOrErrorMessage(getInteger(this, (((((aI + "_") + bl) + "_") + eF) + w)), "Unknown position")
923- let eI = getIntegerValue(this, (((((aI + "_") + bl) + "_") + eF) + B))
924- let eJ = if (eG)
925- then getIntegerValue(this, (aI + E))
926- else getIntegerValue(this, (aI + F))
927- (eH + fraction(eH, (eJ - eI), m))
928+func eG (bm,aJ,eH,eI) = {
929+ let eJ = valueOrErrorMessage(getInteger(this, (((((aJ + "_") + bm) + "_") + eH) + w)), "Unknown position")
930+ let eK = getIntegerValue(this, (((((aJ + "_") + bm) + "_") + eH) + B))
931+ let eL = if (eI)
932+ then getIntegerValue(this, (aJ + E))
933+ else getIntegerValue(this, (aJ + F))
934+ (eJ + fraction(eJ, (eL - eK), m))
928935 }
929936
930937
931-func eK (aI,eL,eM,eN) = {
932- let bn = if (eL)
938+func eM (aJ,eN,eO,eP) = {
939+ let bo = if (eN)
933940 then h
934941 else g
935- if (eM)
936- then fraction(eN, bm(aI, bn), o)
942+ if (eO)
943+ then fraction(eP, bn(aJ, bo), o)
937944 else 0
938945 }
939946
940947
941-func eO (bl,aI,eF,eM) = {
942- let eH = valueOrErrorMessage(getInteger(this, (((((aI + "_") + bl) + "_") + eF) + w)), "Unknown position")
943- let eL = (valueOrElse(getInteger(this, (((((aI + "_") + bl) + "_") + eF) + y)), 0) > 0)
944- let dg = eE(bl, aI, eF, eL)
945- let eP = bi(aI)
946- let eQ = bj(aI)
947- let eR = Address(fromBase58String(bl))
948- let aS = Address(fromBase58String(aI))
949- let bK = valueOrErrorMessage(getString(this, (P + aI)), "Unknown pool")
950- let eS = bg(aS, bK)
951- let eT = eS._1
952- let eU = eS._2
953- let bb = eS._3
954- let ba = eS._4
955- let be = eS._5
956- let eV = $Tuple2(bt(eT), bt(eU))
957- let eW = eV._1
958- let eX = eV._2
959- let eY = eK(aI, eL, eM, dg)
960- let eZ = aM(eW)
961- if ((eZ == eZ))
948+func eQ (bm,aJ,eH,eO) = {
949+ let eJ = valueOrErrorMessage(getInteger(this, (((((aJ + "_") + bm) + "_") + eH) + w)), "Unknown position")
950+ let eN = (valueOrElse(getInteger(this, (((((aJ + "_") + bm) + "_") + eH) + y)), 0) > 0)
951+ let di = eG(bm, aJ, eH, eN)
952+ let eR = bj(aJ)
953+ let eS = bk(aJ)
954+ let eT = Address(fromBase58String(bm))
955+ let aT = Address(fromBase58String(aJ))
956+ let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Unknown pool")
957+ let eU = bh(aT, bL)
958+ let eV = eU._1
959+ let eW = eU._2
960+ let bc = eU._3
961+ let bb = eU._4
962+ let bf = eU._5
963+ let eX = $Tuple2(bu(eV), bu(eW))
964+ let eY = eX._1
965+ let eZ = eX._2
966+ let fa = eM(aJ, eN, eO, di)
967+ let fb = aN(eY)
968+ if ((fb == fb))
962969 then {
963- let fa = aM(eX)
964- if ((fa == fa))
970+ let fc = aN(eZ)
971+ if ((fc == fc))
965972 then {
966- let cx = if ((bK == a))
973+ let cz = if ((bL == a))
967974 then {
968- let cx = cs(aI, bK, be, eY)
969- if ((cx == cx))
970- then invoke(aS, "callFunction", ["withdraw", [toString(dg)]], nil)
975+ let cz = cu(aJ, bL, bf, fa)
976+ if ((cz == cz))
977+ then invoke(aT, "callFunction", ["withdraw", [toString(di)]], nil)
971978 else throw("Strict value is not equal to itself.")
972979 }
973- else if ((bK == b))
980+ else if ((bL == b))
974981 then {
975- let cx = cs(aI, bK, be, (dg + eY))
976- if ((cx == cx))
977- then invoke(aS, "get", nil, [AttachedPayment(bt(be), dg)])
982+ let cz = cu(aJ, bL, bf, (di + fa))
983+ if ((cz == cz))
984+ then invoke(aT, "get", nil, [AttachedPayment(bu(bf), di)])
978985 else throw("Strict value is not equal to itself.")
979986 }
980- else ay()
981- if ((cx == cx))
987+ else az()
988+ if ((cz == cz))
982989 then {
983- let fb = aM(eW)
984- if ((fb == fb))
990+ let fd = aN(eY)
991+ if ((fd == fd))
985992 then {
986- let fc = aM(eX)
987- if ((fc == fc))
993+ let fe = aN(eZ)
994+ if ((fe == fe))
988995 then {
989- let fd = $Tuple2((fb - eZ), (fc - fa))
990- let fe = fd._1
991- let ff = fd._2
992- let fg = if (eL)
996+ let ff = $Tuple2((fd - fb), (fe - fc))
997+ let fg = ff._1
998+ let fh = ff._2
999+ let fi = if (eN)
9931000 then {
994- let fh = getStringValue(this, (((((aI + "_") + bl) + "_") + eF) + z))
995- let fi = {
996- let aW = invoke(az(), "getAssetDebt", [false, ((bl + "_") + eF), fh], nil)
997- if ($isInstanceOf(aW, "Int"))
998- then aW
999- else throw(($getType(aW) + " couldn't be cast to Int"))
1001+ let fj = getStringValue(this, (((((aJ + "_") + bm) + "_") + eH) + z))
1002+ let fk = {
1003+ let aX = invoke(aA(), "getAssetDebt", [false, ((bm + "_") + eH), fj], nil)
1004+ if ($isInstanceOf(aX, "Int"))
1005+ then aX
1006+ else throw(($getType(aX) + " couldn't be cast to Int"))
10001007 }
1001- if ((fi == fi))
1008+ if ((fk == fk))
10021009 then {
1003- let fj = if (if ((fh == eT))
1004- then (fi > fe)
1010+ let fl = if (if ((fj == eV))
1011+ then (fk > fg)
10051012 else false)
1006- then (fi - fe)
1007- else if (if ((fh == eU))
1008- then (fi > ff)
1013+ then (fk - fg)
1014+ else if (if ((fj == eW))
1015+ then (fk > fh)
10091016 else false)
1010- then (fi - ff)
1017+ then (fk - fh)
10111018 else 0
1012- let fk = if ((fj > 0))
1013- then cU(bK, aI, eT, eU, (bb - fe), (ba - ff), fj, fh)
1019+ let fm = if ((fl > 0))
1020+ then cW(bL, aJ, eV, eW, (bc - fg), (bb - fh), fl, fj)
10141021 else nil
1015- if ((fk == fk))
1022+ if ((fm == fm))
10161023 then {
1017- let fl = aM(eW)
1018- if ((fl == fl))
1024+ let fn = aN(eY)
1025+ if ((fn == fn))
10191026 then {
1020- let fm = aM(eX)
1021- if ((fm == fm))
1027+ let fo = aN(eZ)
1028+ if ((fo == fo))
10221029 then {
1023- let fn = if ((fi > 0))
1024- then invoke(az(), "repayFor", [((bl + "_") + eF)], [AttachedPayment(bt(fh), fi)])
1030+ let fp = if ((fk > 0))
1031+ then invoke(aA(), "repayFor", [((bm + "_") + eH)], [AttachedPayment(bu(fj), fk)])
10251032 else 0
1026- if ((fn == fn))
1027- then if ((fh == eT))
1028- then $Tuple2(((fl - eZ) - fi), (fm - fa))
1029- else $Tuple2((fl - eZ), ((fm - fa) - fi))
1033+ if ((fp == fp))
1034+ then if ((fj == eV))
1035+ then $Tuple2(((fn - fb) - fk), (fo - fc))
1036+ else $Tuple2((fn - fb), ((fo - fc) - fk))
10301037 else throw("Strict value is not equal to itself.")
10311038 }
10321039 else throw("Strict value is not equal to itself.")
10331040 }
10341041 else throw("Strict value is not equal to itself.")
10351042 }
10361043 else throw("Strict value is not equal to itself.")
10371044 }
10381045 else throw("Strict value is not equal to itself.")
10391046 }
1040- else $Tuple2(fe, ff)
1041- let fo = fg._1
1042- let fp = fg._2
1043- let fq = if (eL)
1044- then [IntegerEntry((aI + D), ((eQ - dg) - eY))]
1047+ else $Tuple2(fg, fh)
1048+ let fq = fi._1
1049+ let fr = fi._2
1050+ let fs = if (eN)
1051+ then [IntegerEntry((aJ + D), ((eS - di) - fa))]
10451052 else nil
1046- let fr = (([DeleteEntry((((((aI + "_") + bl) + "_") + eF) + w)), DeleteEntry((((bl + "_") + eF) + x)), DeleteEntry((((((aI + "_") + bl) + "_") + eF) + y)), DeleteEntry((((((aI + "_") + bl) + "_") + eF) + z)), DeleteEntry((((((aI + "_") + bl) + "_") + eF) + B)), IntegerEntry((aI + C), ((eP - dg) - eY)), ScriptTransfer(eR, fo, eW), ScriptTransfer(eR, fp, eX), ScriptTransfer(an, eY, fromBase58String(be))] ++ fq) ++ bY(eT, eU, be, nil))
1047- $Tuple2(fr, [fo, fp])
1053+ let ft = (([DeleteEntry((((((aJ + "_") + bm) + "_") + eH) + w)), DeleteEntry((((bm + "_") + eH) + x)), DeleteEntry((((((aJ + "_") + bm) + "_") + eH) + y)), DeleteEntry((((((aJ + "_") + bm) + "_") + eH) + z)), DeleteEntry((((((aJ + "_") + bm) + "_") + eH) + B)), IntegerEntry((aJ + C), ((eR - di) - fa)), ScriptTransfer(eT, fq, eY), ScriptTransfer(eT, fr, eZ), ScriptTransfer(ao, fa, fromBase58String(bf))] ++ fs) ++ bZ(eV, eW, bf, nil))
1054+ $Tuple2(ft, [fq, fr])
10481055 }
10491056 else throw("Strict value is not equal to itself.")
10501057 }
10511058 else throw("Strict value is not equal to itself.")
10521059 }
10531060 else throw("Strict value is not equal to itself.")
10541061 }
10551062 else throw("Strict value is not equal to itself.")
10561063 }
10571064 else throw("Strict value is not equal to itself.")
10581065 }
10591066
10601067
1061-func fs (ft) = {
1062- let fu = split(valueOrErrorMessage(getString(this, (ft + N)), ("No request with id " + ft)), ",")
1063- let bl = fu[0]
1064- let aI = fu[1]
1065- let cd = parseIntValue(fu[2])
1066- let el = fu[3]
1067- let ce = parseIntValue(fu[4])
1068- let em = fu[5]
1069- let bb = parseIntValue(fu[6])
1070- let ba = parseIntValue(fu[7])
1071- let be = fu[8]
1072- let fv = fu[9]
1073- let fw = parseIntValue(fu[10])
1074- $Tuple11(bl, aI, cd, el, ce, em, bb, ba, be, fv, fw)
1068+func fu (fv) = {
1069+ let fw = split(valueOrErrorMessage(getString(this, (fv + N)), ("No request with id " + fv)), ",")
1070+ let bm = fw[0]
1071+ let aJ = fw[1]
1072+ let ce = parseIntValue(fw[2])
1073+ let en = fw[3]
1074+ let cf = parseIntValue(fw[4])
1075+ let eo = fw[5]
1076+ let bc = parseIntValue(fw[6])
1077+ let bb = parseIntValue(fw[7])
1078+ let bf = fw[8]
1079+ let fx = fw[9]
1080+ let fy = parseIntValue(fw[10])
1081+ $Tuple11(bm, aJ, ce, en, cf, eo, bc, bb, bf, fx, fy)
10751082 }
10761083
10771084
1078-func fx (cd,ce,aU,aV,fy,fz) = if (if ((fz != aU))
1079- then (fz != aV)
1085+func fz (ce,cf,aV,aW,fA,fB) = if (if ((fB != aV))
1086+ then (fB != aW)
10801087 else false)
10811088 then throw("Wrong borrow asset")
10821089 else {
1083- let bP = getIntegerValue(ap, (aU + T))
1084- let bQ = getIntegerValue(ap, (aV + T))
1085- let fA = pow(10, 0, bu(aU), 0, 0, DOWN)
1086- let fB = pow(10, 0, bu(aV), 0, 0, DOWN)
1087- let fC = (fraction(bP, cd, fA) + fraction(bQ, ce, fB))
1088- let fD = if ((fz == aU))
1089- then $Tuple2(bP, fA)
1090- else $Tuple2(bQ, fB)
1091- let fE = fD._1
1092- let fF = fD._2
1093- fraction(fraction(fC, (fy - 100), 100), fF, fE)
1090+ let bQ = getIntegerValue(aq, (aV + U))
1091+ let bR = getIntegerValue(aq, (aW + U))
1092+ let fC = pow(10, 0, bv(aV), 0, 0, DOWN)
1093+ let fD = pow(10, 0, bv(aW), 0, 0, DOWN)
1094+ let fE = (fraction(bQ, ce, fC) + fraction(bR, cf, fD))
1095+ let fF = if ((fB == aV))
1096+ then $Tuple2(bQ, fC)
1097+ else $Tuple2(bR, fD)
1098+ let fG = fF._1
1099+ let fH = fF._2
1100+ fraction(fraction(fE, (fA - 100), 100), fH, fG)
10941101 }
10951102
10961103
1097-func fG (fH,el,em) = if ((size(fH) == 2))
1098- then if ((bs(fH[0].assetId) != el))
1104+func fI (fJ,en,eo) = if ((size(fJ) == 2))
1105+ then if ((bt(fJ[0].assetId) != en))
10991106 then throw("Wrong payment asset A")
1100- else if ((bs(fH[1].assetId) != em))
1107+ else if ((bt(fJ[1].assetId) != eo))
11011108 then throw("Wrong payment asset B")
1102- else $Tuple2(fH[0].amount, fH[1].amount)
1103- else if ((size(fH) == 1))
1104- then if ((bs(fH[0].assetId) == el))
1105- then $Tuple2(fH[0].amount, 0)
1106- else if ((bs(fH[0].assetId) == em))
1107- then $Tuple2(0, fH[0].amount)
1109+ else $Tuple2(fJ[0].amount, fJ[1].amount)
1110+ else if ((size(fJ) == 1))
1111+ then if ((bt(fJ[0].assetId) == en))
1112+ then $Tuple2(fJ[0].amount, 0)
1113+ else if ((bt(fJ[0].assetId) == eo))
1114+ then $Tuple2(0, fJ[0].amount)
11081115 else throw("Wrong payment")
11091116 else throw("One or two payments expected")
11101117
11111118
1112-func fI (bb,ba,fJ,fK) = {
1113- let fL = ((l - fraction(fraction(ba, l, bb), l, fraction(fK, l, fJ))) * 100)
1114- if ((0 > fL))
1115- then (fL * -1)
1116- else fL
1119+func fK (bc,bb,fL,fM) = {
1120+ let fN = ((l - fraction(fraction(bb, l, bc), l, fraction(fM, l, fL))) * 100)
1121+ if ((0 > fN))
1122+ then (fN * -1)
1123+ else fN
11171124 }
11181125
11191126
1120-func fM (aI,bK,fN,cr,dy) = {
1121- let fO = if (fN)
1122- then dk(bK, aI)
1127+func fO (aJ,bL,fP,ct,dA) = {
1128+ let fQ = if (fP)
1129+ then dm(bL, aJ)
11231130 else {
1124- let fP = if ((bK == a))
1125- then ar
1126- else if ((bK == b))
1127- then as
1128- else ay()
1129- $Tuple2(cr, fP)
1131+ let fR = if ((bL == a))
1132+ then as
1133+ else if ((bL == b))
1134+ then at
1135+ else az()
1136+ $Tuple2(ct, fR)
11301137 }
1131- if ((fO == fO))
1138+ if ((fQ == fQ))
11321139 then {
1133- let fQ = fO._2
1134- let fR = fO._1
1135- let fS = aM(fQ)
1136- if ((fS == fS))
1137- then if ((cr > fS))
1140+ let fS = fQ._2
1141+ let fT = fQ._1
1142+ let fU = aN(fS)
1143+ if ((fU == fU))
1144+ then if ((ct > fU))
11381145 then throw("To big amount to exchange")
1139- else $Tuple2(fR, fQ)
1146+ else $Tuple2(fT, fS)
11401147 else throw("Strict value is not equal to itself.")
11411148 }
11421149 else throw("Strict value is not equal to itself.")
11431150 }
11441151
11451152
1146-@Callable(aB)
1147-func getPoolInfoREADONLY (aI) = {
1148- let aS = addressFromStringValue(aI)
1149- let bK = valueOrErrorMessage(getString(this, (P + aI)), "Pool is not inited")
1150- let fT = bg(Address(fromBase58String(aI)), bK)
1151- let el = fT._1
1152- let em = fT._2
1153- let bb = fT._3
1154- let ba = fT._4
1155- let be = fT._5
1156- let bR = bh(aS, bK, be)
1157- $Tuple2(nil, $Tuple6(el, em, be, bb, ba, bR))
1153+@Callable(aC)
1154+func getPoolInfoREADONLY (aJ) = {
1155+ let aT = addressFromStringValue(aJ)
1156+ let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Pool is not inited")
1157+ let fV = bh(Address(fromBase58String(aJ)), bL)
1158+ let en = fV._1
1159+ let eo = fV._2
1160+ let bc = fV._3
1161+ let bb = fV._4
1162+ let bf = fV._5
1163+ let bS = bi(aT, bL, bf)
1164+ $Tuple2(nil, $Tuple6(en, eo, bf, bc, bb, bS))
11581165 }
11591166
11601167
11611168
1162-@Callable(aB)
1163-func getShareAssetPriceREADONLY (be) = {
1164- let fU = bJ(be)
1165- $Tuple2(nil, fU)
1169+@Callable(aC)
1170+func getShareAssetPriceREADONLY (bf) = {
1171+ let fW = bK(bf)
1172+ $Tuple2(nil, fW)
11661173 }
11671174
11681175
11691176
1170-@Callable(aB)
1171-func getUserPositionShareAmountREADONLY (bl,dH) = {
1172- let aI = valueOrErrorMessage(getString(this, (((bl + "_") + dH) + x)), "Unknown position")
1173- let fV = getIntegerValue(this, (((((aI + "_") + bl) + "_") + dH) + y))
1174- let dg = eE(bl, aI, dH, (fV > 0))
1175- $Tuple2(nil, dg)
1177+@Callable(aC)
1178+func getUserPositionShareAmountREADONLY (bm,dJ) = {
1179+ let aJ = valueOrErrorMessage(getString(this, (((bm + "_") + dJ) + x)), "Unknown position")
1180+ let fX = getIntegerValue(this, (((((aJ + "_") + bm) + "_") + dJ) + y))
1181+ let di = eG(bm, aJ, dJ, (fX > 0))
1182+ $Tuple2(nil, di)
11761183 }
11771184
11781185
11791186
1180-@Callable(aB)
1181-func getUserPositionREADONLY (bl,fW,dH) = {
1182- func fX (bA,aI) = {
1183- let fY = bA
1184- let fZ = fY._1
1185- let ga = fY._2
1186- let gb = fY._3
1187- let gc = fY._4
1188- let gd = fY._5
1189- let ge = fY._6
1190- if (!(isDefined(getInteger(this, (((((aI + "_") + bl) + "_") + dH[ge]) + w)))))
1191- then $Tuple6((fZ :+ 0), (ga :+ 0), (gb :+ 0), (gc :+ 0), (gd :+ 0), (ge + 1))
1187+@Callable(aC)
1188+func getUserPositionREADONLY (bm,fY,dJ) = {
1189+ func fZ (bB,aJ) = {
1190+ let ga = bB
1191+ let gb = ga._1
1192+ let gc = ga._2
1193+ let gd = ga._3
1194+ let ge = ga._4
1195+ let gf = ga._5
1196+ let gg = ga._6
1197+ if (!(isDefined(getInteger(this, (((((aJ + "_") + bm) + "_") + dJ[gg]) + w)))))
1198+ then $Tuple6((gb :+ 0), (gc :+ 0), (gd :+ 0), (ge :+ 0), (gf :+ 0), (gg + 1))
11921199 else {
1193- let bK = valueOrErrorMessage(getString(this, (P + aI)), "Pool is not inited")
1194- let gf = bg(Address(fromBase58String(aI)), bK)
1195- let el = gf._1
1196- let em = gf._2
1197- let bb = gf._3
1198- let ba = gf._4
1199- let be = gf._5
1200- let fV = valueOrElse(getInteger(this, (((((aI + "_") + bl) + "_") + dH[ge]) + y)), 0)
1201- let dg = eE(bl, aI, dH[ge], (fV > 0))
1202- let gg = df(Address(fromBase58String(aI)), bK, be, dg)
1203- let gh = gg._1
1204- let gi = gg._2
1205- if ((fV > 0))
1200+ let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Pool is not inited")
1201+ let gh = bh(Address(fromBase58String(aJ)), bL)
1202+ let en = gh._1
1203+ let eo = gh._2
1204+ let bc = gh._3
1205+ let bb = gh._4
1206+ let bf = gh._5
1207+ let fX = valueOrElse(getInteger(this, (((((aJ + "_") + bm) + "_") + dJ[gg]) + y)), 0)
1208+ let di = eG(bm, aJ, dJ[gg], (fX > 0))
1209+ let gi = dh(Address(fromBase58String(aJ)), bL, bf, di)
1210+ let gj = gi._1
1211+ let gk = gi._2
1212+ if ((fX > 0))
12061213 then {
1207- let fh = getStringValue(this, (((((aI + "_") + bl) + "_") + dH[ge]) + z))
1208- let fi = {
1209- let aW = invoke(az(), "getAssetDebt", [false, ((bl + "_") + dH[ge]), fh], nil)
1210- if ($isInstanceOf(aW, "Int"))
1211- then aW
1212- else throw(($getType(aW) + " couldn't be cast to Int"))
1214+ let fj = getStringValue(this, (((((aJ + "_") + bm) + "_") + dJ[gg]) + z))
1215+ let fk = {
1216+ let aX = invoke(aA(), "getAssetDebt", [false, ((bm + "_") + dJ[gg]), fj], nil)
1217+ if ($isInstanceOf(aX, "Int"))
1218+ then aX
1219+ else throw(($getType(aX) + " couldn't be cast to Int"))
12131220 }
1214- if ((fi == fi))
1221+ if ((fk == fk))
12151222 then {
1216- let fj = if (if ((fh == el))
1217- then (fi > gh)
1223+ let fl = if (if ((fj == en))
1224+ then (fk > gj)
12181225 else false)
1219- then (fi - gh)
1220- else if (if ((fh == em))
1221- then (fi > gi)
1226+ then (fk - gj)
1227+ else if (if ((fj == eo))
1228+ then (fk > gk)
12221229 else false)
1223- then (fi - gi)
1230+ then (fk - gk)
12241231 else 0
1225- let cH = if ((fj > 0))
1226- then if ((bK == a))
1232+ let cJ = if ((fl > 0))
1233+ then if ((bL == a))
12271234 then {
1228- let gj = cy(aI, el, em, bb, ba, fj, fh)
1229- gj._2
1235+ let gl = cA(aJ, en, eo, bc, bb, fl, fj)
1236+ gl._2
12301237 }
1231- else if ((bK == b))
1238+ else if ((bL == b))
12321239 then {
1233- let gj = cN(aI, el, em, bb, ba, fj, fh)
1234- gj._2
1240+ let gl = cP(aJ, en, eo, bc, bb, fl, fj)
1241+ gl._2
12351242 }
1236- else ay()
1243+ else az()
12371244 else 0
1238- let gk = if ((fh == el))
1239- then $Tuple2(((gh + fj) - fi), (gi - cH))
1240- else $Tuple2((gh - cH), ((gi + fj) - fi))
1241- let gl = gk._1
1242- let gm = gk._2
1243- $Tuple6((fZ :+ gh), (ga :+ gi), (gb :+ fi), (gc :+ gl), (gd :+ gm), (ge + 1))
1245+ let gm = if ((fj == en))
1246+ then $Tuple2(((gj + fl) - fk), (gk - cJ))
1247+ else $Tuple2((gj - cJ), ((gk + fl) - fk))
1248+ let gn = gm._1
1249+ let go = gm._2
1250+ $Tuple6((gb :+ gj), (gc :+ gk), (gd :+ fk), (ge :+ gn), (gf :+ go), (gg + 1))
12441251 }
12451252 else throw("Strict value is not equal to itself.")
12461253 }
1247- else $Tuple6((fZ :+ gh), (ga :+ gi), gb, (fZ :+ gh), (ga :+ gi), (ge + 1))
1254+ else $Tuple6((gb :+ gj), (gc :+ gk), gd, (gb :+ gj), (gc :+ gk), (gg + 1))
12481255 }
12491256 }
12501257
1251- let gn = {
1252- let bC = fW
1253- let bD = size(bC)
1254- let bE = $Tuple6(nil, nil, nil, nil, nil, 0)
1255- func bF (bG,bH) = if ((bH >= bD))
1256- then bG
1257- else fX(bG, bC[bH])
1258+ let gp = {
1259+ let bD = fY
1260+ let bE = size(bD)
1261+ let bF = $Tuple6(nil, nil, nil, nil, nil, 0)
1262+ func bG (bH,bI) = if ((bI >= bE))
1263+ then bH
1264+ else fZ(bH, bD[bI])
12581265
1259- func bI (bG,bH) = if ((bH >= bD))
1260- then bG
1266+ func bJ (bH,bI) = if ((bI >= bE))
1267+ then bH
12611268 else throw("List size exceeds 20")
12621269
1263- bI(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bF(bE, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
1270+ bJ(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bF, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
12641271 }
1265- let fZ = gn._1
1266- let ga = gn._2
1267- let gb = gn._3
1268- let gc = gn._4
1269- let gd = gn._5
1270- $Tuple2(nil, $Tuple5(fZ, ga, gb, gc, gd))
1272+ let gb = gp._1
1273+ let gc = gp._2
1274+ let gd = gp._3
1275+ let ge = gp._4
1276+ let gf = gp._5
1277+ $Tuple2(nil, $Tuple5(gb, gc, gd, ge, gf))
12711278 }
12721279
12731280
12741281
1275-@Callable(aB)
1276-func replenish (aI,fy,fz) = valueOrElse(aG(), {
1277- let bK = valueOrErrorMessage(getString(this, (P + aI)), "Pool is not inited")
1278- if (!(aH(aI, bK)))
1282+@Callable(aC)
1283+func replenish (aJ,fA,fB) = valueOrElse(aH(), {
1284+ let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Pool is not inited")
1285+ if (!(aI(aJ, bL)))
12791286 then throw("Pool not active at this moment")
1280- else if (if ((100 > fy))
1287+ else if (if ((100 > fA))
12811288 then true
1282- else (fy > 300))
1289+ else (fA > 300))
12831290 then throw("Leverage can't be <100 and >300")
1284- else if (if (!(getBooleanValue(this, (aI + G))))
1285- then (fy > 100)
1291+ else if (if (!(getBooleanValue(this, (aJ + G))))
1292+ then (fA > 100)
12861293 else false)
12871294 then throw("You can't borrow in this pool")
12881295 else {
1289- let go = bg(Address(fromBase58String(aI)), bK)
1290- let el = go._1
1291- let em = go._2
1292- let bb = go._3
1293- let ba = go._4
1294- let be = go._5
1295- if (if ((fz != el))
1296- then (fz != em)
1296+ let gq = bh(Address(fromBase58String(aJ)), bL)
1297+ let en = gq._1
1298+ let eo = gq._2
1299+ let bc = gq._3
1300+ let bb = gq._4
1301+ let bf = gq._5
1302+ if (if ((fB != en))
1303+ then (fB != eo)
12971304 else false)
12981305 then throw("Wrong borrow asset")
12991306 else {
1300- let gp = fG(aB.payments, el, em)
1301- let cd = gp._1
1302- let ce = gp._2
1303- let bl = toString(aB.caller)
1304- let gq = bk(bl)
1305- if ((fy > 100))
1307+ let gr = fI(aC.payments, en, eo)
1308+ let ce = gr._1
1309+ let cf = gr._2
1310+ let bm = toString(aC.caller)
1311+ let gs = bl(bm)
1312+ if ((fA > 100))
13061313 then {
1307- let fV = fx(cd, ce, el, em, fy, fz)
1308- let fu = makeString([bl, aI, toString(cd), el, toString(ce), em, toString(bb), toString(ba), be, fz, toString(fV)], ",")
1309- let gr = {
1310- let aW = invoke(this, "createNewRequest", [fu], nil)
1311- if ($isInstanceOf(aW, "Int"))
1312- then aW
1313- else throw(($getType(aW) + " couldn't be cast to Int"))
1314+ let fX = fz(ce, cf, en, eo, fA, fB)
1315+ let fw = makeString([bm, aJ, toString(ce), en, toString(cf), eo, toString(bc), toString(bb), bf, fB, toString(fX)], ",")
1316+ let gt = {
1317+ let aX = invoke(this, "createNewRequest", [fw], nil)
1318+ if ($isInstanceOf(aX, "Int"))
1319+ then aX
1320+ else throw(($getType(aX) + " couldn't be cast to Int"))
13141321 }
1315- if ((gr == gr))
1322+ if ((gt == gt))
13161323 then {
1317- let dY = [((bl + "_") + toString(gq)), be, fz, fV, toString(this), "replenishFromLand", toString(valueOrErrorMessage(gr, "Can't create new request"))]
1318- let cx = reentrantInvoke(az(), "flashPosition", dY, nil)
1319- if ((cx == cx))
1324+ let ea = [((bm + "_") + toString(gs)), bf, fB, fX, toString(this), "replenishFromLand", toString(valueOrErrorMessage(gt, "Can't create new request"))]
1325+ let cz = reentrantInvoke(aA(), "flashPosition", ea, nil)
1326+ if ((cz == cz))
13201327 then {
1321- let gs = getIntegerValue(this, (((((aI + "_") + bl) + "_") + toString(gq)) + w))
1322- let gt = aX(Address(fromBase58String(aI)), bK, el, em)
1323- if ((gt == gt))
1328+ let gu = getIntegerValue(this, (((((aJ + "_") + bm) + "_") + toString(gs)) + w))
1329+ let gv = aY(Address(fromBase58String(aJ)), bL, en, eo)
1330+ if ((gv == gv))
13241331 then {
1325- let fK = gt._2
1326- let fJ = gt._1
1327- let gu = fI(bb, ba, fJ, fK)
1328- let gv = df(Address(fromBase58String(aI)), bK, be, gs)
1329- let gh = gv._1
1330- let gi = gv._2
1331- $Tuple2(nil, [gu, gh, gi])
1332+ let fM = gv._2
1333+ let fL = gv._1
1334+ let gw = fK(bc, bb, fL, fM)
1335+ let gx = dh(Address(fromBase58String(aJ)), bL, bf, gu)
1336+ let gj = gx._1
1337+ let gk = gx._2
1338+ $Tuple2(nil, [gw, gj, gk])
13321339 }
13331340 else throw("Strict value is not equal to itself.")
13341341 }
13351342 else throw("Strict value is not equal to itself.")
13361343 }
13371344 else throw("Strict value is not equal to itself.")
13381345 }
13391346 else {
1340- let gw = dr(bK, aI, j, cd, el, ce, em, bb, ba, be)
1341- if ((gw == gw))
1347+ let gy = dt(bL, aJ, j, ce, en, cf, eo, bc, bb, bf)
1348+ if ((gy == gy))
13421349 then {
1343- let eu = gw._2
1344- let gs = gw._1
1345- let gx = aX(Address(fromBase58String(aI)), bK, el, em)
1346- if ((gx == gx))
1350+ let ew = gy._2
1351+ let gu = gy._1
1352+ let gz = aY(Address(fromBase58String(aJ)), bL, en, eo)
1353+ if ((gz == gz))
13471354 then {
1348- let fK = gx._2
1349- let fJ = gx._1
1350- let gu = fI(bb, ba, fJ, fK)
1351- let gy = df(Address(fromBase58String(aI)), bK, be, gs)
1352- let gh = gy._1
1353- let gi = gy._2
1354- $Tuple2((dF(aI, bl, gs, eu, gq, be, bK, false) ++ bY(el, em, be, [toString(gh), toString(gi)])), [gu, gh, gi])
1355+ let fM = gz._2
1356+ let fL = gz._1
1357+ let gw = fK(bc, bb, fL, fM)
1358+ let gA = dh(Address(fromBase58String(aJ)), bL, bf, gu)
1359+ let gj = gA._1
1360+ let gk = gA._2
1361+ $Tuple2((dH(aJ, bm, gu, ew, gs, bf, bL, false) ++ bZ(en, eo, bf, [toString(gj), toString(gk)])), [gw, gj, gk])
13551362 }
13561363 else throw("Strict value is not equal to itself.")
13571364 }
13581365 else throw("Strict value is not equal to itself.")
13591366 }
13601367 }
13611368 }
13621369 })
13631370
13641371
13651372
1366-@Callable(aB)
1367-func withdraw (aI,eF) = valueOrElse(aG(), {
1368- let bK = valueOrErrorMessage(getString(this, (P + aI)), "Pool is not inited")
1369- if (!(aH(aI, bK)))
1373+@Callable(aC)
1374+func withdraw (aJ,eH) = valueOrElse(aH(), {
1375+ let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Pool is not inited")
1376+ if (!(aI(aJ, bL)))
13701377 then throw("Pool not active at this moment")
1371- else eO(toString(aB.caller), aI, toString(eF), false)
1378+ else eQ(toString(aC.caller), aJ, toString(eH), false)
13721379 })
13731380
13741381
13751382
1376-@Callable(aB)
1377-func createUpdateStopLoss (eF,gz,aN,gA) = valueOrElse(aG(), {
1378- let gB = getIntegerValue(ap, (aN + T))
1379- let bK = valueOrErrorMessage(getString(this, (P + gz)), "Pool is not inited")
1380- if (!(aH(gz, bK)))
1383+@Callable(aC)
1384+func createUpdateStopLoss (eH,gB,aO,gC) = valueOrElse(aH(), {
1385+ let gD = getIntegerValue(aq, (aO + U))
1386+ let bL = valueOrErrorMessage(getString(this, (P + gB)), "Pool is not inited")
1387+ if (!(aI(gB, bL)))
13811388 then throw("Pool not active at this moment")
1382- else if (!(isDefined(getInteger(this, (((((gz + "_") + toString(aB.caller)) + "_") + toString(eF)) + w)))))
1389+ else if (!(isDefined(getInteger(this, (((((gB + "_") + toString(aC.caller)) + "_") + toString(eH)) + w)))))
13831390 then throw("There are no user position")
1384- else if ((0 >= gA))
1391+ else if ((0 >= gC))
13851392 then throw("Price must be greater than 0")
1386- else if ((gA > gB))
1393+ else if ((gC > gD))
13871394 then throw("Price must be less than current token price")
1388- else [IntegerEntry((((((((toString(aB.caller) + "_") + toString(eF)) + "_") + gz) + "_") + aN) + Y), gA)]
1395+ else [IntegerEntry((((((((toString(aC.caller) + "_") + toString(eH)) + "_") + gB) + "_") + aO) + Z), gC)]
13891396 })
13901397
13911398
13921399
1393-@Callable(aB)
1394-func deleteStopLoss (eF,gz,aN) = valueOrElse(aG(), {
1395- let bK = valueOrErrorMessage(getString(this, (P + gz)), "Pool is not inited")
1396- if (!(aH(gz, bK)))
1400+@Callable(aC)
1401+func deleteStopLoss (eH,gB,aO) = valueOrElse(aH(), {
1402+ let bL = valueOrErrorMessage(getString(this, (P + gB)), "Pool is not inited")
1403+ if (!(aI(gB, bL)))
13971404 then throw("Pool not active at this moment")
1398- else if (!(isDefined(getInteger(this, (((((((toString(aB.caller) + "_") + toString(eF)) + "_") + gz) + "_") + aN) + Y)))))
1405+ else if (!(isDefined(getInteger(this, (((((((toString(aC.caller) + "_") + toString(eH)) + "_") + gB) + "_") + aO) + Z)))))
13991406 then throw("No entry")
1400- else [DeleteEntry((((((((toString(aB.caller) + "_") + toString(eF)) + "_") + gz) + "_") + aN) + Y))]
1407+ else [DeleteEntry((((((((toString(aC.caller) + "_") + toString(eH)) + "_") + gB) + "_") + aO) + Z))]
14011408 })
14021409
14031410
14041411
1405-@Callable(aB)
1406-func init (gC,gD,gE,ap,gF,aq,gG,gH,gI,gJ,gK,gL,gM) = valueOrElse(aD(aB), if (isDefined(getString(ad)))
1412+@Callable(aC)
1413+func init (gE,gF,gG,aq,gH,ar,gI,gJ,gK,gL,gM,gN,gO) = valueOrElse(aE(aC), if (isDefined(getString(ae)))
14071414 then throw("Already inited")
1408- else if (!(isDefined(addressFromString(gC))))
1415+ else if (!(isDefined(addressFromString(gE))))
14091416 then throw("moneyBoxAddr is not correct address")
1410- else if (!(isDefined(addressFromString(gD))))
1417+ else if (!(isDefined(addressFromString(gF))))
14111418 then throw("sfFarmingAddr is not correct address")
1412- else if (!(isDefined(addressFromString(gE))))
1419+ else if (!(isDefined(addressFromString(gG))))
14131420 then throw("lendAddr is not correct address")
1414- else if (!(isDefined(addressFromString(ap))))
1421+ else if (!(isDefined(addressFromString(aq))))
14151422 then throw("priceOracleAddr is not correct address")
1416- else if (!(isDefined(addressFromString(gF))))
1423+ else if (!(isDefined(addressFromString(gH))))
14171424 then throw("keeperExContract is not correct address")
1418- else if (!(isDefined(assetInfo(fromBase58String(gG)))))
1425+ else if (!(isDefined(assetInfo(fromBase58String(gI)))))
14191426 then throw("swopAssetId is not correct asset id")
1420- else if (!(isDefined(assetInfo(fromBase58String(gH)))))
1427+ else if (!(isDefined(assetInfo(fromBase58String(gJ)))))
14211428 then throw("swopAssetId is not correct asset id")
1422- else if ((size(fromBase58String(gI)) != 32))
1429+ else if ((size(fromBase58String(gK)) != 32))
14231430 then throw("operatorPubKey is not correct")
1424- else if ((size(fromBase58String(gJ)) != 32))
1431+ else if ((size(fromBase58String(gL)) != 32))
14251432 then throw("group1Admin1PubKey is not correct")
1426- else if ((size(fromBase58String(gK)) != 32))
1433+ else if ((size(fromBase58String(gM)) != 32))
14271434 then throw("group1Admin2PubKey is not correct")
1428- else if ((size(fromBase58String(gL)) != 32))
1435+ else if ((size(fromBase58String(gN)) != 32))
14291436 then throw("group2Admin1PubKey is not correct")
1430- else if ((size(fromBase58String(gM)) != 32))
1437+ else if ((size(fromBase58String(gO)) != 32))
14311438 then throw("group2Admin2PubKey is not correct")
1432- else [StringEntry(aa, gC), StringEntry(ab, gD), StringEntry(ac, gE), StringEntry(ae, ap), StringEntry(af, gF), StringEntry(ag, aq), StringEntry(ah, gG), StringEntry(ai, gH), StringEntry(ad, gI), StringEntry(aj, gJ), StringEntry(ak, gK), StringEntry(al, gL), StringEntry(am, gM)])
1439+ else [StringEntry(ab, gE), StringEntry(ac, gF), StringEntry(ad, gG), StringEntry(af, aq), StringEntry(ag, gH), StringEntry(ah, ar), StringEntry(ai, gI), StringEntry(aj, gJ), StringEntry(ae, gK), StringEntry(ak, gL), StringEntry(al, gM), StringEntry(am, gN), StringEntry(an, gO)])
14331440
14341441
14351442
1436-@Callable(aB)
1437-func createNewRequest (cw) = valueOrElse(aD(aB), {
1438- let gr = (valueOrElse(getInteger(this, O), 0) + 1)
1439- $Tuple2([StringEntry((toString(gr) + N), cw), IntegerEntry(O, gr)], gr)
1443+@Callable(aC)
1444+func createNewRequest (cy) = valueOrElse(aE(aC), {
1445+ let gt = (valueOrElse(getInteger(this, O), 0) + 1)
1446+ $Tuple2([StringEntry((toString(gt) + N), cy), IntegerEntry(O, gt)], gt)
14401447 })
14411448
14421449
14431450
1444-@Callable(aB)
1445-func replenishFromLand (ft) = valueOrElse(aF(), valueOrElse(aE(aB), {
1446- let gN = fs(ft)
1447- let bl = gN._1
1448- let aI = gN._2
1449- let cd = gN._3
1450- let el = gN._4
1451- let ce = gN._5
1452- let em = gN._6
1453- let bb = gN._7
1454- let ba = gN._8
1455- let be = gN._9
1456- let fv = gN._10
1457- let fw = gN._11
1458- if ((size(aB.payments) != 1))
1451+@Callable(aC)
1452+func replenishFromLand (fv) = valueOrElse(aG(), valueOrElse(aF(aC), {
1453+ let gP = fu(fv)
1454+ let bm = gP._1
1455+ let aJ = gP._2
1456+ let ce = gP._3
1457+ let en = gP._4
1458+ let cf = gP._5
1459+ let eo = gP._6
1460+ let bc = gP._7
1461+ let bb = gP._8
1462+ let bf = gP._9
1463+ let fx = gP._10
1464+ let fy = gP._11
1465+ if ((size(aC.payments) != 1))
14591466 then throw("Wrong payment size")
1460- else if (if ((bs(aB.payments[0].assetId) != fv))
1467+ else if (if ((bt(aC.payments[0].assetId) != fx))
14611468 then true
1462- else (aB.payments[0].amount != fw))
1469+ else (aC.payments[0].amount != fy))
14631470 then throw("Wrong payment")
14641471 else {
1465- let gO = if ((el == fv))
1466- then $Tuple2((cd + fw), ce)
1467- else $Tuple2(cd, (ce + fw))
1468- let gP = gO._1
1469- let gQ = gO._2
1470- let bK = valueOrErrorMessage(getString(this, (P + aI)), "Unknown pool")
1471- let gR = dr(bK, aI, i, gP, el, gQ, em, bb, ba, be)
1472- let gs = gR._1
1473- let eu = gR._2
1474- let dH = bk(bl)
1475- let gS = [IntegerEntry((((((aI + "_") + bl) + "_") + toString(dH)) + y), fw), StringEntry((((((aI + "_") + bl) + "_") + toString(dH)) + z), fv)]
1476- let fr = dF(aI, bl, gs, eu, dH, be, bK, true)
1477- let gT = df(Address(fromBase58String(aI)), bK, be, gs)
1478- let gh = gT._1
1479- let gi = gT._2
1480- $Tuple2((((fr ++ bY(el, em, be, [toString(gh), toString(gi)])) ++ gS) :+ DeleteEntry((ft + N))), gs)
1472+ let gQ = if ((en == fx))
1473+ then $Tuple2((ce + fy), cf)
1474+ else $Tuple2(ce, (cf + fy))
1475+ let gR = gQ._1
1476+ let gS = gQ._2
1477+ let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Unknown pool")
1478+ let gT = dt(bL, aJ, i, gR, en, gS, eo, bc, bb, bf)
1479+ let gu = gT._1
1480+ let ew = gT._2
1481+ let dJ = bl(bm)
1482+ let gU = [IntegerEntry((((((aJ + "_") + bm) + "_") + toString(dJ)) + y), fy), StringEntry((((((aJ + "_") + bm) + "_") + toString(dJ)) + z), fx)]
1483+ let ft = dH(aJ, bm, gu, ew, dJ, bf, bL, true)
1484+ let gV = dh(Address(fromBase58String(aJ)), bL, bf, gu)
1485+ let gj = gV._1
1486+ let gk = gV._2
1487+ $Tuple2((((ft ++ bZ(en, eo, bf, [toString(gj), toString(gk)])) ++ gU) :+ DeleteEntry((fv + N))), gu)
14811488 }
14821489 }))
14831490
14841491
14851492
1486-@Callable(aB)
1487-func liquidate (bl,eF,gU) = valueOrElse(aF(), valueOrElse(aE(aB), {
1488- let aI = valueOrErrorMessage(getString(this, (((bl + "_") + eF) + x)), "no position")
1489- let bK = valueOrErrorMessage(getString(this, (P + aI)), "Pool is not inited")
1490- let gV = bg(Address(fromBase58String(aI)), bK)
1491- let el = gV._1
1492- let em = gV._2
1493- let bb = gV._3
1494- let ba = gV._4
1495- let be = gV._5
1496- let cr = cs(aI, bK, be, gU)
1497- let fV = getIntegerValue(this, (((((aI + "_") + bl) + "_") + eF) + y))
1498- let fh = getStringValue(this, (((((aI + "_") + bl) + "_") + eF) + z))
1499- let dg = eE(bl, aI, eF, (fV > 0))
1500- if ((gU > dg))
1493+@Callable(aC)
1494+func liquidate (bm,eH,gW) = valueOrElse(aG(), valueOrElse(aF(aC), {
1495+ let aJ = valueOrErrorMessage(getString(this, (((bm + "_") + eH) + x)), "no position")
1496+ let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Pool is not inited")
1497+ let gX = bh(Address(fromBase58String(aJ)), bL)
1498+ let en = gX._1
1499+ let eo = gX._2
1500+ let bc = gX._3
1501+ let bb = gX._4
1502+ let bf = gX._5
1503+ let ct = cu(aJ, bL, bf, gW)
1504+ let fX = getIntegerValue(this, (((((aJ + "_") + bm) + "_") + eH) + y))
1505+ let fj = getStringValue(this, (((((aJ + "_") + bm) + "_") + eH) + z))
1506+ let di = eG(bm, aJ, eH, (fX > 0))
1507+ if ((gW > di))
15011508 then throw("You can't liquidate more than user have")
1502- else if ((fV == 0))
1509+ else if ((fX == 0))
15031510 then throw("You can't liquidate position without borrow")
1504- else [IntegerEntry((((((aI + "_") + bl) + "_") + eF) + B), getIntegerValue(this, (aI + E))), IntegerEntry((aI + D), (bj(aI) - gU)), IntegerEntry((aI + C), (bi(aI) - gU)), IntegerEntry((((((aI + "_") + bl) + "_") + eF) + w), (dg - gU)), ScriptTransfer(aB.caller, cr, fromBase58String(be))]
1511+ else [IntegerEntry((((((aJ + "_") + bm) + "_") + eH) + B), getIntegerValue(this, (aJ + E))), IntegerEntry((aJ + D), (bk(aJ) - gW)), IntegerEntry((aJ + C), (bj(aJ) - gW)), IntegerEntry((((((aJ + "_") + bm) + "_") + eH) + w), (di - gW)), ScriptTransfer(aC.caller, ct, fromBase58String(bf))]
15051512 }))
15061513
15071514
15081515
1509-@Callable(aB)
1510-func stopLoss (bl,eF,aI,aN) = valueOrElse(aF(), valueOrElse(aA(aB), {
1511- let gB = getIntegerValue(ap, (aN + T))
1512- let gW = valueOrErrorMessage(getInteger(this, (((((((bl + "_") + toString(eF)) + "_") + aI) + "_") + aN) + Y)), "No entry")
1513- if ((gB > gW))
1516+@Callable(aC)
1517+func stopLoss (bm,eH,aJ,aO) = valueOrElse(aG(), valueOrElse(aB(aC), {
1518+ let gD = getIntegerValue(aq, (aO + U))
1519+ let gY = valueOrErrorMessage(getInteger(this, (((((((bm + "_") + toString(eH)) + "_") + aJ) + "_") + aO) + Z)), "No entry")
1520+ if ((gD > gY))
15141521 then throw("Token price greater stop loss price")
15151522 else {
1516- let gX = eO(bl, aI, toString(eF), true)
1517- $Tuple2((gX._1 :+ DeleteEntry((((((((bl + "_") + toString(eF)) + "_") + aI) + "_") + aN) + Y))), gX._2)
1523+ let gZ = eQ(bm, aJ, toString(eH), true)
1524+ $Tuple2((gZ._1 :+ DeleteEntry((((((((bm + "_") + toString(eH)) + "_") + aJ) + "_") + aO) + Z))), gZ._2)
15181525 }
15191526 }))
15201527
15211528
15221529
1523-@Callable(aB)
1524-func capitalizeEx (aI,gY,gZ,ha,fN) = valueOrElse(aF(), valueOrElse(aA(aB), {
1525- let bK = getStringValue(this, (P + aI))
1526- let dy = valueOrElse(getInteger(this, (aI + R)), 0)
1527- let hb = fM(aI, bK, fN, ha, dy)
1528- if ((hb == hb))
1530+@Callable(aC)
1531+func capitalizeEx (aJ,ha,hb,hc,fP) = valueOrElse(aG(), valueOrElse(aB(aC), {
1532+ let bL = getStringValue(this, (P + aJ))
1533+ let dA = valueOrElse(getInteger(this, (aJ + S)), 0)
1534+ let hd = fO(aJ, bL, fP, hc, dA)
1535+ if ((hd == hd))
15291536 then {
1530- let fP = hb._2
1531- let hc = hb._1
1532- let dR = split(gY, "__")
1533- let hd = if ((dR[0] == "directSwopfiCPMM"))
1534- then dQ(dR, gZ)
1535- else if ((dR[0] == "routingSwopfi"))
1536- then dX(dR, gZ)
1537+ let fR = hd._2
1538+ let he = hd._1
1539+ let dT = split(ha, "__")
1540+ let hf = if ((dT[0] == "directSwopfiCPMM"))
1541+ then dS(dT, hb)
1542+ else if ((dT[0] == "routingSwopfi"))
1543+ then dZ(dT, hb)
15371544 else throw("Wrong route")
1538- if ((hd == hd))
1545+ if ((hf == hf))
15391546 then {
1540- let he = ((hc + dy) - ha)
1541- let hf = if ((he >= 0))
1542- then [IntegerEntry((aI + R), he)]
1547+ let hg = ((he + dA) - hc)
1548+ let hh = if ((hg >= 0))
1549+ then [IntegerEntry((aJ + S), hg)]
15431550 else nil
1544- (eh(aI, bK, gZ, hd) ++ hf)
1551+ (ej(aJ, bL, hb, hf) ++ hh)
15451552 }
15461553 else throw("Strict value is not equal to itself.")
15471554 }
15481555 else throw("Strict value is not equal to itself.")
15491556 }))
15501557
15511558
15521559
1553-@Callable(aB)
1554-func capitalizeNoEx (aI,fN,hg) = valueOrElse(aF(), valueOrElse(aA(aB), {
1555- let bK = getStringValue(this, (P + aI))
1556- let hh = fM(aI, bK, fN, hg, 0)
1557- if ((hh == hh))
1560+@Callable(aC)
1561+func capitalizeNoEx (aJ,fP,hi) = valueOrElse(aG(), valueOrElse(aB(aC), {
1562+ let bL = getStringValue(this, (P + aJ))
1563+ let hj = fO(aJ, bL, fP, hi, 0)
1564+ if ((hj == hj))
15581565 then {
1559- let fP = hh._2
1560- let hc = hh._1
1561- eh(aI, bK, bs(fP), (hc + hg))
1566+ let fR = hj._2
1567+ let he = hj._1
1568+ ej(aJ, bL, bt(fR), (he + hi))
15621569 }
15631570 else throw("Strict value is not equal to itself.")
15641571 }))
15651572
15661573
15671574
1568-@Callable(aB)
1569-func initNewPool (aJ,hi,aS,hj,hk,hl,hm,hn,ho,hp) = valueOrElse(aF(), valueOrElse(aC(aB), if (if ((aJ != a))
1570- then (aJ != b)
1575+@Callable(aC)
1576+func initNewPool (aK,hk,aT,hl,hm,hn,ho,hp,hq,hr) = valueOrElse(aG(), valueOrElse(aD(aC), if (if ((aK != a))
1577+ then (aK != b)
15711578 else false)
15721579 then throw("Wrong type")
1573- else if (if ((hi != c))
1574- then (hi != d)
1580+ else if (if ((hk != c))
1581+ then (hk != d)
15751582 else false)
15761583 then throw("Wrong pool type")
15771584 else {
1578- let hq = bg(Address(fromBase58String(aS)), aJ)
1579- let aU = hq._1
1580- let aV = hq._2
1581- let do = hq._3
1582- let dp = hq._4
1583- let be = hq._5
1584- if ((0 > hj))
1585+ let hs = bh(Address(fromBase58String(aT)), aK)
1586+ let aV = hs._1
1587+ let aW = hs._2
1588+ let dq = hs._3
1589+ let dr = hs._4
1590+ let bf = hs._5
1591+ if ((0 > hl))
15851592 then throw("inFeeNoLoan must be greater than 0")
1586- else if ((0 > hk))
1593+ else if ((0 > hm))
15871594 then throw("inFeeLoan must be greater than 0")
1588- else if ((0 > hl))
1595+ else if ((0 > hn))
15891596 then throw("capFeeNoLoan must be greater than 0")
1590- else if ((0 > hm))
1597+ else if ((0 > ho))
15911598 then throw("capFeeWithLoan must be greater than 0")
1592- else if ((0 > hn))
1599+ else if ((0 > hp))
15931600 then throw("stoplossFeeNoLoan must be greater than 0")
1594- else if ((0 > ho))
1601+ else if ((0 > hq))
15951602 then throw("stoplossFeeWithLoan must be greater than 0")
1596- else [IntegerEntry((aS + H), hj), IntegerEntry((aS + I), hk), IntegerEntry((aS + J), hl), IntegerEntry((aS + K), hm), IntegerEntry((aS + L), hn), IntegerEntry((aS + M), ho), IntegerEntry((aS + E), 0), IntegerEntry((aS + F), 0), StringEntry((P + aS), aJ), StringEntry((be + Q), aS), BooleanEntry((aS + G), hp)]
1603+ else [IntegerEntry((aT + H), hl), IntegerEntry((aT + I), hm), IntegerEntry((aT + J), hn), IntegerEntry((aT + K), ho), IntegerEntry((aT + L), hp), IntegerEntry((aT + M), hq), IntegerEntry((aT + E), 0), IntegerEntry((aT + F), 0), StringEntry((P + aT), aK), StringEntry((aT + Q), hk), StringEntry((bf + R), aT), BooleanEntry((aT + G), hr)]
15971604 }))
15981605
15991606
16001607
1601-@Callable(aB)
1602-func updatePoolFees (aS,hj,hk,hl,hm,hn,ho) = valueOrElse(aF(), valueOrElse(aC(aB), if (!(isDefined(getString(this, (P + aS)))))
1603- then throw(("Can't find pool with addr " + aS))
1604- else if ((0 > hj))
1608+@Callable(aC)
1609+func updatePoolFees (aT,hl,hm,hn,ho,hp,hq) = valueOrElse(aG(), valueOrElse(aD(aC), if (!(isDefined(getString(this, (P + aT)))))
1610+ then throw(("Can't find pool with addr " + aT))
1611+ else if ((0 > hl))
16051612 then throw("inFeeNoLoan must be greater than 0")
1606- else if ((0 > hk))
1613+ else if ((0 > hm))
16071614 then throw("inFeeLoan must be greater than 0")
1608- else if ((0 > hl))
1615+ else if ((0 > hn))
16091616 then throw("capFeeNoLoan must be greater than 0")
1610- else if ((0 > hm))
1617+ else if ((0 > ho))
16111618 then throw("capFeeWithLoan must be greater than 0")
1612- else if ((0 > hn))
1619+ else if ((0 > hp))
16131620 then throw("stoplossFeeNoLoan must be greater than 0")
1614- else if ((0 > ho))
1621+ else if ((0 > hq))
16151622 then throw("stoplossFeeWithLoan must be greater than 0")
1616- else [IntegerEntry((aS + H), hj), IntegerEntry((aS + I), hk), IntegerEntry((aS + J), hl), IntegerEntry((aS + K), hm), IntegerEntry((aS + L), hn), IntegerEntry((aS + M), ho)]))
1623+ else [IntegerEntry((aT + H), hl), IntegerEntry((aT + I), hm), IntegerEntry((aT + J), hn), IntegerEntry((aT + K), ho), IntegerEntry((aT + L), hp), IntegerEntry((aT + M), hq)]))
16171624
16181625
16191626
1620-@Callable(aB)
1621-func activate () = valueOrElse(aC(aB), if (valueOrElse(getBoolean(this, U), true))
1627+@Callable(aC)
1628+func activate () = valueOrElse(aD(aC), if (valueOrElse(getBoolean(this, V), true))
16221629 then throw("dApp already active")
1623- else [BooleanEntry(U, true)])
1624-
1625-
1626-
1627-@Callable(aB)
1628-func shutdown () = valueOrElse(aC(aB), if (!(valueOrElse(getBoolean(this, U), true)))
1629- then throw("dApp already shutdown")
1630- else [BooleanEntry(U, false)])
1631-
1632-
1633-
1634-@Callable(aB)
1635-func activateForUsers () = valueOrElse(aC(aB), if (valueOrElse(getBoolean(this, V), true))
1636- then throw("dApp already active for users")
16371630 else [BooleanEntry(V, true)])
16381631
16391632
16401633
1641-@Callable(aB)
1642-func shutdownForUsers () = valueOrElse(aC(aB), if (!(valueOrElse(getBoolean(this, V), true)))
1643- then throw("dApp already shutdown for users")
1634+@Callable(aC)
1635+func shutdown () = valueOrElse(aD(aC), if (!(valueOrElse(getBoolean(this, V), true)))
1636+ then throw("dApp already shutdown")
16441637 else [BooleanEntry(V, false)])
16451638
16461639
16471640
1648-@Callable(aB)
1649-func activateSF () = valueOrElse(aC(aB), if (valueOrElse(getBoolean(this, (a + W)), true))
1650- then throw("SWOPFI already active")
1651- else [BooleanEntry((a + W), true)])
1641+@Callable(aC)
1642+func activateForUsers () = valueOrElse(aD(aC), if (valueOrElse(getBoolean(this, W), true))
1643+ then throw("dApp already active for users")
1644+ else [BooleanEntry(W, true)])
16521645
16531646
16541647
1655-@Callable(aB)
1656-func shutdownSF () = valueOrElse(aC(aB), if (!(valueOrElse(getBoolean(this, (a + W)), true)))
1657- then throw("SWOPFI already shutdown")
1658- else [BooleanEntry((a + W), false)])
1648+@Callable(aC)
1649+func shutdownForUsers () = valueOrElse(aD(aC), if (!(valueOrElse(getBoolean(this, W), true)))
1650+ then throw("dApp already shutdown for users")
1651+ else [BooleanEntry(W, false)])
16591652
16601653
16611654
1662-@Callable(aB)
1663-func activateWX () = valueOrElse(aC(aB), if (valueOrElse(getBoolean(this, (b + W)), true))
1664- then throw("WX already active")
1665- else [BooleanEntry((b + W), true)])
1655+@Callable(aC)
1656+func activateSF () = valueOrElse(aD(aC), if (valueOrElse(getBoolean(this, (a + X)), true))
1657+ then throw("SWOPFI already active")
1658+ else [BooleanEntry((a + X), true)])
16661659
16671660
16681661
1669-@Callable(aB)
1670-func shutdownWX () = valueOrElse(aC(aB), if (!(valueOrElse(getBoolean(this, (b + W)), true)))
1671- then throw("WX already shutdown")
1672- else [BooleanEntry((b + W), false)])
1662+@Callable(aC)
1663+func shutdownSF () = valueOrElse(aD(aC), if (!(valueOrElse(getBoolean(this, (a + X)), true)))
1664+ then throw("SWOPFI already shutdown")
1665+ else [BooleanEntry((a + X), false)])
16731666
16741667
16751668
1676-@Callable(aB)
1677-func activatePool (aI) = valueOrElse(aC(aB), if (!(isDefined(getString(this, (P + aI)))))
1678- then throw("Unknown pool")
1679- else if (valueOrElse(getBoolean(this, (aI + X)), true))
1680- then throw("Pool already active")
1681- else [BooleanEntry((aI + X), true)])
1669+@Callable(aC)
1670+func activateWX () = valueOrElse(aD(aC), if (valueOrElse(getBoolean(this, (b + X)), true))
1671+ then throw("WX already active")
1672+ else [BooleanEntry((b + X), true)])
16821673
16831674
16841675
1685-@Callable(aB)
1686-func shutdownPool (aI) = valueOrElse(aC(aB), if (!(isDefined(getString(this, (P + aI)))))
1676+@Callable(aC)
1677+func shutdownWX () = valueOrElse(aD(aC), if (!(valueOrElse(getBoolean(this, (b + X)), true)))
1678+ then throw("WX already shutdown")
1679+ else [BooleanEntry((b + X), false)])
1680+
1681+
1682+
1683+@Callable(aC)
1684+func activatePool (aJ) = valueOrElse(aD(aC), if (!(isDefined(getString(this, (P + aJ)))))
16871685 then throw("Unknown pool")
1688- else if (!(valueOrElse(getBoolean(this, (aI + X)), true)))
1686+ else if (valueOrElse(getBoolean(this, (aJ + Y)), true))
1687+ then throw("Pool already active")
1688+ else [BooleanEntry((aJ + Y), true)])
1689+
1690+
1691+
1692+@Callable(aC)
1693+func shutdownPool (aJ) = valueOrElse(aD(aC), if (!(isDefined(getString(this, (P + aJ)))))
1694+ then throw("Unknown pool")
1695+ else if (!(valueOrElse(getBoolean(this, (aJ + Y)), true)))
16891696 then throw("Pool already shutdown")
1690- else [BooleanEntry((aI + X), false)])
1697+ else [BooleanEntry((aJ + Y), false)])
16911698
16921699

github/deemru/w8io/026f985 
708.92 ms