tx · 271h5FG9hXHYHTbxT3saassCkJGiBgZzE3yPsXrF2qpL

3MwK9LnnPa74fhkd46WQzyEWo2CGSsqLtQi:  -0.05100000 Waves

2023.07.31 16:14 [2690102] smart account 3MwK9LnnPa74fhkd46WQzyEWo2CGSsqLtQi > SELF 0.00000000 Waves

{ "type": 13, "id": "271h5FG9hXHYHTbxT3saassCkJGiBgZzE3yPsXrF2qpL", "fee": 5100000, "feeAssetId": null, "timestamp": 1690809273924, "version": 2, "chainId": 84, "sender": "3MwK9LnnPa74fhkd46WQzyEWo2CGSsqLtQi", "senderPublicKey": "BbZ6o9SpTxGQ8uCEj3KWwmTGey1bYou2uVeyeFq1J7Hd", "proofs": [ "2MzEcZzVKDmnhrXyd43UhR2dKEPRvdRzQeZZ22ZFW3hWhyNUJK3fE9qMb2rE4v8dPziiBBKiaaTtRbTUeF1PfqZx" ], "script": "base64:BgKxAQgCEgMKAQgSBAoCCAgSBQoDCBgYEgUKAwgBCBIECgIIARIGCgQBCAgBEgUKAwEICBIPCg0ICAgICAgICAgICAgIEgMKAQgSAwoBCBIFCgMICAESBgoECAEICBINCgsICAEEERgYGAEBGBIJCgcICAEECAEYEg0KCwgIAQQYGBgYGAEYEgUKAwgEARILCgkICAEBAQEBAQQSABIAEgASABIAEgASABIAEgMKAQgSAwoBCIEBAAdTRl9QT09MAgJTRgAHV1hfUE9PTAICV1gAD0NBUF9GRUVfTk9fTE9BTgIJY2FwTm9Mb2FuAAxDQVBfRkVFX0xPQU4CB2NhcExvYW4AFFNUT1BMT1NTX0ZFRV9OT19MT0FOAg5zdG9wTG9zc05vTG9hbgANU1RPUExPU1NfTE9BTgIMc3RvcExvc3NMb2FuAAhMT0FOX0ZFRQIEbG9hbgALTk9fTE9BTl9GRUUCBm5vTG9hbgAGTk9fRkVFAgVub0ZlZQAGU0NBTEU4AIDC1y8AB1NDQUxFMTAAgMivoCUAB1NDQUxFMTYJALYCAQCAgIT+pt7hEQAKRkVFX1NDQUxFNgDAhD0AFGtTRlBvb2xBQXNzZXRCYWxhbmNlAg9BX2Fzc2V0X2JhbGFuY2UAFGtTRlBvb2xCQXNzZXRCYWxhbmNlAg9CX2Fzc2V0X2JhbGFuY2UAD2tTRlBvb2xBQXNzZXRJZAIKQV9hc3NldF9pZAAPa1NGUG9vbEJBc3NldElkAgpCX2Fzc2V0X2lkAA5rU0ZQb29sU2hhcmVJZAIOc2hhcmVfYXNzZXRfaWQAEmtTRlBvb2xTaGFyZVN1cHBseQISc2hhcmVfYXNzZXRfc3VwcGx5AAprU0ZQb29sRmVlAgpjb21taXNzaW9uAA1rVXNlclBvc2l0aW9uAg1fdXNlclBvc2l0aW9uABFrVXNlclBvc2l0aW9uUG9vbAIRX3VzZXJQb3NpdGlvblBvb2wAEWtVc2VyQm9ycm93QW1vdW50AhlfdXNlclBvc2l0aW9uQm9ycm93QW1vdW50ABJrVXNlckJvcnJvd0Fzc2V0SWQCGl91c2VyUG9zaXRpb25Cb3Jyb3dBc3NldElkABBrVXNlclBvc2l0aW9uTnVtAhNfdXNlclBvc2l0aW9uTnVtYmVyABVrVXNlclBvc2l0aW9uSW50ZXJlc3QCFV91c2VyUG9zaXRpb25JbnRlcmVzdAAKa1Bvb2xUb3RhbAIKX3Bvb2xUb3RhbAAOa1Bvb2xUb3RhbExvYW4CDl9wb29sVG90YWxMb2FuABFrUG9vbEludGVyZXN0TG9hbgIRX3Bvb2xJbnRlcmVzdExvYW4AE2tQb29sSW50ZXJlc3ROb0xvYW4CE19wb29sSW50ZXJlc3ROb0xvYW4ADmtQb29sQ2FuQm9ycm93Ag5fcG9vbENhbkJvcnJvdwAVa0F4bHlJbkZlZVdpdGhvdXRMb2FuAg5fYXhseUZlZU5vTG9hbgASa0F4bHlJbkZlZVdpdGhMb2FuAhBfYXhseUZlZVdpdGhMb2FuABFrQXhseU5vTG9hbkNhcEZlZQITX2F4bHlGZWVDYXBXaXRoTG9hbgATa0F4bHlXaXRoTG9hbkNhcEZlZQIRX2F4bHlGZWVDYXBOb0xvYW4AFmtBeGx5U3RvcExvc3NOb0xvYW5GZWUCGF9heGx5RmVlU3RvcGxvc3NXaXRoTG9hbgAUa0F4bHlTdG9wTG9zc0xvYW5GZWUCFl9heGx5RmVlU3RvcGxvc3NOb0xvYW4ACmtSZXF1ZXN0SWQCC19yZXF1ZXN0X2lkAAxrUmVxdWVzdEl0ZXICDXJlcXVlc3RzX2l0ZXIABWtQb29sAgVwb29sXwAKa1NoYXJlUG9vbAIMX3Bvb2xTaGFyZUlkAA5rUG9vbENhcENoYW5nZQIOX3Bvb2xDYXBDaGFuZ2UAD2tUb2tlbkxhc3RQcmljZQIKbGFzdF9wcmljZQAOa1ByaWNlSW5PcmFjbGUCB190d2FwNUIAB2tBY3RpdmUCBmFjdGl2ZQAMa0FjdGl2ZVVzZXJzAgthY3RpdmVVc2VycwALa0FjdGl2ZVNGV1gCB19hY3RpdmUAC2tQb29sQWN0aXZlAgtfYWN0aXZlUG9vbAANa1VzZXJTdG9wTG9zcwIJX3N0b3BMb3NzAAlrTW9uZXlCb3gCDmF4bHlfbW9uZXlfYm94AA5rU0ZGYXJtaW5nQWRkcgITc3dvcGZpX2Zhcm1pbmdfYWRkcgAMa0xlbmRTZXJ2aWNlAhFsZW5kX3NlcnZpY2VfYWRkcgAPa09wZXJhdG9yQ2FsbFBLAhJhZG1pbl9jYWxsX3B1Yl9rZXkADGtQcmljZU9yYWNsZQIMcHJpY2Vfb3JhY2xlAAtrRXhDb250cmFjdAIRZXhjaGFuZ2VfY29udHJhY3QAD2tXeFN3YXBDb250cmFjdAIQd3hfc3dhcF9jb250cmFjdAAHa1N3b3BJZAIHc3dvcF9pZAAFa1d4SWQCBXd4X2lkAA9rR3JvdXAxQWRtaW4xUEsCFWdyb3VwMV9hZG1pbjFfcHViX2tleQAPa0dyb3VwMUFkbWluMlBLAhVncm91cDFfYWRtaW4yX3B1Yl9rZXkAD2tHcm91cDJBZG1pbjFQSwIVZ3JvdXAyX2FkbWluMV9wdWJfa2V5AA9rR3JvdXAyQWRtaW4yUEsCFWdyb3VwMl9hZG1pbjJfcHViX2tleQAIbW9uZXlCb3gJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUJa01vbmV5Qm94AhhObyBheGx5IG1vbmV5Qm94IGFkZHJlc3MACmV4Q29udHJhY3QJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwULa0V4Q29udHJhY3QCHE5vIGV4Y2hhbmdlIGNvbnRyYWN0IGFkZHJlc3MAD3ByaWNlT3JhY2xlQWRkcgkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQxrUHJpY2VPcmFjbGUCF05vIHByaWNlIG9yYWNsZSBhZGRyZXNzAA53eFN3YXBDb250cmFjdAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ9rV3hTd2FwQ29udHJhY3QCEk5vIHd4IHN3YXAgYWRkcmVzcwAGU1dPUElECQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQdrU3dvcElkAgpObyBzd29wIGlkAARXWElECQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQVrV3hJZAIITm8gd3ggaWQADmdyb3VwMUFkbWluMVBLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ9rR3JvdXAxQWRtaW4xUEsCGUNhbid0IGdldCBrR3JvdXAxQWRtaW4xUEsADmdyb3VwMUFkbWluMlBLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ9rR3JvdXAxQWRtaW4yUEsCGUNhbid0IGdldCBrR3JvdXAxQWRtaW4yUEsADmdyb3VwMkFkbWluMVBLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ9rR3JvdXAyQWRtaW4xUEsCGUNhbid0IGdldCBrR3JvdXAyQWRtaW4xUEsADmdyb3VwMkFkbWluMlBLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ9rR3JvdXAyQWRtaW4yUEsCGUNhbid0IGdldCBrR3JvdXAyQWRtaW4xUEsACm9wZXJhdG9yUEsJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFD2tPcGVyYXRvckNhbGxQSwIUQ2FuJ3QgZ2V0IG9wZXJhdG9yUEsBD3Vua25vd25Qb29sVHlwZQAJAAIBAg9Xcm9uZyBwb29sIHR5cGUBDmdldExlbmRTcnZBZGRyAAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQxrTGVuZFNlcnZpY2UCG0Nhbid0IGdldCBsZW5kIHNlcnZpY2UgYWRkcgEOaXNPcGVyYXRvckNhbGwBAWkDCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQpvcGVyYXRvclBLBQR1bml0CQACAQIkT25seSBvcGVyYXRvciBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQtpc0FkbWluQ2FsbAEBaQMDCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQ5ncm91cDFBZG1pbjFQSwYJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFDmdyb3VwMUFkbWluMlBLBQR1bml0CQACAQIoT25seSBhZG1pbiBncm91cDEgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgEKaXNTZWxmQ2FsbAEBaQMJAAACCAUBaQZjYWxsZXIFBHRoaXMFBHVuaXQJAAIBAitPbmx5IGNvbnRyYWN0IGl0c2VsZiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQppc0xhbmRDYWxsAQFpAwkAAAIIBQFpBmNhbGxlcgkBDmdldExlbmRTcnZBZGRyAAUEdW5pdAkAAgECKU9ubHkgbGFuZCBjb250cmFjdCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQhpc0FjdGl2ZQADCQAAAgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQdrQWN0aXZlBgYFBHVuaXQJAAIBAh9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50ARBpc0FjdGl2ZUZvclVzZXJzAAMDCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFB2tBY3RpdmUGCQAAAgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQxrQWN0aXZlVXNlcnMGBgcFBHVuaXQJAAIBAilEQXBwIGlzIGluYWN0aXZlIGZvciB1c2VycyBhdCB0aGlzIG1vbWVudAEMaXNQb29sQWN0aXZlAgRwb29sBHR5cGUECldYU0ZBY3RpdmUJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkArAICBQR0eXBlBQtrQWN0aXZlU0ZXWAYECnBvb2xBY3RpdmUJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkArAICBQRwb29sBQtrUG9vbEFjdGl2ZQYDAwUKV1hTRkFjdGl2ZQUKcG9vbEFjdGl2ZQcGBwEOYWNjb3VudEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAJAPAHAgUEdGhpcwUCaWQDCQABAgUHJG1hdGNoMAIEVW5pdAQFd2F2ZXMFByRtYXRjaDAICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQACAQILTWF0Y2ggZXJyb3IBEWdldFNGUG9vbEJhbGFuY2VzAQhwb29sQWRkcgkAlAoCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUIcG9vbEFkZHIFFGtTRlBvb2xBQXNzZXRCYWxhbmNlAh5DYW4ndCBnZXQgcG9vbCBBIGFzc2V0IGJhbGFuY2UJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQhwb29sQWRkcgUUa1NGUG9vbEJBc3NldEJhbGFuY2UCHkNhbid0IGdldCBwb29sIEIgYXNzZXQgYmFsYW5jZQERZ2V0V1hQb29sQmFsYW5jZXMDCHBvb2xBZGRyA2FJZANiSWQJAJQKAgoAAUAJAPwHBAUIcG9vbEFkZHICHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkJAMwIAgUDYUlkBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQKAAFACQD8BwQFCHBvb2xBZGRyAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFA2JJZAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQ9nZXRQb29sQmFsYW5jZXMECHBvb2xBZGRyBHR5cGUDYUlkA2JJZAMJAAACBQR0eXBlBQdTRl9QT09MCQERZ2V0U0ZQb29sQmFsYW5jZXMBBQhwb29sQWRkcgMJAAACBQR0eXBlBQdXWF9QT09MCQERZ2V0V1hQb29sQmFsYW5jZXMDBQhwb29sQWRkcgUDYUlkBQNiSWQJAQ91bmtub3duUG9vbFR5cGUAAQ1nZXRTRlBvb2xEYXRhAQhwb29sQWRkcgQLJHQwNzg5OTc5NDgJARFnZXRTRlBvb2xCYWxhbmNlcwEFCHBvb2xBZGRyAwkAAAIFCyR0MDc4OTk3OTQ4BQskdDA3ODk5Nzk0OAQEYmFsQggFCyR0MDc4OTk3OTQ4Al8yBARiYWxBCAULJHQwNzg5OTc5NDgCXzEJAJcKBQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCHBvb2xBZGRyBQ9rU0ZQb29sQUFzc2V0SWQCGUNhbid0IGdldCBwb29sIEEgYXNzZXQgaWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQhwb29sQWRkcgUPa1NGUG9vbEJBc3NldElkAhlDYW4ndCBnZXQgcG9vbCBCIGFzc2V0IGlkBQRiYWxBBQRiYWxCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHIFDmtTRlBvb2xTaGFyZUlkAhhDYW4ndCBnZXQgc2hhcmUgYXNzZXQgaWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDWdldFdYUG9vbERhdGEBCHBvb2xBZGRyBANjZmcKAAFACQD8BwQFCHBvb2xBZGRyAhxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZBQNuaWwFA25pbAMJAAECBQFAAglMaXN0W0FueV0FAUAJAAIBCQCsAgIJAAMBBQFAAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0DCQAAAgUDY2ZnBQNjZmcEA2FJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCgABQAkAkQMCBQNjZmcABAMJAAECBQFAAgZTdHJpbmcFAUAFBHVuaXQCGUNhbid0IGdldCBwb29sIEEgYXNzZXQgaWQEA2JJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCgABQAkAkQMCBQNjZmcABQMJAAECBQFAAgZTdHJpbmcFAUAFBHVuaXQCGUNhbid0IGdldCBwb29sIEIgYXNzZXQgaWQEB3NoYXJlSWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgoAAUAJAJEDAgUDY2ZnAAMDCQABAgUBQAIGU3RyaW5nBQFABQR1bml0AhpDYW4ndCBnZXQgcG9vbCBMUCBhc3NldCBpZAQLJHQwODY0NTg3MDQJARFnZXRXWFBvb2xCYWxhbmNlcwMFCHBvb2xBZGRyBQNhSWQFA2JJZAMJAAACBQskdDA4NjQ1ODcwNAULJHQwODY0NTg3MDQEBGJhbEIIBQskdDA4NjQ1ODcwNAJfMgQEYmFsQQgFCyR0MDg2NDU4NzA0Al8xCQCXCgUFA2FJZAUDYklkBQRiYWxBBQRiYWxCBQdzaGFyZUlkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQtnZXRQb29sRGF0YQIIcG9vbEFkZHIEdHlwZQMJAAACBQR0eXBlBQdTRl9QT09MCQENZ2V0U0ZQb29sRGF0YQEFCHBvb2xBZGRyAwkAAAIFBHR5cGUFB1dYX1BPT0wJAQ1nZXRXWFBvb2xEYXRhAQUIcG9vbEFkZHIJAQ91bmtub3duUG9vbFR5cGUAAQ5nZXRTaGFyZVN1cHBseQMIcG9vbEFkZHIEdHlwZQdzaGFyZUlkAwkAAAIFBHR5cGUFB1NGX1BPT0wJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQhwb29sQWRkcgUSa1NGUG9vbFNoYXJlU3VwcGx5AhxDYW4ndCBnZXQgc2hhcmUgYXNzZXQgc3VwcGx5AwkAAAIFBHR5cGUFB1dYX1BPT0wICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQdzaGFyZUlkAg1Xcm9uZyBTaGFyZUlkCHF1YW50aXR5CQEPdW5rbm93blBvb2xUeXBlAAERZ2V0UG9vbFRvdGFsU2hhcmUBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQprUG9vbFRvdGFsAAABGWdldFBvb2xUb3RhbFNoYXJlV2l0aExvYW4BBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbFRvdGFsTG9hbgAAARhnZXROZXdVc2VyUG9zaXRpb25OdW1iZXIBBHVzZXIJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEdXNlcgUQa1VzZXJQb3NpdGlvbk51bQAAAAEBCmdldEF4bHlGZWUCBHBvb2wHZmVlVHlwZQMJAAACBQdmZWVUeXBlBQxDQVBfRkVFX0xPQU4JARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUTa0F4bHlXaXRoTG9hbkNhcEZlZQMJAAACBQdmZWVUeXBlBQ9DQVBfRkVFX05PX0xPQU4JARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAURa0F4bHlOb0xvYW5DYXBGZWUDCQAAAgUHZmVlVHlwZQUITE9BTl9GRUUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUSa0F4bHlJbkZlZVdpdGhMb2FuAwkAAAIFB2ZlZVR5cGUFC05PX0xPQU5fRkVFCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFFWtBeGx5SW5GZWVXaXRob3V0TG9hbgMJAAACBQdmZWVUeXBlBQZOT19GRUUAAAkAAgECDldyb25nIGZlZSB0eXBlARBnZXRTRkZhcm1pbmdBZGRyAAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ5rU0ZGYXJtaW5nQWRkcgIdQ2FuJ3QgZ2V0IHN3b3BmaSBmYXJtaW5nIGFkZHIBEGdldFdYRmFybWluZ0FkZHIBCHBvb2xBZGRyBAlmQ29udHJhY3QJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHICEyVzX19mYWN0b3J5Q29udHJhY3QCIkNhbid0IGdldCBXWCBmYWN0b3J5IGNvbnRyYWN0IGFkZHIECmZhY3Ryb3lDZmcJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCWZDb250cmFjdAIRJXNfX2ZhY3RvcnlDb25maWcCGENhbid0IGdldCBXWCBmYWN0b3J5IGNmZwICX18JAQdBZGRyZXNzAQkA2QQBCQCRAwIFCmZhY3Ryb3lDZmcAAQEMYXNzZXRJZFRvU3RyAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAmlkBQckbWF0Y2gwCQDYBAEFAmlkAwkAAQIFByRtYXRjaDACBFVuaXQEBXdhdmVzBQckbWF0Y2gwAgVXQVZFUwkAAgECDE5vdCBBc3NldCBpZAEOYXNzZXRJZEZyb21TdHIBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUHYXNzZXRJZAEQZ2V0QXNzZXREZWNpbWFscwEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwAIBAckbWF0Y2gwCQDsBwEJANkEAQUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgVBc3NldAQFYXNzZXQFByRtYXRjaDAIBQVhc3NldAhkZWNpbWFscwkAAgECEENhbid0IGZpbmQgYXNzZXQBEWdldEFzc2V0UHJlY2l0aW9uAQdhc3NldElkCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUHYXNzZXRJZAAAAAAFBERPV04BDmdldEFzc2V0c1ByaWNlAQhhc3NldElkcwoBCWdldFByaWNlcwIBYQdhc3NldElkBAphc3NldFByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9wcmljZU9yYWNsZUFkZHIJAKwCAgUHYXNzZXRJZAUOa1ByaWNlSW5PcmFjbGUJAM0IAgUBYQUKYXNzZXRQcmljZQoAAiRsBQhhc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJZ2V0UHJpY2VzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIBDWdldFNoYXJlUHJpY2UBB3NoYXJlSWQEBHBvb2wJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFB3NoYXJlSWQFCmtTaGFyZVBvb2wCIENhbid0IGZpbmQgcG9vbCBhZGRyIGJ5IHNoYXJlIGlkBAhwb29sQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAISUG9vbCBpcyBub3QgaW5pdGVkBA0kdDAxMTY4MjExNzQ3CQELZ2V0UG9vbERhdGECBQhwb29sQWRkcgUFcFR5cGUEA2FJZAgFDSR0MDExNjgyMTE3NDcCXzEEA2JJZAgFDSR0MDExNjgyMTE3NDcCXzIECGFCYWxhbmNlCAUNJHQwMTE2ODIxMTc0NwJfMwQIYkJhbGFuY2UIBQ0kdDAxMTY4MjExNzQ3Al80BAdkUHJpY2VBCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9wcmljZU9yYWNsZUFkZHIJAKwCAgUDYUlkBQ5rUHJpY2VJbk9yYWNsZQQHZFByaWNlQgkBEUBleHRyTmF0aXZlKDEwNTApAgUPcHJpY2VPcmFjbGVBZGRyCQCsAgIFA2JJZAUOa1ByaWNlSW5PcmFjbGUEC3NoYXJlU3VwcGx5CQEOZ2V0U2hhcmVTdXBwbHkDBQhwb29sQWRkcgUFcFR5cGUFB3NoYXJlSWQECkFQcmVjaXNpb24JAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQNhSWQAAAAABQRET1dOBApCUHJlY2lzaW9uCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUDYklkAAAAAAUERE9XTgQOc2hhcmVQcmVjaXNpb24JAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQdzaGFyZUlkAAAAAAUERE9XTgQDc3VtCQBkAgkAawMFCGFCYWxhbmNlBQdkUHJpY2VBBQpBUHJlY2lzaW9uCQBrAwUIYkJhbGFuY2UFB2RQcmljZUIFCkJQcmVjaXNpb24JAGsDBQNzdW0FDnNoYXJlUHJlY2lzaW9uBQtzaGFyZVN1cHBseQEOZ2V0U2hhcmVQcmljZXMBCHNoYXJlSWRzCgEJZ2V0UHJpY2VzAgFhB3NoYXJlSWQJAM0IAgUBYQkBDWdldFNoYXJlUHJpY2UBBQdzaGFyZUlkCgACJGwFCHNoYXJlSWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlnZXRQcmljZXMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAEOZ2V0Q3Vyc0VudHJpZXMEA2FJZANiSWQHc2hhcmVJZAh3QW1vdW50cwQMYXNzZXRzUHJpY2VzCQEOZ2V0QXNzZXRzUHJpY2UBCQDMCAIFA2FJZAkAzAgCBQNiSWQFA25pbAQKc2hhcmVQcmljZQkBDWdldFNoYXJlUHJpY2UBBQdzaGFyZUlkBAZwcmljZXMJAM4IAgkAzAgCCQCkAwEJAJEDAgUMYXNzZXRzUHJpY2VzAAAJAMwIAgkApAMBCQCRAwIFDGFzc2V0c1ByaWNlcwABCQDMCAIJAKQDAQUKc2hhcmVQcmljZQUDbmlsBQh3QW1vdW50cwkAzAgCCQELU3RyaW5nRW50cnkCBQ9rVG9rZW5MYXN0UHJpY2UJALkJAgUGcHJpY2VzAgEsBQNuaWwBGGNhbGNSZXBsZW5pc2hCeVR3b1Rva2VucwgFcFR5cGUIcG9vbEFkZHIEcG10QQNhSWQEcG10QgNiSWQEYmFsQQRiYWxCAwkAAAIFBXBUeXBlBQdTRl9QT09MBARyZXBsCgABQAkA/AcEBQhwb29sQWRkcgIMY2FsbEZ1bmN0aW9uCQDMCAICIGNhbGNMUFJlcGxlbmlzaFR3b1Rva2Vuc1JFQURPTkxZCQDMCAIJAMwIAgkApAMBBQRwbXRBCQDMCAIJAKQDAQUEcG10QgUDbmlsBQNuaWwFA25pbAMJAAECBQFAAglMaXN0W0FueV0FAUAJAAIBCQCsAgIJAAMBBQFAAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0DCQAAAgUEcmVwbAUEcmVwbAkAlwoFCgABQAkAkQMCBQRyZXBsAAMDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CgABQAkAkQMCBQRyZXBsAAQDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CgABQAkAkQMCBQRyZXBsAAEDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CQEMYXNzZXRJZFRvU3RyAQkAkQMCBQRyZXBsAAIKAAFACQCRAwIFBHJlcGwAAAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUFcFR5cGUFB1dYX1BPT0wEDSR0MDEzMjkyMTM1NDIJAJQKAgkAtQkCCgABQAkA/AcEBQhwb29sQWRkcgIgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkJAMwIAgUEcG10QQUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nAgJfXwkAtQkCCgABQAkA/AcEBQhwb29sQWRkcgIfZXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQkAzAgCBQRwbXRCBQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcCAl9fAwkAAAIFDSR0MDEzMjkyMTM1NDIFDSR0MDEzMjkyMTM1NDIECmV2YWxQdXRJbkIIBQ0kdDAxMzI5MjEzNTQyAl8yBApldmFsUHV0SW5BCAUNJHQwMTMyOTIxMzU0MgJfMQQFbHBJbkEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpldmFsUHV0SW5BAAEEBWxwSW5CCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQgABAwkAZgIFBWxwSW5CBQVscEluQQQDcG10CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQQAICQCXCgUFBHBtdEEFA3BtdAkAZQIFBHBtdEIFA3BtdAUDYklkBQVscEluQgQDcG10CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQgAHCQCXCgUFA3BtdAUEcG10QgkAZQIFBHBtdEEFA3BtdAUDYUlkBQVscEluQQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkBD3Vua25vd25Qb29sVHlwZQABGHJlcGxlbmlzaFR3b1Rva2Vuc0J5VHlwZQYIcG9vbEFkZHIFcFR5cGUEcG10QQNhSWQEcG10QgNiSWQECHBheW1lbnRzCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQNhSWQFBHBtdEEJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFA2JJZAUEcG10QgUDbmlsAwkAAAIFBXBUeXBlBQdTRl9QT09MCQD8BwQFCHBvb2xBZGRyAgxjYWxsRnVuY3Rpb24JAMwIAgIWcmVwbGVuaXNoV2l0aFR3b1Rva2VucwkAzAgCCQDMCAICBWZhbHNlCQDMCAICATAFA25pbAUDbmlsBQhwYXltZW50cwMJAAACBQVwVHlwZQUHV1hfUE9PTAkA/AcEBQhwb29sQWRkcgIDcHV0CQDMCAIAwIQ9CQDMCAIHBQNuaWwFCHBheW1lbnRzCQEPdW5rbm93blBvb2xUeXBlAAEXcmVwbGVuaXNoT25lVG9rZW5CeVR5cGUECHBvb2xBZGRyBXBUeXBlA3BtdAVwbXRJZAQIcGF5bWVudHMJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFBXBtdElkBQNwbXQFA25pbAMJAAACBQVwVHlwZQUHU0ZfUE9PTAkA/AcEBQhwb29sQWRkcgIMY2FsbEZ1bmN0aW9uCQDMCAICFXJlcGxlbmlzaFdpdGhPbmVUb2tlbgkAzAgCCQDMCAICATAJAMwIAgIFZmFsc2UJAMwIAgIBMAUDbmlsBQNuaWwFCHBheW1lbnRzAwkAAAIFBXBUeXBlBQdXWF9QT09MCQD8BwQFCHBvb2xBZGRyAglwdXRPbmVUa24JAMwIAgAACQDMCAIHBQNuaWwFCHBheW1lbnRzCQEPdW5rbm93blBvb2xUeXBlAAEHc3Rha2VMUAQEcG9vbAVwVHlwZQdzaGFyZUlkBmFtb3VudAQIcGF5bWVudHMJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUHc2hhcmVJZAUGYW1vdW50BQNuaWwDCQAAAgUFcFR5cGUFB1NGX1BPT0wJAPwHBAkBEGdldFNGRmFybWluZ0FkZHIAAg9sb2NrU2hhcmVUb2tlbnMJAMwIAgUEcG9vbAkAzAgCAAAFA25pbAUIcGF5bWVudHMDCQAAAgUFcFR5cGUFB1dYX1BPT0wJAPwHBAkBEGdldFdYRmFybWluZ0FkZHIBCQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sAgVzdGFrZQUDbmlsBQhwYXltZW50cwkBD3Vua25vd25Qb29sVHlwZQABCXVuc3Rha2VMUAQEcG9vbAVwVHlwZQdzaGFyZUlkBmFtb3VudAQNJHQwMTUyMDExNTU1MQMJAAACBQVwVHlwZQUHU0ZfUE9PTAkAlQoDCQEQZ2V0U0ZGYXJtaW5nQWRkcgACE3dpdGhkcmF3U2hhcmVUb2tlbnMJAMwIAgUEcG9vbAkAzAgCBQZhbW91bnQFA25pbAMJAAACBQVwVHlwZQUHV1hfUE9PTAkAlQoDCQEQZ2V0V1hGYXJtaW5nQWRkcgEJAQdBZGRyZXNzAQkA2QQBBQRwb29sAgd1bnN0YWtlCQDMCAIFB3NoYXJlSWQJAMwIAgUGYW1vdW50BQNuaWwJAQ91bmtub3duUG9vbFR5cGUABAhmYXJtQWRkcggFDSR0MDE1MjAxMTU1NTECXzEEBWZOYW1lCAUNJHQwMTUyMDExNTU1MQJfMgQGcGFyYW1zCAUNJHQwMTUyMDExNTU1MQJfMwQDaW52CQD8BwQFCGZhcm1BZGRyBQVmTmFtZQUGcGFyYW1zBQNuaWwDCQAAAgUDaW52BQNpbnYFBmFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgERY2FsY0Ftb3VudFRvUGF5U0YHBHBvb2wIYXNzZXRJZEEIYXNzZXRJZEIEYmFsQQRiYWxCEGFtb3VudFRva2VuVG9HZXQPYXNzZXRUb2tlblRvR2V0BAhwb29sQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wECWZlZVNjYWxlNgDAhD0EA2ZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUIcG9vbEFkZHIFCmtTRlBvb2xGZWUEDGFtbnRHZXROb0ZlZQkAbgQFEGFtb3VudFRva2VuVG9HZXQFCWZlZVNjYWxlNgkAZQIFCWZlZVNjYWxlNgUDZmVlBQdDRUlMSU5HBA0kdDAxNTk3MzE2Mjc5AwkAAAIFD2Fzc2V0VG9rZW5Ub0dldAUIYXNzZXRJZEEEC2Ftb3VudFRvUGF5CQBuBAUMYW1udEdldE5vRmVlBQRiYWxCCQBlAgUEYmFsQQUMYW1udEdldE5vRmVlBQdDRUlMSU5HCQCUCgIFC2Ftb3VudFRvUGF5BQhhc3NldElkQgQLYW1vdW50VG9QYXkJAG4EBQxhbW50R2V0Tm9GZWUFBGJhbEEJAGUCBQRiYWxCBQxhbW50R2V0Tm9GZWUFB0NFSUxJTkcJAJQKAgULYW1vdW50VG9QYXkFCGFzc2V0SWRBBAthbW91bnRUb1BheQgFDSR0MDE1OTczMTYyNzkCXzEECmFzc2V0VG9QYXkIBQ0kdDAxNTk3MzE2Mjc5Al8yCQCUCgIFCmFzc2V0VG9QYXkFC2Ftb3VudFRvUGF5AQ1nZXRXWFN3YXBGZWVzAQRwb29sBAhwb29sQWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAQJZkNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHICEyVzX19mYWN0b3J5Q29udHJhY3QCIkNhbid0IGdldCBXWCBmYWN0b3J5IGNvbnRyYWN0IGFkZHIEDnBvb2xGZWVEZWZhdWx0CQEFdmFsdWUBCQCaCAIFDnd4U3dhcENvbnRyYWN0Agslc19fcG9vbEZlZQQScHJvdG9jb2xGZWVEZWZhdWx0CQEFdmFsdWUBCQCaCAIFDnd4U3dhcENvbnRyYWN0Ag8lc19fcHJvdG9jb2xGZWUEByRtYXRjaDAJAPwHBAUJZkNvbnRyYWN0AhJnZXRTd2FwRmVlUkVBRE9OTFkJAMwIAgkApQgBBQhwb29sQWRkcgUDbmlsBQNuaWwDCQABAgUHJG1hdGNoMAIKKEludCwgSW50KQQEZmVlcwUHJG1hdGNoMAkAlAoCCAUEZmVlcwJfMQgFBGZlZXMCXzIJAJQKAgUOcG9vbEZlZURlZmF1bHQFEnByb3RvY29sRmVlRGVmYXVsdAERY2FsY0Ftb3VudFRvUGF5V1gHBHBvb2wIYXNzZXRJZEEIYXNzZXRJZEIEYmFsQQRiYWxCEGFtb3VudFRva2VuVG9HZXQPYXNzZXRUb2tlblRvR2V0BA0kdDAxNzAxOTE3MDU4CQENZ2V0V1hTd2FwRmVlcwEFBHBvb2wEBHBGZWUIBQ0kdDAxNzAxOTE3MDU4Al8xBAVwckZlZQgFDSR0MDE3MDE5MTcwNTgCXzIECGZlZVNjYWxlCQC2AgEAgMLXLwQNJHQwMTcwOTgxNzQwNgMJAAACBQ9hc3NldFRva2VuVG9HZXQFCGFzc2V0SWRBBAthbW91bnRUb1BheQkAawMFEGFtb3VudFRva2VuVG9HZXQFBGJhbEIJAGUCBQRiYWxBBRBhbW91bnRUb2tlblRvR2V0CQCUCgIFC2Ftb3VudFRvUGF5BQhhc3NldElkQgQLYW1vdW50VG9QYXkJAGsDBRBhbW91bnRUb2tlblRvR2V0BQRiYWxBCQBlAgUEYmFsQgUQYW1vdW50VG9rZW5Ub0dldAkAlAoCBQthbW91bnRUb1BheQUIYXNzZXRJZEEEC2Ftb3VudFRvUGF5CAUNJHQwMTcwOTgxNzQwNgJfMQQKYXNzZXRUb1BheQgFDSR0MDE3MDk4MTc0MDYCXzIEEmFtb3VudFRvUGF5V2l0aEZlZQkAoAMBCQC9AgQJALYCAQULYW1vdW50VG9QYXkFCGZlZVNjYWxlCQC4AgIFCGZlZVNjYWxlCQC2AgEJAGQCBQVwckZlZQUEcEZlZQUHQ0VJTElORwkAlAoCBQphc3NldFRvUGF5BRJhbW91bnRUb1BheVdpdGhGZWUBEGV4Y2hhbmdlRGlyZWN0bHkIBXBUeXBlBHBvb2wIYXNzZXRJZEEIYXNzZXRJZEIEYmFsQQRiYWxCEGFtb3VudFRva2VuVG9HZXQPYXNzZXRUb2tlblRvR2V0AwkAAAIFBXBUeXBlBQdTRl9QT09MBA0kdDAxNzc1MzE3ODc1CQERY2FsY0Ftb3VudFRvUGF5U0YHBQRwb29sBQhhc3NldElkQQUIYXNzZXRJZEIFBGJhbEEFBGJhbEIFEGFtb3VudFRva2VuVG9HZXQFD2Fzc2V0VG9rZW5Ub0dldAQKYXNzZXRUb1BheQgFDSR0MDE3NzUzMTc4NzUCXzEEC2Ftb3VudFRvUGF5CAUNJHQwMTc3NTMxNzg3NQJfMgkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sAgxjYWxsRnVuY3Rpb24JAMwIAgIIZXhjaGFuZ2UJAMwIAgkAzAgCCQCkAwEFEGFtb3VudFRva2VuVG9HZXQFA25pbAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQphc3NldFRvUGF5BQthbW91bnRUb1BheQUDbmlsAwkAAAIFBXBUeXBlBQdXWF9QT09MBA0kdDAxODA3NTE4MTk3CQERY2FsY0Ftb3VudFRvUGF5V1gHBQRwb29sBQhhc3NldElkQQUIYXNzZXRJZEIFBGJhbEEFBGJhbEIFEGFtb3VudFRva2VuVG9HZXQFD2Fzc2V0VG9rZW5Ub0dldAQKYXNzZXRUb1BheQgFDSR0MDE4MDc1MTgxOTcCXzEEC2Ftb3VudFRvUGF5CAUNJHQwMTgwNzUxODE5NwJfMgkA/AcEBQ53eFN3YXBDb250cmFjdAIEc3dhcAkAzAgCBRBhbW91bnRUb2tlblRvR2V0CQDMCAIFD2Fzc2V0VG9rZW5Ub0dldAkAzAgCCQClCAEFBHRoaXMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUKYXNzZXRUb1BheQULYW1vdW50VG9QYXkFA25pbAkBD3Vua25vd25Qb29sVHlwZQABGmNhbGNXaXRoZHJhd0xQRnJvbVBvb2xWaXJ0BAhwb29sQWRkcgVwVHlwZQdzaGFyZUlkD3VzZXJDYW5XaXRoZHJhdwQNJHQwMTg0ODQxODk0OAMJAAACBQVwVHlwZQUHU0ZfUE9PTAQDaW52CgABQAkA/AcEBQhwb29sQWRkcgIMY2FsbEZ1bmN0aW9uCQDMCAICEHdpdGhkcmF3UkVBRE9OTFkJAMwIAgkAzAgCCQCkAwEFD3VzZXJDYW5XaXRoZHJhdwUDbmlsBQNuaWwFA25pbAMJAAECBQFAAglMaXN0W0FueV0FAUAJAAIBCQCsAgIJAAMBBQFAAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0DCQAAAgUDaW52BQNpbnYJAJQKAgoAAUAJAJEDAgUDaW52AAADCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CgABQAkAkQMCBQNpbnYAAQMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUFcFR5cGUFB1dYX1BPT0wEA2ludgkAtQkCCgABQAkA/AcEBQhwb29sQWRkcgITZXZhbHVhdGVHZXRSRUFET05MWQkAzAgCBQdzaGFyZUlkCQDMCAIFD3VzZXJDYW5XaXRoZHJhdwUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nAgJfXwMJAAACBQNpbnYFA2ludgkAlAoCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDaW52AAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNpbnYAAgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkBD3Vua25vd25Qb29sVHlwZQAEB2Ftb3VudEEIBQ0kdDAxODQ4NDE4OTQ4Al8xBAdhbW91bnRCCAUNJHQwMTg0ODQxODk0OAJfMgkAlAoCBQdhbW91bnRBBQdhbW91bnRCAQtjbGFpbUZhcm1lZAIFcFR5cGUEcG9vbAMJAAACBQVwVHlwZQUHU0ZfUE9PTAQJYmFsQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBBQZTV09QSUQDCQAAAgUJYmFsQmVmb3JlBQliYWxCZWZvcmUEA2ludgkA/AcECQEQZ2V0U0ZGYXJtaW5nQWRkcgACBWNsYWltCQDMCAIFBHBvb2wFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52BAhiYWxBZnRlcgkBDmFjY291bnRCYWxhbmNlAQUGU1dPUElECQCUCgIJAGUCBQhiYWxBZnRlcgUJYmFsQmVmb3JlBQZTV09QSUQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUFcFR5cGUFB1dYX1BPT0wEDSR0MDE5MzE2MTkzOTUJAQ1nZXRXWFBvb2xEYXRhAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAQDYUlkCAUNJHQwMTkzMTYxOTM5NQJfMQQDYklkCAUNJHQwMTkzMTYxOTM5NQJfMgQEYUJhbAgFDSR0MDE5MzE2MTkzOTUCXzMEBGJCYWwIBQ0kdDAxOTMxNjE5Mzk1Al80BARscElkCAUNJHQwMTkzMTYxOTM5NQJfNQQJYmFsQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBBQRXWElEAwkAAAIFCWJhbEJlZm9yZQUJYmFsQmVmb3JlBANpbnYJAPwHBAkBEGdldFdYRmFybWluZ0FkZHIBCQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sAgdjbGFpbVd4CQDMCAIFBGxwSWQFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52BAhiYWxBZnRlcgkBDmFjY291bnRCYWxhbmNlAQUEV1hJRAkAlAoCCQBlAgUIYmFsQWZ0ZXIFCWJhbEJlZm9yZQUEV1hJRAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkBD3Vua25vd25Qb29sVHlwZQABD3JlcGxlbmlzaEJ5VHlwZQoFcFR5cGUEcG9vbAdmZWVUeXBlBHBtdEEDYUlkBHBtdEIDYklkBGJhbEEEYmFsQgRMUElkBA9scEJhbGFuY2VCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJANkEAQUETFBJZAMJAAACBQ9scEJhbGFuY2VCZWZvcmUFD2xwQmFsYW5jZUJlZm9yZQQIcG9vbEFkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBHBvb2wEDSR0MDE5OTkzMjA0MDkDAwkAZgIFBHBtdEEAAAkAZgIFBHBtdEIAAAcEDSR0MDIwMDU5MjAxNzUJARhjYWxjUmVwbGVuaXNoQnlUd29Ub2tlbnMIBQVwVHlwZQUIcG9vbEFkZHIFBHBtdEEFA2FJZAUEcG10QgUDYklkBQRiYWxBBQRiYWxCBAZwbXRJbkEIBQ0kdDAyMDA1OTIwMTc1Al8xBAZwbXRJbkIIBQ0kdDAyMDA1OTIwMTc1Al8yBAZjaGFuZ2UIBQ0kdDAyMDA1OTIwMTc1Al8zBAhjaGFuZ2VJZAgFDSR0MDIwMDU5MjAxNzUCXzQEA2ludgkBGHJlcGxlbmlzaFR3b1Rva2Vuc0J5VHlwZQYFCHBvb2xBZGRyBQVwVHlwZQUGcG10SW5BBQNhSWQFBnBtdEluQgUDYklkAwkAAAIFA2ludgUDaW52CQCUCgIFBmNoYW5nZQUIY2hhbmdlSWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQBmAgUEcG10QQAACQCUCgIFBHBtdEEFA2FJZAMJAGYCBQRwbXRCAAAJAJQKAgUEcG10QgUDYklkCQACAQIQcG10cyBtdXN0IGJlID4gMAQGY2hhbmdlCAUNJHQwMTk5OTMyMDQwOQJfMQQIY2hhbmdlSWQIBQ0kdDAxOTk5MzIwNDA5Al8yBANpbnYDCQBmAgUGY2hhbmdlAAAJARdyZXBsZW5pc2hPbmVUb2tlbkJ5VHlwZQQFCHBvb2xBZGRyBQVwVHlwZQUGY2hhbmdlBQhjaGFuZ2VJZAUDbmlsAwkAAAIFA2ludgUDaW52BA5scEJhbGFuY2VBZnRlcgkBDmFjY291bnRCYWxhbmNlAQkA2QQBBQRMUElkBAt0b3RhbFN0YWtlZAkAZQIFDmxwQmFsYW5jZUFmdGVyBQ9scEJhbGFuY2VCZWZvcmUEDWF4bHlGZWVBbW91bnQJAGsDBQt0b3RhbFN0YWtlZAkBCmdldEF4bHlGZWUCBQRwb29sBQdmZWVUeXBlBQpGRUVfU0NBTEU2BBF1c2VyU2hhcmVGb3JTdGFrZQkAZQIFC3RvdGFsU3Rha2VkBQ1heGx5RmVlQW1vdW50AwkAZwIAAAURdXNlclNoYXJlRm9yU3Rha2UJAAIBAihhbW91bnQgb2Ygc3Rha2VkIHNoYXJldG9rZW5zIG11c3QgYmUgPiAwBAVpbnZMUAkBB3N0YWtlTFAEBQRwb29sBQVwVHlwZQUETFBJZAURdXNlclNoYXJlRm9yU3Rha2UDCQAAAgUFaW52TFAFBWludkxQCQCUCgIFEXVzZXJTaGFyZUZvclN0YWtlBQ1heGx5RmVlQW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARByZXBsZW5pc2hFbnRyaWVzCARwb29sBHVzZXIMc3Rha2VkQW1vdW50DWF4bHlGZWVBbW91bnQGcG9zTnVtB3NoYXJlSWQEdHlwZQh3aXRoTG9hbgQLdG90YWxBbW91bnQJARFnZXRQb29sVG90YWxTaGFyZQEFBHBvb2wED3RvdGFsQW1vdW50TG9hbgkBGWdldFBvb2xUb3RhbFNoYXJlV2l0aExvYW4BBQRwb29sBA0kdDAyMTI2NzIxNTA1AwUId2l0aExvYW4JAJQKAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRFrUG9vbEludGVyZXN0TG9hbgkAZAIFD3RvdGFsQW1vdW50TG9hbgUMc3Rha2VkQW1vdW50CQCUCgIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUTa1Bvb2xJbnRlcmVzdE5vTG9hbgUPdG90YWxBbW91bnRMb2FuBA9jdXJQb29sSW50ZXJlc3QIBQ0kdDAyMTI2NzIxNTA1Al8xBBN0b3RhbFN0YWtlZFdpdGhMb2FuCAUNJHQwMjEyNjcyMTUwNQJfMgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQprUG9vbFRvdGFsCQBkAgULdG90YWxBbW91bnQFDHN0YWtlZEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbFRvdGFsTG9hbgUTdG90YWxTdGFrZWRXaXRoTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUGcG9zTnVtBQ1rVXNlclBvc2l0aW9uBQxzdGFrZWRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBnBvc051bQUVa1VzZXJQb3NpdGlvbkludGVyZXN0BQ9jdXJQb29sSW50ZXJlc3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwkApAMBBQZwb3NOdW0FEWtVc2VyUG9zaXRpb25Qb29sBQRwb29sCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFEGtVc2VyUG9zaXRpb25OdW0FBnBvc051bQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQhtb25leUJveAUNYXhseUZlZUFtb3VudAkA2QQBBQdzaGFyZUlkBQNuaWwBDmV4Y2hhbmdlS2VlcGVyCgd0b1Rva2VuCXBtdEFtb3VudAhwbXRBc3NldAlhbW91bnRzSW4JYWRkcmVzc2VzD2Fzc2V0c1RvUmVjZWl2ZQtlc3RSZWNlaXZlZBFzbGlwcGFnZVRvbGVyYW5jZQttaW5SZWNlaXZlZAdvcHRpb25zBBJ0b2tlbkJhbGFuY2VCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3RvVG9rZW4DCQAAAgUSdG9rZW5CYWxhbmNlQmVmb3JlBRJ0b2tlbkJhbGFuY2VCZWZvcmUEA2ludgkA/AcEBQpleENvbnRyYWN0AgRzd2FwCQDMCAIFCWFtb3VudHNJbgkAzAgCBQlhZGRyZXNzZXMJAMwIAgUPYXNzZXRzVG9SZWNlaXZlCQDMCAIFC2VzdFJlY2VpdmVkCQDMCAIFEXNsaXBwYWdlVG9sZXJhbmNlCQDMCAIFC21pblJlY2VpdmVkCQDMCAIFB29wdGlvbnMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUIcG10QXNzZXQFCXBtdEFtb3VudAUDbmlsAwkAAAIFA2ludgUDaW52CQBlAgkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUHdG9Ub2tlbgUSdG9rZW5CYWxhbmNlQmVmb3JlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ5leGNoYW5nZVB1enpsZQYHdG9Ub2tlbglwbXRBbW91bnQIcG10QXNzZXQJcm91dGVzU3RyDG1pblRvUmVjZWl2ZQdvcHRpb25zBBJ0b2tlbkJhbGFuY2VCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3RvVG9rZW4DCQAAAgUSdG9rZW5CYWxhbmNlQmVmb3JlBRJ0b2tlbkJhbGFuY2VCZWZvcmUEA2ludgkA/AcEBQpleENvbnRyYWN0AgpwdXp6bGVTd2FwCQDMCAIFCXJvdXRlc1N0cgkAzAgCBQxtaW5Ub1JlY2VpdmUJAMwIAgUHb3B0aW9ucwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQhwbXRBc3NldAUJcG10QW1vdW50BQNuaWwDCQAAAgUDaW52BQNpbnYJAGUCCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b1Rva2VuBRJ0b2tlbkJhbGFuY2VCZWZvcmUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDmV4Y2hhbmdlU3dvcEZpCgd0b1Rva2VuCXBtdEFtb3VudAhwbXRBc3NldApleGNoYW5nZXJzDmV4Y2hhbmdlcnNUeXBlBWFyZ3MxBWFyZ3MyEXJvdXRpbmdBc3NldHNLZXlzEm1pbkFtb3VudFRvUmVjZWl2ZQdvcHRpb25zBBJ0b2tlbkJhbGFuY2VCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3RvVG9rZW4DCQAAAgUSdG9rZW5CYWxhbmNlQmVmb3JlBRJ0b2tlbkJhbGFuY2VCZWZvcmUEA2ludgkA/AcEBQpleENvbnRyYWN0Agpzd29wZmlTd2FwCQDMCAIFCmV4Y2hhbmdlcnMJAMwIAgUOZXhjaGFuZ2Vyc1R5cGUJAMwIAgUFYXJnczEJAMwIAgUFYXJnczIJAMwIAgURcm91dGluZ0Fzc2V0c0tleXMJAMwIAgUSbWluQW1vdW50VG9SZWNlaXZlCQDMCAIFB29wdGlvbnMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUIcG10QXNzZXQFCXBtdEFtb3VudAUDbmlsAwkAAAIFA2ludgUDaW52CQBlAgkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUHdG9Ub2tlbgUSdG9rZW5CYWxhbmNlQmVmb3JlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQpjYXBpdGFsaXplBARwb29sBXBUeXBlB3Rva2VuSWQLdG9rZW5BbW91bnQECHBvb2xBZGRyCQEHQWRkcmVzcwEJANkEAQUEcG9vbAQNJHQwMjM4NTkyMzkyNQkBC2dldFBvb2xEYXRhAgUIcG9vbEFkZHIFBXBUeXBlBANBSWQIBQ0kdDAyMzg1OTIzOTI1Al8xBANCSWQIBQ0kdDAyMzg1OTIzOTI1Al8yBARiYWxBCAUNJHQwMjM4NTkyMzkyNQJfMwQEYmFsQggFDSR0MDIzODU5MjM5MjUCXzQEB3NoYXJlSWQIBQ0kdDAyMzg1OTIzOTI1Al81AwMJAQIhPQIFB3Rva2VuSWQFA0FJZAkBAiE9AgUHdG9rZW5JZAUDQklkBwkAAgECC1dyb25nIGFzc2V0BAtheGx5RmVlTG9hbgkAawMFC3Rva2VuQW1vdW50CQEKZ2V0QXhseUZlZQIFBHBvb2wFDENBUF9GRUVfTE9BTgUKRkVFX1NDQUxFNgQNYXhseUZlZU5vTG9hbgkAawMFC3Rva2VuQW1vdW50CQEKZ2V0QXhseUZlZQIFBHBvb2wFD0NBUF9GRUVfTk9fTE9BTgUKRkVFX1NDQUxFNgQHYXhseUZlZQkAZAIFC2F4bHlGZWVMb2FuBQ1heGx5RmVlTm9Mb2FuBA0kdDAyNDIzMTI0MzMxAwkAAAIFB3Rva2VuSWQFA0FJZAkAlAoCCQBlAgULdG9rZW5BbW91bnQFB2F4bHlGZWUAAAkAlAoCAAAJAGUCBQt0b2tlbkFtb3VudAUHYXhseUZlZQQEcG10QQgFDSR0MDI0MjMxMjQzMzECXzEEBHBtdEIIBQ0kdDAyNDIzMTI0MzMxAl8yBA0kdDAyNDMzNDI0NDM4CQEPcmVwbGVuaXNoQnlUeXBlCgUFcFR5cGUFBHBvb2wFBk5PX0ZFRQUEcG10QQUDQUlkBQRwbXRCBQNCSWQFBGJhbEEFBGJhbEIFB3NoYXJlSWQEDHN0YWtlZEFtb3VudAgFDSR0MDI0MzM0MjQ0MzgCXzEEAm5mCAUNJHQwMjQzMzQyNDQzOAJfMgQTY3VyUG9vbEludGVyZXN0TG9hbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFEWtQb29sSW50ZXJlc3RMb2FuAAAEFWN1clBvb2xJbnRlcmVzdE5vTG9hbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFE2tQb29sSW50ZXJlc3ROb0xvYW4AAAQQdG90YWxTaGFyZUFtb3VudAkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAQYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuCQEZZ2V0UG9vbFRvdGFsU2hhcmVXaXRoTG9hbgEFBHBvb2wEC2xvYW5QZXJjZW50CQBrAwUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuBQZTQ0FMRTgFEHRvdGFsU2hhcmVBbW91bnQECnN0YWtlZExvYW4JAGsDBQxzdGFrZWRBbW91bnQFC2xvYW5QZXJjZW50BQZTQ0FMRTgEDHN0YWtlZE5vTG9hbgkAZQIFDHN0YWtlZEFtb3VudAUKc3Rha2VkTG9hbgQPbmV3SW50ZXJlc3RMb2FuAwkAZgIFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgAACQBkAgUTY3VyUG9vbEludGVyZXN0TG9hbgkAawMFCnN0YWtlZExvYW4FB1NDQUxFMTAFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgAABBFuZXdJbnRlcmVzdE5vTG9hbgMJAGYCCQBlAgUQdG90YWxTaGFyZUFtb3VudAUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuAAAJAGQCBRVjdXJQb29sSW50ZXJlc3ROb0xvYW4JAGsDBQxzdGFrZWROb0xvYW4FB1NDQUxFMTAJAGUCBRB0b3RhbFNoYXJlQW1vdW50BRh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4AAAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEWtQb29sSW50ZXJlc3RMb2FuBQ9uZXdJbnRlcmVzdExvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa1Bvb2xJbnRlcmVzdE5vTG9hbgURbmV3SW50ZXJlc3ROb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAkAZAIFEHRvdGFsU2hhcmVBbW91bnQFDHN0YWtlZEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbFRvdGFsTG9hbgkAZAIFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgUKc3Rha2VkTG9hbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQhtb25leUJveAUHYXhseUZlZQkA2QQBBQd0b2tlbklkBQNuaWwJAQ5nZXRDdXJzRW50cmllcwQFA0FJZAUDQklkBQdzaGFyZUlkBQNuaWwBGHVzZXJDYW5XaXRoZHJhd1NoYXJlQ2FsYwQEdXNlcgRwb29sBXBvc0lkCGJvcnJvd2VkBAdwQW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBQ1rVXNlclBvc2l0aW9uAhBVbmtub3duIHBvc2l0aW9uBAx1c2VySW50ZXJlc3QJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUVa1VzZXJQb3NpdGlvbkludGVyZXN0BAxwb29sSW50ZXJlc3QDBQhib3Jyb3dlZAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRFrUG9vbEludGVyZXN0TG9hbgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRNrUG9vbEludGVyZXN0Tm9Mb2FuCQBkAgUHcEFtb3VudAkAawMFB3BBbW91bnQJAGUCBQxwb29sSW50ZXJlc3QFDHVzZXJJbnRlcmVzdAUHU0NBTEUxMAEPY2FsY1N0b3BMb3NzRmVlBARwb29sCmlzQm9ycm93ZWQIc3RvcExvc3MKbHBXaXRoZHJhdwQHZmVlVHlwZQMFCmlzQm9ycm93ZWQFDVNUT1BMT1NTX0xPQU4FFFNUT1BMT1NTX0ZFRV9OT19MT0FOAwUIc3RvcExvc3MJAGsDBQpscFdpdGhkcmF3CQEKZ2V0QXhseUZlZQIFBHBvb2wFB2ZlZVR5cGUFCkZFRV9TQ0FMRTYAAAEOd2l0aGRyYXdUb1VzZXIEBHVzZXIEcG9vbAVwb3NJZAhzdG9wTG9zcwQHcEFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUNa1VzZXJQb3NpdGlvbgIQVW5rbm93biBwb3NpdGlvbgQKaXNCb3Jyb3dlZAkAZgIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRFrVXNlckJvcnJvd0Ftb3VudAAAAAAED3VzZXJDYW5XaXRoZHJhdwkBGHVzZXJDYW5XaXRoZHJhd1NoYXJlQ2FsYwQFBHVzZXIFBHBvb2wFBXBvc0lkBQppc0JvcnJvd2VkBA5wb29sVG90YWxTaGFyZQkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAQIdXNlckFkZHIJAQdBZGRyZXNzAQkA2QQBBQR1c2VyBAhwb29sQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAIMVW5rbm93biBwb29sBA0kdDAyNzEwODI3MTgwCQELZ2V0UG9vbERhdGECBQhwb29sQWRkcgUFcFR5cGUEBmlkQVN0cggFDSR0MDI3MTA4MjcxODACXzEEBmlkQlN0cggFDSR0MDI3MTA4MjcxODACXzIEBGJhbEEIBQ0kdDAyNzEwODI3MTgwAl8zBARiYWxCCAUNJHQwMjcxMDgyNzE4MAJfNAQHc2hhcmVJZAgFDSR0MDI3MTA4MjcxODACXzUEDSR0MDI3MTgzMjcyNTAJAJQKAgkBDmFzc2V0SWRGcm9tU3RyAQUGaWRBU3RyCQEOYXNzZXRJZEZyb21TdHIBBQZpZEJTdHIEA2lkQQgFDSR0MDI3MTgzMjcyNTACXzEEA2lkQggFDSR0MDI3MTgzMjcyNTACXzIEC3N0b3BMb3NzRmVlCQEPY2FsY1N0b3BMb3NzRmVlBAUEcG9vbAUKaXNCb3Jyb3dlZAUIc3RvcExvc3MFD3VzZXJDYW5XaXRoZHJhdwQLY0JhbEFCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEFA2lkQQMJAAACBQtjQmFsQUJlZm9yZQULY0JhbEFCZWZvcmUEC2NCYWxCQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBBQNpZEIDCQAAAgULY0JhbEJCZWZvcmUFC2NCYWxCQmVmb3JlBANpbnYDCQAAAgUFcFR5cGUFB1NGX1BPT0wEA2ludgkBCXVuc3Rha2VMUAQFBHBvb2wFBXBUeXBlBQdzaGFyZUlkBQtzdG9wTG9zc0ZlZQMJAAACBQNpbnYFA2ludgkA/AcEBQhwb29sQWRkcgIMY2FsbEZ1bmN0aW9uCQDMCAICCHdpdGhkcmF3CQDMCAIJAMwIAgkApAMBBQ91c2VyQ2FuV2l0aGRyYXcFA25pbAUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUFcFR5cGUFB1dYX1BPT0wEA2ludgkBCXVuc3Rha2VMUAQFBHBvb2wFBXBUeXBlBQdzaGFyZUlkCQBkAgUPdXNlckNhbldpdGhkcmF3BQtzdG9wTG9zc0ZlZQMJAAACBQNpbnYFA2ludgkA/AcEBQhwb29sQWRkcgIDZ2V0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFB3NoYXJlSWQFD3VzZXJDYW5XaXRoZHJhdwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQEPdW5rbm93blBvb2xUeXBlAAMJAAACBQNpbnYFA2ludgQKY0JhbEFBZnRlcgkBDmFjY291bnRCYWxhbmNlAQUDaWRBAwkAAAIFCmNCYWxBQWZ0ZXIFCmNCYWxBQWZ0ZXIECmNCYWxCQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEFA2lkQgMJAAACBQpjQmFsQkFmdGVyBQpjQmFsQkFmdGVyBA0kdDAyNzk0NTI4MDM0CQCUCgIJAGUCBQpjQmFsQUFmdGVyBQtjQmFsQUJlZm9yZQkAZQIFCmNCYWxCQWZ0ZXIFC2NCYWxCQmVmb3JlBA10b2tlbnNBbW91bnRBCAUNJHQwMjc5NDUyODAzNAJfMQQNdG9rZW5zQW1vdW50QggFDSR0MDI3OTQ1MjgwMzQCXzIEDSR0MDI4MDM3MjkyNzMDBQppc0JvcnJvd2VkBAtib3Jyb3dBc3NldAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRJrVXNlckJvcnJvd0Fzc2V0SWQEBGRlYnQKAAFACQD8BwQJAQ5nZXRMZW5kU3J2QWRkcgACDGdldEFzc2V0RGVidAkAzAgCBwkAzAgCCQCsAgIJAKwCAgUEdXNlcgIBXwUFcG9zSWQJAMwIAgULYm9ycm93QXNzZXQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQRkZWJ0BQRkZWJ0BA1hbW91bnRUb0dldEV4AwMJAAACBQtib3Jyb3dBc3NldAUGaWRBU3RyCQBmAgUEZGVidAUNdG9rZW5zQW1vdW50QQcJAGUCBQRkZWJ0BQ10b2tlbnNBbW91bnRBAwMJAAACBQtib3Jyb3dBc3NldAUGaWRCU3RyCQBmAgUEZGVidAUNdG9rZW5zQW1vdW50QgcJAGUCBQRkZWJ0BQ10b2tlbnNBbW91bnRCAAAEBWV4SW52AwkAZgIFDWFtb3VudFRvR2V0RXgAAAkBEGV4Y2hhbmdlRGlyZWN0bHkIBQVwVHlwZQUEcG9vbAUGaWRBU3RyBQZpZEJTdHIJAGUCBQRiYWxBBQ10b2tlbnNBbW91bnRBCQBlAgUEYmFsQgUNdG9rZW5zQW1vdW50QgUNYW1vdW50VG9HZXRFeAULYm9ycm93QXNzZXQFA25pbAMJAAACBQVleEludgUFZXhJbnYED2NCYWxBQWZ0ZXJSZXBheQkBDmFjY291bnRCYWxhbmNlAQUDaWRBAwkAAAIFD2NCYWxBQWZ0ZXJSZXBheQUPY0JhbEFBZnRlclJlcGF5BA9jQmFsQkFmdGVyUmVwYXkJAQ5hY2NvdW50QmFsYW5jZQEFA2lkQgMJAAACBQ9jQmFsQkFmdGVyUmVwYXkFD2NCYWxCQWZ0ZXJSZXBheQQLY2xvc2VEYnRJbnYDCQBmAgUEZGVidAAACQD8BwQJAQ5nZXRMZW5kU3J2QWRkcgACCHJlcGF5Rm9yCQDMCAIJAKwCAgkArAICBQR1c2VyAgFfBQVwb3NJZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQtib3Jyb3dBc3NldAUEZGVidAUDbmlsAAADCQAAAgULY2xvc2VEYnRJbnYFC2Nsb3NlRGJ0SW52AwkAAAIFC2JvcnJvd0Fzc2V0BQZpZEFTdHIJAJQKAgkAZQIJAGUCBQ9jQmFsQUFmdGVyUmVwYXkFC2NCYWxBQmVmb3JlBQRkZWJ0CQBlAgUPY0JhbEJBZnRlclJlcGF5BQtjQmFsQkJlZm9yZQkAlAoCCQBlAgUPY0JhbEFBZnRlclJlcGF5BQtjQmFsQUJlZm9yZQkAZQIJAGUCBQ9jQmFsQkFmdGVyUmVwYXkFC2NCYWxCQmVmb3JlBQRkZWJ0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFDXRva2Vuc0Ftb3VudEEFDXRva2Vuc0Ftb3VudEIEB3RvVXNlckEIBQ0kdDAyODAzNzI5MjczAl8xBAd0b1VzZXJCCAUNJHQwMjgwMzcyOTI3MwJfMgQHZW50cmllcwkAzggCCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUNa1VzZXJQb3NpdGlvbgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQVwb3NJZAURa1VzZXJQb3NpdGlvblBvb2wJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRFrVXNlckJvcnJvd0Ftb3VudAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFEmtVc2VyQm9ycm93QXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFFWtVc2VyUG9zaXRpb25JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQprUG9vbFRvdGFsCQBlAgkAZQIFDnBvb2xUb3RhbFNoYXJlBQ91c2VyQ2FuV2l0aGRyYXcFC3N0b3BMb3NzRmVlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCHVzZXJBZGRyBQd0b1VzZXJBBQNpZEEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIdXNlckFkZHIFB3RvVXNlckIFA2lkQgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQhtb25leUJveAULc3RvcExvc3NGZWUJANkEAQUHc2hhcmVJZAUDbmlsCQEOZ2V0Q3Vyc0VudHJpZXMEBQZpZEFTdHIFBmlkQlN0cgUHc2hhcmVJZAUDbmlsCQCUCgIFB2VudHJpZXMJAMwIAgUHdG9Vc2VyQQkAzAgCBQd0b1VzZXJCBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDHBhcnNlUmVxdWVzdAEJcmVxdWVzdElkBAdyZXF1ZXN0CQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFCXJlcXVlc3RJZAUKa1JlcXVlc3RJZAkArAICAhNObyByZXF1ZXN0IHdpdGggaWQgBQlyZXF1ZXN0SWQCASwEBHVzZXIJAJEDAgUHcmVxdWVzdAAABARwb29sCQCRAwIFB3JlcXVlc3QAAQQEcG10QQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QAAgQDQUlkCQCRAwIFB3JlcXVlc3QAAwQEcG10QgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QABAQDQklkCQCRAwIFB3JlcXVlc3QABQQEYmFsQQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QABgQEYmFsQgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QABwQHc2hhcmVJZAkAkQMCBQdyZXF1ZXN0AAgEB2J3QXNzZXQJAJEDAgUHcmVxdWVzdAAJBAhid0Ftb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QACgkAnQoLBQR1c2VyBQRwb29sBQRwbXRBBQNBSWQFBHBtdEIFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAUHYndBc3NldAUIYndBbW91bnQBEGNhbGNCb3Jyb3dBbW91bnQGBHBtdEEEcG10QgNhSWQDYklkCGxldmVyYWdlCGJvcnJvd0lkAwMJAQIhPQIFCGJvcnJvd0lkBQNhSWQJAQIhPQIFCGJvcnJvd0lkBQNiSWQHCQACAQISV3JvbmcgYm9ycm93IGFzc2V0BAdkUHJpY2VBCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9wcmljZU9yYWNsZUFkZHIJAKwCAgUDYUlkBQ5rUHJpY2VJbk9yYWNsZQQHZFByaWNlQgkBEUBleHRyTmF0aXZlKDEwNTApAgUPcHJpY2VPcmFjbGVBZGRyCQCsAgIFA2JJZAUOa1ByaWNlSW5PcmFjbGUEBmRlY1ByQQkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFA2FJZAAAAAAFBERPV04EBmRlY1ByQgkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFA2JJZAAAAAAFBERPV04EDHBheWRJbkRvbGxhcgkAZAIJAGsDBQdkUHJpY2VBBQRwbXRBBQZkZWNQckEJAGsDBQdkUHJpY2VCBQRwbXRCBQZkZWNQckIEDSR0MDMxMDg4MzExODUDCQAAAgUIYm9ycm93SWQFA2FJZAkAlAoCBQdkUHJpY2VBBQZkZWNQckEJAJQKAgUHZFByaWNlQgUGZGVjUHJCBAtib3Jyb3dQcmljZQgFDSR0MDMxMDg4MzExODUCXzEEC2JvcnJvd0RlY1ByCAUNJHQwMzEwODgzMTE4NQJfMgkAawMJAGsDBQxwYXlkSW5Eb2xsYXIJAGUCBQhsZXZlcmFnZQBkAGQFC2JvcnJvd0RlY1ByBQtib3Jyb3dQcmljZQEScGFyc2VSZXBsZW5pc2hQbXRzAwRwbXRzA0FJZANCSWQDCQAAAgkAkAMBBQRwbXRzAAIDCQECIT0CCQEMYXNzZXRJZFRvU3RyAQgJAJEDAgUEcG10cwAAB2Fzc2V0SWQFA0FJZAkAAgECFVdyb25nIHBheW1lbnQgYXNzZXQgQQMJAQIhPQIJAQxhc3NldElkVG9TdHIBCAkAkQMCBQRwbXRzAAEHYXNzZXRJZAUDQklkCQACAQIVV3JvbmcgcGF5bWVudCBhc3NldCBCCQCUCgIICQCRAwIFBHBtdHMAAAZhbW91bnQICQCRAwIFBHBtdHMAAQZhbW91bnQDCQAAAgkAkAMBBQRwbXRzAAEDCQAAAgkBDGFzc2V0SWRUb1N0cgEICQCRAwIFBHBtdHMAAAdhc3NldElkBQNBSWQJAJQKAggJAJEDAgUEcG10cwAABmFtb3VudAAAAwkAAAIJAQxhc3NldElkVG9TdHIBCAkAkQMCBQRwbXRzAAAHYXNzZXRJZAUDQklkCQCUCgIAAAgJAJEDAgUEcG10cwAABmFtb3VudAkAAgECDVdyb25nIHBheW1lbnQJAAIBAhxPbmUgb3IgdHdvIHBheW1lbnRzIGV4cGVjdGVkAQ9jYWxjUHJpY2VJbXBhY3QEBGJhbEEEYmFsQgduZXdCYWxBB25ld0JhbEIEA3ByaQkAaAIJAGUCBQZTQ0FMRTgJAGsDCQBrAwUEYmFsQgUGU0NBTEU4BQRiYWxBBQZTQ0FMRTgJAGsDBQduZXdCYWxCBQZTQ0FMRTgFB25ld0JhbEEAZAMJAGYCAAAFA3ByaQkAaAIFA3ByaQD///////////8BBQNwcmkBEWNsYWltQW5kQ2hlY2tBbW50BQRwb29sBXBUeXBlBWNsYWltBmFtb3VudAZjaGFuZ2UEDSR0MDMyMTg1MzI0NDQDBQVjbGFpbQkBC2NsYWltRmFybWVkAgUFcFR5cGUFBHBvb2wEDGNsYWltZWRBc3NldAMJAAACBQVwVHlwZQUHU0ZfUE9PTAUGU1dPUElEAwkAAAIFBXBUeXBlBQdXWF9QT09MBQRXWElECQEPdW5rbm93blBvb2xUeXBlAAkAlAoCBQZhbW91bnQFDGNsYWltZWRBc3NldAQLY2xhaW1BbW91bnQIBQ0kdDAzMjE4NTMyNDQ0Al8xBApjbGFpbUFzc2V0CAUNJHQwMzIxODUzMjQ0NAJfMgQDYmFsCQEOYWNjb3VudEJhbGFuY2UBBQpjbGFpbUFzc2V0AwMJAGYCBQZhbW91bnQJAGQCBQtjbGFpbUFtb3VudAUGY2hhbmdlBgkAZgIFBmFtb3VudAUDYmFsCQACAQIZVG8gYmlnIGFtb3VudCB0byBleGNoYW5nZQkAlAoCBQtjbGFpbUFtb3VudAUKY2xhaW1Bc3NldBsBaQEaZ2V0U2hhcmVBc3NldFByaWNlUkVBRE9OTFkBB3NoYXJlSWQEC3NoYXJlUHJpY2VzCQENZ2V0U2hhcmVQcmljZQEFB3NoYXJlSWQJAJQKAgUDbmlsBQtzaGFyZVByaWNlcwFpASJnZXRVc2VyUG9zaXRpb25TaGFyZUFtb3VudFJFQURPTkxZAgR1c2VyBnBvc051bQQEcG9vbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHVzZXICAV8FBnBvc051bQURa1VzZXJQb3NpdGlvblBvb2wCEFVua25vd24gcG9zaXRpb24EDGJvcnJvd0Ftb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBnBvc051bQURa1VzZXJCb3Jyb3dBbW91bnQED3VzZXJDYW5XaXRoZHJhdwkBGHVzZXJDYW5XaXRoZHJhd1NoYXJlQ2FsYwQFBHVzZXIFBHBvb2wFBnBvc051bQkAZgIFDGJvcnJvd0Ftb3VudAAACQCUCgIFA25pbAUPdXNlckNhbldpdGhkcmF3AWkBF2dldFVzZXJQb3NpdGlvblJFQURPTkxZAwR1c2VyBXBvb2xzBnBvc051bQoBB3VzZXJQb3MCAWEEcG9vbAQNJHQwMzM0MDYzMzQ3NgUBYQQJd0Ftb3VudHNBCAUNJHQwMzM0MDYzMzQ3NgJfMQQJd0Ftb3VudHNCCAUNJHQwMzM0MDYzMzQ3NgJfMgQFZGVidHMIBQ0kdDAzMzQwNjMzNDc2Al8zBAtlcVdBbW91bnRzQQgFDSR0MDMzNDA2MzM0NzYCXzQEC2VxV0Ftb3VudHNCCAUNJHQwMzM0MDYzMzQ3NgJfNQQFaW5kZXgIBQ0kdDAzMzQwNjMzNDc2Al82AwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkAkQMCBQZwb3NOdW0FBWluZGV4BQ1rVXNlclBvc2l0aW9uCQCYCgYJAM0IAgUJd0Ftb3VudHNBAAAJAM0IAgUJd0Ftb3VudHNCAAAJAM0IAgUFZGVidHMAAAkAzQgCBQtlcVdBbW91bnRzQQAACQDNCAIFC2VxV0Ftb3VudHNCAAAJAGQCBQVpbmRleAABBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCElBvb2wgaXMgbm90IGluaXRlZAQNJHQwMzM3NTUzMzg0NQkBC2dldFBvb2xEYXRhAgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBANBSWQIBQ0kdDAzMzc1NTMzODQ1Al8xBANCSWQIBQ0kdDAzMzc1NTMzODQ1Al8yBARiYWxBCAUNJHQwMzM3NTUzMzg0NQJfMwQEYmFsQggFDSR0MDMzNzU1MzM4NDUCXzQEB3NoYXJlSWQIBQ0kdDAzMzc1NTMzODQ1Al81BAxib3Jyb3dBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAJEDAgUGcG9zTnVtBQVpbmRleAURa1VzZXJCb3Jyb3dBbW91bnQAAAQPdXNlckNhbldpdGhkcmF3CQEYdXNlckNhbldpdGhkcmF3U2hhcmVDYWxjBAUEdXNlcgUEcG9vbAkAkQMCBQZwb3NOdW0FBWluZGV4CQBmAgUMYm9ycm93QW1vdW50AAAEDSR0MDM0MDYxMzQxODEJARpjYWxjV2l0aGRyYXdMUEZyb21Qb29sVmlydAQJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQUHc2hhcmVJZAUPdXNlckNhbldpdGhkcmF3BAh3QW1vdW50QQgFDSR0MDM0MDYxMzQxODECXzEECHdBbW91bnRCCAUNJHQwMzQwNjEzNDE4MQJfMgMJAGYCBQxib3Jyb3dBbW91bnQAAAQLYm9ycm93QXNzZXQJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCRAwIFBnBvc051bQUFaW5kZXgFEmtVc2VyQm9ycm93QXNzZXRJZAQEZGVidAoAAUAJAPwHBAkBDmdldExlbmRTcnZBZGRyAAIMZ2V0QXNzZXREZWJ0CQDMCAIHCQDMCAIJAKwCAgkArAICBQR1c2VyAgFfCQCRAwIFBnBvc051bQUFaW5kZXgJAMwIAgULYm9ycm93QXNzZXQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQRkZWJ0BQRkZWJ0BA0kdDAzNDQ2NTM0NzQ5AwkAAAIFBXBUeXBlBQdTRl9QT09MCQERY2FsY0Ftb3VudFRvUGF5U0YHBQRwb29sBQNBSWQFA0JJZAUEYmFsQQUEYmFsQgUEZGVidAULYm9ycm93QXNzZXQDCQAAAgUFcFR5cGUFB1dYX1BPT0wJARFjYWxjQW1vdW50VG9QYXlXWAcFBHBvb2wFA0FJZAUDQklkBQRiYWxBBQRiYWxCBQRkZWJ0BQtib3Jyb3dBc3NldAkBD3Vua25vd25Qb29sVHlwZQAECmFzc2V0VG9QYXkIBQ0kdDAzNDQ2NTM0NzQ5Al8xBAthbW91bnRUb1BheQgFDSR0MDM0NDY1MzQ3NDkCXzIEDSR0MDM0NzU2MzQ5MDIDCQAAAgUKYXNzZXRUb1BheQUDQklkCQCUCgIJAGUCBQh3QW1vdW50QQUEZGVidAkAZQIFCHdBbW91bnRCBQthbW91bnRUb1BheQkAlAoCCQBlAgUId0Ftb3VudEEFC2Ftb3VudFRvUGF5CQBlAgUId0Ftb3VudEIFBGRlYnQECmVxV0Ftb3VudEEIBQ0kdDAzNDc1NjM0OTAyAl8xBAplcVdBbW91bnRCCAUNJHQwMzQ3NTYzNDkwMgJfMgkAmAoGCQDNCAIFCXdBbW91bnRzQQUId0Ftb3VudEEJAM0IAgUJd0Ftb3VudHNCBQh3QW1vdW50QgkAzQgCBQVkZWJ0cwUEZGVidAkAzQgCBQtlcVdBbW91bnRzQQUKZXFXQW1vdW50QQkAzQgCBQtlcVdBbW91bnRzQgUKZXFXQW1vdW50QgkAZAIFBWluZGV4AAEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJgKBgkAzQgCBQl3QW1vdW50c0EFCHdBbW91bnRBCQDNCAIFCXdBbW91bnRzQgUId0Ftb3VudEIFBWRlYnRzCQDNCAIFCXdBbW91bnRzQQUId0Ftb3VudEEJAM0IAgUJd0Ftb3VudHNCBQh3QW1vdW50QgkAZAIFBWluZGV4AAEEDSR0MDM1MTU3MzUyNjgKAAIkbAUFcG9vbHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCYCgYFA25pbAUDbmlsBQNuaWwFA25pbAUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3VzZXJQb3MCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAQJd0Ftb3VudHNBCAUNJHQwMzUxNTczNTI2OAJfMQQJd0Ftb3VudHNCCAUNJHQwMzUxNTczNTI2OAJfMgQFZGVidHMIBQ0kdDAzNTE1NzM1MjY4Al8zBAtlcVdBbW91bnRzQQgFDSR0MDM1MTU3MzUyNjgCXzQEC2VxV0Ftb3VudHNCCAUNJHQwMzUxNTczNTI2OAJfNQkAlAoCBQNuaWwJAJcKBQUJd0Ftb3VudHNBBQl3QW1vdW50c0IFBWRlYnRzBQtlcVdBbW91bnRzQQULZXFXQW1vdW50c0IBaQEJcmVwbGVuaXNoAwRwb29sCGxldmVyYWdlCGJvcnJvd0lkCQELdmFsdWVPckVsc2UCCQEQaXNBY3RpdmVGb3JVc2VycwAEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAISUG9vbCBpcyBub3QgaW5pdGVkAwkBASEBCQEMaXNQb29sQWN0aXZlAgUEcG9vbAUFcFR5cGUJAAIBAh5Qb29sIG5vdCBhY3RpdmUgYXQgdGhpcyBtb21lbnQDAwkAZgIAZAUIbGV2ZXJhZ2UGCQBmAgUIbGV2ZXJhZ2UArAIJAAIBAh9MZXZlcmFnZSBjYW4ndCBiZSA8MTAwIGFuZCA+MzAwAwMJAQEhAQkBEUBleHRyTmF0aXZlKDEwNTEpAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbENhbkJvcnJvdwkAZgIFCGxldmVyYWdlAGQHCQACAQIdWW91IGNhbid0IGJvcnJvdyBpbiB0aGlzIHBvb2wEDSR0MDM1ODY2MzU5NTYJAQtnZXRQb29sRGF0YQIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQQDQUlkCAUNJHQwMzU4NjYzNTk1NgJfMQQDQklkCAUNJHQwMzU4NjYzNTk1NgJfMgQEYmFsQQgFDSR0MDM1ODY2MzU5NTYCXzMEBGJhbEIIBQ0kdDAzNTg2NjM1OTU2Al80BAdzaGFyZUlkCAUNJHQwMzU4NjYzNTk1NgJfNQMDCQECIT0CBQhib3Jyb3dJZAUDQUlkCQECIT0CBQhib3Jyb3dJZAUDQklkBwkAAgECEldyb25nIGJvcnJvdyBhc3NldAQNJHQwMzYwMzczNjA5NgkBEnBhcnNlUmVwbGVuaXNoUG10cwMIBQFpCHBheW1lbnRzBQNBSWQFA0JJZAQEcG10QQgFDSR0MDM2MDM3MzYwOTYCXzEEBHBtdEIIBQ0kdDAzNjAzNzM2MDk2Al8yBAR1c2VyCQClCAEIBQFpBmNhbGxlcgQJbmV3UG9zTnVtCQEYZ2V0TmV3VXNlclBvc2l0aW9uTnVtYmVyAQUEdXNlcgMJAGYCBQhsZXZlcmFnZQBkBAxib3Jyb3dBbW91bnQJARBjYWxjQm9ycm93QW1vdW50BgUEcG10QQUEcG10QgUDQUlkBQNCSWQFCGxldmVyYWdlBQhib3Jyb3dJZAQHcmVxdWVzdAkAuQkCCQDMCAIFBHVzZXIJAMwIAgUEcG9vbAkAzAgCCQCkAwEFBHBtdEEJAMwIAgUDQUlkCQDMCAIJAKQDAQUEcG10QgkAzAgCBQNCSWQJAMwIAgkApAMBBQRiYWxBCQDMCAIJAKQDAQUEYmFsQgkAzAgCBQdzaGFyZUlkCQDMCAIFCGJvcnJvd0lkCQDMCAIJAKQDAQUMYm9ycm93QW1vdW50BQNuaWwCASwEDG5ld1JlcXVlc3RJZAoAAUAJAPwHBAUEdGhpcwIQY3JlYXRlTmV3UmVxdWVzdAkAzAgCBQdyZXF1ZXN0BQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQDCQAAAgUMbmV3UmVxdWVzdElkBQxuZXdSZXF1ZXN0SWQEBGFyZ3MJAMwIAgkArAICCQCsAgIFBHVzZXICAV8JAKQDAQUJbmV3UG9zTnVtCQDMCAIFB3NoYXJlSWQJAMwIAgUIYm9ycm93SWQJAMwIAgUMYm9ycm93QW1vdW50CQDMCAIJAKUIAQUEdGhpcwkAzAgCAhFyZXBsZW5pc2hGcm9tTGFuZAkAzAgCCQCkAwEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUMbmV3UmVxdWVzdElkAhhDYW4ndCBjcmVhdGUgbmV3IHJlcXVlc3QFA25pbAQDaW52CQD9BwQJAQ5nZXRMZW5kU3J2QWRkcgACDWZsYXNoUG9zaXRpb24FBGFyZ3MFA25pbAMJAAACBQNpbnYFA2ludgQKdXNlclN0YWtlZAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUJbmV3UG9zTnVtBQ1rVXNlclBvc2l0aW9uBA0kdDAzNzA4NTM3MTc5CQEPZ2V0UG9vbEJhbGFuY2VzBAkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBQNBSWQFA0JJZAMJAAACBQ0kdDAzNzA4NTM3MTc5BQ0kdDAzNzA4NTM3MTc5BAduZXdCYWxCCAUNJHQwMzcwODUzNzE3OQJfMgQHbmV3QmFsQQgFDSR0MDM3MDg1MzcxNzkCXzEECHBySW1wYWN0CQEPY2FsY1ByaWNlSW1wYWN0BAUEYmFsQQUEYmFsQgUHbmV3QmFsQQUHbmV3QmFsQgQNJHQwMzcyNDkzNzM2NAkBGmNhbGNXaXRoZHJhd0xQRnJvbVBvb2xWaXJ0BAkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBQdzaGFyZUlkBQp1c2VyU3Rha2VkBAh3QW1vdW50QQgFDSR0MDM3MjQ5MzczNjQCXzEECHdBbW91bnRCCAUNJHQwMzcyNDkzNzM2NAJfMgkAlAoCBQNuaWwJAMwIAgUIcHJJbXBhY3QJAMwIAgUId0Ftb3VudEEJAMwIAgUId0Ftb3VudEIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQNJHQwMzc0MTczNzUzMgkBD3JlcGxlbmlzaEJ5VHlwZQoFBXBUeXBlBQRwb29sBQtOT19MT0FOX0ZFRQUEcG10QQUDQUlkBQRwbXRCBQNCSWQFBGJhbEEFBGJhbEIFB3NoYXJlSWQDCQAAAgUNJHQwMzc0MTczNzUzMgUNJHQwMzc0MTczNzUzMgQHYXhseUZlZQgFDSR0MDM3NDE3Mzc1MzICXzIECnVzZXJTdGFrZWQIBQ0kdDAzNzQxNzM3NTMyAl8xBA0kdDAzNzUzODM3NjMyCQEPZ2V0UG9vbEJhbGFuY2VzBAkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBQNBSWQFA0JJZAMJAAACBQ0kdDAzNzUzODM3NjMyBQ0kdDAzNzUzODM3NjMyBAduZXdCYWxCCAUNJHQwMzc1MzgzNzYzMgJfMgQHbmV3QmFsQQgFDSR0MDM3NTM4Mzc2MzICXzEECHBySW1wYWN0CQEPY2FsY1ByaWNlSW1wYWN0BAUEYmFsQQUEYmFsQgUHbmV3QmFsQQUHbmV3QmFsQgQNJHQwMzc3MDIzNzgxNwkBGmNhbGNXaXRoZHJhd0xQRnJvbVBvb2xWaXJ0BAkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBQdzaGFyZUlkBQp1c2VyU3Rha2VkBAh3QW1vdW50QQgFDSR0MDM3NzAyMzc4MTcCXzEECHdBbW91bnRCCAUNJHQwMzc3MDIzNzgxNwJfMgkAlAoCCQDOCAIJARByZXBsZW5pc2hFbnRyaWVzCAUEcG9vbAUEdXNlcgUKdXNlclN0YWtlZAUHYXhseUZlZQUJbmV3UG9zTnVtBQdzaGFyZUlkBQVwVHlwZQcJAQ5nZXRDdXJzRW50cmllcwQFA0FJZAUDQklkBQdzaGFyZUlkCQDMCAIJAKQDAQUId0Ftb3VudEEJAMwIAgkApAMBBQh3QW1vdW50QgUDbmlsCQDMCAIFCHBySW1wYWN0CQDMCAIFCHdBbW91bnRBCQDMCAIFCHdBbW91bnRCBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEId2l0aGRyYXcCBHBvb2wFcG9zSWQJAQt2YWx1ZU9yRWxzZQIJARBpc0FjdGl2ZUZvclVzZXJzAAQFcFR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sAhJQb29sIGlzIG5vdCBpbml0ZWQDCQEBIQEJAQxpc1Bvb2xBY3RpdmUCBQRwb29sBQVwVHlwZQkAAgECHlBvb2wgbm90IGFjdGl2ZSBhdCB0aGlzIG1vbWVudAkBDndpdGhkcmF3VG9Vc2VyBAkApQgBCAUBaQZjYWxsZXIFBHBvb2wJAKQDAQUFcG9zSWQHAWkBFGNyZWF0ZVVwZGF0ZVN0b3BMb3NzBAVwb3NJZAZwb29sSWQHYXNzZXRJZAVwcmljZQkBC3ZhbHVlT3JFbHNlAgkBEGlzQWN0aXZlRm9yVXNlcnMABBB0b2tlbk9yYWNsZVByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9wcmljZU9yYWNsZUFkZHIJAKwCAgUHYXNzZXRJZAUOa1ByaWNlSW5PcmFjbGUEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUGcG9vbElkAhJQb29sIGlzIG5vdCBpbml0ZWQDCQEBIQEJAQxpc1Bvb2xBY3RpdmUCBQZwb29sSWQFBXBUeXBlCQACAQIeUG9vbCBub3QgYWN0aXZlIGF0IHRoaXMgbW9tZW50AwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUGcG9vbElkAgFfCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQVwb3NJZAUNa1VzZXJQb3NpdGlvbgkAAgECGlRoZXJlIGFyZSBubyB1c2VyIHBvc2l0aW9uAwkAZwIAAAUFcHJpY2UJAAIBAhxQcmljZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwAwkAZgIFBXByaWNlBRB0b2tlbk9yYWNsZVByaWNlCQACAQIrUHJpY2UgbXVzdCBiZSBsZXNzIHRoYW4gY3VycmVudCB0b2tlbiBwcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQVwb3NJZAIBXwUGcG9vbElkAgFfBQdhc3NldElkBQ1rVXNlclN0b3BMb3NzBQVwcmljZQUDbmlsAWkBDmRlbGV0ZVN0b3BMb3NzAwVwb3NJZAZwb29sSWQHYXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkBEGlzQWN0aXZlRm9yVXNlcnMABAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBnBvb2xJZAISUG9vbCBpcyBub3QgaW5pdGVkAwkBASEBCQEMaXNQb29sQWN0aXZlAgUGcG9vbElkBQVwVHlwZQkAAgECHlBvb2wgbm90IGFjdGl2ZSBhdCB0aGlzIG1vbWVudAMJAQEhAQkBCWlzRGVmaW5lZAEJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQVwb3NJZAIBXwUGcG9vbElkAgFfBQdhc3NldElkBQ1rVXNlclN0b3BMb3NzCQACAQIITm8gZW50cnkJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQVwb3NJZAIBXwUGcG9vbElkAgFfBQdhc3NldElkBQ1rVXNlclN0b3BMb3NzBQNuaWwBaQEEaW5pdA0MbW9uZXlCb3hBZGRyDXNmRmFybWluZ0FkZHIIbGVuZEFkZHIPcHJpY2VPcmFjbGVBZGRyEGtlZXBlckV4Q29udHJhY3QOd3hTd2FwQ29udHJhY3QLc3dvcEFzc2V0SWQJd3hBc3NldElkDm9wZXJhdG9yUHViS2V5Emdyb3VwMUFkbWluMVB1YktleRJncm91cDFBZG1pbjJQdWJLZXkSZ3JvdXAyQWRtaW4xUHViS2V5Emdyb3VwMkFkbWluMlB1YktleQkBC3ZhbHVlT3JFbHNlAgkBCmlzU2VsZkNhbGwBBQFpAwkBCWlzRGVmaW5lZAEJAKIIAQUPa09wZXJhdG9yQ2FsbFBLCQACAQIOQWxyZWFkeSBpbml0ZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFDG1vbmV5Qm94QWRkcgkAAgECI21vbmV5Qm94QWRkciBpcyBub3QgY29ycmVjdCBhZGRyZXNzAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQ1zZkZhcm1pbmdBZGRyCQACAQIkc2ZGYXJtaW5nQWRkciBpcyBub3QgY29ycmVjdCBhZGRyZXNzAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQhsZW5kQWRkcgkAAgECH2xlbmRBZGRyIGlzIG5vdCBjb3JyZWN0IGFkZHJlc3MDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFD3ByaWNlT3JhY2xlQWRkcgkAAgECJnByaWNlT3JhY2xlQWRkciBpcyBub3QgY29ycmVjdCBhZGRyZXNzAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBRBrZWVwZXJFeENvbnRyYWN0CQACAQIna2VlcGVyRXhDb250cmFjdCBpcyBub3QgY29ycmVjdCBhZGRyZXNzAwkBASEBCQEJaXNEZWZpbmVkAQkA7AcBCQDZBAEFC3N3b3BBc3NldElkCQACAQIjc3dvcEFzc2V0SWQgaXMgbm90IGNvcnJlY3QgYXNzZXQgaWQDCQEBIQEJAQlpc0RlZmluZWQBCQDsBwEJANkEAQUJd3hBc3NldElkCQACAQIjc3dvcEFzc2V0SWQgaXMgbm90IGNvcnJlY3QgYXNzZXQgaWQDCQECIT0CCQDIAQEJANkEAQUOb3BlcmF0b3JQdWJLZXkAIAkAAgECHW9wZXJhdG9yUHViS2V5IGlzIG5vdCBjb3JyZWN0AwkBAiE9AgkAyAEBCQDZBAEFEmdyb3VwMUFkbWluMVB1YktleQAgCQACAQIdb3BlcmF0b3JQdWJLZXkgaXMgbm90IGNvcnJlY3QDCQECIT0CCQDIAQEJANkEAQUSZ3JvdXAxQWRtaW4yUHViS2V5ACAJAAIBAh1vcGVyYXRvclB1YktleSBpcyBub3QgY29ycmVjdAMJAQIhPQIJAMgBAQkA2QQBBRJncm91cDJBZG1pbjFQdWJLZXkAIAkAAgECHW9wZXJhdG9yUHViS2V5IGlzIG5vdCBjb3JyZWN0AwkBAiE9AgkAyAEBCQDZBAEFEmdyb3VwMkFkbWluMlB1YktleQAgCQACAQIdb3BlcmF0b3JQdWJLZXkgaXMgbm90IGNvcnJlY3QJAMwIAgkBC1N0cmluZ0VudHJ5AgUJa01vbmV5Qm94BQxtb25leUJveEFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUOa1NGRmFybWluZ0FkZHIFDXNmRmFybWluZ0FkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUMa0xlbmRTZXJ2aWNlBQhsZW5kQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQxrUHJpY2VPcmFjbGUFD3ByaWNlT3JhY2xlQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQtrRXhDb250cmFjdAUQa2VlcGVyRXhDb250cmFjdAkAzAgCCQELU3RyaW5nRW50cnkCBQ9rV3hTd2FwQ29udHJhY3QFDnd4U3dhcENvbnRyYWN0CQDMCAIJAQtTdHJpbmdFbnRyeQIFB2tTd29wSWQFC3N3b3BBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWtXeElkBQl3eEFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUPa09wZXJhdG9yQ2FsbFBLBQ5vcGVyYXRvclB1YktleQkAzAgCCQELU3RyaW5nRW50cnkCBQ9rR3JvdXAxQWRtaW4xUEsFEmdyb3VwMUFkbWluMVB1YktleQkAzAgCCQELU3RyaW5nRW50cnkCBQ9rR3JvdXAxQWRtaW4yUEsFEmdyb3VwMUFkbWluMlB1YktleQkAzAgCCQELU3RyaW5nRW50cnkCBQ9rR3JvdXAyQWRtaW4xUEsFEmdyb3VwMkFkbWluMVB1YktleQkAzAgCCQELU3RyaW5nRW50cnkCBQ9rR3JvdXAyQWRtaW4yUEsFEmdyb3VwMkFkbWluMlB1YktleQUDbmlsAWkBEGNyZWF0ZU5ld1JlcXVlc3QBBnBhcmFtcwkBC3ZhbHVlT3JFbHNlAgkBCmlzU2VsZkNhbGwBBQFpBAxuZXdSZXF1ZXN0SWQJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDGtSZXF1ZXN0SXRlcgAAAAEJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKQDAQUMbmV3UmVxdWVzdElkBQprUmVxdWVzdElkBQZwYXJhbXMJAMwIAgkBDEludGVnZXJFbnRyeQIFDGtSZXF1ZXN0SXRlcgUMbmV3UmVxdWVzdElkBQNuaWwFDG5ld1JlcXVlc3RJZAFpARFyZXBsZW5pc2hGcm9tTGFuZAEJcmVxdWVzdElkCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQEKaXNMYW5kQ2FsbAEFAWkEDSR0MDQyNjQwNDI3NDQJAQxwYXJzZVJlcXVlc3QBBQlyZXF1ZXN0SWQEBHVzZXIIBQ0kdDA0MjY0MDQyNzQ0Al8xBARwb29sCAUNJHQwNDI2NDA0Mjc0NAJfMgQEcG10QQgFDSR0MDQyNjQwNDI3NDQCXzMEA0FJZAgFDSR0MDQyNjQwNDI3NDQCXzQEBHBtdEIIBQ0kdDA0MjY0MDQyNzQ0Al81BANCSWQIBQ0kdDA0MjY0MDQyNzQ0Al82BARiYWxBCAUNJHQwNDI2NDA0Mjc0NAJfNwQEYmFsQggFDSR0MDQyNjQwNDI3NDQCXzgEB3NoYXJlSWQIBQ0kdDA0MjY0MDQyNzQ0Al85BAdid0Fzc2V0CAUNJHQwNDI2NDA0Mjc0NANfMTAECGJ3QW1vdW50CAUNJHQwNDI2NDA0Mjc0NANfMTEDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhJXcm9uZyBwYXltZW50IHNpemUDAwkBAiE9AgkBDGFzc2V0SWRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUHYndBc3NldAYJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQhid0Ftb3VudAkAAgECDVdyb25nIHBheW1lbnQEDSR0MDQyOTM0NDMwMzQDCQAAAgUDQUlkBQdid0Fzc2V0CQCUCgIJAGQCBQRwbXRBBQhid0Ftb3VudAUEcG10QgkAlAoCBQRwbXRBCQBkAgUEcG10QgUIYndBbW91bnQEB3BtdEFsbEEIBQ0kdDA0MjkzNDQzMDM0Al8xBAdwbXRBbGxCCAUNJHQwNDI5MzQ0MzAzNAJfMgQFcFR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sAgxVbmtub3duIHBvb2wEDSR0MDQzMTE2NDMyMzEJAQ9yZXBsZW5pc2hCeVR5cGUKBQVwVHlwZQUEcG9vbAUITE9BTl9GRUUFB3BtdEFsbEEFA0FJZAUHcG10QWxsQgUDQklkBQRiYWxBBQRiYWxCBQdzaGFyZUlkBAp1c2VyU3Rha2VkCAUNJHQwNDMxMTY0MzIzMQJfMQQHYXhseUZlZQgFDSR0MDQzMTE2NDMyMzECXzIEBnBvc051bQkBGGdldE5ld1VzZXJQb3NpdGlvbk51bWJlcgEFBHVzZXIEDWJvcnJvd0VudHJpZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBnBvc051bQURa1VzZXJCb3Jyb3dBbW91bnQFCGJ3QW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBnBvc051bQUSa1VzZXJCb3Jyb3dBc3NldElkBQdid0Fzc2V0BQNuaWwEB2VudHJpZXMJARByZXBsZW5pc2hFbnRyaWVzCAUEcG9vbAUEdXNlcgUKdXNlclN0YWtlZAUHYXhseUZlZQUGcG9zTnVtBQdzaGFyZUlkBQVwVHlwZQYEDSR0MDQzNTkxNDM3MDYJARpjYWxjV2l0aGRyYXdMUEZyb21Qb29sVmlydAQJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQUHc2hhcmVJZAUKdXNlclN0YWtlZAQId0Ftb3VudEEIBQ0kdDA0MzU5MTQzNzA2Al8xBAh3QW1vdW50QggFDSR0MDQzNTkxNDM3MDYCXzIJAJQKAgkAzQgCCQDOCAIJAM4IAgUHZW50cmllcwkBDmdldEN1cnNFbnRyaWVzBAUDQUlkBQNCSWQFB3NoYXJlSWQJAMwIAgkApAMBBQh3QW1vdW50QQkAzAgCCQCkAwEFCHdBbW91bnRCBQNuaWwFDWJvcnJvd0VudHJpZXMJAQtEZWxldGVFbnRyeQEJAKwCAgUJcmVxdWVzdElkBQprUmVxdWVzdElkBQp1c2VyU3Rha2VkAWkBCWxpcXVpZGF0ZQMEdXNlcgVwb3NJZA9saXF1aWRhdGVBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQppc0xhbmRDYWxsAQUBaQQEcG9vbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHVzZXICAV8FBXBvc0lkBRFrVXNlclBvc2l0aW9uUG9vbAILbm8gcG9zaXRpb24EBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAISUG9vbCBpcyBub3QgaW5pdGVkBA0kdDA0NDIyNzQ0MzE3CQELZ2V0UG9vbERhdGECCQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUEA0FJZAgFDSR0MDQ0MjI3NDQzMTcCXzEEA0JJZAgFDSR0MDQ0MjI3NDQzMTcCXzIEBGJhbEEIBQ0kdDA0NDIyNzQ0MzE3Al8zBARiYWxCCAUNJHQwNDQyMjc0NDMxNwJfNAQHc2hhcmVJZAgFDSR0MDQ0MjI3NDQzMTcCXzUEBmFtb3VudAkBCXVuc3Rha2VMUAQFBHBvb2wFBXBUeXBlBQdzaGFyZUlkBQ9saXF1aWRhdGVBbW91bnQEDGJvcnJvd0Ftb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRFrVXNlckJvcnJvd0Ftb3VudAQLYm9ycm93QXNzZXQJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUSa1VzZXJCb3Jyb3dBc3NldElkBA91c2VyQ2FuV2l0aGRyYXcJARh1c2VyQ2FuV2l0aGRyYXdTaGFyZUNhbGMEBQR1c2VyBQRwb29sBQVwb3NJZAkAZgIFDGJvcnJvd0Ftb3VudAAAAwkAZgIFD2xpcXVpZGF0ZUFtb3VudAUPdXNlckNhbldpdGhkcmF3CQACAQInWW91IGNhbid0IGxpcXVpZGF0ZSBtb3JlIHRoYW4gdXNlciBoYXZlAwkAAAIFDGJvcnJvd0Ftb3VudAAACQACAQIrWW91IGNhbid0IGxpcXVpZGF0ZSBwb3NpdGlvbiB3aXRob3V0IGJvcnJvdwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRVrVXNlclBvc2l0aW9uSW50ZXJlc3QJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAURa1Bvb2xJbnRlcmVzdExvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUOa1Bvb2xUb3RhbExvYW4JAGUCCQEZZ2V0UG9vbFRvdGFsU2hhcmVXaXRoTG9hbgEFBHBvb2wFD2xpcXVpZGF0ZUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQprUG9vbFRvdGFsCQBlAgkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAUPbGlxdWlkYXRlQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFDWtVc2VyUG9zaXRpb24JAGUCBQ91c2VyQ2FuV2l0aGRyYXcFD2xpcXVpZGF0ZUFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmFtb3VudAkA2QQBBQdzaGFyZUlkBQNuaWwBaQEIc3RvcExvc3MEBHVzZXIFcG9zSWQEcG9vbAdhc3NldElkCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQEOaXNPcGVyYXRvckNhbGwBBQFpBBB0b2tlbk9yYWNsZVByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9wcmljZU9yYWNsZUFkZHIJAKwCAgUHYXNzZXRJZAUOa1ByaWNlSW5PcmFjbGUEDXN0b3BMb3NzUHJpY2UJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHVzZXICAV8JAKQDAQUFcG9zSWQCAV8FBHBvb2wCAV8FB2Fzc2V0SWQFDWtVc2VyU3RvcExvc3MCCE5vIGVudHJ5AwkAZgIFEHRva2VuT3JhY2xlUHJpY2UFDXN0b3BMb3NzUHJpY2UJAAIBAiNUb2tlbiBwcmljZSBncmVhdGVyIHN0b3AgbG9zcyBwcmljZQQDcmVzCQEOd2l0aGRyYXdUb1VzZXIEBQR1c2VyBQRwb29sCQCkAwEFBXBvc0lkBgkAlAoCCQDNCAIIBQNyZXMCXzEJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwkApAMBBQVwb3NJZAIBXwUEcG9vbAIBXwUHYXNzZXRJZAUNa1VzZXJTdG9wTG9zcwgFA3JlcwJfMgFpARJjYXBpdGFsaXplRXhLZWVwZXILBHBvb2wJdG9rZW5Ub0lkEGFtb3VudFRvRXhjaGFuZ2UFY2xhaW0JYW1vdW50c0luCWFkZHJlc3Nlcw9hc3NldHNUb1JlY2VpdmULZXN0UmVjZWl2ZWQRc2xpcHBhZ2VUb2xlcmFuY2ULbWluUmVjZWl2ZWQHb3B0aW9ucwkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBDmlzT3BlcmF0b3JDYWxsAQUBaQQFcFR5cGUJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wEBmNoYW5nZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFDmtQb29sQ2FwQ2hhbmdlAAAEDSR0MDQ2NDY5NDY1NjgJARFjbGFpbUFuZENoZWNrQW1udAUFBHBvb2wFBXBUeXBlBQVjbGFpbQUQYW1vdW50VG9FeGNoYW5nZQUGY2hhbmdlBA1jbGFpbWVkQW1vdW50CAUNJHQwNDY0Njk0NjU2OAJfMQQMY2xhaW1lZEFzc2V0CAUNJHQwNDY0Njk0NjU2OAJfMgQPZXhjaGFuZ2VkQW1vdW50CQEOZXhjaGFuZ2VLZWVwZXIKBQl0b2tlblRvSWQFEGFtb3VudFRvRXhjaGFuZ2UFDGNsYWltZWRBc3NldAUJYW1vdW50c0luBQlhZGRyZXNzZXMFD2Fzc2V0c1RvUmVjZWl2ZQULZXN0UmVjZWl2ZWQFEXNsaXBwYWdlVG9sZXJhbmNlBQttaW5SZWNlaXZlZAUHb3B0aW9ucwQJbmV3Q2hhbmdlCQBlAgkAZAIFDWNsYWltZWRBbW91bnQFBmNoYW5nZQUQYW1vdW50VG9FeGNoYW5nZQQLY2hhbmdlRW50cnkDCQBnAgUJbmV3Q2hhbmdlAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UFCW5ld0NoYW5nZQUDbmlsCQACAQIPTmVnYXRpdmUgY2hhbmdlCQDOCAIJAQpjYXBpdGFsaXplBAUEcG9vbAUFcFR5cGUFCXRva2VuVG9JZAUPZXhjaGFuZ2VkQW1vdW50BQtjaGFuZ2VFbnRyeQFpARJjYXBpdGFsaXplRXhQdXp6bGUHBHBvb2wJdG9rZW5Ub0lkEGFtb3VudFRvRXhjaGFuZ2UFY2xhaW0Jcm91dGVzU3RyDG1pblRvUmVjZWl2ZQdvcHRpb25zCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQEOaXNPcGVyYXRvckNhbGwBBQFpBAVwVHlwZQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAQGY2hhbmdlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UAAAQNJHQwNDczNjg0NzQ2NwkBEWNsYWltQW5kQ2hlY2tBbW50BQUEcG9vbAUFcFR5cGUFBWNsYWltBRBhbW91bnRUb0V4Y2hhbmdlBQZjaGFuZ2UEDWNsYWltZWRBbW91bnQIBQ0kdDA0NzM2ODQ3NDY3Al8xBAxjbGFpbWVkQXNzZXQIBQ0kdDA0NzM2ODQ3NDY3Al8yBA9leGNoYW5nZWRBbW91bnQJAQ5leGNoYW5nZVB1enpsZQYFCXRva2VuVG9JZAUQYW1vdW50VG9FeGNoYW5nZQUMY2xhaW1lZEFzc2V0BQlyb3V0ZXNTdHIFDG1pblRvUmVjZWl2ZQUHb3B0aW9ucwQJbmV3Q2hhbmdlCQBlAgkAZAIFDWNsYWltZWRBbW91bnQFBmNoYW5nZQUQYW1vdW50VG9FeGNoYW5nZQQLY2hhbmdlRW50cnkDCQBnAgUJbmV3Q2hhbmdlAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UFCW5ld0NoYW5nZQUDbmlsBQNuaWwJAM4IAgkBCmNhcGl0YWxpemUEBQRwb29sBQVwVHlwZQUJdG9rZW5Ub0lkBQ9leGNoYW5nZWRBbW91bnQFC2NoYW5nZUVudHJ5AWkBEmNhcGl0YWxpemVFeFN3b3BGaQsEcG9vbAl0b2tlblRvSWQQYW1vdW50VG9FeGNoYW5nZQVjbGFpbQpleGNoYW5nZXJzDmV4Y2hhbmdlcnNUeXBlBWFyZ3MxBWFyZ3MyEXJvdXRpbmdBc3NldHNLZXlzEm1pbkFtb3VudFRvUmVjZWl2ZQdvcHRpb25zCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQEOaXNPcGVyYXRvckNhbGwBBQFpBAVwVHlwZQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAQGY2hhbmdlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UAAAQNJHQwNDgzMTI0ODQxMQkBEWNsYWltQW5kQ2hlY2tBbW50BQUEcG9vbAUFcFR5cGUFBWNsYWltBRBhbW91bnRUb0V4Y2hhbmdlBQZjaGFuZ2UEDWNsYWltZWRBbW91bnQIBQ0kdDA0ODMxMjQ4NDExAl8xBAxjbGFpbWVkQXNzZXQIBQ0kdDA0ODMxMjQ4NDExAl8yBA9leGNoYW5nZWRBbW91bnQJAQ5leGNoYW5nZVN3b3BGaQoFCXRva2VuVG9JZAUQYW1vdW50VG9FeGNoYW5nZQUMY2xhaW1lZEFzc2V0BQpleGNoYW5nZXJzBQ5leGNoYW5nZXJzVHlwZQUFYXJnczEFBWFyZ3MyBRFyb3V0aW5nQXNzZXRzS2V5cwUSbWluQW1vdW50VG9SZWNlaXZlBQdvcHRpb25zBAluZXdDaGFuZ2UJAGUCCQBkAgUNY2xhaW1lZEFtb3VudAUGY2hhbmdlBRBhbW91bnRUb0V4Y2hhbmdlBAtjaGFuZ2VFbnRyeQMJAGcCBQluZXdDaGFuZ2UAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbENhcENoYW5nZQUJbmV3Q2hhbmdlBQNuaWwFA25pbAkAzggCCQEKY2FwaXRhbGl6ZQQFBHBvb2wFBXBUeXBlBQl0b2tlblRvSWQFD2V4Y2hhbmdlZEFtb3VudAULY2hhbmdlRW50cnkBaQEOY2FwaXRhbGl6ZU5vRXgDBHBvb2wFY2xhaW0RYW1vdW50RnJvbUJhbGFuY2UJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQ5pc09wZXJhdG9yQ2FsbAEFAWkEBXBUeXBlCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sBA0kdDA0OTAwODQ5MTAzCQERY2xhaW1BbmRDaGVja0FtbnQFBQRwb29sBQVwVHlwZQUFY2xhaW0FEWFtb3VudEZyb21CYWxhbmNlAAAEDWNsYWltZWRBbW91bnQIBQ0kdDA0OTAwODQ5MTAzAl8xBAxjbGFpbWVkQXNzZXQIBQ0kdDA0OTAwODQ5MTAzAl8yCQEKY2FwaXRhbGl6ZQQFBHBvb2wFBXBUeXBlCQEMYXNzZXRJZFRvU3RyAQUMY2xhaW1lZEFzc2V0BRFhbW91bnRGcm9tQmFsYW5jZQFpAQtpbml0TmV3UG9vbAkEdHlwZQhwb29sQWRkcgtpbkZlZU5vTG9hbglpbkZlZUxvYW4MY2FwRmVlTm9Mb2FuDmNhcEZlZVdpdGhMb2FuEXN0b3Bsb3NzRmVlTm9Mb2FuE3N0b3Bsb3NzRmVlV2l0aExvYW4JY2FuQm9ycm93CQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwMJAQIhPQIFBHR5cGUFB1NGX1BPT0wJAQIhPQIFBHR5cGUFB1dYX1BPT0wHCQACAQIKV3JvbmcgdHlwZQQNJHQwNDk1MTM0OTYwNwkBC2dldFBvb2xEYXRhAgkBB0FkZHJlc3MBCQDZBAEFCHBvb2xBZGRyBQR0eXBlBANhSWQIBQ0kdDA0OTUxMzQ5NjA3Al8xBANiSWQIBQ0kdDA0OTUxMzQ5NjA3Al8yBARhQmFsCAUNJHQwNDk1MTM0OTYwNwJfMwQEYkJhbAgFDSR0MDQ5NTEzNDk2MDcCXzQEB3NoYXJlSWQIBQ0kdDA0OTUxMzQ5NjA3Al81AwkAZgIAAAULaW5GZWVOb0xvYW4JAAIBAiJpbkZlZU5vTG9hbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwAwkAZgIAAAUJaW5GZWVMb2FuCQACAQIgaW5GZWVMb2FuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgAABQxjYXBGZWVOb0xvYW4JAAIBAiNjYXBGZWVOb0xvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFDmNhcEZlZVdpdGhMb2FuCQACAQIlY2FwRmVlV2l0aExvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFEXN0b3Bsb3NzRmVlTm9Mb2FuCQACAQIoc3RvcGxvc3NGZWVOb0xvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFE3N0b3Bsb3NzRmVlV2l0aExvYW4JAAIBAipzdG9wbG9zc0ZlZVdpdGhMb2FuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFFWtBeGx5SW5GZWVXaXRob3V0TG9hbgULaW5GZWVOb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFEmtBeGx5SW5GZWVXaXRoTG9hbgUJaW5GZWVMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRFrQXhseU5vTG9hbkNhcEZlZQUMY2FwRmVlTm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRNrQXhseVdpdGhMb2FuQ2FwRmVlBQ5jYXBGZWVXaXRoTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUWa0F4bHlTdG9wTG9zc05vTG9hbkZlZQURc3RvcGxvc3NGZWVOb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFFGtBeGx5U3RvcExvc3NMb2FuRmVlBRNzdG9wbG9zc0ZlZVdpdGhMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRFrUG9vbEludGVyZXN0TG9hbgAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRNrUG9vbEludGVyZXN0Tm9Mb2FuAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQVrUG9vbAUIcG9vbEFkZHIFBHR5cGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQdzaGFyZUlkBQprU2hhcmVQb29sBQhwb29sQWRkcgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICBQhwb29sQWRkcgUOa1Bvb2xDYW5Cb3Jyb3cFCWNhbkJvcnJvdwUDbmlsAWkBCGFjdGl2YXRlAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUHa0FjdGl2ZQYJAAIBAhNkQXBwIGFscmVhZHkgYWN0aXZlCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBgUDbmlsAWkBCHNodXRkb3duAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQEhAQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQdrQWN0aXZlBgkAAgECFWRBcHAgYWxyZWFkeSBzaHV0ZG93bgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0FjdGl2ZQcFA25pbAFpARBhY3RpdmF0ZUZvclVzZXJzAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUMa0FjdGl2ZVVzZXJzBgkAAgECHWRBcHAgYWxyZWFkeSBhY3RpdmUgZm9yIHVzZXJzCQDMCAIJAQxCb29sZWFuRW50cnkCBQxrQWN0aXZlVXNlcnMGBQNuaWwBaQEQc2h1dGRvd25Gb3JVc2VycwAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQEBIQEJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUMa0FjdGl2ZVVzZXJzBgkAAgECH2RBcHAgYWxyZWFkeSBzaHV0ZG93biBmb3IgdXNlcnMJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDGtBY3RpdmVVc2VycwcFA25pbAFpAQphY3RpdmF0ZVNGAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkArAICBQdTRl9QT09MBQtrQWN0aXZlU0ZXWAYJAAIBAhVTV09QRkkgYWxyZWFkeSBhY3RpdmUJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgUHU0ZfUE9PTAULa0FjdGl2ZVNGV1gGBQNuaWwBaQEKc2h1dGRvd25TRgAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQEBIQEJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkArAICBQdTRl9QT09MBQtrQWN0aXZlU0ZXWAYJAAIBAhdTV09QRkkgYWxyZWFkeSBzaHV0ZG93bgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICBQdTRl9QT09MBQtrQWN0aXZlU0ZXWAcFA25pbAFpAQphY3RpdmF0ZVdYAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkArAICBQdXWF9QT09MBQtrQWN0aXZlU0ZXWAYJAAIBAhFXWCBhbHJlYWR5IGFjdGl2ZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICBQdXWF9QT09MBQtrQWN0aXZlU0ZXWAYFA25pbAFpAQpzaHV0ZG93bldYAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQEhAQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIFB1dYX1BPT0wFC2tBY3RpdmVTRldYBgkAAgECE1dYIGFscmVhZHkgc2h1dGRvd24JAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgUHV1hfUE9PTAULa0FjdGl2ZVNGV1gHBQNuaWwBaQEMYWN0aXZhdGVQb29sAQRwb29sCQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sCQACAQIMVW5rbm93biBwb29sAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIFBHBvb2wFC2tQb29sQWN0aXZlBgkAAgECE1Bvb2wgYWxyZWFkeSBhY3RpdmUJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgUEcG9vbAULa1Bvb2xBY3RpdmUGBQNuaWwBaQEMc2h1dGRvd25Qb29sAQRwb29sCQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sCQACAQIMVW5rbm93biBwb29sAwkBASEBCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMJAKwCAgUEcG9vbAULa1Bvb2xBY3RpdmUGCQACAQIVUG9vbCBhbHJlYWR5IHNodXRkb3duCQDMCAIJAQxCb29sZWFuRW50cnkCCQCsAgIFBHBvb2wFC2tQb29sQWN0aXZlBwUDbmlsAQJ0eAEGdmVyaWZ5AAQHJG1hdGNoMAUCdHgDCQABAgUHJG1hdGNoMAIXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EA2ludgUHJG1hdGNoMAQKaXNSaWdodEZlZQMJAAACCAUDaW52A2ZlZQCg9zYJAAACCAUDaW52CmZlZUFzc2V0SWQFBHVuaXQHBAppc0luaXRDYWxsCQAAAggFA2ludghmdW5jdGlvbgIEaW5pdAMFCmlzUmlnaHRGZWUFCmlzSW5pdENhbGwHBAxncm91cDFTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ5ncm91cDFBZG1pbjFQSwABCQBkAgAAAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUOZ3JvdXAxQWRtaW4yUEsAAQAABAxncm91cDJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQ5ncm91cDJBZG1pbjFQSwABCQBkAgAAAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAQUOZ3JvdXAyQWRtaW4yUEsAAQAACQAAAgkAZAIFDGdyb3VwMVNpZ25lZAUMZ3JvdXAyU2lnbmVkAAJDKEwK", "height": 2690102, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: GfZCTRHQFL13gPqe2DmzqWHQ5y8XErWRRaP6NKcGSBjV Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let a = "SF"
5+
6+let b = "WX"
7+
8+let c = "capNoLoan"
9+
10+let d = "capLoan"
11+
12+let e = "stopLossNoLoan"
13+
14+let f = "stopLossLoan"
15+
16+let g = "loan"
17+
18+let h = "noLoan"
19+
20+let i = "noFee"
21+
22+let j = 100000000
23+
24+let k = 10000000000
25+
26+let l = toBigInt(10000000000000000)
27+
28+let m = 1000000
29+
30+let n = "A_asset_balance"
31+
32+let o = "B_asset_balance"
33+
34+let p = "A_asset_id"
35+
36+let q = "B_asset_id"
37+
38+let r = "share_asset_id"
39+
40+let s = "share_asset_supply"
41+
42+let t = "commission"
43+
44+let u = "_userPosition"
45+
46+let v = "_userPositionPool"
47+
48+let w = "_userPositionBorrowAmount"
49+
50+let x = "_userPositionBorrowAssetId"
51+
52+let y = "_userPositionNumber"
53+
54+let z = "_userPositionInterest"
55+
56+let A = "_poolTotal"
57+
58+let B = "_poolTotalLoan"
59+
60+let C = "_poolInterestLoan"
61+
62+let D = "_poolInterestNoLoan"
63+
64+let E = "_poolCanBorrow"
65+
66+let F = "_axlyFeeNoLoan"
67+
68+let G = "_axlyFeeWithLoan"
69+
70+let H = "_axlyFeeCapWithLoan"
71+
72+let I = "_axlyFeeCapNoLoan"
73+
74+let J = "_axlyFeeStoplossWithLoan"
75+
76+let K = "_axlyFeeStoplossNoLoan"
77+
78+let L = "_request_id"
79+
80+let M = "requests_iter"
81+
82+let N = "pool_"
83+
84+let O = "_poolShareId"
85+
86+let P = "_poolCapChange"
87+
88+let Q = "last_price"
89+
90+let R = "_twap5B"
91+
92+let S = "active"
93+
94+let T = "activeUsers"
95+
96+let U = "_active"
97+
98+let V = "_activePool"
99+
100+let W = "_stopLoss"
101+
102+let X = "axly_money_box"
103+
104+let Y = "swopfi_farming_addr"
105+
106+let Z = "lend_service_addr"
107+
108+let aa = "admin_call_pub_key"
109+
110+let ab = "price_oracle"
111+
112+let ac = "exchange_contract"
113+
114+let ad = "wx_swap_contract"
115+
116+let ae = "swop_id"
117+
118+let af = "wx_id"
119+
120+let ag = "group1_admin1_pub_key"
121+
122+let ah = "group1_admin2_pub_key"
123+
124+let ai = "group2_admin1_pub_key"
125+
126+let aj = "group2_admin2_pub_key"
127+
128+let ak = Address(fromBase58String(valueOrErrorMessage(getString(this, X), "No axly moneyBox address")))
129+
130+let al = Address(fromBase58String(valueOrErrorMessage(getString(this, ac), "No exchange contract address")))
131+
132+let am = Address(fromBase58String(valueOrErrorMessage(getString(this, ab), "No price oracle address")))
133+
134+let an = Address(fromBase58String(valueOrErrorMessage(getString(this, ad), "No wx swap address")))
135+
136+let ao = fromBase58String(valueOrErrorMessage(getString(this, ae), "No swop id"))
137+
138+let ap = fromBase58String(valueOrErrorMessage(getString(this, af), "No wx id"))
139+
140+let aq = fromBase58String(valueOrErrorMessage(getString(this, ag), "Can't get kGroup1Admin1PK"))
141+
142+let ar = fromBase58String(valueOrErrorMessage(getString(this, ah), "Can't get kGroup1Admin2PK"))
143+
144+let as = fromBase58String(valueOrErrorMessage(getString(this, ai), "Can't get kGroup2Admin1PK"))
145+
146+let at = fromBase58String(valueOrErrorMessage(getString(this, aj), "Can't get kGroup2Admin1PK"))
147+
148+let au = fromBase58String(valueOrErrorMessage(getString(this, aa), "Can't get operatorPK"))
149+
150+func av () = throw("Wrong pool type")
151+
152+
153+func aw () = Address(fromBase58String(valueOrErrorMessage(getString(this, Z), "Can't get lend service addr")))
154+
155+
156+func ax (ay) = if ((ay.callerPublicKey == au))
157+ then unit
158+ else throw("Only operator can call this function")
159+
160+
161+func az (ay) = if (if ((ay.callerPublicKey == aq))
162+ then true
163+ else (ay.callerPublicKey == ar))
164+ then unit
165+ else throw("Only admin group1 can call this function")
166+
167+
168+func aA (ay) = if ((ay.caller == this))
169+ then unit
170+ else throw("Only contract itself can call this function")
171+
172+
173+func aB (ay) = if ((ay.caller == aw()))
174+ then unit
175+ else throw("Only land contract can call this function")
176+
177+
178+func aC () = if ((valueOrElse(getBoolean(this, S), true) == true))
179+ then unit
180+ else throw("DApp is inactive at this moment")
181+
182+
183+func aD () = if (if (valueOrElse(getBoolean(this, S), true))
184+ then (valueOrElse(getBoolean(this, T), true) == true)
185+ else false)
186+ then unit
187+ else throw("DApp is inactive for users at this moment")
188+
189+
190+func aE (aF,aG) = {
191+ let aH = valueOrElse(getBoolean(this, (aG + U)), true)
192+ let aI = valueOrElse(getBoolean(this, (aF + V)), true)
193+ if (if (aH)
194+ then aI
195+ else false)
196+ then true
197+ else false
198+ }
199+
200+
201+func aJ (aK) = {
202+ let aL = aK
203+ if ($isInstanceOf(aL, "ByteVector"))
204+ then {
205+ let aM = aL
206+ assetBalance(this, aM)
207+ }
208+ else if ($isInstanceOf(aL, "Unit"))
209+ then {
210+ let aN = aL
211+ wavesBalance(this).available
212+ }
213+ else throw("Match error")
214+ }
215+
216+
217+func aO (aP) = $Tuple2(valueOrErrorMessage(getInteger(aP, n), "Can't get pool A asset balance"), valueOrErrorMessage(getInteger(aP, o), "Can't get pool B asset balance"))
218+
219+
220+func aQ (aP,aR,aS) = $Tuple2({
221+ let aT = invoke(aP, "getAccBalanceWrapperREADONLY", [aR], nil)
222+ if ($isInstanceOf(aT, "Int"))
223+ then aT
224+ else throw(($getType(aT) + " couldn't be cast to Int"))
225+ }, {
226+ let aT = invoke(aP, "getAccBalanceWrapperREADONLY", [aS], nil)
227+ if ($isInstanceOf(aT, "Int"))
228+ then aT
229+ else throw(($getType(aT) + " couldn't be cast to Int"))
230+ })
231+
232+
233+func aU (aP,aG,aR,aS) = if ((aG == a))
234+ then aO(aP)
235+ else if ((aG == b))
236+ then aQ(aP, aR, aS)
237+ else av()
238+
239+
240+func aV (aP) = {
241+ let aW = aO(aP)
242+ if ((aW == aW))
243+ then {
244+ let aX = aW._2
245+ let aY = aW._1
246+ $Tuple5(valueOrErrorMessage(getString(aP, p), "Can't get pool A asset id"), valueOrErrorMessage(getString(aP, q), "Can't get pool B asset id"), aY, aX, valueOrErrorMessage(getString(aP, r), "Can't get share asset id"))
247+ }
248+ else throw("Strict value is not equal to itself.")
249+ }
250+
251+
252+func aZ (aP) = {
253+ let ba = {
254+ let aT = invoke(aP, "getPoolConfigWrapperREADONLY", nil, nil)
255+ if ($isInstanceOf(aT, "List[Any]"))
256+ then aT
257+ else throw(($getType(aT) + " couldn't be cast to List[Any]"))
258+ }
259+ if ((ba == ba))
260+ then {
261+ let aR = valueOrErrorMessage({
262+ let aT = ba[4]
263+ if ($isInstanceOf(aT, "String"))
264+ then aT
265+ else unit
266+ }, "Can't get pool A asset id")
267+ let aS = valueOrErrorMessage({
268+ let aT = ba[5]
269+ if ($isInstanceOf(aT, "String"))
270+ then aT
271+ else unit
272+ }, "Can't get pool B asset id")
273+ let bb = valueOrErrorMessage({
274+ let aT = ba[3]
275+ if ($isInstanceOf(aT, "String"))
276+ then aT
277+ else unit
278+ }, "Can't get pool LP asset id")
279+ let bc = aQ(aP, aR, aS)
280+ if ((bc == bc))
281+ then {
282+ let aX = bc._2
283+ let aY = bc._1
284+ $Tuple5(aR, aS, aY, aX, bb)
285+ }
286+ else throw("Strict value is not equal to itself.")
287+ }
288+ else throw("Strict value is not equal to itself.")
289+ }
290+
291+
292+func bd (aP,aG) = if ((aG == a))
293+ then aV(aP)
294+ else if ((aG == b))
295+ then aZ(aP)
296+ else av()
297+
298+
299+func be (aP,aG,bb) = if ((aG == a))
300+ then valueOrErrorMessage(getInteger(aP, s), "Can't get share asset supply")
301+ else if ((aG == b))
302+ then valueOrErrorMessage(assetInfo(fromBase58String(bb)), "Wrong ShareId").quantity
303+ else av()
304+
305+
306+func bf (aF) = valueOrElse(getInteger(this, (aF + A)), 0)
307+
308+
309+func bg (aF) = valueOrElse(getInteger(this, (aF + B)), 0)
310+
311+
312+func bh (bi) = (valueOrElse(getInteger(this, (bi + y)), 0) + 1)
313+
314+
315+func bj (aF,bk) = if ((bk == d))
316+ then getIntegerValue(this, (aF + I))
317+ else if ((bk == c))
318+ then getIntegerValue(this, (aF + H))
319+ else if ((bk == g))
320+ then getIntegerValue(this, (aF + G))
321+ else if ((bk == h))
322+ then getIntegerValue(this, (aF + F))
323+ else if ((bk == i))
324+ then 0
325+ else throw("Wrong fee type")
326+
327+
328+func bl () = Address(fromBase58String(valueOrErrorMessage(getString(this, Y), "Can't get swopfi farming addr")))
329+
330+
331+func bm (aP) = {
332+ let bn = Address(fromBase58String(valueOrErrorMessage(getString(aP, "%s__factoryContract"), "Can't get WX factory contract addr")))
333+ let bo = split(valueOrErrorMessage(getString(bn, "%s__factoryConfig"), "Can't get WX factory cfg"), "__")
334+ Address(fromBase58String(bo[1]))
335+ }
336+
337+
338+func bp (aK) = {
339+ let aL = aK
340+ if ($isInstanceOf(aL, "ByteVector"))
341+ then {
342+ let aM = aL
343+ toBase58String(aM)
344+ }
345+ else if ($isInstanceOf(aL, "Unit"))
346+ then {
347+ let aN = aL
348+ "WAVES"
349+ }
350+ else throw("Not Asset id")
351+ }
352+
353+
354+func bq (aK) = if ((aK == "WAVES"))
355+ then unit
356+ else fromBase58String(aK)
357+
358+
359+func br (aK) = if ((aK == "WAVES"))
360+ then 8
361+ else {
362+ let aL = assetInfo(fromBase58String(aK))
363+ if ($isInstanceOf(aL, "Asset"))
364+ then {
365+ let bs = aL
366+ bs.decimals
367+ }
368+ else throw("Can't find asset")
369+ }
370+
371+
372+func bt (aK) = pow(10, 0, br(aK), 0, 0, DOWN)
373+
374+
375+func bu (bv) = {
376+ func bw (bx,aK) = {
377+ let by = getIntegerValue(am, (aK + R))
378+ (bx :+ by)
379+ }
380+
381+ let bz = bv
382+ let bA = size(bz)
383+ let bB = nil
384+ func bC (bD,bE) = if ((bE >= bA))
385+ then bD
386+ else bw(bD, bz[bE])
387+
388+ func bF (bD,bE) = if ((bE >= bA))
389+ then bD
390+ else throw("List size exceeds 50")
391+
392+ bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 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)
393+ }
394+
395+
396+func bG (bb) = {
397+ let aF = valueOrErrorMessage(getString(this, (bb + O)), "Can't find pool addr by share id")
398+ let aP = Address(fromBase58String(aF))
399+ let bH = valueOrErrorMessage(getString(this, (N + aF)), "Pool is not inited")
400+ let bI = bd(aP, bH)
401+ let aR = bI._1
402+ let aS = bI._2
403+ let bJ = bI._3
404+ let bK = bI._4
405+ let bL = getIntegerValue(am, (aR + R))
406+ let bM = getIntegerValue(am, (aS + R))
407+ let bN = be(aP, bH, bb)
408+ let bO = pow(10, 0, br(aR), 0, 0, DOWN)
409+ let bP = pow(10, 0, br(aS), 0, 0, DOWN)
410+ let bQ = pow(10, 0, br(bb), 0, 0, DOWN)
411+ let bR = (fraction(bJ, bL, bO) + fraction(bK, bM, bP))
412+ fraction(bR, bQ, bN)
413+ }
414+
415+
416+func bS (bT) = {
417+ func bw (bx,bb) = (bx :+ bG(bb))
418+
419+ let bz = bT
420+ let bA = size(bz)
421+ let bB = nil
422+ func bC (bD,bE) = if ((bE >= bA))
423+ then bD
424+ else bw(bD, bz[bE])
425+
426+ func bF (bD,bE) = if ((bE >= bA))
427+ then bD
428+ else throw("List size exceeds 20")
429+
430+ bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
431+ }
432+
433+
434+func bU (aR,aS,bb,bV) = {
435+ let bW = bu([aR, aS])
436+ let bX = bG(bb)
437+ let bY = ([toString(bW[0]), toString(bW[1]), toString(bX)] ++ bV)
438+[StringEntry(Q, makeString(bY, ","))]
439+ }
440+
441+
442+func bZ (bH,aP,ca,aR,cb,aS,aY,aX) = if ((bH == a))
443+ then {
444+ let cc = {
445+ let aT = invoke(aP, "callFunction", ["calcLPReplenishTwoTokensREADONLY", [toString(ca), toString(cb)]], nil)
446+ if ($isInstanceOf(aT, "List[Any]"))
447+ then aT
448+ else throw(($getType(aT) + " couldn't be cast to List[Any]"))
449+ }
450+ if ((cc == cc))
451+ then $Tuple5({
452+ let aT = cc[3]
453+ if ($isInstanceOf(aT, "Int"))
454+ then aT
455+ else throw(($getType(aT) + " couldn't be cast to Int"))
456+ }, {
457+ let aT = cc[4]
458+ if ($isInstanceOf(aT, "Int"))
459+ then aT
460+ else throw(($getType(aT) + " couldn't be cast to Int"))
461+ }, {
462+ let aT = cc[1]
463+ if ($isInstanceOf(aT, "Int"))
464+ then aT
465+ else throw(($getType(aT) + " couldn't be cast to Int"))
466+ }, bp(cc[2]), {
467+ let aT = cc[0]
468+ if ($isInstanceOf(aT, "Int"))
469+ then aT
470+ else throw(($getType(aT) + " couldn't be cast to Int"))
471+ })
472+ else throw("Strict value is not equal to itself.")
473+ }
474+ else if ((bH == b))
475+ then {
476+ let cd = $Tuple2(split({
477+ let aT = invoke(aP, "evaluatePutByAmountAssetREADONLY", [ca], nil)
478+ if ($isInstanceOf(aT, "String"))
479+ then aT
480+ else throw(($getType(aT) + " couldn't be cast to String"))
481+ }, "__"), split({
482+ let aT = invoke(aP, "evaluatePutByPriceAssetREADONLY", [cb], nil)
483+ if ($isInstanceOf(aT, "String"))
484+ then aT
485+ else throw(($getType(aT) + " couldn't be cast to String"))
486+ }, "__"))
487+ if ((cd == cd))
488+ then {
489+ let ce = cd._2
490+ let cf = cd._1
491+ let cg = parseIntValue(cf[1])
492+ let ch = parseIntValue(ce[1])
493+ if ((ch > cg))
494+ then {
495+ let ci = parseIntValue(cf[8])
496+ $Tuple5(ca, ci, (cb - ci), aS, ch)
497+ }
498+ else {
499+ let ci = parseIntValue(ce[7])
500+ $Tuple5(ci, cb, (ca - ci), aR, cg)
501+ }
502+ }
503+ else throw("Strict value is not equal to itself.")
504+ }
505+ else av()
506+
507+
508+func cj (aP,bH,ca,aR,cb,aS) = {
509+ let ck = [AttachedPayment(bq(aR), ca), AttachedPayment(bq(aS), cb)]
510+ if ((bH == a))
511+ then invoke(aP, "callFunction", ["replenishWithTwoTokens", ["false", "0"]], ck)
512+ else if ((bH == b))
513+ then invoke(aP, "put", [1000000, false], ck)
514+ else av()
515+ }
516+
517+
518+func cl (aP,bH,ci,cm) = {
519+ let ck = [AttachedPayment(bq(cm), ci)]
520+ if ((bH == a))
521+ then invoke(aP, "callFunction", ["replenishWithOneToken", ["0", "false", "0"]], ck)
522+ else if ((bH == b))
523+ then invoke(aP, "putOneTkn", [0, false], ck)
524+ else av()
525+ }
526+
527+
528+func cn (aF,bH,bb,co) = {
529+ let ck = [AttachedPayment(fromBase58String(bb), co)]
530+ if ((bH == a))
531+ then invoke(bl(), "lockShareTokens", [aF, 0], ck)
532+ else if ((bH == b))
533+ then invoke(bm(addressFromStringValue(aF)), "stake", nil, ck)
534+ else av()
535+ }
536+
537+
538+func cp (aF,bH,bb,co) = {
539+ let cq = if ((bH == a))
540+ then $Tuple3(bl(), "withdrawShareTokens", [aF, co])
541+ else if ((bH == b))
542+ then $Tuple3(bm(Address(fromBase58String(aF))), "unstake", [bb, co])
543+ else av()
544+ let cr = cq._1
545+ let cs = cq._2
546+ let ct = cq._3
547+ let cu = invoke(cr, cs, ct, nil)
548+ if ((cu == cu))
549+ then co
550+ else throw("Strict value is not equal to itself.")
551+ }
552+
553+
554+func cv (aF,cw,cx,aY,aX,cy,cz) = {
555+ let aP = Address(fromBase58String(aF))
556+ let cA = 1000000
557+ let cB = getIntegerValue(aP, t)
558+ let cC = fraction(cy, cA, (cA - cB), CEILING)
559+ let cD = if ((cz == cw))
560+ then {
561+ let cE = fraction(cC, aX, (aY - cC), CEILING)
562+ $Tuple2(cE, cx)
563+ }
564+ else {
565+ let cE = fraction(cC, aY, (aX - cC), CEILING)
566+ $Tuple2(cE, cw)
567+ }
568+ let cE = cD._1
569+ let cF = cD._2
570+ $Tuple2(cF, cE)
571+ }
572+
573+
574+func cG (aF) = {
575+ let aP = addressFromStringValue(aF)
576+ let bn = addressFromStringValue(valueOrErrorMessage(getString(aP, "%s__factoryContract"), "Can't get WX factory contract addr"))
577+ let cH = value(getInteger(an, "%s__poolFee"))
578+ let cI = value(getInteger(an, "%s__protocolFee"))
579+ let aL = invoke(bn, "getSwapFeeREADONLY", [toString(aP)], nil)
580+ if ($isInstanceOf(aL, "(Int, Int)"))
581+ then {
582+ let cJ = aL
583+ $Tuple2(cJ._1, cJ._2)
584+ }
585+ else $Tuple2(cH, cI)
586+ }
587+
588+
589+func cK (aF,cw,cx,aY,aX,cy,cz) = {
590+ let cL = cG(aF)
591+ let cM = cL._1
592+ let cN = cL._2
593+ let cO = toBigInt(100000000)
594+ let cP = if ((cz == cw))
595+ then {
596+ let cE = fraction(cy, aX, (aY - cy))
597+ $Tuple2(cE, cx)
598+ }
599+ else {
600+ let cE = fraction(cy, aY, (aX - cy))
601+ $Tuple2(cE, cw)
602+ }
603+ let cE = cP._1
604+ let cF = cP._2
605+ let cQ = toInt(fraction(toBigInt(cE), cO, (cO - toBigInt((cN + cM))), CEILING))
606+ $Tuple2(cF, cQ)
607+ }
608+
609+
610+func cR (bH,aF,cw,cx,aY,aX,cy,cz) = if ((bH == a))
611+ then {
612+ let cS = cv(aF, cw, cx, aY, aX, cy, cz)
613+ let cF = cS._1
614+ let cE = cS._2
615+ invoke(addressFromStringValue(aF), "callFunction", ["exchange", [toString(cy)]], [AttachedPayment(bq(cF), cE)])
616+ }
617+ else if ((bH == b))
618+ then {
619+ let cT = cK(aF, cw, cx, aY, aX, cy, cz)
620+ let cF = cT._1
621+ let cE = cT._2
622+ invoke(an, "swap", [cy, cz, toString(this)], [AttachedPayment(bq(cF), cE)])
623+ }
624+ else av()
625+
626+
627+func cU (aP,bH,bb,cV) = {
628+ let cW = if ((bH == a))
629+ then {
630+ let cu = {
631+ let aT = invoke(aP, "callFunction", ["withdrawREADONLY", [toString(cV)]], nil)
632+ if ($isInstanceOf(aT, "List[Any]"))
633+ then aT
634+ else throw(($getType(aT) + " couldn't be cast to List[Any]"))
635+ }
636+ if ((cu == cu))
637+ then $Tuple2({
638+ let aT = cu[0]
639+ if ($isInstanceOf(aT, "Int"))
640+ then aT
641+ else throw(($getType(aT) + " couldn't be cast to Int"))
642+ }, {
643+ let aT = cu[1]
644+ if ($isInstanceOf(aT, "Int"))
645+ then aT
646+ else throw(($getType(aT) + " couldn't be cast to Int"))
647+ })
648+ else throw("Strict value is not equal to itself.")
649+ }
650+ else if ((bH == b))
651+ then {
652+ let cu = split({
653+ let aT = invoke(aP, "evaluateGetREADONLY", [bb, cV], nil)
654+ if ($isInstanceOf(aT, "String"))
655+ then aT
656+ else throw(($getType(aT) + " couldn't be cast to String"))
657+ }, "__")
658+ if ((cu == cu))
659+ then $Tuple2(parseIntValue(cu[1]), parseIntValue(cu[2]))
660+ else throw("Strict value is not equal to itself.")
661+ }
662+ else av()
663+ let cX = cW._1
664+ let cY = cW._2
665+ $Tuple2(cX, cY)
666+ }
667+
668+
669+func cZ (bH,aF) = if ((bH == a))
670+ then {
671+ let da = aJ(ao)
672+ if ((da == da))
673+ then {
674+ let cu = invoke(bl(), "claim", [aF], nil)
675+ if ((cu == cu))
676+ then {
677+ let db = aJ(ao)
678+ $Tuple2((db - da), ao)
679+ }
680+ else throw("Strict value is not equal to itself.")
681+ }
682+ else throw("Strict value is not equal to itself.")
683+ }
684+ else if ((bH == b))
685+ then {
686+ let dc = aZ(addressFromStringValue(aF))
687+ let aR = dc._1
688+ let aS = dc._2
689+ let dd = dc._3
690+ let de = dc._4
691+ let df = dc._5
692+ let da = aJ(ap)
693+ if ((da == da))
694+ then {
695+ let cu = invoke(bm(addressFromStringValue(aF)), "claimWx", [df], nil)
696+ if ((cu == cu))
697+ then {
698+ let db = aJ(ap)
699+ $Tuple2((db - da), ap)
700+ }
701+ else throw("Strict value is not equal to itself.")
702+ }
703+ else throw("Strict value is not equal to itself.")
704+ }
705+ else av()
706+
707+
708+func dg (bH,aF,bk,ca,aR,cb,aS,aY,aX,dh) = {
709+ let di = aJ(fromBase58String(dh))
710+ if ((di == di))
711+ then {
712+ let aP = addressFromStringValue(aF)
713+ let dj = if (if ((ca > 0))
714+ then (cb > 0)
715+ else false)
716+ then {
717+ let dk = bZ(bH, aP, ca, aR, cb, aS, aY, aX)
718+ let dl = dk._1
719+ let dm = dk._2
720+ let dn = dk._3
721+ let do = dk._4
722+ let cu = cj(aP, bH, dl, aR, dm, aS)
723+ if ((cu == cu))
724+ then $Tuple2(dn, do)
725+ else throw("Strict value is not equal to itself.")
726+ }
727+ else if ((ca > 0))
728+ then $Tuple2(ca, aR)
729+ else if ((cb > 0))
730+ then $Tuple2(cb, aS)
731+ else throw("pmts must be > 0")
732+ let dn = dj._1
733+ let do = dj._2
734+ let cu = if ((dn > 0))
735+ then cl(aP, bH, dn, do)
736+ else nil
737+ if ((cu == cu))
738+ then {
739+ let dp = aJ(fromBase58String(dh))
740+ let dq = (dp - di)
741+ let dr = fraction(dq, bj(aF, bk), m)
742+ let ds = (dq - dr)
743+ if ((0 >= ds))
744+ then throw("amount of staked sharetokens must be > 0")
745+ else {
746+ let dt = cn(aF, bH, dh, ds)
747+ if ((dt == dt))
748+ then $Tuple2(ds, dr)
749+ else throw("Strict value is not equal to itself.")
750+ }
751+ }
752+ else throw("Strict value is not equal to itself.")
753+ }
754+ else throw("Strict value is not equal to itself.")
755+ }
756+
757+
758+func du (aF,bi,dv,dr,dw,bb,aG,dx) = {
759+ let dy = bf(aF)
760+ let dz = bg(aF)
761+ let dA = if (dx)
762+ then $Tuple2(getIntegerValue(this, (aF + C)), (dz + dv))
763+ else $Tuple2(getIntegerValue(this, (aF + D)), dz)
764+ let dB = dA._1
765+ let dC = dA._2
766+[IntegerEntry((aF + A), (dy + dv)), IntegerEntry((aF + B), dC), IntegerEntry((((((aF + "_") + bi) + "_") + toString(dw)) + u), dv), IntegerEntry((((((aF + "_") + bi) + "_") + toString(dw)) + z), dB), StringEntry((((bi + "_") + toString(dw)) + v), aF), IntegerEntry((bi + y), dw), ScriptTransfer(ak, dr, fromBase58String(bb))]
767+ }
768+
769+
770+func dD (dE,dF,dG,dH,dI,dJ,dK,dL,dM,dN) = {
771+ let dO = aJ(bq(dE))
772+ if ((dO == dO))
773+ then {
774+ let cu = invoke(al, "swap", [dH, dI, dJ, dK, dL, dM, dN], [AttachedPayment(dG, dF)])
775+ if ((cu == cu))
776+ then (aJ(bq(dE)) - dO)
777+ else throw("Strict value is not equal to itself.")
778+ }
779+ else throw("Strict value is not equal to itself.")
780+ }
781+
782+
783+func dP (dE,dF,dG,dQ,dR,dN) = {
784+ let dO = aJ(bq(dE))
785+ if ((dO == dO))
786+ then {
787+ let cu = invoke(al, "puzzleSwap", [dQ, dR, dN], [AttachedPayment(dG, dF)])
788+ if ((cu == cu))
789+ then (aJ(bq(dE)) - dO)
790+ else throw("Strict value is not equal to itself.")
791+ }
792+ else throw("Strict value is not equal to itself.")
793+ }
794+
795+
796+func dS (dE,dF,dG,dT,dU,dV,dW,dX,dY,dN) = {
797+ let dO = aJ(bq(dE))
798+ if ((dO == dO))
799+ then {
800+ let cu = invoke(al, "swopfiSwap", [dT, dU, dV, dW, dX, dY, dN], [AttachedPayment(dG, dF)])
801+ if ((cu == cu))
802+ then (aJ(bq(dE)) - dO)
803+ else throw("Strict value is not equal to itself.")
804+ }
805+ else throw("Strict value is not equal to itself.")
806+ }
807+
808+
809+func dZ (aF,bH,ea,eb) = {
810+ let aP = Address(fromBase58String(aF))
811+ let ec = bd(aP, bH)
812+ let ed = ec._1
813+ let ee = ec._2
814+ let aY = ec._3
815+ let aX = ec._4
816+ let bb = ec._5
817+ if (if ((ea != ed))
818+ then (ea != ee)
819+ else false)
820+ then throw("Wrong asset")
821+ else {
822+ let ef = fraction(eb, bj(aF, d), m)
823+ let eg = fraction(eb, bj(aF, c), m)
824+ let eh = (ef + eg)
825+ let ei = if ((ea == ed))
826+ then $Tuple2((eb - eh), 0)
827+ else $Tuple2(0, (eb - eh))
828+ let ca = ei._1
829+ let cb = ei._2
830+ let ej = dg(bH, aF, i, ca, ed, cb, ee, aY, aX, bb)
831+ let dv = ej._1
832+ let ek = ej._2
833+ let el = valueOrElse(getInteger(this, (aF + C)), 0)
834+ let em = valueOrElse(getInteger(this, (aF + D)), 0)
835+ let en = bf(aF)
836+ let eo = bg(aF)
837+ let ep = fraction(eo, j, en)
838+ let eq = fraction(dv, ep, j)
839+ let er = (dv - eq)
840+ let es = if ((eo > 0))
841+ then (el + fraction(eq, k, eo))
842+ else 0
843+ let et = if (((en - eo) > 0))
844+ then (em + fraction(er, k, (en - eo)))
845+ else 0
846+ ([IntegerEntry((aF + C), es), IntegerEntry((aF + D), et), IntegerEntry((aF + A), (en + dv)), IntegerEntry((aF + B), (eo + eq)), ScriptTransfer(ak, eh, fromBase58String(ea))] ++ bU(ed, ee, bb, nil))
847+ }
848+ }
849+
850+
851+func eu (bi,aF,ev,ew) = {
852+ let ex = valueOrErrorMessage(getInteger(this, (((((aF + "_") + bi) + "_") + ev) + u)), "Unknown position")
853+ let ey = getIntegerValue(this, (((((aF + "_") + bi) + "_") + ev) + z))
854+ let ez = if (ew)
855+ then getIntegerValue(this, (aF + C))
856+ else getIntegerValue(this, (aF + D))
857+ (ex + fraction(ex, (ez - ey), k))
858+ }
859+
860+
861+func eA (aF,eB,eC,eD) = {
862+ let bk = if (eB)
863+ then f
864+ else e
865+ if (eC)
866+ then fraction(eD, bj(aF, bk), m)
867+ else 0
868+ }
869+
870+
871+func eE (bi,aF,ev,eC) = {
872+ let ex = valueOrErrorMessage(getInteger(this, (((((aF + "_") + bi) + "_") + ev) + u)), "Unknown position")
873+ let eB = (valueOrElse(getInteger(this, (((((aF + "_") + bi) + "_") + ev) + w)), 0) > 0)
874+ let cV = eu(bi, aF, ev, eB)
875+ let eF = bf(aF)
876+ let eG = Address(fromBase58String(bi))
877+ let aP = Address(fromBase58String(aF))
878+ let bH = valueOrErrorMessage(getString(this, (N + aF)), "Unknown pool")
879+ let eH = bd(aP, bH)
880+ let eI = eH._1
881+ let eJ = eH._2
882+ let aY = eH._3
883+ let aX = eH._4
884+ let bb = eH._5
885+ let eK = $Tuple2(bq(eI), bq(eJ))
886+ let eL = eK._1
887+ let eM = eK._2
888+ let eN = eA(aF, eB, eC, cV)
889+ let eO = aJ(eL)
890+ if ((eO == eO))
891+ then {
892+ let eP = aJ(eM)
893+ if ((eP == eP))
894+ then {
895+ let cu = if ((bH == a))
896+ then {
897+ let cu = cp(aF, bH, bb, eN)
898+ if ((cu == cu))
899+ then invoke(aP, "callFunction", ["withdraw", [toString(cV)]], nil)
900+ else throw("Strict value is not equal to itself.")
901+ }
902+ else if ((bH == b))
903+ then {
904+ let cu = cp(aF, bH, bb, (cV + eN))
905+ if ((cu == cu))
906+ then invoke(aP, "get", nil, [AttachedPayment(bq(bb), cV)])
907+ else throw("Strict value is not equal to itself.")
908+ }
909+ else av()
910+ if ((cu == cu))
911+ then {
912+ let eQ = aJ(eL)
913+ if ((eQ == eQ))
914+ then {
915+ let eR = aJ(eM)
916+ if ((eR == eR))
917+ then {
918+ let eS = $Tuple2((eQ - eO), (eR - eP))
919+ let eT = eS._1
920+ let eU = eS._2
921+ let eV = if (eB)
922+ then {
923+ let eW = getStringValue(this, (((((aF + "_") + bi) + "_") + ev) + x))
924+ let eX = {
925+ let aT = invoke(aw(), "getAssetDebt", [false, ((bi + "_") + ev), eW], nil)
926+ if ($isInstanceOf(aT, "Int"))
927+ then aT
928+ else throw(($getType(aT) + " couldn't be cast to Int"))
929+ }
930+ if ((eX == eX))
931+ then {
932+ let eY = if (if ((eW == eI))
933+ then (eX > eT)
934+ else false)
935+ then (eX - eT)
936+ else if (if ((eW == eJ))
937+ then (eX > eU)
938+ else false)
939+ then (eX - eU)
940+ else 0
941+ let eZ = if ((eY > 0))
942+ then cR(bH, aF, eI, eJ, (aY - eT), (aX - eU), eY, eW)
943+ else nil
944+ if ((eZ == eZ))
945+ then {
946+ let fa = aJ(eL)
947+ if ((fa == fa))
948+ then {
949+ let fb = aJ(eM)
950+ if ((fb == fb))
951+ then {
952+ let fc = if ((eX > 0))
953+ then invoke(aw(), "repayFor", [((bi + "_") + ev)], [AttachedPayment(bq(eW), eX)])
954+ else 0
955+ if ((fc == fc))
956+ then if ((eW == eI))
957+ then $Tuple2(((fa - eO) - eX), (fb - eP))
958+ else $Tuple2((fa - eO), ((fb - eP) - eX))
959+ else throw("Strict value is not equal to itself.")
960+ }
961+ else throw("Strict value is not equal to itself.")
962+ }
963+ else throw("Strict value is not equal to itself.")
964+ }
965+ else throw("Strict value is not equal to itself.")
966+ }
967+ else throw("Strict value is not equal to itself.")
968+ }
969+ else $Tuple2(eT, eU)
970+ let fd = eV._1
971+ let fe = eV._2
972+ let ff = ([DeleteEntry((((((aF + "_") + bi) + "_") + ev) + u)), DeleteEntry((((bi + "_") + ev) + v)), DeleteEntry((((((aF + "_") + bi) + "_") + ev) + w)), DeleteEntry((((((aF + "_") + bi) + "_") + ev) + x)), DeleteEntry((((((aF + "_") + bi) + "_") + ev) + z)), IntegerEntry((aF + A), ((eF - cV) - eN)), ScriptTransfer(eG, fd, eL), ScriptTransfer(eG, fe, eM), ScriptTransfer(ak, eN, fromBase58String(bb))] ++ bU(eI, eJ, bb, nil))
973+ $Tuple2(ff, [fd, fe])
974+ }
975+ else throw("Strict value is not equal to itself.")
976+ }
977+ else throw("Strict value is not equal to itself.")
978+ }
979+ else throw("Strict value is not equal to itself.")
980+ }
981+ else throw("Strict value is not equal to itself.")
982+ }
983+ else throw("Strict value is not equal to itself.")
984+ }
985+
986+
987+func fg (fh) = {
988+ let fi = split(valueOrErrorMessage(getString(this, (fh + L)), ("No request with id " + fh)), ",")
989+ let bi = fi[0]
990+ let aF = fi[1]
991+ let ca = parseIntValue(fi[2])
992+ let ed = fi[3]
993+ let cb = parseIntValue(fi[4])
994+ let ee = fi[5]
995+ let aY = parseIntValue(fi[6])
996+ let aX = parseIntValue(fi[7])
997+ let bb = fi[8]
998+ let fj = fi[9]
999+ let fk = parseIntValue(fi[10])
1000+ $Tuple11(bi, aF, ca, ed, cb, ee, aY, aX, bb, fj, fk)
1001+ }
1002+
1003+
1004+func fl (ca,cb,aR,aS,fm,fn) = if (if ((fn != aR))
1005+ then (fn != aS)
1006+ else false)
1007+ then throw("Wrong borrow asset")
1008+ else {
1009+ let bL = getIntegerValue(am, (aR + R))
1010+ let bM = getIntegerValue(am, (aS + R))
1011+ let fo = pow(10, 0, br(aR), 0, 0, DOWN)
1012+ let fp = pow(10, 0, br(aS), 0, 0, DOWN)
1013+ let fq = (fraction(bL, ca, fo) + fraction(bM, cb, fp))
1014+ let fr = if ((fn == aR))
1015+ then $Tuple2(bL, fo)
1016+ else $Tuple2(bM, fp)
1017+ let fs = fr._1
1018+ let ft = fr._2
1019+ fraction(fraction(fq, (fm - 100), 100), ft, fs)
1020+ }
1021+
1022+
1023+func fu (fv,ed,ee) = if ((size(fv) == 2))
1024+ then if ((bp(fv[0].assetId) != ed))
1025+ then throw("Wrong payment asset A")
1026+ else if ((bp(fv[1].assetId) != ee))
1027+ then throw("Wrong payment asset B")
1028+ else $Tuple2(fv[0].amount, fv[1].amount)
1029+ else if ((size(fv) == 1))
1030+ then if ((bp(fv[0].assetId) == ed))
1031+ then $Tuple2(fv[0].amount, 0)
1032+ else if ((bp(fv[0].assetId) == ee))
1033+ then $Tuple2(0, fv[0].amount)
1034+ else throw("Wrong payment")
1035+ else throw("One or two payments expected")
1036+
1037+
1038+func fw (aY,aX,fx,fy) = {
1039+ let fz = ((j - fraction(fraction(aX, j, aY), j, fraction(fy, j, fx))) * 100)
1040+ if ((0 > fz))
1041+ then (fz * -1)
1042+ else fz
1043+ }
1044+
1045+
1046+func fA (aF,bH,fB,co,dn) = {
1047+ let fC = if (fB)
1048+ then cZ(bH, aF)
1049+ else {
1050+ let fD = if ((bH == a))
1051+ then ao
1052+ else if ((bH == b))
1053+ then ap
1054+ else av()
1055+ $Tuple2(co, fD)
1056+ }
1057+ let fE = fC._1
1058+ let fF = fC._2
1059+ let fG = aJ(fF)
1060+ if (if ((co > (fE + dn)))
1061+ then true
1062+ else (co > fG))
1063+ then throw("To big amount to exchange")
1064+ else $Tuple2(fE, fF)
1065+ }
1066+
1067+
1068+@Callable(ay)
1069+func getShareAssetPriceREADONLY (bb) = {
1070+ let fH = bG(bb)
1071+ $Tuple2(nil, fH)
1072+ }
1073+
1074+
1075+
1076+@Callable(ay)
1077+func getUserPositionShareAmountREADONLY (bi,dw) = {
1078+ let aF = valueOrErrorMessage(getString(this, (((bi + "_") + dw) + v)), "Unknown position")
1079+ let fI = getIntegerValue(this, (((((aF + "_") + bi) + "_") + dw) + w))
1080+ let cV = eu(bi, aF, dw, (fI > 0))
1081+ $Tuple2(nil, cV)
1082+ }
1083+
1084+
1085+
1086+@Callable(ay)
1087+func getUserPositionREADONLY (bi,fJ,dw) = {
1088+ func fK (bx,aF) = {
1089+ let fL = bx
1090+ let fM = fL._1
1091+ let fN = fL._2
1092+ let fO = fL._3
1093+ let fP = fL._4
1094+ let fQ = fL._5
1095+ let fR = fL._6
1096+ if (!(isDefined(getInteger(this, (((((aF + "_") + bi) + "_") + dw[fR]) + u)))))
1097+ then $Tuple6((fM :+ 0), (fN :+ 0), (fO :+ 0), (fP :+ 0), (fQ :+ 0), (fR + 1))
1098+ else {
1099+ let bH = valueOrErrorMessage(getString(this, (N + aF)), "Pool is not inited")
1100+ let fS = bd(Address(fromBase58String(aF)), bH)
1101+ let ed = fS._1
1102+ let ee = fS._2
1103+ let aY = fS._3
1104+ let aX = fS._4
1105+ let bb = fS._5
1106+ let fI = valueOrElse(getInteger(this, (((((aF + "_") + bi) + "_") + dw[fR]) + w)), 0)
1107+ let cV = eu(bi, aF, dw[fR], (fI > 0))
1108+ let fT = cU(Address(fromBase58String(aF)), bH, bb, cV)
1109+ let fU = fT._1
1110+ let fV = fT._2
1111+ if ((fI > 0))
1112+ then {
1113+ let eW = getStringValue(this, (((((aF + "_") + bi) + "_") + dw[fR]) + x))
1114+ let eX = {
1115+ let aT = invoke(aw(), "getAssetDebt", [false, ((bi + "_") + dw[fR]), eW], nil)
1116+ if ($isInstanceOf(aT, "Int"))
1117+ then aT
1118+ else throw(($getType(aT) + " couldn't be cast to Int"))
1119+ }
1120+ if ((eX == eX))
1121+ then {
1122+ let fW = if ((bH == a))
1123+ then cv(aF, ed, ee, aY, aX, eX, eW)
1124+ else if ((bH == b))
1125+ then cK(aF, ed, ee, aY, aX, eX, eW)
1126+ else av()
1127+ let cF = fW._1
1128+ let cE = fW._2
1129+ let fX = if ((cF == ee))
1130+ then $Tuple2((fU - eX), (fV - cE))
1131+ else $Tuple2((fU - cE), (fV - eX))
1132+ let fY = fX._1
1133+ let fZ = fX._2
1134+ $Tuple6((fM :+ fU), (fN :+ fV), (fO :+ eX), (fP :+ fY), (fQ :+ fZ), (fR + 1))
1135+ }
1136+ else throw("Strict value is not equal to itself.")
1137+ }
1138+ else $Tuple6((fM :+ fU), (fN :+ fV), fO, (fM :+ fU), (fN :+ fV), (fR + 1))
1139+ }
1140+ }
1141+
1142+ let ga = {
1143+ let bz = fJ
1144+ let bA = size(bz)
1145+ let bB = $Tuple6(nil, nil, nil, nil, nil, 0)
1146+ func bC (bD,bE) = if ((bE >= bA))
1147+ then bD
1148+ else fK(bD, bz[bE])
1149+
1150+ func bF (bD,bE) = if ((bE >= bA))
1151+ then bD
1152+ else throw("List size exceeds 20")
1153+
1154+ bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
1155+ }
1156+ let fM = ga._1
1157+ let fN = ga._2
1158+ let fO = ga._3
1159+ let fP = ga._4
1160+ let fQ = ga._5
1161+ $Tuple2(nil, $Tuple5(fM, fN, fO, fP, fQ))
1162+ }
1163+
1164+
1165+
1166+@Callable(ay)
1167+func replenish (aF,fm,fn) = valueOrElse(aD(), {
1168+ let bH = valueOrErrorMessage(getString(this, (N + aF)), "Pool is not inited")
1169+ if (!(aE(aF, bH)))
1170+ then throw("Pool not active at this moment")
1171+ else if (if ((100 > fm))
1172+ then true
1173+ else (fm > 300))
1174+ then throw("Leverage can't be <100 and >300")
1175+ else if (if (!(getBooleanValue(this, (aF + E))))
1176+ then (fm > 100)
1177+ else false)
1178+ then throw("You can't borrow in this pool")
1179+ else {
1180+ let gb = bd(Address(fromBase58String(aF)), bH)
1181+ let ed = gb._1
1182+ let ee = gb._2
1183+ let aY = gb._3
1184+ let aX = gb._4
1185+ let bb = gb._5
1186+ if (if ((fn != ed))
1187+ then (fn != ee)
1188+ else false)
1189+ then throw("Wrong borrow asset")
1190+ else {
1191+ let gc = fu(ay.payments, ed, ee)
1192+ let ca = gc._1
1193+ let cb = gc._2
1194+ let bi = toString(ay.caller)
1195+ let gd = bh(bi)
1196+ if ((fm > 100))
1197+ then {
1198+ let fI = fl(ca, cb, ed, ee, fm, fn)
1199+ let fi = makeString([bi, aF, toString(ca), ed, toString(cb), ee, toString(aY), toString(aX), bb, fn, toString(fI)], ",")
1200+ let ge = {
1201+ let aT = invoke(this, "createNewRequest", [fi], nil)
1202+ if ($isInstanceOf(aT, "Int"))
1203+ then aT
1204+ else throw(($getType(aT) + " couldn't be cast to Int"))
1205+ }
1206+ if ((ge == ge))
1207+ then {
1208+ let gf = [((bi + "_") + toString(gd)), bb, fn, fI, toString(this), "replenishFromLand", toString(valueOrErrorMessage(ge, "Can't create new request"))]
1209+ let cu = reentrantInvoke(aw(), "flashPosition", gf, nil)
1210+ if ((cu == cu))
1211+ then {
1212+ let gg = getIntegerValue(this, (((((aF + "_") + bi) + "_") + toString(gd)) + u))
1213+ let gh = aU(Address(fromBase58String(aF)), bH, ed, ee)
1214+ if ((gh == gh))
1215+ then {
1216+ let fy = gh._2
1217+ let fx = gh._1
1218+ let gi = fw(aY, aX, fx, fy)
1219+ let gj = cU(Address(fromBase58String(aF)), bH, bb, gg)
1220+ let fU = gj._1
1221+ let fV = gj._2
1222+ $Tuple2(nil, [gi, fU, fV])
1223+ }
1224+ else throw("Strict value is not equal to itself.")
1225+ }
1226+ else throw("Strict value is not equal to itself.")
1227+ }
1228+ else throw("Strict value is not equal to itself.")
1229+ }
1230+ else {
1231+ let gk = dg(bH, aF, h, ca, ed, cb, ee, aY, aX, bb)
1232+ if ((gk == gk))
1233+ then {
1234+ let eh = gk._2
1235+ let gg = gk._1
1236+ let gl = aU(Address(fromBase58String(aF)), bH, ed, ee)
1237+ if ((gl == gl))
1238+ then {
1239+ let fy = gl._2
1240+ let fx = gl._1
1241+ let gi = fw(aY, aX, fx, fy)
1242+ let gm = cU(Address(fromBase58String(aF)), bH, bb, gg)
1243+ let fU = gm._1
1244+ let fV = gm._2
1245+ $Tuple2((du(aF, bi, gg, eh, gd, bb, bH, false) ++ bU(ed, ee, bb, [toString(fU), toString(fV)])), [gi, fU, fV])
1246+ }
1247+ else throw("Strict value is not equal to itself.")
1248+ }
1249+ else throw("Strict value is not equal to itself.")
1250+ }
1251+ }
1252+ }
1253+ })
1254+
1255+
1256+
1257+@Callable(ay)
1258+func withdraw (aF,ev) = valueOrElse(aD(), {
1259+ let bH = valueOrErrorMessage(getString(this, (N + aF)), "Pool is not inited")
1260+ if (!(aE(aF, bH)))
1261+ then throw("Pool not active at this moment")
1262+ else eE(toString(ay.caller), aF, toString(ev), false)
1263+ })
1264+
1265+
1266+
1267+@Callable(ay)
1268+func createUpdateStopLoss (ev,gn,aK,go) = valueOrElse(aD(), {
1269+ let gp = getIntegerValue(am, (aK + R))
1270+ let bH = valueOrErrorMessage(getString(this, (N + gn)), "Pool is not inited")
1271+ if (!(aE(gn, bH)))
1272+ then throw("Pool not active at this moment")
1273+ else if (!(isDefined(getInteger(this, (((((gn + "_") + toString(ay.caller)) + "_") + toString(ev)) + u)))))
1274+ then throw("There are no user position")
1275+ else if ((0 >= go))
1276+ then throw("Price must be greater than 0")
1277+ else if ((go > gp))
1278+ then throw("Price must be less than current token price")
1279+ else [IntegerEntry((((((((toString(ay.caller) + "_") + toString(ev)) + "_") + gn) + "_") + aK) + W), go)]
1280+ })
1281+
1282+
1283+
1284+@Callable(ay)
1285+func deleteStopLoss (ev,gn,aK) = valueOrElse(aD(), {
1286+ let bH = valueOrErrorMessage(getString(this, (N + gn)), "Pool is not inited")
1287+ if (!(aE(gn, bH)))
1288+ then throw("Pool not active at this moment")
1289+ else if (!(isDefined(getInteger(this, (((((((toString(ay.caller) + "_") + toString(ev)) + "_") + gn) + "_") + aK) + W)))))
1290+ then throw("No entry")
1291+ else [DeleteEntry((((((((toString(ay.caller) + "_") + toString(ev)) + "_") + gn) + "_") + aK) + W))]
1292+ })
1293+
1294+
1295+
1296+@Callable(ay)
1297+func init (gq,gr,gs,am,gt,an,gu,gv,gw,gx,gy,gz,gA) = valueOrElse(aA(ay), if (isDefined(getString(aa)))
1298+ then throw("Already inited")
1299+ else if (!(isDefined(addressFromString(gq))))
1300+ then throw("moneyBoxAddr is not correct address")
1301+ else if (!(isDefined(addressFromString(gr))))
1302+ then throw("sfFarmingAddr is not correct address")
1303+ else if (!(isDefined(addressFromString(gs))))
1304+ then throw("lendAddr is not correct address")
1305+ else if (!(isDefined(addressFromString(am))))
1306+ then throw("priceOracleAddr is not correct address")
1307+ else if (!(isDefined(addressFromString(gt))))
1308+ then throw("keeperExContract is not correct address")
1309+ else if (!(isDefined(assetInfo(fromBase58String(gu)))))
1310+ then throw("swopAssetId is not correct asset id")
1311+ else if (!(isDefined(assetInfo(fromBase58String(gv)))))
1312+ then throw("swopAssetId is not correct asset id")
1313+ else if ((size(fromBase58String(gw)) != 32))
1314+ then throw("operatorPubKey is not correct")
1315+ else if ((size(fromBase58String(gx)) != 32))
1316+ then throw("operatorPubKey is not correct")
1317+ else if ((size(fromBase58String(gy)) != 32))
1318+ then throw("operatorPubKey is not correct")
1319+ else if ((size(fromBase58String(gz)) != 32))
1320+ then throw("operatorPubKey is not correct")
1321+ else if ((size(fromBase58String(gA)) != 32))
1322+ then throw("operatorPubKey is not correct")
1323+ else [StringEntry(X, gq), StringEntry(Y, gr), StringEntry(Z, gs), StringEntry(ab, am), StringEntry(ac, gt), StringEntry(ad, an), StringEntry(ae, gu), StringEntry(af, gv), StringEntry(aa, gw), StringEntry(ag, gx), StringEntry(ah, gy), StringEntry(ai, gz), StringEntry(aj, gA)])
1324+
1325+
1326+
1327+@Callable(ay)
1328+func createNewRequest (ct) = valueOrElse(aA(ay), {
1329+ let ge = (valueOrElse(getInteger(this, M), 0) + 1)
1330+ $Tuple2([StringEntry((toString(ge) + L), ct), IntegerEntry(M, ge)], ge)
1331+ })
1332+
1333+
1334+
1335+@Callable(ay)
1336+func replenishFromLand (fh) = valueOrElse(aC(), valueOrElse(aB(ay), {
1337+ let gB = fg(fh)
1338+ let bi = gB._1
1339+ let aF = gB._2
1340+ let ca = gB._3
1341+ let ed = gB._4
1342+ let cb = gB._5
1343+ let ee = gB._6
1344+ let aY = gB._7
1345+ let aX = gB._8
1346+ let bb = gB._9
1347+ let fj = gB._10
1348+ let fk = gB._11
1349+ if ((size(ay.payments) != 1))
1350+ then throw("Wrong payment size")
1351+ else if (if ((bp(ay.payments[0].assetId) != fj))
1352+ then true
1353+ else (ay.payments[0].amount != fk))
1354+ then throw("Wrong payment")
1355+ else {
1356+ let gC = if ((ed == fj))
1357+ then $Tuple2((ca + fk), cb)
1358+ else $Tuple2(ca, (cb + fk))
1359+ let gD = gC._1
1360+ let gE = gC._2
1361+ let bH = valueOrErrorMessage(getString(this, (N + aF)), "Unknown pool")
1362+ let gF = dg(bH, aF, g, gD, ed, gE, ee, aY, aX, bb)
1363+ let gg = gF._1
1364+ let eh = gF._2
1365+ let dw = bh(bi)
1366+ let gG = [IntegerEntry((((((aF + "_") + bi) + "_") + toString(dw)) + w), fk), StringEntry((((((aF + "_") + bi) + "_") + toString(dw)) + x), fj)]
1367+ let ff = du(aF, bi, gg, eh, dw, bb, bH, true)
1368+ let gH = cU(Address(fromBase58String(aF)), bH, bb, gg)
1369+ let fU = gH._1
1370+ let fV = gH._2
1371+ $Tuple2((((ff ++ bU(ed, ee, bb, [toString(fU), toString(fV)])) ++ gG) :+ DeleteEntry((fh + L))), gg)
1372+ }
1373+ }))
1374+
1375+
1376+
1377+@Callable(ay)
1378+func liquidate (bi,ev,gI) = valueOrElse(aC(), valueOrElse(aB(ay), {
1379+ let aF = valueOrErrorMessage(getString(this, (((bi + "_") + ev) + v)), "no position")
1380+ let bH = valueOrErrorMessage(getString(this, (N + aF)), "Pool is not inited")
1381+ let gJ = bd(Address(fromBase58String(aF)), bH)
1382+ let ed = gJ._1
1383+ let ee = gJ._2
1384+ let aY = gJ._3
1385+ let aX = gJ._4
1386+ let bb = gJ._5
1387+ let co = cp(aF, bH, bb, gI)
1388+ let fI = getIntegerValue(this, (((((aF + "_") + bi) + "_") + ev) + w))
1389+ let eW = getStringValue(this, (((((aF + "_") + bi) + "_") + ev) + x))
1390+ let cV = eu(bi, aF, ev, (fI > 0))
1391+ if ((gI > cV))
1392+ then throw("You can't liquidate more than user have")
1393+ else if ((fI == 0))
1394+ then throw("You can't liquidate position without borrow")
1395+ else [IntegerEntry((((((aF + "_") + bi) + "_") + ev) + z), getIntegerValue(this, (aF + C))), IntegerEntry((aF + B), (bg(aF) - gI)), IntegerEntry((aF + A), (bf(aF) - gI)), IntegerEntry((((((aF + "_") + bi) + "_") + ev) + u), (cV - gI)), ScriptTransfer(ay.caller, co, fromBase58String(bb))]
1396+ }))
1397+
1398+
1399+
1400+@Callable(ay)
1401+func stopLoss (bi,ev,aF,aK) = valueOrElse(aC(), valueOrElse(ax(ay), {
1402+ let gp = getIntegerValue(am, (aK + R))
1403+ let gK = valueOrErrorMessage(getInteger(this, (((((((bi + "_") + toString(ev)) + "_") + aF) + "_") + aK) + W)), "No entry")
1404+ if ((gp > gK))
1405+ then throw("Token price greater stop loss price")
1406+ else {
1407+ let gL = eE(bi, aF, toString(ev), true)
1408+ $Tuple2((gL._1 :+ DeleteEntry((((((((bi + "_") + toString(ev)) + "_") + aF) + "_") + aK) + W))), gL._2)
1409+ }
1410+ }))
1411+
1412+
1413+
1414+@Callable(ay)
1415+func capitalizeExKeeper (aF,gM,gN,fB,dH,dI,dJ,dK,dL,dM,dN) = valueOrElse(aC(), valueOrElse(ax(ay), {
1416+ let bH = getStringValue(this, (N + aF))
1417+ let dn = valueOrElse(getInteger(this, (aF + P)), 0)
1418+ let gO = fA(aF, bH, fB, gN, dn)
1419+ let gP = gO._1
1420+ let fD = gO._2
1421+ let gQ = dD(gM, gN, fD, dH, dI, dJ, dK, dL, dM, dN)
1422+ let gR = ((gP + dn) - gN)
1423+ let gS = if ((gR >= 0))
1424+ then [IntegerEntry((aF + P), gR)]
1425+ else throw("Negative change")
1426+ (dZ(aF, bH, gM, gQ) ++ gS)
1427+ }))
1428+
1429+
1430+
1431+@Callable(ay)
1432+func capitalizeExPuzzle (aF,gM,gN,fB,dQ,dR,dN) = valueOrElse(aC(), valueOrElse(ax(ay), {
1433+ let bH = getStringValue(this, (N + aF))
1434+ let dn = valueOrElse(getInteger(this, (aF + P)), 0)
1435+ let gT = fA(aF, bH, fB, gN, dn)
1436+ let gP = gT._1
1437+ let fD = gT._2
1438+ let gQ = dP(gM, gN, fD, dQ, dR, dN)
1439+ let gR = ((gP + dn) - gN)
1440+ let gS = if ((gR >= 0))
1441+ then [IntegerEntry((aF + P), gR)]
1442+ else nil
1443+ (dZ(aF, bH, gM, gQ) ++ gS)
1444+ }))
1445+
1446+
1447+
1448+@Callable(ay)
1449+func capitalizeExSwopFi (aF,gM,gN,fB,dT,dU,dV,dW,dX,dY,dN) = valueOrElse(aC(), valueOrElse(ax(ay), {
1450+ let bH = getStringValue(this, (N + aF))
1451+ let dn = valueOrElse(getInteger(this, (aF + P)), 0)
1452+ let gU = fA(aF, bH, fB, gN, dn)
1453+ let gP = gU._1
1454+ let fD = gU._2
1455+ let gQ = dS(gM, gN, fD, dT, dU, dV, dW, dX, dY, dN)
1456+ let gR = ((gP + dn) - gN)
1457+ let gS = if ((gR >= 0))
1458+ then [IntegerEntry((aF + P), gR)]
1459+ else nil
1460+ (dZ(aF, bH, gM, gQ) ++ gS)
1461+ }))
1462+
1463+
1464+
1465+@Callable(ay)
1466+func capitalizeNoEx (aF,fB,gV) = valueOrElse(aC(), valueOrElse(ax(ay), {
1467+ let bH = getStringValue(this, (N + aF))
1468+ let gW = fA(aF, bH, fB, gV, 0)
1469+ let gP = gW._1
1470+ let fD = gW._2
1471+ dZ(aF, bH, bp(fD), gV)
1472+ }))
1473+
1474+
1475+
1476+@Callable(ay)
1477+func initNewPool (aG,aP,gX,gY,gZ,ha,hb,hc,hd) = valueOrElse(aC(), valueOrElse(az(ay), if (if ((aG != a))
1478+ then (aG != b)
1479+ else false)
1480+ then throw("Wrong type")
1481+ else {
1482+ let he = bd(Address(fromBase58String(aP)), aG)
1483+ let aR = he._1
1484+ let aS = he._2
1485+ let dd = he._3
1486+ let de = he._4
1487+ let bb = he._5
1488+ if ((0 > gX))
1489+ then throw("inFeeNoLoan must be greater than 0")
1490+ else if ((0 > gY))
1491+ then throw("inFeeLoan must be greater than 0")
1492+ else if ((0 > gZ))
1493+ then throw("capFeeNoLoan must be greater than 0")
1494+ else if ((0 > ha))
1495+ then throw("capFeeWithLoan must be greater than 0")
1496+ else if ((0 > hb))
1497+ then throw("stoplossFeeNoLoan must be greater than 0")
1498+ else if ((0 > hc))
1499+ then throw("stoplossFeeWithLoan must be greater than 0")
1500+ else [IntegerEntry((aP + F), gX), IntegerEntry((aP + G), gY), IntegerEntry((aP + H), gZ), IntegerEntry((aP + I), ha), IntegerEntry((aP + J), hb), IntegerEntry((aP + K), hc), IntegerEntry((aP + C), 0), IntegerEntry((aP + D), 0), StringEntry((N + aP), aG), StringEntry((bb + O), aP), BooleanEntry((aP + E), hd)]
1501+ }))
1502+
1503+
1504+
1505+@Callable(ay)
1506+func activate () = valueOrElse(az(ay), if (valueOrElse(getBoolean(this, S), true))
1507+ then throw("dApp already active")
1508+ else [BooleanEntry(S, true)])
1509+
1510+
1511+
1512+@Callable(ay)
1513+func shutdown () = valueOrElse(az(ay), if (!(valueOrElse(getBoolean(this, S), true)))
1514+ then throw("dApp already shutdown")
1515+ else [BooleanEntry(S, false)])
1516+
1517+
1518+
1519+@Callable(ay)
1520+func activateForUsers () = valueOrElse(az(ay), if (valueOrElse(getBoolean(this, T), true))
1521+ then throw("dApp already active for users")
1522+ else [BooleanEntry(T, true)])
1523+
1524+
1525+
1526+@Callable(ay)
1527+func shutdownForUsers () = valueOrElse(az(ay), if (!(valueOrElse(getBoolean(this, T), true)))
1528+ then throw("dApp already shutdown for users")
1529+ else [BooleanEntry(T, false)])
1530+
1531+
1532+
1533+@Callable(ay)
1534+func activateSF () = valueOrElse(az(ay), if (valueOrElse(getBoolean(this, (a + U)), true))
1535+ then throw("SWOPFI already active")
1536+ else [BooleanEntry((a + U), true)])
1537+
1538+
1539+
1540+@Callable(ay)
1541+func shutdownSF () = valueOrElse(az(ay), if (!(valueOrElse(getBoolean(this, (a + U)), true)))
1542+ then throw("SWOPFI already shutdown")
1543+ else [BooleanEntry((a + U), false)])
1544+
1545+
1546+
1547+@Callable(ay)
1548+func activateWX () = valueOrElse(az(ay), if (valueOrElse(getBoolean(this, (b + U)), true))
1549+ then throw("WX already active")
1550+ else [BooleanEntry((b + U), true)])
1551+
1552+
1553+
1554+@Callable(ay)
1555+func shutdownWX () = valueOrElse(az(ay), if (!(valueOrElse(getBoolean(this, (b + U)), true)))
1556+ then throw("WX already shutdown")
1557+ else [BooleanEntry((b + U), false)])
1558+
1559+
1560+
1561+@Callable(ay)
1562+func activatePool (aF) = valueOrElse(az(ay), if (!(isDefined(getString(this, (N + aF)))))
1563+ then throw("Unknown pool")
1564+ else if (valueOrElse(getBoolean(this, (aF + V)), true))
1565+ then throw("Pool already active")
1566+ else [BooleanEntry((aF + V), true)])
1567+
1568+
1569+
1570+@Callable(ay)
1571+func shutdownPool (aF) = valueOrElse(az(ay), if (!(isDefined(getString(this, (N + aF)))))
1572+ then throw("Unknown pool")
1573+ else if (!(valueOrElse(getBoolean(this, (aF + V)), true)))
1574+ then throw("Pool already shutdown")
1575+ else [BooleanEntry((aF + V), false)])
1576+
1577+
1578+@Verifier(hf)
1579+func hg () = {
1580+ let aL = hf
1581+ if ($isInstanceOf(aL, "InvokeScriptTransaction"))
1582+ then {
1583+ let cu = aL
1584+ let hh = if ((cu.fee == 900000))
1585+ then (cu.feeAssetId == unit)
1586+ else false
1587+ let hi = (cu.function == "init")
1588+ if (hh)
1589+ then hi
1590+ else false
1591+ }
1592+ else {
1593+ let hj = if (sigVerify(hf.bodyBytes, hf.proofs[0], aq))
1594+ then 1
1595+ else (0 + (if (sigVerify(hf.bodyBytes, hf.proofs[0], ar))
1596+ then 1
1597+ else 0))
1598+ let hk = if (sigVerify(hf.bodyBytes, hf.proofs[1], as))
1599+ then 1
1600+ else (0 + (if (sigVerify(hf.bodyBytes, hf.proofs[1], at))
1601+ then 1
1602+ else 0))
1603+ ((hj + hk) == 2)
1604+ }
1605+ }
1606+

github/deemru/w8io/169f3d6 
109.11 ms