tx · 7CuBqMEVx8WtnTjkaoZbSpCnZJ7HJ9MB1yzvkZ3Ne8my

3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB:  -0.01400000 Waves

2020.02.08 15:37 [890284] smart account 3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB > SELF 0.00000000 Waves

{ "type": 13, "id": "7CuBqMEVx8WtnTjkaoZbSpCnZJ7HJ9MB1yzvkZ3Ne8my", "fee": 1400000, "feeAssetId": null, "timestamp": 1581165481833, "version": 1, "sender": "3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB", "senderPublicKey": "Gd5NihbWQoWuTnSvq25TuV2BYZG4U1e9KDqZn9zBPix7", "proofs": [ "2F78Zvdve4DtKSMMSUFSWydEdh4WW8gX4CN9tMUakLDVHvDYdSsn72vBz96Yfor3bwP4NiafZN5GbnS3jFPPvkzf" ], "script": "base64:AAIDAAAAAAAAAB4IARIGCgQICAgIEgUKAwgICBIFCgMICAgSBAoCCAgAAAANAAAAAAh2ZXJpZmllcgkBAAAAB2V4dHJhY3QAAAABCQEAAAARYWRkcmVzc0Zyb21TdHJpbmcAAAABAgAAACMzTjJzNVJ0YUhQQmVuQ3N4MkVDY29GUmJZSHgzbm9aaFhXMQAAAAAEYmFuawIAAAAjM04xRTZ0WGRkUm9WYVJmUTlkUTN2ZzVMYVcyZnNkOEhLdWIAAAAADWFjY2VwdGVkVG9rZW4BAAAAIOilarzKd0LycGEyNUpPRYO5uR7lmWcXw3Hq2QuhBK3rAQAAAApjaGVja0VudHJ5AAAAAgAAAAZwcmVmaXgAAAAEdXVpZAQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzCQABLAAAAAIFAAAABnByZWZpeAUAAAAEdXVpZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAgAAAAROT05FAQAAAAljaGVja1VVSUQAAAABAAAABHV1aWQEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAAEdXVpZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAgAAAAROT05FAQAAABJjaGVja0lmV2hpdGVMaXN0ZWQAAAABAAAADWNhbGxlckFkZHJlc3MEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAABFhZGRyX1dISVRFTElTVEVEXwUAAAANY2FsbGVyQWRkcmVzcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAAAQAAAAhpc0FkcmVzcwAAAAEAAAAEYWRkcgMDCQAAAAAAAAIJAAExAAAAAQUAAAAEYWRkcgAAAAAAAAAAIwkAAAAAAAACCQABLwAAAAIFAAAABGFkZHIAAAAAAAAAAAICAAAAAjNOBwYJAAAAAAAAAgkAAS8AAAACBQAAAARhZGRyAAAAAAAAAAACAgAAAAIzTQEAAAAMY291bnRQYXJ0aWVzAAAAAgAAAAthY2N1bXVsYXRvcgAAAARhZGRyAwkAAGYAAAACCQABMQAAAAEFAAAABGFkZHIAAAAAAAAAAAAJAABkAAAAAgUAAAALYWNjdW11bGF0b3IAAAAAAAAAAAEJAABkAAAAAgUAAAALYWNjdW11bGF0b3IAAAAAAAAAAAABAAAAFGNoZWNrSWZQZW5kaW5nVG9TaWduAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDADCQAAAAAAAAIFAAAAAWECAAAAB1BFTkRJTkcGBwcBAAAADmdldFZhbHVlU3RyaW5nAAAAAQAAAARqc29uCQABLwAAAAIJAAEwAAAAAgUAAAAEanNvbgAAAAAAAAAAAQkBAAAABXZhbHVlAAAAAQkABLMAAAACCQABMAAAAAIFAAAABGpzb24AAAAAAAAAAAECAAAAASIBAAAACGdldFZhbHVlAAAAAgAAAARqc29uAAAAA2tleQQAAAAIa2V5SW5kZXgJAQAAAAV2YWx1ZQAAAAEJAASzAAAAAgUAAAAEanNvbgkAASwAAAACCQABLAAAAAICAAAAASIFAAAAA2tleQIAAAACIjoEAAAABGRhdGEJAAEwAAAAAgUAAAAEanNvbgkAAGQAAAACCQAAZAAAAAIFAAAACGtleUluZGV4CQABMQAAAAEFAAAAA2tleQAAAAAAAAAAAwQAAAAJanNvblZhbHVlCQEAAAAOZ2V0VmFsdWVTdHJpbmcAAAABBQAAAARkYXRhBQAAAAlqc29uVmFsdWUBAAAAEmdldEpzb25CZWZvcmVWYWx1ZQAAAAIAAAAEanNvbgAAAANrZXkEAAAACGtleUluZGV4CQEAAAAFdmFsdWUAAAABCQAEswAAAAIFAAAABGpzb24JAAEsAAAAAgkAASwAAAACAgAAAAEiBQAAAANrZXkCAAAAAiI6BAAAAARkYXRhCQABLwAAAAIFAAAABGpzb24JAABkAAAAAgkAAGQAAAACBQAAAAhrZXlJbmRleAkAATEAAAABBQAAAANrZXkAAAAAAAAAAAMFAAAABGRhdGEBAAAAEWdldEpzb25BZnRlclZhbHVlAAAAAgAAAARqc29uAAAAA2tleQQAAAAIa2V5SW5kZXgJAQAAAAV2YWx1ZQAAAAEJAASzAAAAAgUAAAAEanNvbgkAASwAAAACCQABLAAAAAICAAAAASIFAAAAA2tleQIAAAACIjoEAAAABGRhdGEJAQAAAAl0YWtlUmlnaHQAAAACBQAAAARqc29uCQAAZQAAAAIJAAExAAAAAQUAAAAEanNvbgkAAGQAAAACCQAAZAAAAAIJAABkAAAAAgkAAGQAAAACBQAAAAhrZXlJbmRleAkAATEAAAABBQAAAANrZXkAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAIFAAAABGRhdGEAAAAEAAAABmludm9rZQEAAAARZmlsZUNlcnRpZmljYXRpb24AAAAEAAAABGhhc2gAAAAFdGl0bGUAAAAEdXVpZAAAAARkYXRhBAAAAAJpZAkBAAAAB2V4dHJhY3QAAAABCAUAAAAGaW52b2tlAAAADXRyYW5zYWN0aW9uSWQEAAAACmVudHJ5RXhpc3QJAQAAAApjaGVja0VudHJ5AAAAAgUAAAAEaGFzaAUAAAAEdXVpZAQAAAAJdXVpZEV4aXN0CQEAAAAJY2hlY2tVVUlEAAAAAQUAAAAEdXVpZAQAAAANY2FsbGVyQWRkcmVzcwkAAlgAAAABCAgFAAAABmludm9rZQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0JAQAAABJjaGVja0lmV2hpdGVMaXN0ZWQAAAABBQAAAA1jYWxsZXJBZGRyZXNzAwkBAAAAAiE9AAAAAgUAAAAKZW50cnlFeGlzdAIAAAAETk9ORQkAAAIAAAABAgAAABhUaGlzIGVudHJ5IGFscmVhZHkgZXhpc3QDCQEAAAACIT0AAAACBQAAAAl1dWlkRXhpc3QCAAAABE5PTkUJAAACAAAAAQIAAAAXVGhpcyB1dWlkIGFscmVhZHkgZXhpc3QDCQAAZgAAAAIJAAExAAAAAQUAAAAEdXVpZAAAAAAAAAAAJAkAAAIAAAABAgAAABBVdWlkIGlzIHRvbyBsb25nAwkAAGYAAAACCQABMQAAAAEFAAAABGhhc2gAAAAAAAAAAEAJAAACAAAAAQIAAAAQSGFzaCBpcyB0b28gbG9uZwMJAABmAAAAAgkAATEAAAABBQAAAAV0aXRsZQAAAAAAAAAAQAkAAAIAAAABAgAAABFUaXRsZSBpcyB0b28gbG9uZwMJAABmAAAAAgUAAAAWY2FsbGVySXNXaGl0ZUxpc3RlZE51bQAAAAAAAAAAAAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAABHV1aWQJAAJYAAAAAQUAAAACaWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAEaGFzaAUAAAAEdXVpZAkAAlgAAAABBQAAAAJpZAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAV0aXRsZQUAAAAEdXVpZAkAAlgAAAABBQAAAAJpZAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACAgAAABFhZGRyX1dISVRFTElTVEVEXwUAAAANY2FsbGVyQWRkcmVzcwkAAGUAAAACBQAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtAAAAAAAAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhkYXRhX2ZjXwkAAlgAAAABBQAAAAJpZAIAAAABXwUAAAANY2FsbGVyQWRkcmVzcwUAAAAEZGF0YQUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAZpbnZva2UAAAAGY2FsbGVyAAAAAAAAB6EgBQAAAAR1bml0BQAAAANuaWwEAAAAB3BheW1lbnQJAQAAAAdleHRyYWN0AAAAAQgFAAAABmludm9rZQAAAAdwYXltZW50BAAAAAZhbW91bnQJAQAAAAdleHRyYWN0AAAAAQgFAAAAB3BheW1lbnQAAAAGYW1vdW50BAAAAA5wYXltZW50QXNzZXRJZAMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQEAAAAHZXh0cmFjdAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAgV2F2ZXMgaXMgbm90IGFjY2VwdGVkIGFzIHBheW1lbnQEAAAADGN1cnJlbnRQcmljZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAIdmVyaWZpZXIJAAEsAAAAAgIAAAASY2VydGlmaWNhdGlvbl9mZWVfCQACWAAAAAEJAQAAAAdleHRyYWN0AAAAAQUAAAAOcGF5bWVudEFzc2V0SWQDCQEAAAACIT0AAAACBQAAAA1hY2NlcHRlZFRva2VuBQAAAA5wYXltZW50QXNzZXRJZAkAAAIAAAABAgAAAChUaGlzIHRva2VuIGlzIG5vdCBhY2NlcHRlZCBhdCB0aGUgbW9tZW50AwMJAQAAAAIhPQAAAAIFAAAABmFtb3VudAUAAAAMY3VycmVudFByaWNlCQAAZwAAAAIAAAAAAAAAAAAFAAAAFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0HCQAAAgAAAAECAAAAElRoZSBwcmljZSBpcyB3cm9uZwkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAABHV1aWQJAAJYAAAAAQUAAAACaWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAEaGFzaAUAAAAEdXVpZAkAAlgAAAABBQAAAAJpZAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAV0aXRsZQUAAAAEdXVpZAkAAlgAAAABBQAAAAJpZAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIZGF0YV9mY18JAAJYAAAAAQUAAAACaWQCAAAAAV8FAAAADWNhbGxlckFkZHJlc3MFAAAABGRhdGEFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEFAAAABGJhbmsFAAAABmFtb3VudAgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAUAAAADbmlsAAAABmludm9rZQEAAAASZW1haWxDZXJ0aWZpY2F0aW9uAAAAAwAAAAltZXNzYWdlaWQAAAAEdXVpZAAAAARkYXRhBAAAAAJpZAkBAAAAB2V4dHJhY3QAAAABCAUAAAAGaW52b2tlAAAADXRyYW5zYWN0aW9uSWQEAAAACmVudHJ5RXhpc3QJAQAAAApjaGVja0VudHJ5AAAAAgUAAAAJbWVzc2FnZWlkBQAAAAR1dWlkBAAAAAl1dWlkRXhpc3QJAQAAAAljaGVja1VVSUQAAAABBQAAAAR1dWlkBAAAAA1jYWxsZXJBZGRyZXNzCQACWAAAAAEICAUAAAAGaW52b2tlAAAABmNhbGxlcgAAAAVieXRlcwQAAAAWY2FsbGVySXNXaGl0ZUxpc3RlZE51bQkBAAAAEmNoZWNrSWZXaGl0ZUxpc3RlZAAAAAEFAAAADWNhbGxlckFkZHJlc3MDCQEAAAACIT0AAAACBQAAAAplbnRyeUV4aXN0AgAAAAROT05FCQAAAgAAAAECAAAAGFRoaXMgZW50cnkgYWxyZWFkeSBleGlzdAMJAQAAAAIhPQAAAAIFAAAACXV1aWRFeGlzdAIAAAAETk9ORQkAAAIAAAABAgAAABdUaGlzIHV1aWQgYWxyZWFkeSBleGlzdAMJAABmAAAAAgkAATEAAAABBQAAAAR1dWlkAAAAAAAAAAAkCQAAAgAAAAECAAAAEFV1aWQgaXMgdG9vIGxvbmcDCQAAZgAAAAIFAAAAFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0AAAAAAAAAAAAJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAR1dWlkCQACWAAAAAEFAAAAAmlkCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACW1lc3NhZ2VpZAUAAAAEdXVpZAkAAlgAAAABBQAAAAJpZAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACAgAAABFhZGRyX1dISVRFTElTVEVEXwUAAAANY2FsbGVyQWRkcmVzcwkAAGUAAAACBQAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtAAAAAAAAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhkYXRhX2VjXwkAAlgAAAABBQAAAAJpZAIAAAABXwUAAAANY2FsbGVyQWRkcmVzcwUAAAAEZGF0YQUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAZpbnZva2UAAAAGY2FsbGVyAAAAAAAAB6EgBQAAAAR1bml0BQAAAANuaWwEAAAAB3BheW1lbnQJAQAAAAdleHRyYWN0AAAAAQgFAAAABmludm9rZQAAAAdwYXltZW50BAAAAAZhbW91bnQJAQAAAAdleHRyYWN0AAAAAQgFAAAAB3BheW1lbnQAAAAGYW1vdW50BAAAAA5wYXltZW50QXNzZXRJZAMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQEAAAAHZXh0cmFjdAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAgV2F2ZXMgaXMgbm90IGFjY2VwdGVkIGFzIHBheW1lbnQEAAAADGN1cnJlbnRQcmljZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAIdmVyaWZpZXIJAAEsAAAAAgIAAAASY2VydGlmaWNhdGlvbl9mZWVfCQACWAAAAAEJAQAAAAdleHRyYWN0AAAAAQUAAAAOcGF5bWVudEFzc2V0SWQDCQEAAAACIT0AAAACBQAAAA1hY2NlcHRlZFRva2VuBQAAAA5wYXltZW50QXNzZXRJZAkAAAIAAAABAgAAAChUaGlzIHRva2VuIGlzIG5vdCBhY2NlcHRlZCBhdCB0aGUgbW9tZW50AwMJAQAAAAIhPQAAAAIFAAAABmFtb3VudAUAAAAMY3VycmVudFByaWNlCQAAZwAAAAIAAAAAAAAAAAAFAAAAFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0HCQAAAgAAAAECAAAAElRoZSBwcmljZSBpcyB3cm9uZwkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAABHV1aWQJAAJYAAAAAQUAAAACaWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAJbWVzc2FnZWlkBQAAAAR1dWlkCQACWAAAAAEFAAAAAmlkCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhkYXRhX2VjXwkAAlgAAAABBQAAAAJpZAIAAAABXwUAAAANY2FsbGVyQWRkcmVzcwUAAAAEZGF0YQUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAEYmFuawUAAAAGYW1vdW50CAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAANuaWwAAAAGaW52b2tlAQAAAA9jcmVhdGVBZ3JlZW1lbnQAAAADAAAABGhhc2gAAAAFdGl0bGUAAAAJYWRkcmVzc2VzBAAAAAJpZAkBAAAAB2V4dHJhY3QAAAABCAUAAAAGaW52b2tlAAAADXRyYW5zYWN0aW9uSWQEAAAADWNhbGxlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAZpbnZva2UAAAAGY2FsbGVyAAAABWJ5dGVzBAAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtCQEAAAASY2hlY2tJZldoaXRlTGlzdGVkAAAAAQUAAAANY2FsbGVyQWRkcmVzcwQAAAAESlNPTgkAASwAAAACCQABLAAAAAIJAQAAABJnZXRKc29uQmVmb3JlVmFsdWUAAAACBQAAAAlhZGRyZXNzZXMCAAAABW93bmVyCQACWAAAAAEICAUAAAAGaW52b2tlAAAABmNhbGxlcgAAAAVieXRlcwkBAAAAEWdldEpzb25BZnRlclZhbHVlAAAAAgUAAAAJYWRkcmVzc2VzAgAAAAVvd25lcgMGCQAAAgAAAAEFAAAABEpTT04EAAAADmFkZHJlc3Nlc0FycmF5CQAETAAAAAIJAQAAAAhnZXRWYWx1ZQAAAAIFAAAACWFkZHJlc3NlcwIAAAAIYWRkcmVzczEJAARMAAAAAgkBAAAACGdldFZhbHVlAAAAAgUAAAAJYWRkcmVzc2VzAgAAAAhhZGRyZXNzMgkABEwAAAACCQEAAAAIZ2V0VmFsdWUAAAACBQAAAAlhZGRyZXNzZXMCAAAACGFkZHJlc3MzCQAETAAAAAIJAQAAAAhnZXRWYWx1ZQAAAAIFAAAACWFkZHJlc3NlcwIAAAAIYWRkcmVzczQJAARMAAAAAgkBAAAACGdldFZhbHVlAAAAAgUAAAAJYWRkcmVzc2VzAgAAAAhhZGRyZXNzNQkABEwAAAACCQEAAAAIZ2V0VmFsdWUAAAACBQAAAAlhZGRyZXNzZXMCAAAACGFkZHJlc3M2BQAAAANuaWwEAAAADnRvdGFsQWRkcmVzc2VzBAAAAA0kbGlzdDc1ODU3NjI1BQAAAA5hZGRyZXNzZXNBcnJheQQAAAANJHNpemU3NTg1NzYyNQkAAZAAAAABBQAAAA0kbGlzdDc1ODU3NjI1BAAAAA0kYWNjMDc1ODU3NjI1AAAAAAAAAAAAAwkAAAAAAAACBQAAAA0kc2l6ZTc1ODU3NjI1AAAAAAAAAAAABQAAAA0kYWNjMDc1ODU3NjI1BAAAAA0kYWNjMTc1ODU3NjI1CQEAAAAMY291bnRQYXJ0aWVzAAAAAgUAAAANJGFjYzA3NTg1NzYyNQkAAZEAAAACBQAAAA0kbGlzdDc1ODU3NjI1AAAAAAAAAAAAAwkAAAAAAAACBQAAAA0kc2l6ZTc1ODU3NjI1AAAAAAAAAAABBQAAAA0kYWNjMTc1ODU3NjI1BAAAAA0kYWNjMjc1ODU3NjI1CQEAAAAMY291bnRQYXJ0aWVzAAAAAgUAAAANJGFjYzE3NTg1NzYyNQkAAZEAAAACBQAAAA0kbGlzdDc1ODU3NjI1AAAAAAAAAAABAwkAAAAAAAACBQAAAA0kc2l6ZTc1ODU3NjI1AAAAAAAAAAACBQAAAA0kYWNjMjc1ODU3NjI1BAAAAA0kYWNjMzc1ODU3NjI1CQEAAAAMY291bnRQYXJ0aWVzAAAAAgUAAAANJGFjYzI3NTg1NzYyNQkAAZEAAAACBQAAAA0kbGlzdDc1ODU3NjI1AAAAAAAAAAACAwkAAAAAAAACBQAAAA0kc2l6ZTc1ODU3NjI1AAAAAAAAAAADBQAAAA0kYWNjMzc1ODU3NjI1BAAAAA0kYWNjNDc1ODU3NjI1CQEAAAAMY291bnRQYXJ0aWVzAAAAAgUAAAANJGFjYzM3NTg1NzYyNQkAAZEAAAACBQAAAA0kbGlzdDc1ODU3NjI1AAAAAAAAAAADAwkAAAAAAAACBQAAAA0kc2l6ZTc1ODU3NjI1AAAAAAAAAAAEBQAAAA0kYWNjNDc1ODU3NjI1BAAAAA0kYWNjNTc1ODU3NjI1CQEAAAAMY291bnRQYXJ0aWVzAAAAAgUAAAANJGFjYzQ3NTg1NzYyNQkAAZEAAAACBQAAAA0kbGlzdDc1ODU3NjI1AAAAAAAAAAAEAwkAAAAAAAACBQAAAA0kc2l6ZTc1ODU3NjI1AAAAAAAAAAAFBQAAAA0kYWNjNTc1ODU3NjI1BAAAAA0kYWNjNjc1ODU3NjI1CQEAAAAMY291bnRQYXJ0aWVzAAAAAgUAAAANJGFjYzU3NTg1NzYyNQkAAZEAAAACBQAAAA0kbGlzdDc1ODU3NjI1AAAAAAAAAAAFAwkAAAAAAAACBQAAAA0kc2l6ZTc1ODU3NjI1AAAAAAAAAAAGBQAAAA0kYWNjNjc1ODU3NjI1BAAAAA0kYWNjNzc1ODU3NjI1CQEAAAAMY291bnRQYXJ0aWVzAAAAAgUAAAANJGFjYzY3NTg1NzYyNQkAAZEAAAACBQAAAA0kbGlzdDc1ODU3NjI1AAAAAAAAAAAGCQAAAgAAAAECAAAAEkxpc3Qgc2l6ZSBleGNlZWQgNgQAAAAPZ2xvYmFsRGF0YVRpdGxlCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACAgAAAAl0aXRsZV9NQV8JAAJYAAAAAQUAAAACaWQFAAAABXRpdGxlBAAAAA5nbG9iYWxEYXRhSGFzaAkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgIAAAAIaGFzaF9NQV8JAAJYAAAAAQUAAAACaWQFAAAABGhhc2gEAAAADmdsb2JhbERhdGFKc29uCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIZGF0YV9NQV8JAAJYAAAAAQUAAAACaWQCAAAAAV8FAAAADWNhbGxlckFkZHJlc3MFAAAACWFkZHJlc3NlcwQAAAAPZ2xvYmFsRGF0YU93bmVyCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIFAAAADWNhbGxlckFkZHJlc3MCAAAABF9NQV8JAAJYAAAAAQUAAAACaWQJAAEsAAAAAgIAAAAHU0lHTkVEXwkAAlgAAAABBQAAAAJpZAQAAAAPZGF0YVdoaXRlTGlzdGVkCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACAgAAABFhZGRyX1dISVRFTElTVEVEXwUAAAANY2FsbGVyQWRkcmVzcwkAAGUAAAACBQAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtBQAAAA50b3RhbEFkZHJlc3NlcwMJAAAAAAAAAgUAAAAOdG90YWxBZGRyZXNzZXMAAAAAAAAAAAEDCQAAZgAAAAIFAAAAFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0AAAAAAAAAAAADCQAAZgAAAAIFAAAADnRvdGFsQWRkcmVzc2VzBQAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtCQAAAgAAAAECAAAAKllvdSBkb24ndCBoYXZlIGVub3VnaCBjZXJ0aWZpY2F0aW9uIGNyZWRpdAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgUAAAAPZ2xvYmFsRGF0YVRpdGxlCQAETAAAAAIFAAAADmdsb2JhbERhdGFIYXNoCQAETAAAAAIFAAAADmdsb2JhbERhdGFKc29uCQAETAAAAAIFAAAAD2dsb2JhbERhdGFPd25lcgkABEwAAAACBQAAAA9kYXRhV2hpdGVMaXN0ZWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAAAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAAAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuBQAAAANuaWwEAAAAB3BheW1lbnQJAQAAAAdleHRyYWN0AAAAAQgFAAAABmludm9rZQAAAAdwYXltZW50BAAAAAZhbW91bnQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAGYW1vdW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAdwYXltZW50AAAABmFtb3VudAAAAAAAAAAAAAQAAAAOcGF5bWVudEFzc2V0SWQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkBAAAAB2V4dHJhY3QAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAA1hY2NlcHRlZFRva2VuBAAAAAxjdXJyZW50UHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAACHZlcmlmaWVyCQABLAAAAAICAAAAEmNlcnRpZmljYXRpb25fZmVlXwkAAlgAAAABCQEAAAAHZXh0cmFjdAAAAAEFAAAADnBheW1lbnRBc3NldElkAwkAAGYAAAACCQAAaAAAAAIFAAAADGN1cnJlbnRQcmljZQUAAAAOdG90YWxBZGRyZXNzZXMFAAAABmFtb3VudAkAAAIAAAABCQABLAAAAAICAAAAIVRoZSBwcmljZSBpcyB3cm9uZywgaXQgc2hvdWxkIGJlIAkAAaQAAAABCQAAaAAAAAIFAAAADGN1cnJlbnRQcmljZQUAAAAOdG90YWxBZGRyZXNzZXMJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIFAAAAD2dsb2JhbERhdGFUaXRsZQkABEwAAAACBQAAAA5nbG9iYWxEYXRhSGFzaAkABEwAAAACBQAAAA5nbG9iYWxEYXRhSnNvbgkABEwAAAACBQAAAA9nbG9iYWxEYXRhT3duZXIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAAAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAARiYW5rBQAAAAZhbW91bnQFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAAAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuBQAAAANuaWwDCQAAAAAAAAIFAAAADnRvdGFsQWRkcmVzc2VzAAAAAAAAAAACAwkAAGYAAAACBQAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtAAAAAAAAAAAAAwkAAGYAAAACBQAAAA50b3RhbEFkZHJlc3NlcwUAAAAWY2FsbGVySXNXaGl0ZUxpc3RlZE51bQkAAAIAAAABAgAAACpZb3UgZG9uJ3QgaGF2ZSBlbm91Z2ggY2VydGlmaWNhdGlvbiBjcmVkaXQJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIFAAAAD2dsb2JhbERhdGFUaXRsZQkABEwAAAACBQAAAA5nbG9iYWxEYXRhSGFzaAkABEwAAAACBQAAAA5nbG9iYWxEYXRhSnNvbgkABEwAAAACBQAAAA9nbG9iYWxEYXRhT3duZXIJAARMAAAAAgUAAAAPZGF0YVdoaXRlTGlzdGVkCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAAIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAECAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAAAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAABAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuBQAAAANuaWwEAAAAB3BheW1lbnQJAQAAAAdleHRyYWN0AAAAAQgFAAAABmludm9rZQAAAAdwYXltZW50BAAAAAZhbW91bnQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAGYW1vdW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAdwYXltZW50AAAABmFtb3VudAAAAAAAAAAAAAQAAAAOcGF5bWVudEFzc2V0SWQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkBAAAAB2V4dHJhY3QAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAA1hY2NlcHRlZFRva2VuBAAAAAxjdXJyZW50UHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAACHZlcmlmaWVyCQABLAAAAAICAAAAEmNlcnRpZmljYXRpb25fZmVlXwkAAlgAAAABCQEAAAAHZXh0cmFjdAAAAAEFAAAADnBheW1lbnRBc3NldElkAwkAAGYAAAACCQAAaAAAAAIFAAAADGN1cnJlbnRQcmljZQUAAAAOdG90YWxBZGRyZXNzZXMFAAAABmFtb3VudAkAAAIAAAABCQABLAAAAAICAAAAIVRoZSBwcmljZSBpcyB3cm9uZywgaXQgc2hvdWxkIGJlIAkAAaQAAAABCQAAaAAAAAIFAAAADGN1cnJlbnRQcmljZQUAAAAOdG90YWxBZGRyZXNzZXMJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIFAAAAD2dsb2JhbERhdGFUaXRsZQkABEwAAAACBQAAAA5nbG9iYWxEYXRhSGFzaAkABEwAAAACBQAAAA5nbG9iYWxEYXRhSnNvbgkABEwAAAACBQAAAA9nbG9iYWxEYXRhT3duZXIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAAAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAQIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAEYmFuawUAAAAGYW1vdW50BQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAAAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAEAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4FAAAAA25pbAMJAAAAAAAAAgUAAAAOdG90YWxBZGRyZXNzZXMAAAAAAAAAAAMDCQAAZgAAAAIFAAAAFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0AAAAAAAAAAAADCQAAZgAAAAIFAAAADnRvdGFsQWRkcmVzc2VzBQAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtCQAAAgAAAAECAAAAKllvdSBkb24ndCBoYXZlIGVub3VnaCBjZXJ0aWZpY2F0aW9uIGNyZWRpdAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgUAAAAPZ2xvYmFsRGF0YVRpdGxlCQAETAAAAAIFAAAADmdsb2JhbERhdGFIYXNoCQAETAAAAAIFAAAADmdsb2JhbERhdGFKc29uCQAETAAAAAIFAAAAD2dsb2JhbERhdGFPd25lcgkABEwAAAACBQAAAA9kYXRhV2hpdGVMaXN0ZWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAAAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAQIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAICAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAAAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAABAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAgAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgUAAAADbmlsBAAAAAdwYXltZW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAZpbnZva2UAAAAHcGF5bWVudAQAAAAGYW1vdW50AwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAABmFtb3VudAkBAAAAB2V4dHJhY3QAAAABCAUAAAAHcGF5bWVudAAAAAZhbW91bnQAAAAAAAAAAAAEAAAADnBheW1lbnRBc3NldElkAwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAQAAAAdleHRyYWN0AAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAUAAAANYWNjZXB0ZWRUb2tlbgQAAAAMY3VycmVudFByaWNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAh2ZXJpZmllcgkAASwAAAACAgAAABJjZXJ0aWZpY2F0aW9uX2ZlZV8JAAJYAAAAAQkBAAAAB2V4dHJhY3QAAAABBQAAAA5wYXltZW50QXNzZXRJZAMJAABmAAAAAgkAAGgAAAACBQAAAAxjdXJyZW50UHJpY2UFAAAADnRvdGFsQWRkcmVzc2VzBQAAAAZhbW91bnQJAAACAAAAAQkAASwAAAACAgAAACFUaGUgcHJpY2UgaXMgd3JvbmcsIGl0IHNob3VsZCBiZSAJAAGkAAAAAQkAAGgAAAACBQAAAAxjdXJyZW50UHJpY2UFAAAADnRvdGFsQWRkcmVzc2VzCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACBQAAAA9nbG9iYWxEYXRhVGl0bGUJAARMAAAAAgUAAAAOZ2xvYmFsRGF0YUhhc2gJAARMAAAAAgUAAAAOZ2xvYmFsRGF0YUpzb24JAARMAAAAAgUAAAAPZ2xvYmFsRGF0YU93bmVyCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAAIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAECAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAACAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAARiYW5rBQAAAAZhbW91bnQFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAAAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAQAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAIAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4FAAAAA25pbAMJAAAAAAAAAgUAAAAOdG90YWxBZGRyZXNzZXMAAAAAAAAAAAQDCQAAZgAAAAIFAAAAFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0AAAAAAAAAAAADCQAAZgAAAAIFAAAADnRvdGFsQWRkcmVzc2VzBQAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtCQAAAgAAAAECAAAAKllvdSBkb24ndCBoYXZlIGVub3VnaCBjZXJ0aWZpY2F0aW9uIGNyZWRpdAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgUAAAAPZ2xvYmFsRGF0YVRpdGxlCQAETAAAAAIFAAAADmdsb2JhbERhdGFIYXNoCQAETAAAAAIFAAAADmdsb2JhbERhdGFKc29uCQAETAAAAAIFAAAAD2dsb2JhbERhdGFPd25lcgkABEwAAAACBQAAAA9kYXRhV2hpdGVMaXN0ZWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAAAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAQIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAICAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAADAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAAAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAQAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAIAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAADAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuBQAAAANuaWwEAAAAB3BheW1lbnQJAQAAAAdleHRyYWN0AAAAAQgFAAAABmludm9rZQAAAAdwYXltZW50BAAAAAZhbW91bnQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAGYW1vdW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAdwYXltZW50AAAABmFtb3VudAAAAAAAAAAAAAQAAAAOcGF5bWVudEFzc2V0SWQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkBAAAAB2V4dHJhY3QAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAA1hY2NlcHRlZFRva2VuBAAAAAxjdXJyZW50UHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAACHZlcmlmaWVyCQABLAAAAAICAAAAEmNlcnRpZmljYXRpb25fZmVlXwkAAlgAAAABCQEAAAAHZXh0cmFjdAAAAAEFAAAADnBheW1lbnRBc3NldElkAwkAAGYAAAACCQAAaAAAAAIFAAAADGN1cnJlbnRQcmljZQUAAAAOdG90YWxBZGRyZXNzZXMFAAAABmFtb3VudAkAAAIAAAABCQABLAAAAAICAAAAIVRoZSBwcmljZSBpcyB3cm9uZywgaXQgc2hvdWxkIGJlIAkAAaQAAAABCQAAaAAAAAIFAAAADGN1cnJlbnRQcmljZQUAAAAOdG90YWxBZGRyZXNzZXMJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIFAAAAD2dsb2JhbERhdGFUaXRsZQkABEwAAAACBQAAAA5nbG9iYWxEYXRhSGFzaAkABEwAAAACBQAAAA5nbG9iYWxEYXRhSnNvbgkABEwAAAACBQAAAA9nbG9iYWxEYXRhT3duZXIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAAAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAQIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAICAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAADAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAARiYW5rBQAAAAZhbW91bnQFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAAAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAQAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAIAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAADAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuBQAAAANuaWwDCQAAAAAAAAIFAAAADnRvdGFsQWRkcmVzc2VzAAAAAAAAAAAFAwkAAGYAAAACBQAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtAAAAAAAAAAAAAwkAAGYAAAACBQAAAA50b3RhbEFkZHJlc3NlcwUAAAAWY2FsbGVySXNXaGl0ZUxpc3RlZE51bQkAAAIAAAABAgAAACpZb3UgZG9uJ3QgaGF2ZSBlbm91Z2ggY2VydGlmaWNhdGlvbiBjcmVkaXQJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIFAAAAD2dsb2JhbERhdGFUaXRsZQkABEwAAAACBQAAAA5nbG9iYWxEYXRhSGFzaAkABEwAAAACBQAAAA5nbG9iYWxEYXRhSnNvbgkABEwAAAACBQAAAA9nbG9iYWxEYXRhT3duZXIJAARMAAAAAgUAAAAPZGF0YVdoaXRlTGlzdGVkCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAAIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAECAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAACAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAwIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAQCAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAAAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAABAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAgAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAMAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAEAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuBQAAAANuaWwEAAAAB3BheW1lbnQJAQAAAAdleHRyYWN0AAAAAQgFAAAABmludm9rZQAAAAdwYXltZW50BAAAAAZhbW91bnQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAGYW1vdW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAdwYXltZW50AAAABmFtb3VudAAAAAAAAAAAAAQAAAAOcGF5bWVudEFzc2V0SWQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkBAAAAB2V4dHJhY3QAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAA1hY2NlcHRlZFRva2VuBAAAAAxjdXJyZW50UHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAACHZlcmlmaWVyCQABLAAAAAICAAAAEmNlcnRpZmljYXRpb25fZmVlXwkAAlgAAAABCQEAAAAHZXh0cmFjdAAAAAEFAAAADnBheW1lbnRBc3NldElkAwkAAGYAAAACCQAAaAAAAAIFAAAADGN1cnJlbnRQcmljZQUAAAAOdG90YWxBZGRyZXNzZXMFAAAABmFtb3VudAkAAAIAAAABCQABLAAAAAICAAAAIVRoZSBwcmljZSBpcyB3cm9uZywgaXQgc2hvdWxkIGJlIAkAAaQAAAABCQAAaAAAAAIFAAAADGN1cnJlbnRQcmljZQUAAAAOdG90YWxBZGRyZXNzZXMJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIFAAAAD2dsb2JhbERhdGFUaXRsZQkABEwAAAACBQAAAA5nbG9iYWxEYXRhSGFzaAkABEwAAAACBQAAAA5nbG9iYWxEYXRhSnNvbgkABEwAAAACBQAAAA9nbG9iYWxEYXRhT3duZXIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAAAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAQIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAICAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAADAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAABAIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAEYmFuawUAAAAGYW1vdW50BQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAAAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAEAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAACAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAwAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAQAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4FAAAAA25pbAMJAAAAAAAAAgUAAAAOdG90YWxBZGRyZXNzZXMAAAAAAAAAAAYDCQAAZgAAAAIFAAAAFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0AAAAAAAAAAAADCQAAZgAAAAIFAAAADnRvdGFsQWRkcmVzc2VzBQAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtCQAAAgAAAAECAAAAKllvdSBkb24ndCBoYXZlIGVub3VnaCBjZXJ0aWZpY2F0aW9uIGNyZWRpdAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgUAAAAPZ2xvYmFsRGF0YVRpdGxlCQAETAAAAAIFAAAADmdsb2JhbERhdGFIYXNoCQAETAAAAAIFAAAADmdsb2JhbERhdGFKc29uCQAETAAAAAIFAAAAD2dsb2JhbERhdGFPd25lcgkABEwAAAACBQAAAA9kYXRhV2hpdGVMaXN0ZWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAAAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAQIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAICAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAADAgAAAARfTUFfCQACWAAAAAEFAAAAAmlkAgAAAAdQRU5ESU5HCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAABAIAAAAEX01BXwkAAlgAAAABBQAAAAJpZAIAAAAHUEVORElORwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAUCAAAABF9NQV8JAAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAAAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAABAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAgAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAMAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAEAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAABQAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgUAAAADbmlsBAAAAAdwYXltZW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAZpbnZva2UAAAAHcGF5bWVudAQAAAAGYW1vdW50AwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAABmFtb3VudAkBAAAAB2V4dHJhY3QAAAABCAUAAAAHcGF5bWVudAAAAAZhbW91bnQAAAAAAAAAAAAEAAAADnBheW1lbnRBc3NldElkAwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAQAAAAdleHRyYWN0AAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAUAAAANYWNjZXB0ZWRUb2tlbgQAAAAMY3VycmVudFByaWNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAh2ZXJpZmllcgkAASwAAAACAgAAABJjZXJ0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", "chainId": 84, "height": 890284, "spentComplexity": 0 } View: original | compacted Prev: 3oV4wXKCwxuW1kR5eYLfbrUv2FDdBkJcYNS3xhEZnSCy Next: 54gQMDtHHunUAg8aS8PxkKXY485jFS7NCSXyGVw64rwd Diff:
OldNewDifferences
7676 }
7777
7878
79-@Callable(x)
80-func fileCertification (y,z,f,v) = {
81- let A = extract(x.transactionId)
82- let B = d(y, f)
83- let C = i(f)
84- let k = toBase58String(x.caller.bytes)
85- let D = j(k)
86- if ((B != "NONE"))
79+func x (s,q) = {
80+ let u = value(indexOf(s, (("\"" + q) + "\":")))
81+ let v = take(s, ((u + size(q)) + 3))
82+ v
83+ }
84+
85+
86+func y (s,q) = {
87+ let u = value(indexOf(s, (("\"" + q) + "\":")))
88+ let v = takeRight(s, (size(s) - ((((u + size(q)) + 3) + 0) + 2)))
89+ v
90+ }
91+
92+
93+@Callable(z)
94+func fileCertification (A,B,f,v) = {
95+ let C = extract(z.transactionId)
96+ let D = d(A, f)
97+ let E = i(f)
98+ let k = toBase58String(z.caller.bytes)
99+ let F = j(k)
100+ if ((D != "NONE"))
87101 then throw("This entry already exist")
88- else if ((C != "NONE"))
102+ else if ((E != "NONE"))
89103 then throw("This uuid already exist")
90104 else if ((size(f) > 36))
91105 then throw("Uuid is too long")
92- else if ((size(y) > 64))
106+ else if ((size(A) > 64))
93107 then throw("Hash is too long")
94- else if ((size(z) > 64))
108+ else if ((size(B) > 64))
95109 then throw("Title is too long")
96- else if ((D > 0))
97- then ScriptResult(WriteSet([DataEntry(f, toBase58String(A)), DataEntry((y + f), toBase58String(A)), DataEntry((z + f), toBase58String(A)), DataEntry(("addr_WHITELISTED_" + k), (D - 1)), DataEntry(((("data_fc_" + toBase58String(A)) + "_") + k), v)]), TransferSet([ScriptTransfer(x.caller, 500000, unit)]))
110+ else if ((F > 0))
111+ then ScriptResult(WriteSet([DataEntry(f, toBase58String(C)), DataEntry((A + f), toBase58String(C)), DataEntry((B + f), toBase58String(C)), DataEntry(("addr_WHITELISTED_" + k), (F - 1)), DataEntry(((("data_fc_" + toBase58String(C)) + "_") + k), v)]), TransferSet([ScriptTransfer(z.caller, 500000, unit)]))
98112 else {
99- let E = extract(x.payment)
100- let F = extract(E.amount)
101- let G = if (isDefined(E.assetId))
102- then extract(E.assetId)
113+ let G = extract(z.payment)
114+ let H = extract(G.amount)
115+ let I = if (isDefined(G.assetId))
116+ then extract(G.assetId)
103117 else throw("Waves is not accepted as payment")
104- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(G))))
105- if ((c != G))
118+ let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
119+ if ((c != I))
106120 then throw("This token is not accepted at the moment")
107- else if (if ((F != H))
108- then (0 >= D)
121+ else if (if ((H != J))
122+ then (0 >= F)
109123 else false)
110124 then throw("The price is wrong")
111- else ScriptResult(WriteSet([DataEntry(f, toBase58String(A)), DataEntry((y + f), toBase58String(A)), DataEntry((z + f), toBase58String(A)), DataEntry(((("data_fc_" + toBase58String(A)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(b), F, E.assetId)]))
125+ else ScriptResult(WriteSet([DataEntry(f, toBase58String(C)), DataEntry((A + f), toBase58String(C)), DataEntry((B + f), toBase58String(C)), DataEntry(((("data_fc_" + toBase58String(C)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, G.assetId)]))
112126 }
113127 }
114128
115129
116130
117-@Callable(x)
118-func emailCertification (I,f,v) = {
119- let A = extract(x.transactionId)
120- let B = d(I, f)
121- let C = i(f)
122- let k = toBase58String(x.caller.bytes)
123- let D = j(k)
124- if ((B != "NONE"))
131+@Callable(z)
132+func emailCertification (K,f,v) = {
133+ let C = extract(z.transactionId)
134+ let D = d(K, f)
135+ let E = i(f)
136+ let k = toBase58String(z.caller.bytes)
137+ let F = j(k)
138+ if ((D != "NONE"))
125139 then throw("This entry already exist")
126- else if ((C != "NONE"))
140+ else if ((E != "NONE"))
127141 then throw("This uuid already exist")
128142 else if ((size(f) > 36))
129143 then throw("Uuid is too long")
130- else if ((D > 0))
131- then ScriptResult(WriteSet([DataEntry(f, toBase58String(A)), DataEntry((I + f), toBase58String(A)), DataEntry(("addr_WHITELISTED_" + k), (D - 1)), DataEntry(((("data_ec_" + toBase58String(A)) + "_") + k), v)]), TransferSet([ScriptTransfer(x.caller, 500000, unit)]))
144+ else if ((F > 0))
145+ then ScriptResult(WriteSet([DataEntry(f, toBase58String(C)), DataEntry((K + f), toBase58String(C)), DataEntry(("addr_WHITELISTED_" + k), (F - 1)), DataEntry(((("data_ec_" + toBase58String(C)) + "_") + k), v)]), TransferSet([ScriptTransfer(z.caller, 500000, unit)]))
132146 else {
133- let E = extract(x.payment)
134- let F = extract(E.amount)
135- let G = if (isDefined(E.assetId))
136- then extract(E.assetId)
147+ let G = extract(z.payment)
148+ let H = extract(G.amount)
149+ let I = if (isDefined(G.assetId))
150+ then extract(G.assetId)
137151 else throw("Waves is not accepted as payment")
138- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(G))))
139- if ((c != G))
152+ let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
153+ if ((c != I))
140154 then throw("This token is not accepted at the moment")
141- else if (if ((F != H))
142- then (0 >= D)
155+ else if (if ((H != J))
156+ then (0 >= F)
143157 else false)
144158 then throw("The price is wrong")
145- else ScriptResult(WriteSet([DataEntry(f, toBase58String(A)), DataEntry((I + f), toBase58String(A)), DataEntry(((("data_ec_" + toBase58String(A)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(b), F, E.assetId)]))
159+ else ScriptResult(WriteSet([DataEntry(f, toBase58String(C)), DataEntry((K + f), toBase58String(C)), DataEntry(((("data_ec_" + toBase58String(C)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, G.assetId)]))
146160 }
147161 }
148162
149163
150164
151-@Callable(x)
152-func createAgreement (y,z,J) = {
153- let A = extract(x.transactionId)
154- let k = toBase58String(x.caller.bytes)
155- let D = j(k)
156- let K = [t(J, "address1"), t(J, "address2"), t(J, "address3"), t(J, "address4"), t(J, "address5"), t(J, "address6")]
157- let L = {
158- let M = K
159- let N = size(M)
160- let O = 0
161- if ((N == 0))
162- then O
163- else {
164- let P = n(O, M[0])
165- if ((N == 1))
166- then P
165+@Callable(z)
166+func createAgreement (A,B,L) = {
167+ let C = extract(z.transactionId)
168+ let k = toBase58String(z.caller.bytes)
169+ let F = j(k)
170+ let M = ((x(L, "owner") + toBase58String(z.caller.bytes)) + y(L, "owner"))
171+ if (true)
172+ then throw(M)
173+ else {
174+ let N = [t(L, "address1"), t(L, "address2"), t(L, "address3"), t(L, "address4"), t(L, "address5"), t(L, "address6")]
175+ let O = {
176+ let P = N
177+ let Q = size(P)
178+ let R = 0
179+ if ((Q == 0))
180+ then R
167181 else {
168- let Q = n(P, M[1])
169- if ((N == 2))
170- then Q
182+ let S = n(R, P[0])
183+ if ((Q == 1))
184+ then S
171185 else {
172- let R = n(Q, M[2])
173- if ((N == 3))
174- then R
186+ let T = n(S, P[1])
187+ if ((Q == 2))
188+ then T
175189 else {
176- let S = n(R, M[3])
177- if ((N == 4))
178- then S
190+ let U = n(T, P[2])
191+ if ((Q == 3))
192+ then U
179193 else {
180- let T = n(S, M[4])
181- if ((N == 5))
182- then T
194+ let V = n(U, P[3])
195+ if ((Q == 4))
196+ then V
183197 else {
184- let U = n(T, M[5])
185- if ((N == 6))
186- then U
198+ let W = n(V, P[4])
199+ if ((Q == 5))
200+ then W
187201 else {
188- let V = n(U, M[6])
189- throw("List size exceed 6")
202+ let X = n(W, P[5])
203+ if ((Q == 6))
204+ then X
205+ else {
206+ let Y = n(X, P[6])
207+ throw("List size exceed 6")
208+ }
190209 }
191210 }
192211 }
194213 }
195214 }
196215 }
197- }
198- let W = DataEntry(("title_MA_" + toBase58String(A)), z)
199- let X = DataEntry(("hash_MA_" + toBase58String(A)), y)
200- let Y = DataEntry(((("data_MA_" + toBase58String(A)) + "_") + k), J)
201- let Z = DataEntry(((k + "_MA_") + toBase58String(A)), ("SIGNED_" + toBase58String(A)))
202- let aa = DataEntry(("addr_WHITELISTED_" + k), (D - L))
203- if ((L == 1))
204- then if ((D > 0))
205- then if ((L > D))
206- then throw("You don't have enough certification credit")
207- else ScriptResult(WriteSet([W, X, Y, Z, aa, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(K[0]), 0, c)]))
208- else {
209- let E = extract(x.payment)
210- let F = if (isDefined(E.amount))
211- then extract(E.amount)
212- else 0
213- let G = if (isDefined(E.assetId))
214- then extract(E.assetId)
215- else c
216- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(G))))
217- if (((H * L) > F))
218- then throw(("The price is wrong, it should be " + toString((H * L))))
219- else ScriptResult(WriteSet([W, X, Y, Z, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), F, c), ScriptTransfer(addressFromStringValue(K[0]), 0, c)]))
220- }
221- else if ((L == 2))
222- then if ((D > 0))
223- then if ((L > D))
224- then throw("You don't have enough certification credit")
225- else ScriptResult(WriteSet([W, X, Y, Z, aa, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(K[0]), 0, c), ScriptTransfer(addressFromStringValue(K[1]), 0, c)]))
226- else {
227- let E = extract(x.payment)
228- let F = if (isDefined(E.amount))
229- then extract(E.amount)
230- else 0
231- let G = if (isDefined(E.assetId))
232- then extract(E.assetId)
233- else c
234- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(G))))
235- if (((H * L) > F))
236- then throw(("The price is wrong, it should be " + toString((H * L))))
237- else ScriptResult(WriteSet([W, X, Y, Z, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), F, c), ScriptTransfer(addressFromStringValue(K[0]), 0, c), ScriptTransfer(addressFromStringValue(K[1]), 0, c)]))
238- }
239- else if ((L == 3))
240- then if ((D > 0))
241- then if ((L > D))
216+ let Z = DataEntry(("title_MA_" + toBase58String(C)), B)
217+ let aa = DataEntry(("hash_MA_" + toBase58String(C)), A)
218+ let ab = DataEntry(((("data_MA_" + toBase58String(C)) + "_") + k), L)
219+ let ac = DataEntry(((k + "_MA_") + toBase58String(C)), ("SIGNED_" + toBase58String(C)))
220+ let ad = DataEntry(("addr_WHITELISTED_" + k), (F - O))
221+ if ((O == 1))
222+ then if ((F > 0))
223+ then if ((O > F))
242224 then throw("You don't have enough certification credit")
243- else ScriptResult(WriteSet([W, X, Y, Z, aa, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(K[0]), 0, c), ScriptTransfer(addressFromStringValue(K[1]), 0, c), ScriptTransfer(addressFromStringValue(K[2]), 0, c)]))
225+ else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c)]))
244226 else {
245- let E = extract(x.payment)
246- let F = if (isDefined(E.amount))
247- then extract(E.amount)
227+ let G = extract(z.payment)
228+ let H = if (isDefined(G.amount))
229+ then extract(G.amount)
248230 else 0
249- let G = if (isDefined(E.assetId))
250- then extract(E.assetId)
231+ let I = if (isDefined(G.assetId))
232+ then extract(G.assetId)
251233 else c
252- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(G))))
253- if (((H * L) > F))
254- then throw(("The price is wrong, it should be " + toString((H * L))))
255- else ScriptResult(WriteSet([W, X, Y, Z, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), F, c), ScriptTransfer(addressFromStringValue(K[0]), 0, c), ScriptTransfer(addressFromStringValue(K[1]), 0, c), ScriptTransfer(addressFromStringValue(K[2]), 0, c)]))
234+ let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
235+ if (((J * O) > H))
236+ then throw(("The price is wrong, it should be " + toString((J * O))))
237+ else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c)]))
256238 }
257- else if ((L == 4))
258- then if ((D > 0))
259- then if ((L > D))
239+ else if ((O == 2))
240+ then if ((F > 0))
241+ then if ((O > F))
260242 then throw("You don't have enough certification credit")
261- else ScriptResult(WriteSet([W, X, Y, Z, aa, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[3] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(K[0]), 0, c), ScriptTransfer(addressFromStringValue(K[1]), 0, c), ScriptTransfer(addressFromStringValue(K[2]), 0, c), ScriptTransfer(addressFromStringValue(K[3]), 0, c)]))
243+ else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c)]))
262244 else {
263- let E = extract(x.payment)
264- let F = if (isDefined(E.amount))
265- then extract(E.amount)
245+ let G = extract(z.payment)
246+ let H = if (isDefined(G.amount))
247+ then extract(G.amount)
266248 else 0
267- let G = if (isDefined(E.assetId))
268- then extract(E.assetId)
249+ let I = if (isDefined(G.assetId))
250+ then extract(G.assetId)
269251 else c
270- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(G))))
271- if (((H * L) > F))
272- then throw(("The price is wrong, it should be " + toString((H * L))))
273- else ScriptResult(WriteSet([W, X, Y, Z, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[3] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), F, c), ScriptTransfer(addressFromStringValue(K[0]), 0, c), ScriptTransfer(addressFromStringValue(K[1]), 0, c), ScriptTransfer(addressFromStringValue(K[2]), 0, c), ScriptTransfer(addressFromStringValue(K[3]), 0, c)]))
252+ let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
253+ if (((J * O) > H))
254+ then throw(("The price is wrong, it should be " + toString((J * O))))
255+ else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c)]))
274256 }
275- else if ((L == 5))
276- then if ((D > 0))
277- then if ((L > D))
257+ else if ((O == 3))
258+ then if ((F > 0))
259+ then if ((O > F))
278260 then throw("You don't have enough certification credit")
279- else ScriptResult(WriteSet([W, X, Y, Z, aa, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[3] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[4] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(K[0]), 0, c), ScriptTransfer(addressFromStringValue(K[1]), 0, c), ScriptTransfer(addressFromStringValue(K[2]), 0, c), ScriptTransfer(addressFromStringValue(K[3]), 0, c), ScriptTransfer(addressFromStringValue(K[4]), 0, c)]))
261+ else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c)]))
280262 else {
281- let E = extract(x.payment)
282- let F = if (isDefined(E.amount))
283- then extract(E.amount)
263+ let G = extract(z.payment)
264+ let H = if (isDefined(G.amount))
265+ then extract(G.amount)
284266 else 0
285- let G = if (isDefined(E.assetId))
286- then extract(E.assetId)
267+ let I = if (isDefined(G.assetId))
268+ then extract(G.assetId)
287269 else c
288- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(G))))
289- if (((H * L) > F))
290- then throw(("The price is wrong, it should be " + toString((H * L))))
291- else ScriptResult(WriteSet([W, X, Y, Z, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[3] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[4] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), F, c), ScriptTransfer(addressFromStringValue(K[0]), 0, c), ScriptTransfer(addressFromStringValue(K[1]), 0, c), ScriptTransfer(addressFromStringValue(K[2]), 0, c), ScriptTransfer(addressFromStringValue(K[3]), 0, c), ScriptTransfer(addressFromStringValue(K[4]), 0, c)]))
270+ let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
271+ if (((J * O) > H))
272+ then throw(("The price is wrong, it should be " + toString((J * O))))
273+ else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c)]))
292274 }
293- else if ((L == 6))
294- then if ((D > 0))
295- then if ((L > D))
275+ else if ((O == 4))
276+ then if ((F > 0))
277+ then if ((O > F))
296278 then throw("You don't have enough certification credit")
297- else ScriptResult(WriteSet([W, X, Y, Z, aa, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[3] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[4] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[5] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(K[0]), 0, c), ScriptTransfer(addressFromStringValue(K[1]), 0, c), ScriptTransfer(addressFromStringValue(K[2]), 0, c), ScriptTransfer(addressFromStringValue(K[3]), 0, c), ScriptTransfer(addressFromStringValue(K[4]), 0, c), ScriptTransfer(addressFromStringValue(K[5]), 0, c)]))
279+ else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c)]))
298280 else {
299- let E = extract(x.payment)
300- let F = if (isDefined(E.amount))
301- then extract(E.amount)
281+ let G = extract(z.payment)
282+ let H = if (isDefined(G.amount))
283+ then extract(G.amount)
302284 else 0
303- let G = if (isDefined(E.assetId))
304- then extract(E.assetId)
285+ let I = if (isDefined(G.assetId))
286+ then extract(G.assetId)
305287 else c
306- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(G))))
307- if (((H * L) > F))
308- then throw(("The price is wrong, it should be " + toString((H * L))))
309- else ScriptResult(WriteSet([W, X, Y, Z, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[3] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[4] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[5] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), F, c), ScriptTransfer(addressFromStringValue(K[0]), 0, c), ScriptTransfer(addressFromStringValue(K[1]), 0, c), ScriptTransfer(addressFromStringValue(K[2]), 0, c), ScriptTransfer(addressFromStringValue(K[3]), 0, c), ScriptTransfer(addressFromStringValue(K[4]), 0, c), ScriptTransfer(addressFromStringValue(K[5]), 0, c)]))
288+ let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
289+ if (((J * O) > H))
290+ then throw(("The price is wrong, it should be " + toString((J * O))))
291+ else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c)]))
310292 }
311- else throw(("Needs 2 to 6 parties addresses" + toString(L)))
293+ else if ((O == 5))
294+ then if ((F > 0))
295+ then if ((O > F))
296+ then throw("You don't have enough certification credit")
297+ else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[4] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c), ScriptTransfer(addressFromStringValue(N[4]), 0, c)]))
298+ else {
299+ let G = extract(z.payment)
300+ let H = if (isDefined(G.amount))
301+ then extract(G.amount)
302+ else 0
303+ let I = if (isDefined(G.assetId))
304+ then extract(G.assetId)
305+ else c
306+ let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
307+ if (((J * O) > H))
308+ then throw(("The price is wrong, it should be " + toString((J * O))))
309+ else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[4] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c), ScriptTransfer(addressFromStringValue(N[4]), 0, c)]))
310+ }
311+ else if ((O == 6))
312+ then if ((F > 0))
313+ then if ((O > F))
314+ then throw("You don't have enough certification credit")
315+ else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[4] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[5] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c), ScriptTransfer(addressFromStringValue(N[4]), 0, c), ScriptTransfer(addressFromStringValue(N[5]), 0, c)]))
316+ else {
317+ let G = extract(z.payment)
318+ let H = if (isDefined(G.amount))
319+ then extract(G.amount)
320+ else 0
321+ let I = if (isDefined(G.assetId))
322+ then extract(G.assetId)
323+ else c
324+ let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
325+ if (((J * O) > H))
326+ then throw(("The price is wrong, it should be " + toString((J * O))))
327+ else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[4] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[5] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c), ScriptTransfer(addressFromStringValue(N[4]), 0, c), ScriptTransfer(addressFromStringValue(N[5]), 0, c)]))
328+ }
329+ else throw(("Needs 2 to 6 parties addresses" + toString(O)))
330+ }
312331 }
313332
314333
315334
316-@Callable(x)
317-func signAgreement (y,ab) = {
318- let E = extract(x.payment)
319- let F = extract(E.amount)
320- let A = extract(x.transactionId)
321- let ac = toBase58String(x.caller.bytes)
322- let ad = p(((ac + "_MA_") + ab))
323- if (!(ad))
335+@Callable(z)
336+func signAgreement (A,ae) = {
337+ let G = extract(z.payment)
338+ let H = extract(G.amount)
339+ let C = extract(z.transactionId)
340+ let af = toBase58String(z.caller.bytes)
341+ let ag = p(((af + "_MA_") + ae))
342+ if (!(ag))
324343 then throw("Sorry there is no pending signature")
325- else ScriptResult(WriteSet([DataEntry(((ac + "_MA_") + ab), ("SIGNED_" + toBase58String(A)))]), TransferSet([ScriptTransfer(addressFromStringValue(ac), 500000, unit)]))
344+ else ScriptResult(WriteSet([DataEntry(((af + "_MA_") + ae), ("SIGNED_" + toBase58String(C)))]), TransferSet([ScriptTransfer(addressFromStringValue(af), 500000, unit)]))
326345 }
327346
328347
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = extract(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
55
66 let b = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
77
88 let c = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
99
1010 func d (e,f) = {
1111 let g = getString(this, (e + f))
1212 if ($isInstanceOf(g, "String"))
1313 then {
1414 let h = g
1515 h
1616 }
1717 else "NONE"
1818 }
1919
2020
2121 func i (f) = {
2222 let g = getString(this, f)
2323 if ($isInstanceOf(g, "String"))
2424 then {
2525 let h = g
2626 h
2727 }
2828 else "NONE"
2929 }
3030
3131
3232 func j (k) = {
3333 let g = getInteger(this, ("addr_WHITELISTED_" + k))
3434 if ($isInstanceOf(g, "Int"))
3535 then {
3636 let h = g
3737 h
3838 }
3939 else 0
4040 }
4141
4242
4343 func l (m) = if (if ((size(m) == 35))
4444 then (take(m, 2) == "3N")
4545 else false)
4646 then true
4747 else (take(m, 2) == "3M")
4848
4949
5050 func n (o,m) = if ((size(m) > 0))
5151 then (o + 1)
5252 else (o + 0)
5353
5454
5555 func p (q) = {
5656 let g = getString(this, q)
5757 if ($isInstanceOf(g, "String"))
5858 then {
5959 let h = g
6060 if ((h == "PENDING"))
6161 then true
6262 else false
6363 }
6464 else false
6565 }
6666
6767
6868 func r (s) = take(drop(s, 1), value(indexOf(drop(s, 1), "\"")))
6969
7070
7171 func t (s,q) = {
7272 let u = value(indexOf(s, (("\"" + q) + "\":")))
7373 let v = drop(s, ((u + size(q)) + 3))
7474 let w = r(v)
7575 w
7676 }
7777
7878
79-@Callable(x)
80-func fileCertification (y,z,f,v) = {
81- let A = extract(x.transactionId)
82- let B = d(y, f)
83- let C = i(f)
84- let k = toBase58String(x.caller.bytes)
85- let D = j(k)
86- if ((B != "NONE"))
79+func x (s,q) = {
80+ let u = value(indexOf(s, (("\"" + q) + "\":")))
81+ let v = take(s, ((u + size(q)) + 3))
82+ v
83+ }
84+
85+
86+func y (s,q) = {
87+ let u = value(indexOf(s, (("\"" + q) + "\":")))
88+ let v = takeRight(s, (size(s) - ((((u + size(q)) + 3) + 0) + 2)))
89+ v
90+ }
91+
92+
93+@Callable(z)
94+func fileCertification (A,B,f,v) = {
95+ let C = extract(z.transactionId)
96+ let D = d(A, f)
97+ let E = i(f)
98+ let k = toBase58String(z.caller.bytes)
99+ let F = j(k)
100+ if ((D != "NONE"))
87101 then throw("This entry already exist")
88- else if ((C != "NONE"))
102+ else if ((E != "NONE"))
89103 then throw("This uuid already exist")
90104 else if ((size(f) > 36))
91105 then throw("Uuid is too long")
92- else if ((size(y) > 64))
106+ else if ((size(A) > 64))
93107 then throw("Hash is too long")
94- else if ((size(z) > 64))
108+ else if ((size(B) > 64))
95109 then throw("Title is too long")
96- else if ((D > 0))
97- then ScriptResult(WriteSet([DataEntry(f, toBase58String(A)), DataEntry((y + f), toBase58String(A)), DataEntry((z + f), toBase58String(A)), DataEntry(("addr_WHITELISTED_" + k), (D - 1)), DataEntry(((("data_fc_" + toBase58String(A)) + "_") + k), v)]), TransferSet([ScriptTransfer(x.caller, 500000, unit)]))
110+ else if ((F > 0))
111+ then ScriptResult(WriteSet([DataEntry(f, toBase58String(C)), DataEntry((A + f), toBase58String(C)), DataEntry((B + f), toBase58String(C)), DataEntry(("addr_WHITELISTED_" + k), (F - 1)), DataEntry(((("data_fc_" + toBase58String(C)) + "_") + k), v)]), TransferSet([ScriptTransfer(z.caller, 500000, unit)]))
98112 else {
99- let E = extract(x.payment)
100- let F = extract(E.amount)
101- let G = if (isDefined(E.assetId))
102- then extract(E.assetId)
113+ let G = extract(z.payment)
114+ let H = extract(G.amount)
115+ let I = if (isDefined(G.assetId))
116+ then extract(G.assetId)
103117 else throw("Waves is not accepted as payment")
104- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(G))))
105- if ((c != G))
118+ let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
119+ if ((c != I))
106120 then throw("This token is not accepted at the moment")
107- else if (if ((F != H))
108- then (0 >= D)
121+ else if (if ((H != J))
122+ then (0 >= F)
109123 else false)
110124 then throw("The price is wrong")
111- else ScriptResult(WriteSet([DataEntry(f, toBase58String(A)), DataEntry((y + f), toBase58String(A)), DataEntry((z + f), toBase58String(A)), DataEntry(((("data_fc_" + toBase58String(A)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(b), F, E.assetId)]))
125+ else ScriptResult(WriteSet([DataEntry(f, toBase58String(C)), DataEntry((A + f), toBase58String(C)), DataEntry((B + f), toBase58String(C)), DataEntry(((("data_fc_" + toBase58String(C)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, G.assetId)]))
112126 }
113127 }
114128
115129
116130
117-@Callable(x)
118-func emailCertification (I,f,v) = {
119- let A = extract(x.transactionId)
120- let B = d(I, f)
121- let C = i(f)
122- let k = toBase58String(x.caller.bytes)
123- let D = j(k)
124- if ((B != "NONE"))
131+@Callable(z)
132+func emailCertification (K,f,v) = {
133+ let C = extract(z.transactionId)
134+ let D = d(K, f)
135+ let E = i(f)
136+ let k = toBase58String(z.caller.bytes)
137+ let F = j(k)
138+ if ((D != "NONE"))
125139 then throw("This entry already exist")
126- else if ((C != "NONE"))
140+ else if ((E != "NONE"))
127141 then throw("This uuid already exist")
128142 else if ((size(f) > 36))
129143 then throw("Uuid is too long")
130- else if ((D > 0))
131- then ScriptResult(WriteSet([DataEntry(f, toBase58String(A)), DataEntry((I + f), toBase58String(A)), DataEntry(("addr_WHITELISTED_" + k), (D - 1)), DataEntry(((("data_ec_" + toBase58String(A)) + "_") + k), v)]), TransferSet([ScriptTransfer(x.caller, 500000, unit)]))
144+ else if ((F > 0))
145+ then ScriptResult(WriteSet([DataEntry(f, toBase58String(C)), DataEntry((K + f), toBase58String(C)), DataEntry(("addr_WHITELISTED_" + k), (F - 1)), DataEntry(((("data_ec_" + toBase58String(C)) + "_") + k), v)]), TransferSet([ScriptTransfer(z.caller, 500000, unit)]))
132146 else {
133- let E = extract(x.payment)
134- let F = extract(E.amount)
135- let G = if (isDefined(E.assetId))
136- then extract(E.assetId)
147+ let G = extract(z.payment)
148+ let H = extract(G.amount)
149+ let I = if (isDefined(G.assetId))
150+ then extract(G.assetId)
137151 else throw("Waves is not accepted as payment")
138- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(G))))
139- if ((c != G))
152+ let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
153+ if ((c != I))
140154 then throw("This token is not accepted at the moment")
141- else if (if ((F != H))
142- then (0 >= D)
155+ else if (if ((H != J))
156+ then (0 >= F)
143157 else false)
144158 then throw("The price is wrong")
145- else ScriptResult(WriteSet([DataEntry(f, toBase58String(A)), DataEntry((I + f), toBase58String(A)), DataEntry(((("data_ec_" + toBase58String(A)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(b), F, E.assetId)]))
159+ else ScriptResult(WriteSet([DataEntry(f, toBase58String(C)), DataEntry((K + f), toBase58String(C)), DataEntry(((("data_ec_" + toBase58String(C)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, G.assetId)]))
146160 }
147161 }
148162
149163
150164
151-@Callable(x)
152-func createAgreement (y,z,J) = {
153- let A = extract(x.transactionId)
154- let k = toBase58String(x.caller.bytes)
155- let D = j(k)
156- let K = [t(J, "address1"), t(J, "address2"), t(J, "address3"), t(J, "address4"), t(J, "address5"), t(J, "address6")]
157- let L = {
158- let M = K
159- let N = size(M)
160- let O = 0
161- if ((N == 0))
162- then O
163- else {
164- let P = n(O, M[0])
165- if ((N == 1))
166- then P
165+@Callable(z)
166+func createAgreement (A,B,L) = {
167+ let C = extract(z.transactionId)
168+ let k = toBase58String(z.caller.bytes)
169+ let F = j(k)
170+ let M = ((x(L, "owner") + toBase58String(z.caller.bytes)) + y(L, "owner"))
171+ if (true)
172+ then throw(M)
173+ else {
174+ let N = [t(L, "address1"), t(L, "address2"), t(L, "address3"), t(L, "address4"), t(L, "address5"), t(L, "address6")]
175+ let O = {
176+ let P = N
177+ let Q = size(P)
178+ let R = 0
179+ if ((Q == 0))
180+ then R
167181 else {
168- let Q = n(P, M[1])
169- if ((N == 2))
170- then Q
182+ let S = n(R, P[0])
183+ if ((Q == 1))
184+ then S
171185 else {
172- let R = n(Q, M[2])
173- if ((N == 3))
174- then R
186+ let T = n(S, P[1])
187+ if ((Q == 2))
188+ then T
175189 else {
176- let S = n(R, M[3])
177- if ((N == 4))
178- then S
190+ let U = n(T, P[2])
191+ if ((Q == 3))
192+ then U
179193 else {
180- let T = n(S, M[4])
181- if ((N == 5))
182- then T
194+ let V = n(U, P[3])
195+ if ((Q == 4))
196+ then V
183197 else {
184- let U = n(T, M[5])
185- if ((N == 6))
186- then U
198+ let W = n(V, P[4])
199+ if ((Q == 5))
200+ then W
187201 else {
188- let V = n(U, M[6])
189- throw("List size exceed 6")
202+ let X = n(W, P[5])
203+ if ((Q == 6))
204+ then X
205+ else {
206+ let Y = n(X, P[6])
207+ throw("List size exceed 6")
208+ }
190209 }
191210 }
192211 }
193212 }
194213 }
195214 }
196215 }
197- }
198- let W = DataEntry(("title_MA_" + toBase58String(A)), z)
199- let X = DataEntry(("hash_MA_" + toBase58String(A)), y)
200- let Y = DataEntry(((("data_MA_" + toBase58String(A)) + "_") + k), J)
201- let Z = DataEntry(((k + "_MA_") + toBase58String(A)), ("SIGNED_" + toBase58String(A)))
202- let aa = DataEntry(("addr_WHITELISTED_" + k), (D - L))
203- if ((L == 1))
204- then if ((D > 0))
205- then if ((L > D))
206- then throw("You don't have enough certification credit")
207- else ScriptResult(WriteSet([W, X, Y, Z, aa, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(K[0]), 0, c)]))
208- else {
209- let E = extract(x.payment)
210- let F = if (isDefined(E.amount))
211- then extract(E.amount)
212- else 0
213- let G = if (isDefined(E.assetId))
214- then extract(E.assetId)
215- else c
216- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(G))))
217- if (((H * L) > F))
218- then throw(("The price is wrong, it should be " + toString((H * L))))
219- else ScriptResult(WriteSet([W, X, Y, Z, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), F, c), ScriptTransfer(addressFromStringValue(K[0]), 0, c)]))
220- }
221- else if ((L == 2))
222- then if ((D > 0))
223- then if ((L > D))
224- then throw("You don't have enough certification credit")
225- else ScriptResult(WriteSet([W, X, Y, Z, aa, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(K[0]), 0, c), ScriptTransfer(addressFromStringValue(K[1]), 0, c)]))
226- else {
227- let E = extract(x.payment)
228- let F = if (isDefined(E.amount))
229- then extract(E.amount)
230- else 0
231- let G = if (isDefined(E.assetId))
232- then extract(E.assetId)
233- else c
234- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(G))))
235- if (((H * L) > F))
236- then throw(("The price is wrong, it should be " + toString((H * L))))
237- else ScriptResult(WriteSet([W, X, Y, Z, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), F, c), ScriptTransfer(addressFromStringValue(K[0]), 0, c), ScriptTransfer(addressFromStringValue(K[1]), 0, c)]))
238- }
239- else if ((L == 3))
240- then if ((D > 0))
241- then if ((L > D))
216+ let Z = DataEntry(("title_MA_" + toBase58String(C)), B)
217+ let aa = DataEntry(("hash_MA_" + toBase58String(C)), A)
218+ let ab = DataEntry(((("data_MA_" + toBase58String(C)) + "_") + k), L)
219+ let ac = DataEntry(((k + "_MA_") + toBase58String(C)), ("SIGNED_" + toBase58String(C)))
220+ let ad = DataEntry(("addr_WHITELISTED_" + k), (F - O))
221+ if ((O == 1))
222+ then if ((F > 0))
223+ then if ((O > F))
242224 then throw("You don't have enough certification credit")
243- else ScriptResult(WriteSet([W, X, Y, Z, aa, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(K[0]), 0, c), ScriptTransfer(addressFromStringValue(K[1]), 0, c), ScriptTransfer(addressFromStringValue(K[2]), 0, c)]))
225+ else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c)]))
244226 else {
245- let E = extract(x.payment)
246- let F = if (isDefined(E.amount))
247- then extract(E.amount)
227+ let G = extract(z.payment)
228+ let H = if (isDefined(G.amount))
229+ then extract(G.amount)
248230 else 0
249- let G = if (isDefined(E.assetId))
250- then extract(E.assetId)
231+ let I = if (isDefined(G.assetId))
232+ then extract(G.assetId)
251233 else c
252- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(G))))
253- if (((H * L) > F))
254- then throw(("The price is wrong, it should be " + toString((H * L))))
255- else ScriptResult(WriteSet([W, X, Y, Z, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), F, c), ScriptTransfer(addressFromStringValue(K[0]), 0, c), ScriptTransfer(addressFromStringValue(K[1]), 0, c), ScriptTransfer(addressFromStringValue(K[2]), 0, c)]))
234+ let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
235+ if (((J * O) > H))
236+ then throw(("The price is wrong, it should be " + toString((J * O))))
237+ else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c)]))
256238 }
257- else if ((L == 4))
258- then if ((D > 0))
259- then if ((L > D))
239+ else if ((O == 2))
240+ then if ((F > 0))
241+ then if ((O > F))
260242 then throw("You don't have enough certification credit")
261- else ScriptResult(WriteSet([W, X, Y, Z, aa, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[3] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(K[0]), 0, c), ScriptTransfer(addressFromStringValue(K[1]), 0, c), ScriptTransfer(addressFromStringValue(K[2]), 0, c), ScriptTransfer(addressFromStringValue(K[3]), 0, c)]))
243+ else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c)]))
262244 else {
263- let E = extract(x.payment)
264- let F = if (isDefined(E.amount))
265- then extract(E.amount)
245+ let G = extract(z.payment)
246+ let H = if (isDefined(G.amount))
247+ then extract(G.amount)
266248 else 0
267- let G = if (isDefined(E.assetId))
268- then extract(E.assetId)
249+ let I = if (isDefined(G.assetId))
250+ then extract(G.assetId)
269251 else c
270- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(G))))
271- if (((H * L) > F))
272- then throw(("The price is wrong, it should be " + toString((H * L))))
273- else ScriptResult(WriteSet([W, X, Y, Z, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[3] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), F, c), ScriptTransfer(addressFromStringValue(K[0]), 0, c), ScriptTransfer(addressFromStringValue(K[1]), 0, c), ScriptTransfer(addressFromStringValue(K[2]), 0, c), ScriptTransfer(addressFromStringValue(K[3]), 0, c)]))
252+ let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
253+ if (((J * O) > H))
254+ then throw(("The price is wrong, it should be " + toString((J * O))))
255+ else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c)]))
274256 }
275- else if ((L == 5))
276- then if ((D > 0))
277- then if ((L > D))
257+ else if ((O == 3))
258+ then if ((F > 0))
259+ then if ((O > F))
278260 then throw("You don't have enough certification credit")
279- else ScriptResult(WriteSet([W, X, Y, Z, aa, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[3] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[4] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(K[0]), 0, c), ScriptTransfer(addressFromStringValue(K[1]), 0, c), ScriptTransfer(addressFromStringValue(K[2]), 0, c), ScriptTransfer(addressFromStringValue(K[3]), 0, c), ScriptTransfer(addressFromStringValue(K[4]), 0, c)]))
261+ else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c)]))
280262 else {
281- let E = extract(x.payment)
282- let F = if (isDefined(E.amount))
283- then extract(E.amount)
263+ let G = extract(z.payment)
264+ let H = if (isDefined(G.amount))
265+ then extract(G.amount)
284266 else 0
285- let G = if (isDefined(E.assetId))
286- then extract(E.assetId)
267+ let I = if (isDefined(G.assetId))
268+ then extract(G.assetId)
287269 else c
288- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(G))))
289- if (((H * L) > F))
290- then throw(("The price is wrong, it should be " + toString((H * L))))
291- else ScriptResult(WriteSet([W, X, Y, Z, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[3] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[4] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), F, c), ScriptTransfer(addressFromStringValue(K[0]), 0, c), ScriptTransfer(addressFromStringValue(K[1]), 0, c), ScriptTransfer(addressFromStringValue(K[2]), 0, c), ScriptTransfer(addressFromStringValue(K[3]), 0, c), ScriptTransfer(addressFromStringValue(K[4]), 0, c)]))
270+ let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
271+ if (((J * O) > H))
272+ then throw(("The price is wrong, it should be " + toString((J * O))))
273+ else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c)]))
292274 }
293- else if ((L == 6))
294- then if ((D > 0))
295- then if ((L > D))
275+ else if ((O == 4))
276+ then if ((F > 0))
277+ then if ((O > F))
296278 then throw("You don't have enough certification credit")
297- else ScriptResult(WriteSet([W, X, Y, Z, aa, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[3] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[4] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[5] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(K[0]), 0, c), ScriptTransfer(addressFromStringValue(K[1]), 0, c), ScriptTransfer(addressFromStringValue(K[2]), 0, c), ScriptTransfer(addressFromStringValue(K[3]), 0, c), ScriptTransfer(addressFromStringValue(K[4]), 0, c), ScriptTransfer(addressFromStringValue(K[5]), 0, c)]))
279+ else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c)]))
298280 else {
299- let E = extract(x.payment)
300- let F = if (isDefined(E.amount))
301- then extract(E.amount)
281+ let G = extract(z.payment)
282+ let H = if (isDefined(G.amount))
283+ then extract(G.amount)
302284 else 0
303- let G = if (isDefined(E.assetId))
304- then extract(E.assetId)
285+ let I = if (isDefined(G.assetId))
286+ then extract(G.assetId)
305287 else c
306- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(G))))
307- if (((H * L) > F))
308- then throw(("The price is wrong, it should be " + toString((H * L))))
309- else ScriptResult(WriteSet([W, X, Y, Z, DataEntry(((K[0] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[3] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[4] + "_MA_") + toBase58String(A)), "PENDING"), DataEntry(((K[5] + "_MA_") + toBase58String(A)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), F, c), ScriptTransfer(addressFromStringValue(K[0]), 0, c), ScriptTransfer(addressFromStringValue(K[1]), 0, c), ScriptTransfer(addressFromStringValue(K[2]), 0, c), ScriptTransfer(addressFromStringValue(K[3]), 0, c), ScriptTransfer(addressFromStringValue(K[4]), 0, c), ScriptTransfer(addressFromStringValue(K[5]), 0, c)]))
288+ let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
289+ if (((J * O) > H))
290+ then throw(("The price is wrong, it should be " + toString((J * O))))
291+ else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c)]))
310292 }
311- else throw(("Needs 2 to 6 parties addresses" + toString(L)))
293+ else if ((O == 5))
294+ then if ((F > 0))
295+ then if ((O > F))
296+ then throw("You don't have enough certification credit")
297+ else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[4] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c), ScriptTransfer(addressFromStringValue(N[4]), 0, c)]))
298+ else {
299+ let G = extract(z.payment)
300+ let H = if (isDefined(G.amount))
301+ then extract(G.amount)
302+ else 0
303+ let I = if (isDefined(G.assetId))
304+ then extract(G.assetId)
305+ else c
306+ let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
307+ if (((J * O) > H))
308+ then throw(("The price is wrong, it should be " + toString((J * O))))
309+ else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[4] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c), ScriptTransfer(addressFromStringValue(N[4]), 0, c)]))
310+ }
311+ else if ((O == 6))
312+ then if ((F > 0))
313+ then if ((O > F))
314+ then throw("You don't have enough certification credit")
315+ else ScriptResult(WriteSet([Z, aa, ab, ac, ad, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[4] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[5] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c), ScriptTransfer(addressFromStringValue(N[4]), 0, c), ScriptTransfer(addressFromStringValue(N[5]), 0, c)]))
316+ else {
317+ let G = extract(z.payment)
318+ let H = if (isDefined(G.amount))
319+ then extract(G.amount)
320+ else 0
321+ let I = if (isDefined(G.assetId))
322+ then extract(G.assetId)
323+ else c
324+ let J = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(I))))
325+ if (((J * O) > H))
326+ then throw(("The price is wrong, it should be " + toString((J * O))))
327+ else ScriptResult(WriteSet([Z, aa, ab, ac, DataEntry(((N[0] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[1] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[2] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[3] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[4] + "_MA_") + toBase58String(C)), "PENDING"), DataEntry(((N[5] + "_MA_") + toBase58String(C)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), H, c), ScriptTransfer(addressFromStringValue(N[0]), 0, c), ScriptTransfer(addressFromStringValue(N[1]), 0, c), ScriptTransfer(addressFromStringValue(N[2]), 0, c), ScriptTransfer(addressFromStringValue(N[3]), 0, c), ScriptTransfer(addressFromStringValue(N[4]), 0, c), ScriptTransfer(addressFromStringValue(N[5]), 0, c)]))
328+ }
329+ else throw(("Needs 2 to 6 parties addresses" + toString(O)))
330+ }
312331 }
313332
314333
315334
316-@Callable(x)
317-func signAgreement (y,ab) = {
318- let E = extract(x.payment)
319- let F = extract(E.amount)
320- let A = extract(x.transactionId)
321- let ac = toBase58String(x.caller.bytes)
322- let ad = p(((ac + "_MA_") + ab))
323- if (!(ad))
335+@Callable(z)
336+func signAgreement (A,ae) = {
337+ let G = extract(z.payment)
338+ let H = extract(G.amount)
339+ let C = extract(z.transactionId)
340+ let af = toBase58String(z.caller.bytes)
341+ let ag = p(((af + "_MA_") + ae))
342+ if (!(ag))
324343 then throw("Sorry there is no pending signature")
325- else ScriptResult(WriteSet([DataEntry(((ac + "_MA_") + ab), ("SIGNED_" + toBase58String(A)))]), TransferSet([ScriptTransfer(addressFromStringValue(ac), 500000, unit)]))
344+ else ScriptResult(WriteSet([DataEntry(((af + "_MA_") + ae), ("SIGNED_" + toBase58String(C)))]), TransferSet([ScriptTransfer(addressFromStringValue(af), 500000, unit)]))
326345 }
327346
328347

github/deemru/w8io/026f985 
178.08 ms