-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMutableARC59.arc32.json
212 lines (212 loc) · 36.3 KB
/
MutableARC59.arc32.json
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
{
"hints": {
"createApplication()void": {
"call_config": {
"no_op": "CREATE"
}
},
"arc59_optRouterIn(uint64)void": {
"call_config": {
"no_op": "CALL"
}
},
"arc59_getOrCreateInbox(address)address": {
"call_config": {
"no_op": "CALL"
}
},
"arc59_getSendAssetInfo(address,uint64)(uint64,uint64,bool,bool)": {
"call_config": {
"no_op": "CALL"
}
},
"arc59_sendAsset(axfer,address)address": {
"call_config": {
"no_op": "CALL"
}
},
"arc59_claim(uint64)void": {
"call_config": {
"no_op": "CALL"
}
},
"arc59_reject(uint64)void": {
"call_config": {
"no_op": "CALL"
}
},
"arc59_getInbox(address)address": {
"call_config": {
"no_op": "CALL"
}
},
"updateApplication()void": {
"call_config": {
"update_application": "CALL"
}
}
},
"bare_call_config": {
"no_op": "NEVER",
"opt_in": "NEVER",
"close_out": "NEVER",
"update_application": "NEVER",
"delete_application": "NEVER"
},
"schema": {
"local": {
"declared": {},
"reserved": {}
},
"global": {
"declared": {},
"reserved": {}
}
},
"state": {
"global": {
"num_byte_slices": 0,
"num_uints": 0
},
"local": {
"num_byte_slices": 0,
"num_uints": 0
}
},
"source": {
"approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjkwLjMKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjYWxsX1VwZGF0ZUFwcGxpY2F0aW9uICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCWVycgoKLy8gY3JlYXRlQXBwbGljYXRpb24oKXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCS8vIGV4ZWN1dGUgY3JlYXRlQXBwbGljYXRpb24oKXZvaWQKCWNhbGxzdWIgY3JlYXRlQXBwbGljYXRpb24KCWludCAxCglyZXR1cm4KCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCk6IHZvaWQKLy8KLy8gRGVwbG95IEFSQzU5IGNvbnRyYWN0CmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGFyYzU5X29wdFJvdXRlckluKHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfYXJjNTlfb3B0Um91dGVySW46CgkvLyBhc2E6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgYXJjNTlfb3B0Um91dGVySW4odWludDY0KXZvaWQKCWNhbGxzdWIgYXJjNTlfb3B0Um91dGVySW4KCWludCAxCglyZXR1cm4KCi8vIGFyYzU5X29wdFJvdXRlckluKGFzYTogQXNzZXRJRCk6IHZvaWQKLy8KLy8gT3B0IHRoZSBBUkM1OSByb3V0ZXIgaW50byB0aGUgQVNBLiBUaGlzIGlzIHJlcXVpcmVkIGJlZm9yZSB0aGlzIGFwcCBjYW4gYmUgdXNlZCB0byBzZW5kIHRoZSBBU0EgdG8gYW55b25lLgovLwovLyBAcGFyYW0gYXNhIFRoZSBBU0EgdG8gb3B0IGludG8KYXJjNTlfb3B0Um91dGVySW46Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czo0NgoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgYXNzZXRSZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgeGZlckFzc2V0OiBhc2EsCgkvLyAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjQ3CgkvLyBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6NDgKCS8vIGFzc2V0QW1vdW50OiAwCglpbnQgMAoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjQ5CgkvLyB4ZmVyQXNzZXQ6IGFzYQoJZnJhbWVfZGlnIC0xIC8vIGFzYTogQXNzZXRJRAoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGFyYzU5X2dldE9yQ3JlYXRlSW5ib3goYWRkcmVzcylhZGRyZXNzCiphYmlfcm91dGVfYXJjNTlfZ2V0T3JDcmVhdGVJbmJveDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gcmVjZWl2ZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnQgMzIKCT09Cglhc3NlcnQKCgkvLyBleGVjdXRlIGFyYzU5X2dldE9yQ3JlYXRlSW5ib3goYWRkcmVzcylhZGRyZXNzCgljYWxsc3ViIGFyYzU5X2dldE9yQ3JlYXRlSW5ib3gKCWNvbmNhdAoJbG9nCglpbnQgMQoJcmV0dXJuCgovLyBhcmM1OV9nZXRPckNyZWF0ZUluYm94KHJlY2VpdmVyOiBBZGRyZXNzKTogQWRkcmVzcwovLwovLyBHZXRzIHRoZSBleGlzdGluZyBpbmJveCBmb3IgdGhlIHJlY2VpdmVyIG9yIGNyZWF0ZXMgYSBuZXcgb25lIGlmIGl0IGRvZXMgbm90IGV4aXN0Ci8vCi8vIEBwYXJhbSByZWNlaXZlciBUaGUgYWRkcmVzcyB0byBnZXQgb3IgY3JlYXRlIHRoZSBpbmJveCBmb3IKLy8gQHJldHVybnMgVGhlIGluYm94IGFkZHJlc3MKYXJjNTlfZ2V0T3JDcmVhdGVJbmJveDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjYwCgkvLyB0aGlzLmluYm94ZXMocmVjZWl2ZXIpLmV4aXN0cwoJZnJhbWVfZGlnIC0xIC8vIHJlY2VpdmVyOiBBZGRyZXNzCglib3hfbGVuCglzd2FwCglwb3AKCWJ6ICppZjBfZW5kCgoJLy8gKmlmMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czo2MAoJLy8gcmV0dXJuIHRoaXMuaW5ib3hlcyhyZWNlaXZlcikudmFsdWU7CglmcmFtZV9kaWcgLTEgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWJveF9nZXQKCWFzc2VydAoJYiAqYXJjNTlfZ2V0T3JDcmVhdGVJbmJveCpyZXR1cm4KCippZjBfZW5kOgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6NjIKCS8vIGluYm94ID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIENvbnRyb2xsZWRBZGRyZXNzLnByb3RvdHlwZS5uZXc+KHsKCS8vICAgICAgIG9uQ29tcGxldGlvbjogT25Db21wbGV0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAoJLy8gICAgICAgYXBwcm92YWxQcm9ncmFtOiBDb250cm9sbGVkQWRkcmVzcy5hcHByb3ZhbFByb2dyYW0oKSwKCS8vICAgICAgIGNsZWFyU3RhdGVQcm9ncmFtOiBDb250cm9sbGVkQWRkcmVzcy5jbGVhclByb2dyYW0oKSwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAibmV3KClhZGRyZXNzIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czo2MwoJLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uRGVsZXRlQXBwbGljYXRpb24KCWludCA1IC8vIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjY0CgkvLyBhcHByb3ZhbFByb2dyYW06IENvbnRyb2xsZWRBZGRyZXNzLmFwcHJvdmFsUHJvZ3JhbSgpCglieXRlIGI2NCBDaUFCQVRFWUZJRUdDekVaQ0kwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFoQUlBRUZSOThkWWdBQkZDd0lrT0tBQUd4SXJJUU1RQ3lJSUVBc2dHek1ncUpnQVJXSFMvcU5ob0FqZ0gvMHdBPQoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czo2NQoJLy8gY2xlYXJTdGF0ZVByb2dyYW06IENvbnRyb2xsZWRBZGRyZXNzLmNsZWFyUHJvZ3JhbSgpCglieXRlIGI2NCBDZz09CglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnQgMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDAgLy8gaW5ib3g6IGFkZHJlc3MKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czo2OAoJLy8gdGhpcy5pbmJveGVzKHJlY2VpdmVyKS52YWx1ZSA9IGluYm94CglmcmFtZV9kaWcgLTEgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIGluYm94OiBhZGRyZXNzCglib3hfcHV0CgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6NzAKCS8vIHJldHVybiBpbmJveDsKCWZyYW1lX2RpZyAwIC8vIGluYm94OiBhZGRyZXNzCgoqYXJjNTlfZ2V0T3JDcmVhdGVJbmJveCpyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gYXJjNTlfZ2V0U2VuZEFzc2V0SW5mbyhhZGRyZXNzLHVpbnQ2NCkodWludDY0LHVpbnQ2NCxib29sLGJvb2wpCiphYmlfcm91dGVfYXJjNTlfZ2V0U2VuZEFzc2V0SW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gYXNzZXQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHJlY2VpdmVyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhcmM1OV9nZXRTZW5kQXNzZXRJbmZvKGFkZHJlc3MsdWludDY0KSh1aW50NjQsdWludDY0LGJvb2wsYm9vbCkKCWNhbGxzdWIgYXJjNTlfZ2V0U2VuZEFzc2V0SW5mbwoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFyYzU5X2dldFNlbmRBc3NldEluZm8ocmVjZWl2ZXI6IEFkZHJlc3MsIGFzc2V0OiBBc3NldElEKTogU2VuZEFzc2V0SW5mbwovLwovLwovLyBAcGFyYW0gcmVjZWl2ZXIgVGhlIGFkZHJlc3MgdG8gc2VuZCB0aGUgYXNzZXQgdG8KLy8gQHBhcmFtIGFzc2V0IFRoZSBhc3NldCB0byBzZW5kCi8vCi8vIEByZXR1cm5zIFJldHVybnMgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBmb3Igc2VuZGluZyBhbiBhc3NldDoKLy8gVGhlIG51bWJlciBvZiBpdHhucyByZXF1aXJlZCwgdGhlIE1CUiByZXF1aXJlZCwgd2hldGhlciB0aGUgcm91dGVyIGlzIG9wdGVkIGluLCBhbmQgd2hldGhlciB0aGUgcmVjZWl2ZXIgaXMgb3B0ZWQgaW4KYXJjNTlfZ2V0U2VuZEFzc2V0SW5mbzoKCXByb3RvIDIgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CglkdXBuIDUKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czo4MgoJLy8gcm91dGVyT3B0ZWRJbiA9IHRoaXMuYXBwLmFkZHJlc3MuaXNPcHRlZEluVG9Bc3NldChhc3NldCkKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9kaWcgLTIgLy8gYXNzZXQ6IEFzc2V0SUQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJc3dhcAoJcG9wCglmcmFtZV9idXJ5IDAgLy8gcm91dGVyT3B0ZWRJbjogYm9vbAoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjgzCgkvLyByZWNlaXZlck9wdGVkSW4gPSByZWNlaXZlci5pc09wdGVkSW5Ub0Fzc2V0KGFzc2V0KQoJZnJhbWVfZGlnIC0xIC8vIHJlY2VpdmVyOiBBZGRyZXNzCglmcmFtZV9kaWcgLTIgLy8gYXNzZXQ6IEFzc2V0SUQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJc3dhcAoJcG9wCglmcmFtZV9idXJ5IDEgLy8gcmVjZWl2ZXJPcHRlZEluOiBib29sCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6ODQKCS8vIGluZm86IFNlbmRBc3NldEluZm8gPSB7IGl0eG5zOiAxLCBtYnI6IDAsIHJvdXRlck9wdGVkSW46IHJvdXRlck9wdGVkSW4sIHJlY2VpdmVyT3B0ZWRJbjogcmVjZWl2ZXJPcHRlZEluIH0KCWJ5dGUgMHgwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMAoJYnl0ZSAweDAwCglpbnQgMAoJZnJhbWVfZGlnIDAgLy8gcm91dGVyT3B0ZWRJbjogYm9vbAoJc2V0Yml0CglpbnQgMQoJZnJhbWVfZGlnIDEgLy8gcmVjZWl2ZXJPcHRlZEluOiBib29sCglzZXRiaXQKCWNvbmNhdAoJZnJhbWVfYnVyeSAyIC8vIGluZm86IFNlbmRBc3NldEluZm8KCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6ODYKCS8vIHJlY2VpdmVyT3B0ZWRJbgoJZnJhbWVfZGlnIDEgLy8gcmVjZWl2ZXJPcHRlZEluOiBib29sCglieiAqaWYxX2VuZAoKCS8vICppZjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6ODYKCS8vIHJldHVybiBpbmZvOwoJZnJhbWVfZGlnIDIgLy8gaW5mbzogU2VuZEFzc2V0SW5mbwoJYiAqYXJjNTlfZ2V0U2VuZEFzc2V0SW5mbypyZXR1cm4KCippZjFfZW5kOgoJLy8gKmlmMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjg4CgkvLyAhcm91dGVyT3B0ZWRJbgoJZnJhbWVfZGlnIDAgLy8gcm91dGVyT3B0ZWRJbjogYm9vbAoJIQoJYnogKmlmMl9lbmQKCgkvLyAqaWYyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjg5CgkvLyBpbmZvLm1iciArPSBnbG9iYWxzLmFzc2V0T3B0SW5NaW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBpbmZvOiBTZW5kQXNzZXRJbmZvCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50IDgKCWZyYW1lX2RpZyAyIC8vIGluZm86IFNlbmRBc3NldEluZm8KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDggOAoJYnRvaQoJZ2xvYmFsIEFzc2V0T3B0SW5NaW5CYWxhbmNlCgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAyIC8vIGluZm86IFNlbmRBc3NldEluZm8KCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czo5MAoJLy8gaW5mby5pdHhucyArPSAxCglmcmFtZV9kaWcgMiAvLyBpbmZvOiBTZW5kQXNzZXRJbmZvCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50IDAKCWZyYW1lX2RpZyAyIC8vIGluZm86IFNlbmRBc3NldEluZm8KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgOAoJYnRvaQoJaW50IDEKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDIgLy8gaW5mbzogU2VuZEFzc2V0SW5mbwoKKmlmMl9lbmQ6CgkvLyAqaWYzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6OTMKCS8vICF0aGlzLmluYm94ZXMocmVjZWl2ZXIpLmV4aXN0cwoJZnJhbWVfZGlnIC0xIC8vIHJlY2VpdmVyOiBBZGRyZXNzCglib3hfbGVuCglzd2FwCglwb3AKCSEKCWJ6ICppZjNfZW5kCgoJLy8gKmlmM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czo5NwoJLy8gaW5mby5pdHhucyArPSA0CglmcmFtZV9kaWcgMiAvLyBpbmZvOiBTZW5kQXNzZXRJbmZvCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50IDAKCWZyYW1lX2RpZyAyIC8vIGluZm86IFNlbmRBc3NldEluZm8KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgOAoJYnRvaQoJaW50IDQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDIgLy8gaW5mbzogU2VuZEFzc2V0SW5mbwoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjEwMAoJLy8gcHJlTUJSID0gZ2xvYmFscy5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLm1pbkJhbGFuY2UKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKCXBvcAoJZnJhbWVfYnVyeSAzIC8vIHByZU1CUjogdWludDY0CgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTAxCgkvLyB0aGlzLmluYm94ZXMocmVjZWl2ZXIpLnZhbHVlID0gZ2xvYmFscy56ZXJvQWRkcmVzcwoJZnJhbWVfZGlnIC0xIC8vIHJlY2VpdmVyOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCWJveF9wdXQKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxMDIKCS8vIGJveE1ickRlbHRhID0gZ2xvYmFscy5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLm1pbkJhbGFuY2UgLSBwcmVNQlIKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDMgLy8gcHJlTUJSOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgNCAvLyBib3hNYnJEZWx0YTogdWludDY0CgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTAzCgkvLyB0aGlzLmluYm94ZXMocmVjZWl2ZXIpLmRlbGV0ZSgpCglmcmFtZV9kaWcgLTEgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWJveF9kZWwKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxMDYKCS8vIGluZm8ubWJyICs9IGJveE1ickRlbHRhICsgZ2xvYmFscy5taW5CYWxhbmNlICsgZ2xvYmFscy5hc3NldE9wdEluTWluQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gaW5mbzogU2VuZEFzc2V0SW5mbwoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludCA4CglmcmFtZV9kaWcgMiAvLyBpbmZvOiBTZW5kQXNzZXRJbmZvCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWZyYW1lX2RpZyA0IC8vIGJveE1ickRlbHRhOiB1aW50NjQKCWdsb2JhbCBNaW5CYWxhbmNlCgkrCglnbG9iYWwgQXNzZXRPcHRJbk1pbkJhbGFuY2UKCSsKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDIgLy8gaW5mbzogU2VuZEFzc2V0SW5mbwoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjEwOAoJLy8gcmV0dXJuIGluZm87CglmcmFtZV9kaWcgMiAvLyBpbmZvOiBTZW5kQXNzZXRJbmZvCgliICphcmM1OV9nZXRTZW5kQXNzZXRJbmZvKnJldHVybgoKKmlmM19lbmQ6CgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxMTEKCS8vIGluYm94ID0gdGhpcy5pbmJveGVzKHJlY2VpdmVyKS52YWx1ZQoJZnJhbWVfZGlnIC0xIC8vIHJlY2VpdmVyOiBBZGRyZXNzCglib3hfZ2V0Cglhc3NlcnQKCWZyYW1lX2J1cnkgNSAvLyBpbmJveDogYWRkcmVzcwoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxMTMKCS8vICFpbmJveC5pc09wdGVkSW5Ub0Fzc2V0KGFzc2V0KQoJZnJhbWVfZGlnIDUgLy8gaW5ib3g6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyBhc3NldDogQXNzZXRJRAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglzd2FwCglwb3AKCSEKCWJ6ICppZjRfZW5kCgoJLy8gKmlmNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxMTUKCS8vIGluZm8uaXR4bnMgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaW5mbzogU2VuZEFzc2V0SW5mbwoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludCAwCglmcmFtZV9kaWcgMiAvLyBpbmZvOiBTZW5kQXNzZXRJbmZvCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWludCAxCgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAyIC8vIGluZm86IFNlbmRBc3NldEluZm8KCgkvLyAqaWY1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTE3CgkvLyAhKGluYm94LmJhbGFuY2UgPj0gaW5ib3gubWluQmFsYW5jZSArIGdsb2JhbHMuYXNzZXRPcHRJbk1pbkJhbGFuY2UpCglmcmFtZV9kaWcgNSAvLyBpbmJveDogYWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyA1IC8vIGluYm94OiBhZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKCXBvcAoJZ2xvYmFsIEFzc2V0T3B0SW5NaW5CYWxhbmNlCgkrCgk+PQoJIQoJYnogKmlmNV9lbmQKCgkvLyAqaWY1X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjExOQoJLy8gaW5mby5pdHhucyArPSAxCglmcmFtZV9kaWcgMiAvLyBpbmZvOiBTZW5kQXNzZXRJbmZvCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50IDAKCWZyYW1lX2RpZyAyIC8vIGluZm86IFNlbmRBc3NldEluZm8KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgOAoJYnRvaQoJaW50IDEKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDIgLy8gaW5mbzogU2VuZEFzc2V0SW5mbwoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjEyMgoJLy8gaW5mby5tYnIgKz0gZ2xvYmFscy5hc3NldE9wdEluTWluQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gaW5mbzogU2VuZEFzc2V0SW5mbwoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludCA4CglmcmFtZV9kaWcgMiAvLyBpbmZvOiBTZW5kQXNzZXRJbmZvCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWdsb2JhbCBBc3NldE9wdEluTWluQmFsYW5jZQoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMiAvLyBpbmZvOiBTZW5kQXNzZXRJbmZvCgoqaWY1X2VuZDoKCippZjRfZW5kOgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTI2CgkvLyByZXR1cm4gaW5mbzsKCWZyYW1lX2RpZyAyIC8vIGluZm86IFNlbmRBc3NldEluZm8KCiphcmM1OV9nZXRTZW5kQXNzZXRJbmZvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDUKCXJldHN1YgoKLy8gYXJjNTlfc2VuZEFzc2V0KGF4ZmVyLGFkZHJlc3MpYWRkcmVzcwoqYWJpX3JvdXRlX2FyYzU5X3NlbmRBc3NldDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gcmVjZWl2ZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnQgMzIKCT09Cglhc3NlcnQKCgkvLyBheGZlcjogYXhmZXIKCXR4biBHcm91cEluZGV4CglpbnQgMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50IGF4ZmVyCgk9PQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhcmM1OV9zZW5kQXNzZXQoYXhmZXIsYWRkcmVzcylhZGRyZXNzCgljYWxsc3ViIGFyYzU5X3NlbmRBc3NldAoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFyYzU5X3NlbmRBc3NldChheGZlcjogQXNzZXRUcmFuc2ZlclR4biwgcmVjZWl2ZXI6IEFkZHJlc3MpOiBBZGRyZXNzCi8vCi8vIFNlbmQgYW4gYXNzZXQgdG8gdGhlIHJlY2VpdmVyCi8vCi8vIEBwYXJhbSByZWNlaXZlciBUaGUgYWRkcmVzcyB0byBzZW5kIHRoZSBhc3NldCB0bwovLyBAcGFyYW0gYXhmZXIgVGhlIGFzc2V0IHRyYW5zZmVyIHRvIHRoaXMgYXBwCi8vCi8vIEByZXR1cm5zIFRoZSBhZGRyZXNzIHRoYXQgdGhlIGFzc2V0IHdhcyBzZW50IHRvIChlaXRoZXIgdGhlIHJlY2VpdmVyIG9yIHRoZWlyIGluYm94KQphcmM1OV9zZW5kQXNzZXQ6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoJZHVwbiAyCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTM4CgkvLyB2ZXJpZnlBc3NldFRyYW5zZmVyVHhuKGF4ZmVyLCB7CgkvLyAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgIH0pCgkvLyB2ZXJpZnkgYXNzZXRSZWNlaXZlcgoJZnJhbWVfZGlnIC0xIC8vIGF4ZmVyOiBBc3NldFRyYW5zZmVyVHhuCglndHhucyBBc3NldFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCWFzc2VydAoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxNDMKCS8vIHJlY2VpdmVyLmlzT3B0ZWRJblRvQXNzZXQoYXhmZXIueGZlckFzc2V0KQoJZnJhbWVfZGlnIC0yIC8vIHJlY2VpdmVyOiBBZGRyZXNzCglmcmFtZV9kaWcgLTEgLy8gYXhmZXI6IEFzc2V0VHJhbnNmZXJUeG4KCWd0eG5zIFhmZXJBc3NldAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglzd2FwCglwb3AKCWJ6ICppZjZfZW5kCgoJLy8gKmlmNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxNDQKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgYXNzZXRSZWNlaXZlcjogcmVjZWl2ZXIsCgkvLyAgICAgICAgIGFzc2V0QW1vdW50OiBheGZlci5hc3NldEFtb3VudCwKCS8vICAgICAgICAgeGZlckFzc2V0OiBheGZlci54ZmVyQXNzZXQsCgkvLyAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTQ1CgkvLyBhc3NldFJlY2VpdmVyOiByZWNlaXZlcgoJZnJhbWVfZGlnIC0yIC8vIHJlY2VpdmVyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxNDYKCS8vIGFzc2V0QW1vdW50OiBheGZlci5hc3NldEFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIGF4ZmVyOiBBc3NldFRyYW5zZmVyVHhuCglndHhucyBBc3NldEFtb3VudAoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE0NwoJLy8geGZlckFzc2V0OiBheGZlci54ZmVyQXNzZXQKCWZyYW1lX2RpZyAtMSAvLyBheGZlcjogQXNzZXRUcmFuc2ZlclR4bgoJZ3R4bnMgWGZlckFzc2V0CglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxNTAKCS8vIHJldHVybiByZWNlaXZlcjsKCWZyYW1lX2RpZyAtMiAvLyByZWNlaXZlcjogQWRkcmVzcwoJYiAqYXJjNTlfc2VuZEFzc2V0KnJldHVybgoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxNTMKCS8vIGluYm94RXhpc3RlZCA9IHRoaXMuaW5ib3hlcyhyZWNlaXZlcikuZXhpc3RzCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWJveF9sZW4KCXN3YXAKCXBvcAoJZnJhbWVfYnVyeSAwIC8vIGluYm94RXhpc3RlZDogYm9vbAoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE1NAoJLy8gaW5ib3ggPSB0aGlzLmFyYzU5X2dldE9yQ3JlYXRlSW5ib3gocmVjZWl2ZXIpCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWNhbGxzdWIgYXJjNTlfZ2V0T3JDcmVhdGVJbmJveAoJZnJhbWVfYnVyeSAxIC8vIGluYm94OiBhZGRyZXNzCgoJLy8gKmlmN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE1NgoJLy8gIWluYm94LmlzT3B0ZWRJblRvQXNzZXQoYXhmZXIueGZlckFzc2V0KQoJZnJhbWVfZGlnIDEgLy8gaW5ib3g6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMSAvLyBheGZlcjogQXNzZXRUcmFuc2ZlclR4bgoJZ3R4bnMgWGZlckFzc2V0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXN3YXAKCXBvcAoJIQoJYnogKmlmN19lbmQKCgkvLyAqaWY3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE1NwoJLy8gaW5ib3hNYnJEZWx0YSA9IGdsb2JhbHMuYXNzZXRPcHRJbk1pbkJhbGFuY2UKCWdsb2JhbCBBc3NldE9wdEluTWluQmFsYW5jZQoJZnJhbWVfYnVyeSAyIC8vIGluYm94TWJyRGVsdGE6IHVpbnQ2NAoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxNTgKCS8vICFpbmJveEV4aXN0ZWQKCWZyYW1lX2RpZyAwIC8vIGluYm94RXhpc3RlZDogYm9vbAoJIQoJYnogKmlmOF9lbmQKCgkvLyAqaWY4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE1OAoJLy8gaW5ib3hNYnJEZWx0YSArPSBnbG9iYWxzLm1pbkJhbGFuY2UKCWZyYW1lX2RpZyAyIC8vIGluYm94TWJyRGVsdGE6IHVpbnQ2NAoJZ2xvYmFsIE1pbkJhbGFuY2UKCSsKCWZyYW1lX2J1cnkgMiAvLyBpbmJveE1ickRlbHRhOiB1aW50NjQKCippZjhfZW5kOgoJLy8gKmlmOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE2MQoJLy8gaW5ib3guYmFsYW5jZSA8IGluYm94Lm1pbkJhbGFuY2UgKyBpbmJveE1ickRlbHRhCglmcmFtZV9kaWcgMSAvLyBpbmJveDogYWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxIC8vIGluYm94OiBhZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDIgLy8gaW5ib3hNYnJEZWx0YTogdWludDY0CgkrCgk8CglieiAqaWY5X2VuZAoKCS8vICppZjlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTYyCgkvLyBzZW5kUGF5bWVudCh7CgkvLyAgICAgICAgICAgcmVjZWl2ZXI6IGluYm94LAoJLy8gICAgICAgICAgIGFtb3VudDogaW5ib3hNYnJEZWx0YSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxNjMKCS8vIHJlY2VpdmVyOiBpbmJveAoJZnJhbWVfZGlnIDEgLy8gaW5ib3g6IGFkZHJlc3MKCWl0eG5fZmllbGQgUmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxNjQKCS8vIGFtb3VudDogaW5ib3hNYnJEZWx0YQoJZnJhbWVfZGlnIDIgLy8gaW5ib3hNYnJEZWx0YTogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjlfZW5kOgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTY5CgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICAgIHNlbmRlcjogaW5ib3gsCgkvLyAgICAgICAgIGFzc2V0UmVjZWl2ZXI6IGluYm94LAoJLy8gICAgICAgICBhc3NldEFtb3VudDogMCwKCS8vICAgICAgICAgeGZlckFzc2V0OiBheGZlci54ZmVyQXNzZXQsCgkvLyAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTcwCgkvLyBzZW5kZXI6IGluYm94CglmcmFtZV9kaWcgMSAvLyBpbmJveDogYWRkcmVzcwoJaXR4bl9maWVsZCBTZW5kZXIKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxNzEKCS8vIGFzc2V0UmVjZWl2ZXI6IGluYm94CglmcmFtZV9kaWcgMSAvLyBpbmJveDogYWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTcyCgkvLyBhc3NldEFtb3VudDogMAoJaW50IDAKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxNzMKCS8vIHhmZXJBc3NldDogYXhmZXIueGZlckFzc2V0CglmcmFtZV9kaWcgLTEgLy8gYXhmZXI6IEFzc2V0VHJhbnNmZXJUeG4KCWd0eG5zIFhmZXJBc3NldAoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoqaWY3X2VuZDoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE3OAoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgYXNzZXRSZWNlaXZlcjogaW5ib3gsCgkvLyAgICAgICBhc3NldEFtb3VudDogYXhmZXIuYXNzZXRBbW91bnQsCgkvLyAgICAgICB4ZmVyQXNzZXQ6IGF4ZmVyLnhmZXJBc3NldCwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTc5CgkvLyBhc3NldFJlY2VpdmVyOiBpbmJveAoJZnJhbWVfZGlnIDEgLy8gaW5ib3g6IGFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE4MAoJLy8gYXNzZXRBbW91bnQ6IGF4ZmVyLmFzc2V0QW1vdW50CglmcmFtZV9kaWcgLTEgLy8gYXhmZXI6IEFzc2V0VHJhbnNmZXJUeG4KCWd0eG5zIEFzc2V0QW1vdW50CglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTgxCgkvLyB4ZmVyQXNzZXQ6IGF4ZmVyLnhmZXJBc3NldAoJZnJhbWVfZGlnIC0xIC8vIGF4ZmVyOiBBc3NldFRyYW5zZmVyVHhuCglndHhucyBYZmVyQXNzZXQKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE4NAoJLy8gcmV0dXJuIGluYm94OwoJZnJhbWVfZGlnIDEgLy8gaW5ib3g6IGFkZHJlc3MKCiphcmM1OV9zZW5kQXNzZXQqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBhcmM1OV9jbGFpbSh1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2FyYzU5X2NsYWltOgoJLy8gYXNhOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGFyYzU5X2NsYWltKHVpbnQ2NCl2b2lkCgljYWxsc3ViIGFyYzU5X2NsYWltCglpbnQgMQoJcmV0dXJuCgovLyBhcmM1OV9jbGFpbShhc2E6IEFzc2V0SUQpOiB2b2lkCi8vCi8vIENsYWltIGFuIEFTQSBmcm9tIHRoZSBpbmJveAovLwovLyBAcGFyYW0gYXNhIFRoZSBBU0EgdG8gY2xhaW0KYXJjNTlfY2xhaW06Cglwcm90byAxIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE5MwoJLy8gaW5ib3ggPSB0aGlzLmluYm94ZXModGhpcy50eG4uc2VuZGVyKS52YWx1ZQoJdHhuIFNlbmRlcgoJYm94X2dldAoJYXNzZXJ0CglmcmFtZV9idXJ5IDAgLy8gaW5ib3g6IGFkZHJlc3MKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxOTUKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgIHNlbmRlcjogaW5ib3gsCgkvLyAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLnR4bi5zZW5kZXIsCgkvLyAgICAgICBhc3NldEFtb3VudDogaW5ib3guYXNzZXRCYWxhbmNlKGFzYSksCgkvLyAgICAgICB4ZmVyQXNzZXQ6IGFzYSwKCS8vICAgICAgIGFzc2V0Q2xvc2VUbzogdGhpcy50eG4uc2VuZGVyLAoJLy8gICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxOTYKCS8vIHNlbmRlcjogaW5ib3gKCWZyYW1lX2RpZyAwIC8vIGluYm94OiBhZGRyZXNzCglpdHhuX2ZpZWxkIFNlbmRlcgoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjE5NwoJLy8gYXNzZXRSZWNlaXZlcjogdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoxOTgKCS8vIGFzc2V0QW1vdW50OiBpbmJveC5hc3NldEJhbGFuY2UoYXNhKQoJZnJhbWVfZGlnIDAgLy8gaW5ib3g6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMSAvLyBhc2E6IEFzc2V0SUQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MTk5CgkvLyB4ZmVyQXNzZXQ6IGFzYQoJZnJhbWVfZGlnIC0xIC8vIGFzYTogQXNzZXRJRAoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoyMDAKCS8vIGFzc2V0Q2xvc2VUbzogdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglpdHhuX2ZpZWxkIEFzc2V0Q2xvc2VUbwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoyMDMKCS8vIHNlbmRQYXltZW50KHsKCS8vICAgICAgIHNlbmRlcjogaW5ib3gsCgkvLyAgICAgICByZWNlaXZlcjogdGhpcy50eG4uc2VuZGVyLAoJLy8gICAgICAgYW1vdW50OiBpbmJveC5iYWxhbmNlIC0gaW5ib3gubWluQmFsYW5jZSwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjIwNAoJLy8gc2VuZGVyOiBpbmJveAoJZnJhbWVfZGlnIDAgLy8gaW5ib3g6IGFkZHJlc3MKCWl0eG5fZmllbGQgU2VuZGVyCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MjA1CgkvLyByZWNlaXZlcjogdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MjA2CgkvLyBhbW91bnQ6IGluYm94LmJhbGFuY2UgLSBpbmJveC5taW5CYWxhbmNlCglmcmFtZV9kaWcgMCAvLyBpbmJveDogYWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAwIC8vIGluYm94OiBhZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKCXBvcAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGFyYzU5X3JlamVjdCh1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2FyYzU5X3JlamVjdDoKCS8vIGFzYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBhcmM1OV9yZWplY3QodWludDY0KXZvaWQKCWNhbGxzdWIgYXJjNTlfcmVqZWN0CglpbnQgMQoJcmV0dXJuCgovLyBhcmM1OV9yZWplY3QoYXNhOiBBc3NldElEKTogdm9pZAovLwovLyBSZWplY3QgdGhlIEFTQSBieSBjbG9zaW5nIGl0IG91dCB0byB0aGUgQVNBIGNyZWF0b3IuIEFsd2F5cyBzZW5kcyB0d28gaW5uZXIgdHJhbnNhY3Rpb25zLgovLyBBbGwgbm9uLU1CUiBBTEdPIGJhbGFuY2UgaW4gdGhlIGluYm94IHdpbGwgYmUgc2VudCB0byB0aGUgY2FsbGVyLgovLwovLyBAcGFyYW0gYXNhIFRoZSBBU0EgdG8gcmVqZWN0CmFyYzU5X3JlamVjdDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlIDB4CgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MjE3CgkvLyBpbmJveCA9IHRoaXMuaW5ib3hlcyh0aGlzLnR4bi5zZW5kZXIpLnZhbHVlCgl0eG4gU2VuZGVyCglib3hfZ2V0Cglhc3NlcnQKCWZyYW1lX2J1cnkgMCAvLyBpbmJveDogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjIxOQoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgc2VuZGVyOiBpbmJveCwKCS8vICAgICAgIGFzc2V0UmVjZWl2ZXI6IGFzYS5jcmVhdG9yLAoJLy8gICAgICAgYXNzZXRBbW91bnQ6IGluYm94LmFzc2V0QmFsYW5jZShhc2EpLAoJLy8gICAgICAgeGZlckFzc2V0OiBhc2EsCgkvLyAgICAgICBhc3NldENsb3NlVG86IGFzYS5jcmVhdG9yLAoJLy8gICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoyMjAKCS8vIHNlbmRlcjogaW5ib3gKCWZyYW1lX2RpZyAwIC8vIGluYm94OiBhZGRyZXNzCglpdHhuX2ZpZWxkIFNlbmRlcgoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjIyMQoJLy8gYXNzZXRSZWNlaXZlcjogYXNhLmNyZWF0b3IKCWZyYW1lX2RpZyAtMSAvLyBhc2E6IEFzc2V0SUQKCWFzc2V0X3BhcmFtc19nZXQgQXNzZXRDcmVhdG9yCglwb3AKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjIyMgoJLy8gYXNzZXRBbW91bnQ6IGluYm94LmFzc2V0QmFsYW5jZShhc2EpCglmcmFtZV9kaWcgMCAvLyBpbmJveDogYWRkcmVzcwoJZnJhbWVfZGlnIC0xIC8vIGFzYTogQXNzZXRJRAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoyMjMKCS8vIHhmZXJBc3NldDogYXNhCglmcmFtZV9kaWcgLTEgLy8gYXNhOiBBc3NldElECglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjIyNAoJLy8gYXNzZXRDbG9zZVRvOiBhc2EuY3JlYXRvcgoJZnJhbWVfZGlnIC0xIC8vIGFzYTogQXNzZXRJRAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJaXR4bl9maWVsZCBBc3NldENsb3NlVG8KCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL2FyYzU5LmFsZ28udHM6MjI3CgkvLyBzZW5kUGF5bWVudCh7CgkvLyAgICAgICBzZW5kZXI6IGluYm94LAoJLy8gICAgICAgcmVjZWl2ZXI6IHRoaXMudHhuLnNlbmRlciwKCS8vICAgICAgIGFtb3VudDogaW5ib3guYmFsYW5jZSAtIGluYm94Lm1pbkJhbGFuY2UsCgkvLyAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvYXJjNTkuYWxnby50czoyMjgKCS8vIHNlbmRlcjogaW5ib3gKCWZyYW1lX2RpZyAwIC8vIGluYm94OiBhZGRyZXNzCglpdHhuX2ZpZWxkIFNlbmRlcgoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjIyOQoJLy8gcmVjZWl2ZXI6IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjIzMAoJLy8gYW1vdW50OiBpbmJveC5iYWxhbmNlIC0gaW5ib3gubWluQmFsYW5jZQoJZnJhbWVfZGlnIDAgLy8gaW5ib3g6IGFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMCAvLyBpbmJveDogYWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RNaW5CYWxhbmNlCglwb3AKCS0KCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyBhcmM1OV9nZXRJbmJveChhZGRyZXNzKWFkZHJlc3MKKmFiaV9yb3V0ZV9hcmM1OV9nZXRJbmJveDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gcmVjZWl2ZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnQgMzIKCT09Cglhc3NlcnQKCgkvLyBleGVjdXRlIGFyYzU5X2dldEluYm94KGFkZHJlc3MpYWRkcmVzcwoJY2FsbHN1YiBhcmM1OV9nZXRJbmJveAoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGFyYzU5X2dldEluYm94KHJlY2VpdmVyOiBBZGRyZXNzKTogQWRkcmVzcwovLwovLyBHZXQgdGhlIGluYm94IGFkZHJlc3MgZm9yIHRoZSBnaXZlbiByZWNlaXZlcgovLwovLyBAcGFyYW0gcmVjZWl2ZXIgVGhlIHJlY2VpdmVyIHRvIGdldCB0aGUgaW5ib3ggZm9yCi8vCi8vIEByZXR1cm5zIFplcm8gYWRkcmVzcyBpZiB0aGUgcmVjZWl2ZXIgZG9lcyBub3QgeWV0IGhhdmUgYW4gaW5ib3gsIG90aGVyd2lzZSB0aGUgaW5ib3ggYWRkcmVzcwphcmM1OV9nZXRJbmJveDoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy9hcmM1OS5hbGdvLnRzOjI0MgoJLy8gcmV0dXJuIHRoaXMuaW5ib3hlcyhyZWNlaXZlcikuZXhpc3RzID8gdGhpcy5pbmJveGVzKHJlY2VpdmVyKS52YWx1ZSA6IGdsb2JhbHMuemVyb0FkZHJlc3M7CglmcmFtZV9kaWcgLTEgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWJveF9sZW4KCXN3YXAKCXBvcAoJYnogKnRlcm5hcnkwX2ZhbHNlCglmcmFtZV9kaWcgLTEgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWJveF9nZXQKCWFzc2VydAoJYiAqdGVybmFyeTBfZW5kCgoqdGVybmFyeTBfZmFsc2U6CglnbG9iYWwgWmVyb0FkZHJlc3MKCip0ZXJuYXJ5MF9lbmQ6CglyZXRzdWIKCi8vIHVwZGF0ZUFwcGxpY2F0aW9uKCl2b2lkCiphYmlfcm91dGVfdXBkYXRlQXBwbGljYXRpb246CgkvLyBleGVjdXRlIHVwZGF0ZUFwcGxpY2F0aW9uKCl2b2lkCgljYWxsc3ViIHVwZGF0ZUFwcGxpY2F0aW9uCglpbnQgMQoJcmV0dXJuCgovLyB1cGRhdGVBcHBsaWNhdGlvbigpOiB2b2lkCnVwZGF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gMCAwCgoJLy8gY29udHJhY3RzL211dGFibGVfYXJjNTkuYWxnby50czo1CgkvLyBhc3NlcnQodGhpcy50eG4uc2VuZGVyID09PSB0aGlzLmFwcC5jcmVhdG9yKQoJdHhuIFNlbmRlcgoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJYXBwX3BhcmFtc19nZXQgQXBwQ3JlYXRvcgoJcG9wCgk9PQoJYXNzZXJ0CglyZXRzdWIKCipjcmVhdGVfTm9PcDoKCW1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgllcnIKCipjYWxsX05vT3A6CgltZXRob2QgImFyYzU5X29wdFJvdXRlckluKHVpbnQ2NCl2b2lkIgoJbWV0aG9kICJhcmM1OV9nZXRPckNyZWF0ZUluYm94KGFkZHJlc3MpYWRkcmVzcyIKCW1ldGhvZCAiYXJjNTlfZ2V0U2VuZEFzc2V0SW5mbyhhZGRyZXNzLHVpbnQ2NCkodWludDY0LHVpbnQ2NCxib29sLGJvb2wpIgoJbWV0aG9kICJhcmM1OV9zZW5kQXNzZXQoYXhmZXIsYWRkcmVzcylhZGRyZXNzIgoJbWV0aG9kICJhcmM1OV9jbGFpbSh1aW50NjQpdm9pZCIKCW1ldGhvZCAiYXJjNTlfcmVqZWN0KHVpbnQ2NCl2b2lkIgoJbWV0aG9kICJhcmM1OV9nZXRJbmJveChhZGRyZXNzKWFkZHJlc3MiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2FyYzU5X29wdFJvdXRlckluICphYmlfcm91dGVfYXJjNTlfZ2V0T3JDcmVhdGVJbmJveCAqYWJpX3JvdXRlX2FyYzU5X2dldFNlbmRBc3NldEluZm8gKmFiaV9yb3V0ZV9hcmM1OV9zZW5kQXNzZXQgKmFiaV9yb3V0ZV9hcmM1OV9jbGFpbSAqYWJpX3JvdXRlX2FyYzU5X3JlamVjdCAqYWJpX3JvdXRlX2FyYzU5X2dldEluYm94CgllcnIKCipjYWxsX1VwZGF0ZUFwcGxpY2F0aW9uOgoJbWV0aG9kICJ1cGRhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfdXBkYXRlQXBwbGljYXRpb24KCWVycg==",
"clear": "I3ByYWdtYSB2ZXJzaW9uIDEw"
},
"contract": {
"name": "MutableARC59",
"desc": "",
"methods": [
{
"name": "createApplication",
"desc": "Deploy ARC59 contract",
"args": [],
"returns": {
"type": "void"
}
},
{
"name": "arc59_optRouterIn",
"desc": "Opt the ARC59 router into the ASA. This is required before this app can be used to send the ASA to anyone.",
"args": [
{
"name": "asa",
"type": "uint64",
"desc": "The ASA to opt into"
}
],
"returns": {
"type": "void"
}
},
{
"name": "arc59_getOrCreateInbox",
"desc": "Gets the existing inbox for the receiver or creates a new one if it does not exist",
"args": [
{
"name": "receiver",
"type": "address",
"desc": "The address to get or create the inbox for"
}
],
"returns": {
"type": "address",
"desc": "The inbox address"
}
},
{
"name": "arc59_getSendAssetInfo",
"args": [
{
"name": "receiver",
"type": "address",
"desc": "The address to send the asset to"
},
{
"name": "asset",
"type": "uint64",
"desc": "The asset to send"
}
],
"returns": {
"type": "(uint64,uint64,bool,bool)",
"desc": "Returns the following information for sending an asset:The number of itxns required, the MBR required, whether the router is opted in, and whether the receiver is opted in"
}
},
{
"name": "arc59_sendAsset",
"desc": "Send an asset to the receiver",
"args": [
{
"name": "axfer",
"type": "axfer",
"desc": "The asset transfer to this app"
},
{
"name": "receiver",
"type": "address",
"desc": "The address to send the asset to"
}
],
"returns": {
"type": "address",
"desc": "The address that the asset was sent to (either the receiver or their inbox)"
}
},
{
"name": "arc59_claim",
"desc": "Claim an ASA from the inbox",
"args": [
{
"name": "asa",
"type": "uint64",
"desc": "The ASA to claim"
}
],
"returns": {
"type": "void"
}
},
{
"name": "arc59_reject",
"desc": "Reject the ASA by closing it out to the ASA creator. Always sends two inner transactions.All non-MBR ALGO balance in the inbox will be sent to the caller.",
"args": [
{
"name": "asa",
"type": "uint64",
"desc": "The ASA to reject"
}
],
"returns": {
"type": "void"
}
},
{
"name": "arc59_getInbox",
"desc": "Get the inbox address for the given receiver",
"args": [
{
"name": "receiver",
"type": "address",
"desc": "The receiver to get the inbox for"
}
],
"returns": {
"type": "address",
"desc": "Zero address if the receiver does not yet have an inbox, otherwise the inbox address"
}
},
{
"name": "updateApplication",
"args": [],
"returns": {
"type": "void"
}
}
]
}
}