@towns-protocol/generated 0.0.242 → 0.0.245

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/config/deployments.json +12 -4
  2. package/dev/abis/Channels.abi.json +0 -51
  3. package/dev/abis/Channels.abi.ts +0 -51
  4. package/dev/abis/EntitlementsManager.abi.json +0 -51
  5. package/dev/abis/EntitlementsManager.abi.ts +0 -51
  6. package/dev/abis/IAppRegistry.abi.json +244 -59
  7. package/dev/abis/IAppRegistry.abi.ts +244 -59
  8. package/dev/abis/IAppRegistryBase.abi.json +80 -0
  9. package/dev/abis/IAppRegistryBase.abi.ts +80 -0
  10. package/dev/abis/ISpaceDelegation.abi.json +3 -122
  11. package/dev/abis/ISpaceDelegation.abi.ts +3 -122
  12. package/dev/abis/ISpaceDelegationBase.abi.json +3 -44
  13. package/dev/abis/ISpaceDelegationBase.abi.ts +3 -44
  14. package/dev/abis/PrepayFacet.abi.json +0 -51
  15. package/dev/abis/PrepayFacet.abi.ts +0 -51
  16. package/dev/abis/Roles.abi.json +0 -51
  17. package/dev/abis/Roles.abi.ts +0 -51
  18. package/dev/typings/Channels.ts +0 -23
  19. package/dev/typings/EntitlementsManager.ts +0 -23
  20. package/dev/typings/IAppRegistry.ts +299 -73
  21. package/dev/typings/ISpaceDelegation.ts +0 -203
  22. package/dev/typings/PrepayFacet.ts +0 -23
  23. package/dev/typings/Roles.ts +0 -23
  24. package/dev/typings/factories/Channels__factory.ts +1 -52
  25. package/dev/typings/factories/DropFacet__factory.ts +1 -1
  26. package/dev/typings/factories/EntitlementsManager__factory.ts +1 -52
  27. package/dev/typings/factories/IAppRegistry__factory.ts +244 -59
  28. package/dev/typings/factories/ISpaceDelegation__factory.ts +3 -122
  29. package/dev/typings/factories/MembershipFacet__factory.ts +1 -1
  30. package/dev/typings/factories/PrepayFacet__factory.ts +0 -51
  31. package/dev/typings/factories/Roles__factory.ts +1 -52
  32. package/dev/typings/factories/mainnet/Towns__factory.ts +1 -1
  33. package/package.json +2 -2
  34. /package/deployments/alpha/base/addresses/{towns.json → utils/towns.json} +0 -0
  35. /package/deployments/delta/base/addresses/{towns.json → utils/towns.json} +0 -0
  36. /package/deployments/gamma/base/addresses/{towns.json → utils/towns.json} +0 -0
  37. /package/deployments/omega/base/addresses/{towns.json → utils/towns.json} +0 -0
@@ -98,19 +98,6 @@ const _abi = [
98
98
  ],
99
99
  stateMutability: "view",
100
100
  },
101
- {
102
- type: "function",
103
- name: "mainnetDelegation",
104
- inputs: [],
105
- outputs: [
106
- {
107
- name: "",
108
- type: "address",
109
- internalType: "address",
110
- },
111
- ],
112
- stateMutability: "view",
113
- },
114
101
  {
115
102
  type: "function",
116
103
  name: "removeSpaceDelegation",
@@ -124,45 +111,6 @@ const _abi = [
124
111
  outputs: [],
125
112
  stateMutability: "nonpayable",
126
113
  },
127
- {
128
- type: "function",
129
- name: "riverToken",
130
- inputs: [],
131
- outputs: [
132
- {
133
- name: "",
134
- type: "address",
135
- internalType: "address",
136
- },
137
- ],
138
- stateMutability: "view",
139
- },
140
- {
141
- type: "function",
142
- name: "setMainnetDelegation",
143
- inputs: [
144
- {
145
- name: "mainnetDelegation_",
146
- type: "address",
147
- internalType: "address",
148
- },
149
- ],
150
- outputs: [],
151
- stateMutability: "nonpayable",
152
- },
153
- {
154
- type: "function",
155
- name: "setRiverToken",
156
- inputs: [
157
- {
158
- name: "riverToken",
159
- type: "address",
160
- internalType: "address",
161
- },
162
- ],
163
- outputs: [],
164
- stateMutability: "nonpayable",
165
- },
166
114
  {
167
115
  type: "function",
168
116
  name: "setSpaceFactory",
@@ -176,45 +124,6 @@ const _abi = [
176
124
  outputs: [],
177
125
  stateMutability: "nonpayable",
178
126
  },
179
- {
180
- type: "function",
181
- name: "setStakeRequirement",
182
- inputs: [
183
- {
184
- name: "stakeRequirement_",
185
- type: "uint256",
186
- internalType: "uint256",
187
- },
188
- ],
189
- outputs: [],
190
- stateMutability: "nonpayable",
191
- },
192
- {
193
- type: "function",
194
- name: "stakeRequirement",
195
- inputs: [],
196
- outputs: [
197
- {
198
- name: "",
199
- type: "uint256",
200
- internalType: "uint256",
201
- },
202
- ],
203
- stateMutability: "view",
204
- },
205
- {
206
- type: "event",
207
- name: "MainnetDelegationChanged",
208
- inputs: [
209
- {
210
- name: "mainnetDelegation",
211
- type: "address",
212
- indexed: true,
213
- internalType: "address",
214
- },
215
- ],
216
- anonymous: false,
217
- },
218
127
  {
219
128
  type: "event",
220
129
  name: "RiverTokenChanged",
@@ -260,19 +169,6 @@ const _abi = [
260
169
  ],
261
170
  anonymous: false,
262
171
  },
263
- {
264
- type: "event",
265
- name: "StakeRequirementChanged",
266
- inputs: [
267
- {
268
- name: "stakeRequirement",
269
- type: "uint256",
270
- indexed: false,
271
- internalType: "uint256",
272
- },
273
- ],
274
- anonymous: false,
275
- },
276
172
  {
277
173
  type: "error",
278
174
  name: "SpaceDelegation__AlreadyDelegated",
@@ -284,11 +180,6 @@ const _abi = [
284
180
  },
285
181
  ],
286
182
  },
287
- {
288
- type: "error",
289
- name: "SpaceDelegation__AlreadyRegistered",
290
- inputs: [],
291
- },
292
183
  {
293
184
  type: "error",
294
185
  name: "SpaceDelegation__InvalidAddress",
@@ -311,27 +202,17 @@ const _abi = [
311
202
  },
312
203
  {
313
204
  type: "error",
314
- name: "SpaceDelegation__InvalidStatusTransition",
315
- inputs: [],
316
- },
317
- {
318
- type: "error",
319
- name: "SpaceDelegation__NotEnoughStake",
320
- inputs: [],
321
- },
322
- {
323
- type: "error",
324
- name: "SpaceDelegation__NotRegistered",
205
+ name: "SpaceDelegation__NotDelegated",
325
206
  inputs: [],
326
207
  },
327
208
  {
328
209
  type: "error",
329
- name: "SpaceDelegation__NotTransferable",
210
+ name: "SpaceDelegation__NotSpaceMember",
330
211
  inputs: [],
331
212
  },
332
213
  {
333
214
  type: "error",
334
- name: "SpaceDelegation__StatusNotChanged",
215
+ name: "SpaceDelegation__NotSpaceOwner",
335
216
  inputs: [],
336
217
  },
337
218
  ] as const;
@@ -1508,7 +1508,7 @@ const _abi = [
1508
1508
  ] as const;
1509
1509
 
1510
1510
  const _bytecode =
1511
- "0x6080604052348015600e575f5ffd5b5060156019565b60bd565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef520008054640100000000900460ff16156064576040516366008a2d60e01b815260040160405180910390fd5b805463ffffffff908116101560ba57805463ffffffff191663ffffffff90811782556040519081527fe9c9b456cb2994b80aeef036cf59d26e9617df80f816a6ee5a5b4166e07e2f5c9060200160405180910390a15b50565b614f30806100ca5f395ff3fe608060405260043610610162575f3560e01c806379dda585116100c657806393b13cb71161007c578063a5a4103111610057578063a5a41031146103ab578063df9a9fe6146103bf578063e847abdd146103de575f5ffd5b806393b13cb71461035757806395d600c81461037857806397fb7c1e1461038c575f5ffd5b80638120f0ba116100ac5780638120f0ba146102f857806383f3f0dc146103255780638c625b0614610344575f5ffd5b806379dda585146102d15780637c9669ac146102e5575f5ffd5b80635becd24a1161011b578063686f768411610101578063686f76841461028b57806369d5f38a1461029e578063706b8e09146102bd575f5ffd5b80635becd24a14610233578063657e45e814610252575f5ffd5b806317c957091161014b57806317c95709146101ae5780633e9491a2146102025780635803909f14610214575f5ffd5b80630ef1be5f146101665780631278076a14610187575b5f5ffd5b348015610171575f5ffd5b5061018561018036600461435e565b6103f2565b005b348015610192575f5ffd5b5061019b6104a7565b6040519081526020015b60405180910390f35b3480156101b9575f5ffd5b5061019b6101c83660046143cc565b5f9081527f4775a23600034fdd9f073b224f794d51a58b35ba663a9602623ba7a5c09cce00602052604090205467ffffffffffffffff1690565b34801561020d575f5ffd5b504761019b565b34801561021f575f5ffd5b5061019b61022e3660046143cc565b610500565b34801561023e575f5ffd5b5061018561024d3660046143cc565b61055b565b34801561025d575f5ffd5b50610266610642565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a5565b6101856102993660046144ee565b610681565b3480156102a9575f5ffd5b506101856102b83660046143cc565b6106c5565b3480156102c8575f5ffd5b5061019b6107dd565b3480156102dc575f5ffd5b506102666107e6565b6101856102f33660046143cc565b610825565b348015610303575f5ffd5b5061030c610868565b60405167ffffffffffffffff90911681526020016101a5565b348015610330575f5ffd5b5061018561033f3660046145ed565b610871565b610185610352366004614608565b6108eb565b348015610362575f5ffd5b5061036b61091e565b6040516101a5919061466f565b348015610383575f5ffd5b5061019b610928565b348015610397575f5ffd5b506101856103a63660046143cc565b610951565b3480156103b6575f5ffd5b5061019b610a3b565b3480156103ca575f5ffd5b506101856103d9366004614608565b610a92565b3480156103e9575f5ffd5b50610266610b6b565b6103fa610baa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610465576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6104a382828080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c6a92505050565b5050565b5f6104fb6104f67f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b610c95565b905090565b5f610555826105507f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b610e78565b92915050565b610563610baa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105c9576040517f65f4906500000000000000000000000000000000000000000000000000000000815233600482015260240161045c565b5f6105f27fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6035490565b9050801580159061060257508082115b15610630576106307fc3983b9100000000000000000000000000000000000000000000000000000000610ef4565b61063982610efc565b6104a382610fa0565b5f6104fb7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b3068929eee149b4bd21268540361069f5763ab143c065f526004601cfd5b3068929eee149b4bd21268556106b5828261105e565b3868929eee149b4bd21268555050565b6106cd610baa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610733576040517f65f4906500000000000000000000000000000000000000000000000000000000815233600482015260240161045c565b61073c8161115c565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb608546040517f91b7f5ed0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff909116906391b7f5ed906024015f604051808303815f87803b1580156107c4575f5ffd5b505af11580156107d6573d5f5f3e3d5ffd5b5050505050565b5f6104fb611204565b5f6104fb7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff1690565b3068929eee149b4bd2126854036108435763ab143c065f526004601cfd5b3068929eee149b4bd212685561085933826112cf565b3868929eee149b4bd212685550565b5f6104fb611449565b610879610baa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108df576040517f65f4906500000000000000000000000000000000000000000000000000000000815233600482015260240161045c565b6108e88161150c565b50565b3068929eee149b4bd2126854036109095763ab143c065f526004601cfd5b3068929eee149b4bd212685561085981611587565b60606104fb61162a565b5f6104fb7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6035490565b610959610baa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109bf576040517f65f4906500000000000000000000000000000000000000000000000000000000815233600482015260240161045c565b610a1381610a0e7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b6116dc565b6108e8817fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60355565b5f6104fb610a8d6104f67f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b61170d565b610a9a610baa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b00576040517f65f4906500000000000000000000000000000000000000000000000000000000815233600482015260240161045c565b610b0981611880565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905550565b5f6104fb7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6085473ffffffffffffffffffffffffffffffffffffffff1690565b5f807fd2f24d4f172e4e84e48e7c4125b6e904c29e5eba33ad4938fee51dd5dbd4b600805460018201546040517f6352211e000000000000000000000000000000000000000000000000000000008152600481019190915291925073ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa158015610c40573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c649190614681565b91505090565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60c6104a3828261472b565b5f5f610c9f611204565b9050610cdf7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6085473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f5cf4ee91000000000000000000000000000000000000000000000000000000008152600481018390526024810185905273ffffffffffffffffffffffffffffffffffffffff9190911690635cf4ee9190604401602060405180830381865afa158015610d51573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d759190614842565b91505f610d806107e6565b90505f8173ffffffffffffffffffffffffffffffffffffffff16631b159e2e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dcc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df09190614842565b905080841015610e70578173ffffffffffffffffffffffffffffffffffffffff16630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e43573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e679190614842565b95945050505050565b505050919050565b5f8281527fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60960205260408120547fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600908015610eeb575f610ed78261170d565b828118908311029091189250610555915050565b610e6784610c95565b805f5260045ffd5b610f046107e6565b73ffffffffffffffffffffffffffffffffffffffff16632cbb9d136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f4c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f709190614842565b8111156108e8576108e87fc3983b9100000000000000000000000000000000000000000000000000000000610ef4565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6078190557fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6009082907fab14a23e88fb272313490d4f20d63098e64fd38304c0e07a377db98c2b39b92f905f90a25050565b611067826119b9565b5f611070611aaf565b9050801561108057611080611b48565b61108a8383611bd6565b5f8260405160200161109c9190614859565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290507f686f7684000000000000000000000000000000000000000000000000000000005f611103866110fe84338388611c7b565b611cad565b90505f5f611112883385611de8565b9150915080611152578115611148578515611130576111308361203d565b61113a83896121c1565b6111438861224c565b611152565b611152838961233b565b5050505050505050565b5f6111656107e6565b73ffffffffffffffffffffffffffffffffffffffff16630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ad573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d19190614842565b9050808210156104a3576104a37f3447ac8e00000000000000000000000000000000000000000000000000000000610ef4565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60d545f907fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6009060ff161561125b5760070154919050565b6112636107e6565b73ffffffffffffffffffffffffffffffffffffffff16632cbb9d136040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ab573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c649190614842565b5f6112d9826123a1565b905073ffffffffffffffffffffffffffffffffffffffff811661131f5761131f7f5fbd571700000000000000000000000000000000000000000000000000000000610ef4565b5f611328611449565b67ffffffffffffffff1690505f611384846105507f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b9050348111156113b7576113b77f34a7a93d00000000000000000000000000000000000000000000000000000000610ef4565b5f6113c286836123ab565b90505f6113cf82846148e0565b905080156113e3576113e18782612473565b505b5f6113ee84346148e0565b9050801561143f5761143f6114377fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b308a846125e9565b611152878661264d565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065474010000000000000000000000000000000000000000900467ffffffffffffffff165f8190036115095761149d6107e6565b73ffffffffffffffffffffffffffffffffffffffff16638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fb91906148f3565b90565b61151581612748565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb606805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b611590816119b9565b5f611599611aaf565b905080156115a9576115a9611b48565b5f638c625b0660e01b90505f6115d3846110fe84338860405180602001604052805f815250611c7b565b90505f5f6115e2863385611de8565b9150915080611622578115611618578415611600576116008361283e565b61160a83876121c1565b6116138661224c565b611622565b611622838761233b565b505050505050565b60607fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600600c01805461165b9061469c565b80601f01602080910402602001604051908101604052809291908181526020018280546116879061469c565b80156116d25780601f106116a9576101008083540402835291602001916116d2565b820191905f5260205f20905b8154815290600101906020018083116116b557829003601f168201915b5050505050905090565b808210156104a3576104a37fccc9aa2e00000000000000000000000000000000000000000000000000000000610ef4565b5f5f6117176107e6565b90505f8173ffffffffffffffffffffffffffffffffffffffff16631b159e2e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611763573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117879190614842565b905080841015611806578173ffffffffffffffffffffffffffffffffffffffff16630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117fe9190614842565b949350505050565b6117fe848373ffffffffffffffffffffffffffffffffffffffff16639f6542aa6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611853573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611877919061490e565b61ffff1661295c565b73ffffffffffffffffffffffffffffffffffffffff81166118c4576118c47f0e88bf4b00000000000000000000000000000000000000000000000000000000610ef4565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff166040517f8df80bd600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301529190911690638df80bd690602401602060405180830381865afa158015611968573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061198c9190614943565b6108e8576108e87f0e88bf4b00000000000000000000000000000000000000000000000000000000610ef4565b73ffffffffffffffffffffffffffffffffffffffff81166119fd576119fd7f5fbd571700000000000000000000000000000000000000000000000000000000610ef4565b5f611a267fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6035490565b90508015801590611a81575080611a7e7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b10155b156104a3576104a37f7efcdb4900000000000000000000000000000000000000000000000000000000610ef4565b5f5f611afc7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b90505f611b07611204565b90505f611b12612a0d565b905082821115611b25575f935050505090565b8015611b3e57611b356001612a36565b5f935050505090565b6001935050505090565b5f611b976104f67f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b90505f611ba382612a73565b9050803410156104a3576104a37fb1296a8a00000000000000000000000000000000000000000000000000000000610ef4565b602081015173ffffffffffffffffffffffffffffffffffffffff16156104a3578173ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff161480611c4d5750602081015173ffffffffffffffffffffffffffffffffffffffff1633145b156104a3576104a37f5fbd571700000000000000000000000000000000000000000000000000000000610ef4565b606084848484604051602001611c94949392919061495c565b6040516020818303038152906040529050949350505050565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660208201524360348201525f908190605401604051602081830303815290604052805190602001209050611d8c81611d608387611d1386612aa3565b6040805160208082019590955273ffffffffffffffffffffffffffffffffffffffff9390931683820152606080840192909252805180840390920182526080909201909152805191012090565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b91505f611d9883612ae9565b511115611dc857611dc87ff82e65c300000000000000000000000000000000000000000000000000000000610ef4565b611dd28284612bc9565b3415611de157611de182612c21565b5092915050565b5f5f5f611e296040518060400160405280600981526020017f4a6f696e53706163650000000000000000000000000000000000000000000000815250612c7f565b90505f611e3587612e17565b82519091505f5b81811015612030575f848281518110611e5757611e576149d8565b60200260200101519050806040015115611e715750612028565b5f5b816080015151811015612025575f82608001518281518110611e9757611e976149d8565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16630cf0b5335f5f1b886040518060400160405280600981526020017f4a6f696e53706163650000000000000000000000000000000000000000000000815250604051602001611f079190614a05565b604051602081830303815290604052611f1f90614a1b565b6040518463ffffffff1660e01b8152600401611f3d93929190614a5d565b602060405180830381865afa158015611f58573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f7c9190614943565b15611f955750600197505f965061203595505050505050565b8073ffffffffffffffffffffffffffffffffffffffff16632e1b61e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fde573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120029190614943565b1561201c576120178c8c8c84875f015161315b565b600197505b50600101611e73565b50505b600101611e3c565b505050505b935093915050565b5f61208c6104f67f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b90505f61209882612a73565b90505f5f5f5f6120a787612ae9565b8060200190518101906120ba9190614b2d565b929650909450925090507fffffffff0000000000000000000000000000000000000000000000000000000084167f686f76840000000000000000000000000000000000000000000000000000000014612136576121367fda6153bd00000000000000000000000000000000000000000000000000000000610ef4565b5f8180602001905181019061214b9190614bb1565b90505f5f612159868a6123ab565b90505f61216a87855f01518c613377565b90505f61218188866020015187604001518e6134e4565b9050808261218f858d6148e0565b61219991906148e0565b6121a391906148e0565b93505050506121b68986868a858d613666565b505050505050505050565b5f8281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0160205260409020548015612247576121fe83826136f1565b61224761223f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b3084846125e9565b505050565b5f612255613759565b90506122d9816122a96104f67f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b5f9182527fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb609602052604090912055565b6122e4826001613780565b6122f5816122f0611449565b61264d565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907f2f40b0474996b72a4251e00fb9170cdd960deea1dc749772cbbab61395b9b576905f90a35050565b6123538260405180602001604052805f815250612bc9565b61235d82826121c1565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f86fd446d5c04e892d58b448a924dcd9c3ece3a5e0d2960b8c35cd475a5595a1f905f90a25050565b5f61055582613799565b5f6123b58261170d565b90506105556123f87fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b846124016107e6565b73ffffffffffffffffffffffffffffffffffffffff16634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612449573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061246d9190614681565b846125e9565b5f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600816124d47fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b90507fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff821601612536578382600a015f8282546125269190614c59565b9091555084935061055592505050565b5f61255773ffffffffffffffffffffffffffffffffffffffff8316306138ca565b9050612565828730886125e9565b5f61258673ffffffffffffffffffffffffffffffffffffffff8416306138ca565b90505f61259383836148e0565b90508681146125c5576125c57fb1296a8a00000000000000000000000000000000000000000000000000000000610ef4565b8085600a015f8282546125d89190614c59565b909155509098975050505050505050565b8015612647577fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff85160161263b5761263682826138fd565b612647565b6126478484848461391d565b50505050565b5f8281527f4775a23600034fdd9f073b224f794d51a58b35ba663a9602623ba7a5c09cce0060208190526040822054909167ffffffffffffffff909116908181036126a35761269c8442614c6c565b90506126cb565b428267ffffffffffffffff16116126be5761269c8442614c6c565b6126c88483614c6c565b90505b5f858152602084815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8516908117909155915191825286917f2ec2be2c4b90c2cf13ecb6751a24daed6bb741ae5ed3f7371aabf9402f6d62e8910160405180910390a25050505050565b5f6127516107e6565b73ffffffffffffffffffffffffffffffffffffffff16638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612799573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127bd91906148f3565b67ffffffffffffffff1690508167ffffffffffffffff165f03612803576128037f82323d2e00000000000000000000000000000000000000000000000000000000610ef4565b808267ffffffffffffffff1611156104a3576104a37f82323d2e00000000000000000000000000000000000000000000000000000000610ef4565b5f61288d6104f67f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b90505f61289982612a73565b90505f5f5f6128a786612ae9565b8060200190518101906128ba9190614b2d565b50919450925090507fffffffff0000000000000000000000000000000000000000000000000000000083167f8c625b060000000000000000000000000000000000000000000000000000000014612934576129347fda6153bd00000000000000000000000000000000000000000000000000000000610ef4565b5f61293f83876123ab565b90505f61294c82876148e0565b905061115288858589858c613666565b5f6127108211156129ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f426173697320706f696e74732063616e6e6f74206578636565642031305f303060448201527f3000000000000000000000000000000000000000000000000000000000000000606482015260840161045c565b6127106129fc8385614c8c565b612a069190614ca3565b9392505050565b5f7f097b4f25b64e012d0cf55f67e9b34fe5d57f15b11b95baa4ddd136b424967c005b54919050565b7f097b4f25b64e012d0cf55f67e9b34fe5d57f15b11b95baa4ddd136b424967c008054829082905f90612a6a9084906148e0565b90915550505050565b5f5f612a7d612a0d565b90508015612a8d57505f92915050565b825f03612a9c57505f92915050565b5090919050565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0060208190526040822080549083612ade83614cdb565b909155509392505050565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e026020526040902080546060917f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0091612b459061469c565b80601f0160208091040260200160405190810160405280929190818152602001828054612b719061469c565b8015612bbc5780601f10612b9357610100808354040283529160200191612bbc565b820191905f5260205f20905b815481529060010190602001808311612b9f57829003601f168201915b5050505050915050919050565b5f8281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e02602052604090207f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0090612647838261472b565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e016020526040812080547f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0092349291612a6a908490614c59565b60605f612c8a6139b1565b80519091505f8167ffffffffffffffff811115612ca957612ca9614404565b604051908082528060200260200182016040528015612d0c57816020015b612cf96040518060a001604052805f8152602001606081526020015f1515815260200160608152602001606081525090565b815260200190600190039081612cc75790505b50855160208701209091505f90815b84811015612e0b575f5f5f5f612d498a8681518110612d3c57612d3c6149d8565b60200260200101516139dc565b93509350935093505f5b8251811015612dfb5786838281518110612d6f57612d6f6149d8565b60200260200101518051906020012003612df3576040518060a001604052808c8881518110612da057612da06149d8565b60200260200101518152602001868152602001851515815260200184815260200183815250898981518110612dd757612dd76149d8565b602002602001018190525087612dec90614cdb565b9750612dfb565b600101612d53565b5050505050806001019050612d1b565b50508152949350505050565b60605f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600600601546040517f02345b9800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015290911691505f9082906302345b98906024015f60405180830381865afa158015612eae573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612ef39190810190614d12565b905080515f03613064576040517ff821039800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301525f919084169063f821039890602401602060405180830381865afa158015612f6a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f8e9190614681565b905073ffffffffffffffffffffffffffffffffffffffff811615613062576040517f02345b9800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015291955085918416906302345b98906024015f60405180830381865afa15801561301a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261305f9190810190614d12565b91505b505b80515f613072826001614c59565b67ffffffffffffffff81111561308a5761308a614404565b6040519080825280602002602001820160405280156130b3578160200160208202803683370190505b5090505f5b82811015613119578381815181106130d2576130d26149d8565b60200260200101518282815181106130ec576130ec6149d8565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526001016130b8565b508581838151811061312d5761312d6149d8565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015295945050505050565b73ffffffffffffffffffffffffffffffffffffffff851661319f5761319f7f99ef038800000000000000000000000000000000000000000000000000000000610ef4565b73ffffffffffffffffffffffffffffffffffffffff82166131e3576131e37f4bb7c20500000000000000000000000000000000000000000000000000000000610ef4565b5f8381527f9075c515a635ba70c9696f31149324218d75cf00afe836c482e6473f38b19e016020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781556003810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff888116919091179091558251908916938101939093527f9075c515a635ba70c9696f31149324218d75cf00afe836c482e6473f38b19e00939092909101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905284547f21be050a00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff16906321be050a90349061333f908c908b908a908890600401614dc6565b5f604051808303818588803b158015613356575f5ffd5b505af1158015613368573d5f5f3e3d5ffd5b50505050505050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff831661339a57505f612a06565b5f6133d97fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f5cb4f54800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301529190911690635cb4f54890602401608060405180830381865afa158015613445573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134699190614e00565b905080604001515f0361347f575f915050612a06565b61348d83826040015161295c565b91506134dc6134d07fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b868360200151856125e9565b509392505050565b5f82515f14613594575f6134f784613ac8565b604081015190915073ffffffffffffffffffffffffffffffffffffffff16158061352357506020810151155b15613531575f9150506117fe565b61353f83826020015161295c565b915061358e6135827fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b878360400151856125e9565b506117fe565b73ffffffffffffffffffffffffffffffffffffffff8416156117fe578473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036135ea57505f6117fe565b61361b826136167faca21cc4d2a125f3e0ae03aa135d42b2b9177631aca87599d42a68b47e9008015490565b61295c565b90506117fe61365e7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b8686846125e9565b8115613678576136768583612473565b505b61368286846136f1565b61369a8660405180602001604052805f815250612bc9565b5f6136a3613b70565b90505f6136d2825f856040516020016136be91815260200190565b604051602081830303815290604052613c5d565b90506136df828783613cce565b611152826136eb610baa565b83613cce565b5f8281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e016020526040812080547f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e009284929161374f9084906148e0565b9091555050505050565b5f7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00612a30565b6104a3828260405180602001604052805f815250613d56565b5f8181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df046020526040812054907f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00907c01000000000000000000000000000000000000000000000000000000008316900361389757815f036138915780548310613850576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092015f81815260048401602052604090205490929091508115613851575b50919050565b506040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6104a373ffffffffffffffffffffffffffffffffffffffff831682613e1e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160315612647573073ffffffffffffffffffffffffffffffffffffffff84160361398f5761263673ffffffffffffffffffffffffffffffffffffffff85168383613e37565b61264773ffffffffffffffffffffffffffffffffffffffff8516848484613e8a565b60606104fb7f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd01613eec565b5f8181527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd036020526040812080546060929183918291908190613a1e9061469c565b80601f0160208091040260200160405190810160405280929190818152602001828054613a4a9061469c565b8015613a955780601f10613a6c57610100808354040283529160200191613a95565b820191905f5260205f20905b815481529060010190602001808311613a7857829003601f168201915b5050505060018301549196505060ff169350613ab360028201613ef8565b9250613abe81613fcf565b9150509193509193565b613b006040518060600160405280606081526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5080516020808301919091205f9081527faca21cc4d2a125f3e0ae03aa135d42b2b9177631aca87599d42a68b47e9008028252604090819020815160608101835293845280549284019290925260019091015473ffffffffffffffffffffffffffffffffffffffff169082015290565b5f613baf7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f44ab66800000000000000000000000000000000000000000000000000000000081527f526976657241697264726f700000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff91909116906344ab668090602401602060405180830381865afa158015613c39573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fb9190614681565b6040517fdc69fdde0000000000000000000000000000000000000000000000000000000081525f9073ffffffffffffffffffffffffffffffffffffffff85169063dc69fdde90613cb39086908690600401614e7a565b602060405180830381865afa1580156117da573d5f5f3e3d5ffd5b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390528416906340c10f19906044015f604051808303815f87803b158015613d3b575f5ffd5b505af1158015613d4d573d5f5f3e3d5ffd5b50505050505050565b613d608383613fde565b73ffffffffffffffffffffffffffffffffffffffff83163b15612247577f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00548281035b613db55f868380600101945086614193565b613deb576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818110613da357817f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df0054146107d6575f5ffd5b5f385f3884865af16104a35763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f511416613e8057803d853b151710613e80576390b8ec185f526004601cfd5b505f603452505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f511416613ede57803d873b151710613ede57637939f4245f526004601cfd5b505f60605260405250505050565b60605f612a0683614305565b6060815f01805480602002602001604051908101604052809291908181526020015f905b82821015613fc4578382905f5260205f20018054613f399061469c565b80601f0160208091040260200160405190810160405280929190818152602001828054613f659061469c565b8015613fb05780601f10613f8757610100808354040283529160200191613fb0565b820191905f5260205f20905b815481529060010190602001808311613f9357829003601f168201915b505050505081526020019060010190613f1c565b505050509050919050565b60605f612a0683600401613eec565b7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00545f82900361403a576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f8181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df056020908152604080832080546801000000000000000188020190558483527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df0490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146141315780835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f5fa46001016140fb565b50815f0361416b576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df005550505050565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081525f9073ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906141ed903390899088908890600401614ec7565b6020604051808303815f875af1925050508015614245575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261424291810190614f17565b60015b6142ba573d808015614272576040519150601f19603f3d011682016040523d82523d5f602084013e614277565b606091505b5080515f036142b2576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506117fe565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561435257602002820191905f5260205f20905b81548152602001906001019080831161433e575b50505050509050919050565b5f5f6020838503121561436f575f5ffd5b823567ffffffffffffffff811115614385575f5ffd5b8301601f81018513614395575f5ffd5b803567ffffffffffffffff8111156143ab575f5ffd5b8560208284010111156143bc575f5ffd5b6020919091019590945092505050565b5f602082840312156143dc575f5ffd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146108e8575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561445457614454614404565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156144a1576144a1614404565b604052919050565b5f67ffffffffffffffff8211156144c2576144c2614404565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f5f604083850312156144ff575f5ffd5b823561450a816143e3565b9150602083013567ffffffffffffffff811115614525575f5ffd5b830160608186031215614536575f5ffd5b61453e614431565b8135614549816143e3565b81526020820135614559816143e3565b6020820152604082013567ffffffffffffffff811115614577575f5ffd5b80830192505085601f83011261458b575f5ffd5b813561459e614599826144a9565b61445a565b8181528760208386010111156145b2575f5ffd5b816020850160208301375f60208383010152806040840152505080925050509250929050565b67ffffffffffffffff811681146108e8575f5ffd5b5f602082840312156145fd575f5ffd5b8135612a06816145d8565b5f60208284031215614618575f5ffd5b8135612a06816143e3565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f612a066020830184614623565b5f60208284031215614691575f5ffd5b8151612a06816143e3565b600181811c908216806146b057607f821691505b602082108103613891577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b601f82111561224757805f5260205f20601f840160051c8101602085101561470c5750805b601f840160051c820191505b818110156107d6575f8155600101614718565b815167ffffffffffffffff81111561474557614745614404565b61475981614753845461469c565b846146e7565b6020601f8211600181146147aa575f83156147745750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556107d6565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156147f757878501518255602094850194600190920191016147d7565b508482101561483357868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215614852575f5ffd5b5051919050565b6020815273ffffffffffffffffffffffffffffffffffffffff825116602082015273ffffffffffffffffffffffffffffffffffffffff60208301511660408201525f60408301516060808401526117fe6080840182614623565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610555576105556148b3565b5f60208284031215614903575f5ffd5b8151612a06816145d8565b5f6020828403121561491e575f5ffd5b815161ffff81168114612a06575f5ffd5b8051801515811461493e575f5ffd5b919050565b5f60208284031215614953575f5ffd5b612a068261492f565b7fffffffff000000000000000000000000000000000000000000000000000000008516815273ffffffffffffffffffffffffffffffffffffffff8416602082015273ffffffffffffffffffffffffffffffffffffffff83166040820152608060608201525f6149ce6080830184614623565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82518060208501845e5f920191825250919050565b80516020808301519190811015613891577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015614ab457835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101614a80565b505060409390930193909352509392505050565b80517fffffffff000000000000000000000000000000000000000000000000000000008116811461493e575f5ffd5b5f614b04614599846144a9565b9050828152838383011115614b17575f5ffd5b8282602083015e5f602084830101529392505050565b5f5f5f5f60808587031215614b40575f5ffd5b614b4985614ac8565b93506020850151614b59816143e3565b6040860151909350614b6a816143e3565b606086015190925067ffffffffffffffff811115614b86575f5ffd5b8501601f81018713614b96575f5ffd5b614ba587825160208401614af7565b91505092959194509250565b5f60208284031215614bc1575f5ffd5b815167ffffffffffffffff811115614bd7575f5ffd5b820160608185031215614be8575f5ffd5b614bf0614431565b8151614bfb816143e3565b81526020820151614c0b816143e3565b6020820152604082015167ffffffffffffffff811115614c29575f5ffd5b80830192505084601f830112614c3d575f5ffd5b614c4c85835160208501614af7565b6040820152949350505050565b80820180821115610555576105556148b3565b67ffffffffffffffff8181168382160190811115610555576105556148b3565b8082028115828204841417610555576105556148b3565b5f82614cd6577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614d0b57614d0b6148b3565b5060010190565b5f60208284031215614d22575f5ffd5b815167ffffffffffffffff811115614d38575f5ffd5b8201601f81018413614d48575f5ffd5b805167ffffffffffffffff811115614d6257614d62614404565b8060051b614d726020820161445a565b91825260208184018101929081019087841115614d8d575f5ffd5b6020850194505b83851015614dbb5784519250614da9836143e3565b82825260209485019490910190614d94565b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152826040820152608060608201525f6149ce6080830184614623565b5f6080828403128015614e11575f5ffd5b506040516080810167ffffffffffffffff81118282101715614e3557614e35614404565b6040528251614e43816143e3565b81526020830151614e53816143e3565b602082015260408381015190820152614e6e6060840161492f565b60608201529392505050565b5f60048410614eb0577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b838252604060208301526117fe6040830184614623565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff84166020820152826040820152608060608201525f6149ce6080830184614623565b5f60208284031215614f27575f5ffd5b612a0682614ac856";
1511
+ "0x6080604052348015600e575f5ffd5b5060156019565b60bd565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef520008054640100000000900460ff16156064576040516366008a2d60e01b815260040160405180910390fd5b805463ffffffff908116101560ba57805463ffffffff191663ffffffff90811782556040519081527fe9c9b456cb2994b80aeef036cf59d26e9617df80f816a6ee5a5b4166e07e2f5c9060200160405180910390a15b50565b614f64806100ca5f395ff3fe608060405260043610610162575f3560e01c806379dda585116100c657806393b13cb71161007c578063a5a4103111610057578063a5a41031146103ab578063df9a9fe6146103bf578063e847abdd146103de575f5ffd5b806393b13cb71461035757806395d600c81461037857806397fb7c1e1461038c575f5ffd5b80638120f0ba116100ac5780638120f0ba146102f857806383f3f0dc146103255780638c625b0614610344575f5ffd5b806379dda585146102d15780637c9669ac146102e5575f5ffd5b80635becd24a1161011b578063686f768411610101578063686f76841461028b57806369d5f38a1461029e578063706b8e09146102bd575f5ffd5b80635becd24a14610233578063657e45e814610252575f5ffd5b806317c957091161014b57806317c95709146101ae5780633e9491a2146102025780635803909f14610214575f5ffd5b80630ef1be5f146101665780631278076a14610187575b5f5ffd5b348015610171575f5ffd5b50610185610180366004614392565b6103f2565b005b348015610192575f5ffd5b5061019b6104a7565b6040519081526020015b60405180910390f35b3480156101b9575f5ffd5b5061019b6101c8366004614400565b5f9081527f4775a23600034fdd9f073b224f794d51a58b35ba663a9602623ba7a5c09cce00602052604090205467ffffffffffffffff1690565b34801561020d575f5ffd5b504761019b565b34801561021f575f5ffd5b5061019b61022e366004614400565b610500565b34801561023e575f5ffd5b5061018561024d366004614400565b61055b565b34801561025d575f5ffd5b50610266610642565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a5565b610185610299366004614522565b610681565b3480156102a9575f5ffd5b506101856102b8366004614400565b6106c5565b3480156102c8575f5ffd5b5061019b6107dd565b3480156102dc575f5ffd5b506102666107e6565b6101856102f3366004614400565b610825565b348015610303575f5ffd5b5061030c610868565b60405167ffffffffffffffff90911681526020016101a5565b348015610330575f5ffd5b5061018561033f366004614621565b610871565b61018561035236600461463c565b6108eb565b348015610362575f5ffd5b5061036b61091e565b6040516101a591906146a3565b348015610383575f5ffd5b5061019b610928565b348015610397575f5ffd5b506101856103a6366004614400565b610951565b3480156103b6575f5ffd5b5061019b610a3b565b3480156103ca575f5ffd5b506101856103d936600461463c565b610a92565b3480156103e9575f5ffd5b50610266610b6b565b6103fa610baa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610465576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6104a382828080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c6a92505050565b5050565b5f6104fb6104f67f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b610c95565b905090565b5f610555826105507f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b610e78565b92915050565b610563610baa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105c9576040517f65f4906500000000000000000000000000000000000000000000000000000000815233600482015260240161045c565b5f6105f27fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6035490565b9050801580159061060257508082115b15610630576106307fc3983b9100000000000000000000000000000000000000000000000000000000610f61565b61063982610f69565b6104a38261100d565b5f6104fb7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b3068929eee149b4bd21268540361069f5763ab143c065f526004601cfd5b3068929eee149b4bd21268556106b582826110cb565b3868929eee149b4bd21268555050565b6106cd610baa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610733576040517f65f4906500000000000000000000000000000000000000000000000000000000815233600482015260240161045c565b61073c816111c9565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb608546040517f91b7f5ed0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff909116906391b7f5ed906024015f604051808303815f87803b1580156107c4575f5ffd5b505af11580156107d6573d5f5f3e3d5ffd5b5050505050565b5f6104fb611271565b5f6104fb7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff1690565b3068929eee149b4bd2126854036108435763ab143c065f526004601cfd5b3068929eee149b4bd2126855610859338261133c565b3868929eee149b4bd212685550565b5f6104fb6114b6565b610879610baa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108df576040517f65f4906500000000000000000000000000000000000000000000000000000000815233600482015260240161045c565b6108e881611579565b50565b3068929eee149b4bd2126854036109095763ab143c065f526004601cfd5b3068929eee149b4bd2126855610859816115f4565b60606104fb611697565b5f6104fb7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6035490565b610959610baa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109bf576040517f65f4906500000000000000000000000000000000000000000000000000000000815233600482015260240161045c565b610a1381610a0e7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b611749565b6108e8817fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60355565b5f6104fb610a8d6104f67f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b61177a565b610a9a610baa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b00576040517f65f4906500000000000000000000000000000000000000000000000000000000815233600482015260240161045c565b610b09816118ed565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905550565b5f6104fb7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6085473ffffffffffffffffffffffffffffffffffffffff1690565b5f807fd2f24d4f172e4e84e48e7c4125b6e904c29e5eba33ad4938fee51dd5dbd4b600805460018201546040517f6352211e000000000000000000000000000000000000000000000000000000008152600481019190915291925073ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa158015610c40573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6491906146b5565b91505090565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60c6104a3828261475f565b5f5f610c9f611271565b9050610cdf7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6085473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f5cf4ee91000000000000000000000000000000000000000000000000000000008152600481018390526024810185905273ffffffffffffffffffffffffffffffffffffffff9190911690635cf4ee9190604401602060405180830381865afa158015610d51573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d759190614876565b91505f610d806107e6565b90505f8173ffffffffffffffffffffffffffffffffffffffff16631b159e2e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dcc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df09190614876565b905080841015610e70578173ffffffffffffffffffffffffffffffffffffffff16630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e43573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e679190614876565b95945050505050565b505050919050565b5f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60081610ea36107e6565b90505f8173ffffffffffffffffffffffffffffffffffffffff16631b159e2e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eef573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f139190614876565b5f8781526009850160205260409020549091508015610f4057818110828218028118945050505050610555565b5f610f4a87610c95565b905082811083821802811898975050505050505050565b805f5260045ffd5b610f716107e6565b73ffffffffffffffffffffffffffffffffffffffff16632cbb9d136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fdd9190614876565b8111156108e8576108e87fc3983b9100000000000000000000000000000000000000000000000000000000610f61565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6078190557fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6009082907fab14a23e88fb272313490d4f20d63098e64fd38304c0e07a377db98c2b39b92f905f90a25050565b6110d482611a26565b5f6110dd611b1c565b905080156110ed576110ed611bb5565b6110f78383611c43565b5f82604051602001611109919061488d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290507f686f7684000000000000000000000000000000000000000000000000000000005f6111708661116b84338388611ce8565b611d1a565b90505f5f61117f883385611e55565b91509150806111bf5781156111b557851561119d5761119d836120aa565b6111a7838961222e565b6111b0886122b9565b6111bf565b6111bf83896123a8565b5050505050505050565b5f6111d26107e6565b73ffffffffffffffffffffffffffffffffffffffff16630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561121a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123e9190614876565b9050808210156104a3576104a37f3447ac8e00000000000000000000000000000000000000000000000000000000610f61565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60d545f907fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6009060ff16156112c85760070154919050565b6112d06107e6565b73ffffffffffffffffffffffffffffffffffffffff16632cbb9d136040518163ffffffff1660e01b8152600401602060405180830381865afa158015611318573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c649190614876565b5f6113468261240e565b905073ffffffffffffffffffffffffffffffffffffffff811661138c5761138c7f5fbd571700000000000000000000000000000000000000000000000000000000610f61565b5f6113956114b6565b67ffffffffffffffff1690505f6113f1846105507f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b905034811115611424576114247f34a7a93d00000000000000000000000000000000000000000000000000000000610f61565b5f61142f8683612418565b90505f61143c8284614914565b905080156114505761144e87826124e0565b505b5f61145b8434614914565b905080156114ac576114ac6114a47fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b308a84612656565b6111bf87866126ba565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065474010000000000000000000000000000000000000000900467ffffffffffffffff165f8190036115765761150a6107e6565b73ffffffffffffffffffffffffffffffffffffffff16638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611552573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fb9190614927565b90565b611582816127e8565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb606805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6115fd81611a26565b5f611606611b1c565b9050801561161657611616611bb5565b5f638c625b0660e01b90505f6116408461116b84338860405180602001604052805f815250611ce8565b90505f5f61164f863385611e55565b915091508061168f57811561168557841561166d5761166d836128de565b611677838761222e565b611680866122b9565b61168f565b61168f83876123a8565b505050505050565b60607fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600600c0180546116c8906146d0565b80601f01602080910402602001604051908101604052809291908181526020018280546116f4906146d0565b801561173f5780601f106117165761010080835404028352916020019161173f565b820191905f5260205f20905b81548152906001019060200180831161172257829003601f168201915b5050505050905090565b808210156104a3576104a37fccc9aa2e00000000000000000000000000000000000000000000000000000000610f61565b5f5f6117846107e6565b90505f8173ffffffffffffffffffffffffffffffffffffffff16631b159e2e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f49190614876565b905080841015611873578173ffffffffffffffffffffffffffffffffffffffff16630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611847573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061186b9190614876565b949350505050565b61186b848373ffffffffffffffffffffffffffffffffffffffff16639f6542aa6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118e49190614942565b61ffff166129fc565b73ffffffffffffffffffffffffffffffffffffffff8116611931576119317f0e88bf4b00000000000000000000000000000000000000000000000000000000610f61565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff166040517f8df80bd600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301529190911690638df80bd690602401602060405180830381865afa1580156119d5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119f99190614977565b6108e8576108e87f0e88bf4b00000000000000000000000000000000000000000000000000000000610f61565b73ffffffffffffffffffffffffffffffffffffffff8116611a6a57611a6a7f5fbd571700000000000000000000000000000000000000000000000000000000610f61565b5f611a937fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6035490565b90508015801590611aee575080611aeb7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b10155b156104a3576104a37f7efcdb4900000000000000000000000000000000000000000000000000000000610f61565b5f5f611b697f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b90505f611b74611271565b90505f611b7f612a4f565b905082821115611b92575f935050505090565b8015611bab57611ba26001612a78565b5f935050505090565b6001935050505090565b5f611c046104f67f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b90505f611c1082612ab5565b9050803410156104a3576104a37fb1296a8a00000000000000000000000000000000000000000000000000000000610f61565b602081015173ffffffffffffffffffffffffffffffffffffffff16156104a3578173ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff161480611cba5750602081015173ffffffffffffffffffffffffffffffffffffffff1633145b156104a3576104a37f5fbd571700000000000000000000000000000000000000000000000000000000610f61565b606084848484604051602001611d019493929190614990565b6040516020818303038152906040529050949350505050565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660208201524360348201525f908190605401604051602081830303815290604052805190602001209050611df981611dcd8387611d8086612ae5565b6040805160208082019590955273ffffffffffffffffffffffffffffffffffffffff9390931683820152606080840192909252805180840390920182526080909201909152805191012090565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b91505f611e0583612b2b565b511115611e3557611e357ff82e65c300000000000000000000000000000000000000000000000000000000610f61565b611e3f8284612c0b565b3415611e4e57611e4e82612c63565b5092915050565b5f5f5f611e966040518060400160405280600981526020017f4a6f696e53706163650000000000000000000000000000000000000000000000815250612cc1565b90505f611ea287612e59565b82519091505f5b8181101561209d575f848281518110611ec457611ec4614a0c565b60200260200101519050806040015115611ede5750612095565b5f5b816080015151811015612092575f82608001518281518110611f0457611f04614a0c565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16630cf0b5335f5f1b886040518060400160405280600981526020017f4a6f696e53706163650000000000000000000000000000000000000000000000815250604051602001611f749190614a39565b604051602081830303815290604052611f8c90614a4f565b6040518463ffffffff1660e01b8152600401611faa93929190614a91565b602060405180830381865afa158015611fc5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fe99190614977565b156120025750600197505f96506120a295505050505050565b8073ffffffffffffffffffffffffffffffffffffffff16632e1b61e46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561204b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061206f9190614977565b15612089576120848c8c8c84875f015161319d565b600197505b50600101611ee0565b50505b600101611ea9565b505050505b935093915050565b5f6120f96104f67f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b90505f61210582612ab5565b90505f5f5f5f61211487612b2b565b8060200190518101906121279190614b61565b929650909450925090507fffffffff0000000000000000000000000000000000000000000000000000000084167f686f768400000000000000000000000000000000000000000000000000000000146121a3576121a37fda6153bd00000000000000000000000000000000000000000000000000000000610f61565b5f818060200190518101906121b89190614be5565b90505f5f6121c6868a612418565b90505f6121d787855f01518c6133b9565b90505f6121ee88866020015187604001518e613526565b905080826121fc858d614914565b6122069190614914565b6122109190614914565b93505050506122238986868a858d6136a8565b505050505050505050565b5f8281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e01602052604090205480156122b45761226b8382613733565b6122b46122ac7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b308484612656565b505050565b5f6122c261379b565b9050612346816123166104f67f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b5f9182527fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb609602052604090912055565b6123518260016137c2565b6123628161235d6114b6565b6126ba565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907f2f40b0474996b72a4251e00fb9170cdd960deea1dc749772cbbab61395b9b576905f90a35050565b6123c08260405180602001604052805f815250612c0b565b6123ca828261222e565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f86fd446d5c04e892d58b448a924dcd9c3ece3a5e0d2960b8c35cd475a5595a1f905f90a25050565b5f610555826137db565b5f6124228261177a565b90506105556124657fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b8461246e6107e6565b73ffffffffffffffffffffffffffffffffffffffff16634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124da91906146b5565b84612656565b5f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600816125417fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b90507fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff8216016125a3578382600a015f8282546125939190614c8d565b9091555084935061055592505050565b5f6125c473ffffffffffffffffffffffffffffffffffffffff83163061390c565b90506125d282873088612656565b5f6125f373ffffffffffffffffffffffffffffffffffffffff84163061390c565b90505f6126008383614914565b9050868114612632576126327fb1296a8a00000000000000000000000000000000000000000000000000000000610f61565b8085600a015f8282546126459190614c8d565b909155509098975050505050505050565b80156126b4577fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff8516016126a8576126a3828261393f565b6126b4565b6126b48484848461395f565b50505050565b5f8281527f4775a23600034fdd9f073b224f794d51a58b35ba663a9602623ba7a5c09cce00602081905260409091205467ffffffffffffffff16801580159061270057505f5b1561273a576040517ff7d2131a0000000000000000000000000000000000000000000000000000000081526004810185905260240161045c565b5f428267ffffffffffffffff16111561275e576127578483614ca0565b905061276b565b6127688442614ca0565b90505b5f858152602084815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8516908117909155915191825286917f2ec2be2c4b90c2cf13ecb6751a24daed6bb741ae5ed3f7371aabf9402f6d62e8910160405180910390a25050505050565b5f6127f16107e6565b73ffffffffffffffffffffffffffffffffffffffff16638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612839573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061285d9190614927565b67ffffffffffffffff1690508167ffffffffffffffff165f036128a3576128a37f82323d2e00000000000000000000000000000000000000000000000000000000610f61565b808267ffffffffffffffff1611156104a3576104a37f82323d2e00000000000000000000000000000000000000000000000000000000610f61565b5f61292d6104f67f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b90505f61293982612ab5565b90505f5f5f61294786612b2b565b80602001905181019061295a9190614b61565b50919450925090507fffffffff0000000000000000000000000000000000000000000000000000000083167f8c625b0600000000000000000000000000000000000000000000000000000000146129d4576129d47fda6153bd00000000000000000000000000000000000000000000000000000000610f61565b5f6129df8387612418565b90505f6129ec8287614914565b90506111bf88858589858c6136a8565b5f612710821115612a3157612a317f197f196200000000000000000000000000000000000000000000000000000000836139f3565b612710612a3e8385614cc0565b612a489190614cd7565b9392505050565b5f7f097b4f25b64e012d0cf55f67e9b34fe5d57f15b11b95baa4ddd136b424967c005b54919050565b7f097b4f25b64e012d0cf55f67e9b34fe5d57f15b11b95baa4ddd136b424967c008054829082905f90612aac908490614914565b90915550505050565b5f5f612abf612a4f565b90508015612acf57505f92915050565b825f03612ade57505f92915050565b5090919050565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0060208190526040822080549083612b2083614d0f565b909155509392505050565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e026020526040902080546060917f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0091612b87906146d0565b80601f0160208091040260200160405190810160405280929190818152602001828054612bb3906146d0565b8015612bfe5780601f10612bd557610100808354040283529160200191612bfe565b820191905f5260205f20905b815481529060010190602001808311612be157829003601f168201915b5050505050915050919050565b5f8281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e02602052604090207f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e00906126b4838261475f565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e016020526040812080547f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0092349291612aac908490614c8d565b60605f612ccc6139ff565b80519091505f8167ffffffffffffffff811115612ceb57612ceb614438565b604051908082528060200260200182016040528015612d4e57816020015b612d3b6040518060a001604052805f8152602001606081526020015f1515815260200160608152602001606081525090565b815260200190600190039081612d095790505b50855160208701209091505f90815b84811015612e4d575f5f5f5f612d8b8a8681518110612d7e57612d7e614a0c565b6020026020010151613a2a565b93509350935093505f5b8251811015612e3d5786838281518110612db157612db1614a0c565b60200260200101518051906020012003612e35576040518060a001604052808c8881518110612de257612de2614a0c565b60200260200101518152602001868152602001851515815260200184815260200183815250898981518110612e1957612e19614a0c565b602002602001018190525087612e2e90614d0f565b9750612e3d565b600101612d95565b5050505050806001019050612d5d565b50508152949350505050565b60605f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600600601546040517f02345b9800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015290911691505f9082906302345b98906024015f60405180830381865afa158015612ef0573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612f359190810190614d46565b905080515f036130a6576040517ff821039800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301525f919084169063f821039890602401602060405180830381865afa158015612fac573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fd091906146b5565b905073ffffffffffffffffffffffffffffffffffffffff8116156130a4576040517f02345b9800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015291955085918416906302345b98906024015f60405180830381865afa15801561305c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526130a19190810190614d46565b91505b505b80515f6130b4826001614c8d565b67ffffffffffffffff8111156130cc576130cc614438565b6040519080825280602002602001820160405280156130f5578160200160208202803683370190505b5090505f5b8281101561315b5783818151811061311457613114614a0c565b602002602001015182828151811061312e5761312e614a0c565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526001016130fa565b508581838151811061316f5761316f614a0c565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015295945050505050565b73ffffffffffffffffffffffffffffffffffffffff85166131e1576131e17f99ef038800000000000000000000000000000000000000000000000000000000610f61565b73ffffffffffffffffffffffffffffffffffffffff8216613225576132257f4bb7c20500000000000000000000000000000000000000000000000000000000610f61565b5f8381527f9075c515a635ba70c9696f31149324218d75cf00afe836c482e6473f38b19e016020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781556003810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff888116919091179091558251908916938101939093527f9075c515a635ba70c9696f31149324218d75cf00afe836c482e6473f38b19e00939092909101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905284547f21be050a00000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff16906321be050a903490613381908c908b908a908890600401614dfa565b5f604051808303818588803b158015613398575f5ffd5b505af11580156133aa573d5f5f3e3d5ffd5b50505050505050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff83166133dc57505f612a48565b5f61341b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f5cb4f54800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301529190911690635cb4f54890602401608060405180830381865afa158015613487573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ab9190614e34565b905080604001515f036134c1575f915050612a48565b6134cf8382604001516129fc565b915061351e6135127fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b86836020015185612656565b509392505050565b5f82515f146135d6575f61353984613b16565b604081015190915073ffffffffffffffffffffffffffffffffffffffff16158061356557506020810151155b15613573575f91505061186b565b6135818382602001516129fc565b91506135d06135c47fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b87836040015185612656565b5061186b565b73ffffffffffffffffffffffffffffffffffffffff84161561186b578473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361362c57505f61186b565b61365d826136587faca21cc4d2a125f3e0ae03aa135d42b2b9177631aca87599d42a68b47e9008015490565b6129fc565b905061186b6136a07fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1690565b868684612656565b81156136ba576136b885836124e0565b505b6136c48684613733565b6136dc8660405180602001604052805f815250612c0b565b5f6136e5613bbe565b90505f613714825f8560405160200161370091815260200190565b604051602081830303815290604052613c91565b9050613721828783613d02565b6111bf8261372d610baa565b83613d02565b5f8281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e016020526040812080547f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0092849291613791908490614914565b9091555050505050565b5f7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00612a72565b6104a3828260405180602001604052805f815250613d8a565b5f8181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df046020526040812054907f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00907c0100000000000000000000000000000000000000000000000000000000831690036138d957815f036138d35780548310613892576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092015f81815260048401602052604090205490929091508115613893575b50919050565b506040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6104a373ffffffffffffffffffffffffffffffffffffffff831682613e52565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603156126b4573073ffffffffffffffffffffffffffffffffffffffff8416036139d1576126a373ffffffffffffffffffffffffffffffffffffffff85168383613e6b565b6126b473ffffffffffffffffffffffffffffffffffffffff8516848484613ebe565b815f528060045260245ffd5b60606104fb7f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd01613f20565b5f8181527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd036020526040812080546060929183918291908190613a6c906146d0565b80601f0160208091040260200160405190810160405280929190818152602001828054613a98906146d0565b8015613ae35780601f10613aba57610100808354040283529160200191613ae3565b820191905f5260205f20905b815481529060010190602001808311613ac657829003601f168201915b5050505060018301549196505060ff169350613b0160028201613f2c565b9250613b0c81614003565b9150509193509193565b613b4e6040518060600160405280606081526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5080516020808301919091205f9081527faca21cc4d2a125f3e0ae03aa135d42b2b9177631aca87599d42a68b47e9008028252604090819020815160608101835293845280549284019290925260019091015473ffffffffffffffffffffffffffffffffffffffff169082015290565b5f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600600601546040517f44ab66800000000000000000000000000000000000000000000000000000000081527f526976657241697264726f700000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116906344ab668090602401602060405180830381865afa158015613c6d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fb91906146b5565b6040517fdc69fdde0000000000000000000000000000000000000000000000000000000081525f9073ffffffffffffffffffffffffffffffffffffffff85169063dc69fdde90613ce79086908690600401614eae565b602060405180830381865afa158015611847573d5f5f3e3d5ffd5b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390528416906340c10f19906044015f604051808303815f87803b158015613d6f575f5ffd5b505af1158015613d81573d5f5f3e3d5ffd5b50505050505050565b613d948383614012565b73ffffffffffffffffffffffffffffffffffffffff83163b156122b4577f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00548281035b613de95f8683806001019450866141c7565b613e1f576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818110613dd757817f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df0054146107d6575f5ffd5b5f385f3884865af16104a35763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f511416613eb457803d853b151710613eb4576390b8ec185f526004601cfd5b505f603452505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f511416613f1257803d873b151710613f1257637939f4245f526004601cfd5b505f60605260405250505050565b60605f612a4883614339565b6060815f01805480602002602001604051908101604052809291908181526020015f905b82821015613ff8578382905f5260205f20018054613f6d906146d0565b80601f0160208091040260200160405190810160405280929190818152602001828054613f99906146d0565b8015613fe45780601f10613fbb57610100808354040283529160200191613fe4565b820191905f5260205f20905b815481529060010190602001808311613fc757829003601f168201915b505050505081526020019060010190613f50565b505050509050919050565b60605f612a4883600401613f20565b7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00545f82900361406e576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f8181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df056020908152604080832080546801000000000000000188020190558483527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df0490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146141655780835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f5fa460010161412f565b50815f0361419f576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df005550505050565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081525f9073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290614221903390899088908890600401614efb565b6020604051808303815f875af1925050508015614279575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261427691810190614f4b565b60015b6142ee573d8080156142a6576040519150601f19603f3d011682016040523d82523d5f602084013e6142ab565b606091505b5080515f036142e6576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a020000000000000000000000000000000000000000000000000000000014905061186b565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561438657602002820191905f5260205f20905b815481526020019060010190808311614372575b50505050509050919050565b5f5f602083850312156143a3575f5ffd5b823567ffffffffffffffff8111156143b9575f5ffd5b8301601f810185136143c9575f5ffd5b803567ffffffffffffffff8111156143df575f5ffd5b8560208284010111156143f0575f5ffd5b6020919091019590945092505050565b5f60208284031215614410575f5ffd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146108e8575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561448857614488614438565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156144d5576144d5614438565b604052919050565b5f67ffffffffffffffff8211156144f6576144f6614438565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f5f60408385031215614533575f5ffd5b823561453e81614417565b9150602083013567ffffffffffffffff811115614559575f5ffd5b83016060818603121561456a575f5ffd5b614572614465565b813561457d81614417565b8152602082013561458d81614417565b6020820152604082013567ffffffffffffffff8111156145ab575f5ffd5b80830192505085601f8301126145bf575f5ffd5b81356145d26145cd826144dd565b61448e565b8181528760208386010111156145e6575f5ffd5b816020850160208301375f60208383010152806040840152505080925050509250929050565b67ffffffffffffffff811681146108e8575f5ffd5b5f60208284031215614631575f5ffd5b8135612a488161460c565b5f6020828403121561464c575f5ffd5b8135612a4881614417565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f612a486020830184614657565b5f602082840312156146c5575f5ffd5b8151612a4881614417565b600181811c908216806146e457607f821691505b6020821081036138d3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b601f8211156122b457805f5260205f20601f840160051c810160208510156147405750805b601f840160051c820191505b818110156107d6575f815560010161474c565b815167ffffffffffffffff81111561477957614779614438565b61478d8161478784546146d0565b8461471b565b6020601f8211600181146147de575f83156147a85750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556107d6565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b8281101561482b578785015182556020948501946001909201910161480b565b508482101561486757868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215614886575f5ffd5b5051919050565b6020815273ffffffffffffffffffffffffffffffffffffffff825116602082015273ffffffffffffffffffffffffffffffffffffffff60208301511660408201525f604083015160608084015261186b6080840182614657565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610555576105556148e7565b5f60208284031215614937575f5ffd5b8151612a488161460c565b5f60208284031215614952575f5ffd5b815161ffff81168114612a48575f5ffd5b80518015158114614972575f5ffd5b919050565b5f60208284031215614987575f5ffd5b612a4882614963565b7fffffffff000000000000000000000000000000000000000000000000000000008516815273ffffffffffffffffffffffffffffffffffffffff8416602082015273ffffffffffffffffffffffffffffffffffffffff83166040820152608060608201525f614a026080830184614657565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82518060208501845e5f920191825250919050565b805160208083015191908110156138d3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015614ae857835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101614ab4565b505060409390930193909352509392505050565b80517fffffffff0000000000000000000000000000000000000000000000000000000081168114614972575f5ffd5b5f614b386145cd846144dd565b9050828152838383011115614b4b575f5ffd5b8282602083015e5f602084830101529392505050565b5f5f5f5f60808587031215614b74575f5ffd5b614b7d85614afc565b93506020850151614b8d81614417565b6040860151909350614b9e81614417565b606086015190925067ffffffffffffffff811115614bba575f5ffd5b8501601f81018713614bca575f5ffd5b614bd987825160208401614b2b565b91505092959194509250565b5f60208284031215614bf5575f5ffd5b815167ffffffffffffffff811115614c0b575f5ffd5b820160608185031215614c1c575f5ffd5b614c24614465565b8151614c2f81614417565b81526020820151614c3f81614417565b6020820152604082015167ffffffffffffffff811115614c5d575f5ffd5b80830192505084601f830112614c71575f5ffd5b614c8085835160208501614b2b565b6040820152949350505050565b80820180821115610555576105556148e7565b67ffffffffffffffff8181168382160190811115610555576105556148e7565b8082028115828204841417610555576105556148e7565b5f82614d0a577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614d3f57614d3f6148e7565b5060010190565b5f60208284031215614d56575f5ffd5b815167ffffffffffffffff811115614d6c575f5ffd5b8201601f81018413614d7c575f5ffd5b805167ffffffffffffffff811115614d9657614d96614438565b8060051b614da66020820161448e565b91825260208184018101929081019087841115614dc1575f5ffd5b6020850194505b83851015614def5784519250614ddd83614417565b82825260209485019490910190614dc8565b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152826040820152608060608201525f614a026080830184614657565b5f6080828403128015614e45575f5ffd5b506040516080810167ffffffffffffffff81118282101715614e6957614e69614438565b6040528251614e7781614417565b81526020830151614e8781614417565b602082015260408381015190820152614ea260608401614963565b60608201529392505050565b5f60048410614ee4577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8382526040602083015261186b6040830184614657565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff84166020820152826040820152608060608201525f614a026080830184614657565b5f60208284031215614f5b575f5ffd5b612a4882614afc56";
1512
1512
 
1513
1513
  type MembershipFacetConstructorParams =
1514
1514
  | [signer?: Signer]
@@ -243,25 +243,6 @@ const _abi = [
243
243
  ],
244
244
  anonymous: false,
245
245
  },
246
- {
247
- type: "event",
248
- name: "SubscriptionUpdate",
249
- inputs: [
250
- {
251
- name: "tokenId",
252
- type: "uint256",
253
- indexed: true,
254
- internalType: "uint256",
255
- },
256
- {
257
- name: "expiration",
258
- type: "uint64",
259
- indexed: false,
260
- internalType: "uint64",
261
- },
262
- ],
263
- anonymous: false,
264
- },
265
246
  {
266
247
  type: "event",
267
248
  name: "Transfer",
@@ -377,38 +358,6 @@ const _abi = [
377
358
  },
378
359
  ],
379
360
  },
380
- {
381
- type: "error",
382
- name: "ERC5643__DurationZero",
383
- inputs: [],
384
- },
385
- {
386
- type: "error",
387
- name: "ERC5643__InvalidTokenId",
388
- inputs: [
389
- {
390
- name: "tokenId",
391
- type: "uint256",
392
- internalType: "uint256",
393
- },
394
- ],
395
- },
396
- {
397
- type: "error",
398
- name: "ERC5643__NotApprovedOrOwner",
399
- inputs: [],
400
- },
401
- {
402
- type: "error",
403
- name: "ERC5643__SubscriptionNotRenewable",
404
- inputs: [
405
- {
406
- name: "tokenId",
407
- type: "uint256",
408
- internalType: "uint256",
409
- },
410
- ],
411
- },
412
361
  {
413
362
  type: "error",
414
363
  name: "Entitlement__InvalidValue",
@@ -631,25 +631,6 @@ const _abi = [
631
631
  ],
632
632
  anonymous: false,
633
633
  },
634
- {
635
- type: "event",
636
- name: "SubscriptionUpdate",
637
- inputs: [
638
- {
639
- name: "tokenId",
640
- type: "uint256",
641
- indexed: true,
642
- internalType: "uint256",
643
- },
644
- {
645
- name: "expiration",
646
- type: "uint64",
647
- indexed: false,
648
- internalType: "uint64",
649
- },
650
- ],
651
- anonymous: false,
652
- },
653
634
  {
654
635
  type: "event",
655
636
  name: "Transfer",
@@ -765,38 +746,6 @@ const _abi = [
765
746
  },
766
747
  ],
767
748
  },
768
- {
769
- type: "error",
770
- name: "ERC5643__DurationZero",
771
- inputs: [],
772
- },
773
- {
774
- type: "error",
775
- name: "ERC5643__InvalidTokenId",
776
- inputs: [
777
- {
778
- name: "tokenId",
779
- type: "uint256",
780
- internalType: "uint256",
781
- },
782
- ],
783
- },
784
- {
785
- type: "error",
786
- name: "ERC5643__NotApprovedOrOwner",
787
- inputs: [],
788
- },
789
- {
790
- type: "error",
791
- name: "ERC5643__SubscriptionNotRenewable",
792
- inputs: [
793
- {
794
- name: "tokenId",
795
- type: "uint256",
796
- internalType: "uint256",
797
- },
798
- ],
799
- },
800
749
  {
801
750
  type: "error",
802
751
  name: "Entitlement__InvalidValue",
@@ -951,7 +900,7 @@ const _abi = [
951
900
  ] as const;
952
901
 
953
902
  const _bytecode =
954
- "0x6080604052348015600e575f5ffd5b506139428061001c5f395ff3fe608060405234801561000f575f5ffd5b50600436106100da575f3560e01c80639a8e4c3e11610088578063ba201ba811610063578063ba201ba8146101be578063bd9af74a146101d1578063d2dea2b9146101e4578063dba81864146101f7575f5ffd5b80639a8e4c3e14610185578063b426423314610198578063b7515761146101ab575f5ffd5b8063784c872b116100b8578063784c872b146101315780638fcd793d146101515780639269182114610172575f5ffd5b80634d8b50a2146100de57806365634a48146100f3578063710613981461011c575b5f5ffd5b6100f16100ec366004612cea565b61020a565b005b610106610101366004612d92565b610260565b6040516101139190612dfe565b60405180910390f35b610124610275565b6040516101139190612f9a565b61014461013f36600461300f565b610284565b6040516101139190613026565b61016461015f366004613038565b6102c8565b604051908152602001610113565b6100f161018036600461300f565b610320565b6100f16101933660046130d7565b61036a565b6101066101a636600461300f565b6103ed565b6100f16101b93660046130d7565b610428565b6100f16101cc36600461311f565b6104a6565b6100f16101df366004613169565b6104f2565b6100f16101f2366004612d92565b610542565b6100f161020536600461311f565b61058a565b6102486040518060400160405280601381526020017f4d6f64696679537061636553657474696e6773000000000000000000000000008152506105d2565b61025787878787878787610609565b50505050505050565b606061026c83836109bf565b90505b92915050565b606061027f610a13565b905090565b6102b66040518060a001604052805f8152602001606081526020015f1515815260200160608152602001606081525090565b6102bf82610b4e565b61026f82610ba5565b5f6103076040518060400160405280601381526020017f4d6f64696679537061636553657474696e6773000000000000000000000000008152506105d2565b610315878787878787610c1a565b979650505050505050565b61035e6040518060400160405280601381526020017f4d6f64696679537061636553657474696e6773000000000000000000000000008152506105d2565b61036781610dd2565b50565b6103a86040518060400160405280601381526020017f4d6f64696679537061636553657474696e6773000000000000000000000000008152506105d2565b6103b183610b4e565b5f8381527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd03602052604090206103e8908383610efd565b505050565b5f8181527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd036020526040902060609061026f90600201611051565b6104666040518060400160405280601381526020017f4d6f64696679537061636553657474696e6773000000000000000000000000008152506105d2565b61046f83610b4e565b5f8381527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd03602052604090206103e8908383611128565b6104e46040518060400160405280601381526020017f4d6f64696679537061636553657474696e6773000000000000000000000000008152506105d2565b6104ee82826111f9565b5050565b6105306040518060400160405280601381526020017f4d6f64696679537061636553657474696e6773000000000000000000000000008152506105d2565b61053c8484848461127c565b50505050565b6105806040518060400160405280601381526020017f4d6f64696679537061636553657474696e6773000000000000000000000000008152506105d2565b6104ee82826113d8565b6105c86040518060400160405280601381526020017f4d6f64696679537061636553657474696e6773000000000000000000000000008152506105d2565b6104ee828261149a565b6105dc5f82611510565b610367576103677f338e692c00000000000000000000000000000000000000000000000000000000611580565b61061287610b4e565b5f8781527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd0360205260409020600181015460ff1615610674576106747f497dbeb100000000000000000000000000000000000000000000000000000000611580565b5f61067e82611588565b8051909150835f8167ffffffffffffffff81111561069e5761069e6131b8565b6040519080825280602002602001820160405280156106c7578160200160208202803683370190505b5090505f5b8281101561075c575f8888838181106106e7576106e76131e5565b90506020028101906106f99190613212565b61070790602081019061326f565b90506107128161159e565b61071b8161171c565b8083838151811061072e5761072e6131e5565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152506001016106cc565b508915610771578461076f8b8d83613319565b505b871561078e576107838560020161179d565b61078e858a8a611128565b815f0361079f575050505050610257565b5f5b838110156107dd576107d58582815181106107be576107be6131e5565b60200260200101518761188590919063ffffffff16565b6001016107a1565b505f5b8281101561081c576108148282815181106107fd576107fd6131e5565b6020026020010151876118cc90919063ffffffff16565b6001016107e0565b505f5b83811015610911575f85828151811061083a5761083a6131e5565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16631eee07b28f6040518263ffffffff1660e01b815260040161087c91815260200190565b5f60405180830381865afa158015610896573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108db919081019061347e565b805190915015610908576109088683815181106108fa576108fa6131e5565b60200260200101518f611914565b5060010161081f565b505f5b82811015610984573688888381811061092f5761092f6131e5565b90506020028101906109419190613212565b90506109586109536020830183613530565b61199c565b61097b610968602083018361326f565b8f6109766020850185613530565b6119cd565b50600101610914565b506040518c9033907f1aff41ff8e9139aae6bb355cc69107cda7e1d1dcd25511da436f3171bdbf77e6905f90a3505050505050505050505050565b60606109ca83610b4e565b6109d382611a5f565b5f8381527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd0560209081526040808320858452909152902061026c90611051565b60605f610a1e611ab6565b80519091508067ffffffffffffffff811115610a3c57610a3c6131b8565b604051908082528060200260200182016040528015610a9f57816020015b610a8c6040518060a001604052805f8152602001606081526020015f1515815260200160608152602001606081525090565b815260200190600190039081610a5a5790505b5092505f5b81811015610b48575f5f5f5f610ad2878681518110610ac557610ac56131e5565b6020026020010151611ae1565b93509350935093506040518060a00160405280888781518110610af757610af76131e5565b60200260200101518152602001858152602001841515815260200183815260200182815250888681518110610b2e57610b2e6131e5565b602002602001018190525050505050806001019050610aa4565b50505090565b610b787f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd0182611bcd565b610367576103677fa3f70f7b00000000000000000000000000000000000000000000000000000000611580565b610bd76040518060a001604052805f8152602001606081526020015f1515815260200160608152602001606081525090565b5f5f5f5f610be486611ae1565b6040805160a0810182529a8b5260208b019490945291151592890192909252606088019190915260808701525093949350505050565b5f610c2787876002611be4565b815f8167ffffffffffffffff811115610c4257610c426131b8565b604051908082528060200260200182016040528015610c6b578160200160208202803683370190505b507f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd0080549192509081905f90610ca0906135be565b918290555093505f5b83811015610d675736878783818110610cc457610cc46131e5565b9050602002810190610cd69190613212565b9050610ced610ce8602083018361326f565b61159e565b610cfa602082018261326f565b848381518110610d0c57610d0c6131e5565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101820152610d409061095390830183613530565b610d5e610d50602083018361326f565b876109766020850185613530565b50600101610ca9565b50610d756001820185611c15565b505f848152600382016020526040812090610d989082908d908d908d8d89611c20565b604051859033907f20a7a288530dd94b1eccaa691a582ecfd7550c9dfcee78ddf50a97f774a2b147905f90a3505050509695505050505050565b610ddb81610b4e565b5f8181527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd03602052604081207f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd0091610e3282611588565b9050610e3d82611d1e565b610e4a6001840185611d7b565b505f610e5585611d86565b80519091505f5b81811015610e8f57610e87838281518110610e7957610e796131e5565b602002602001015188611e6b565b600101610e5c565b5082515f5b81811015610ec757610ebf858281518110610eb157610eb16131e5565b602002602001015189611914565b600101610e94565b50604051879033907f268a6f1b90f6f5ddf50cc736d36513e80cdc5fd56326bff71f335e8b4b61d055905f90a350505050505050565b805f5b8181101561104a57610f34848483818110610f1d57610f1d6131e5565b9050602002810190610f2f9190613530565b611f0c565b610faf848483818110610f4957610f496131e5565b9050602002810190610f5b9190613530565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050825160208185018101805160038d01825292820191909501209352505054151590565b610fdc57610fdc7f3e2b026100000000000000000000000000000000000000000000000000000000611580565b611041848483818110610ff157610ff16131e5565b90506020028101906110039190613530565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250506002890192915050611f3d565b50600101610f00565b5050505050565b6060815f01805480602002602001604051908101604052809291908181526020015f905b8282101561111d578382905f5260205f200180546110929061328a565b80601f01602080910402602001604051908101604052809291908181526020018280546110be9061328a565b80156111095780601f106110e057610100808354040283529160200191611109565b820191905f5260205f20905b8154815290600101906020018083116110ec57829003601f168201915b505050505081526020019060010190611075565b505050509050919050565b805f5b8181101561104a57611148848483818110610f1d57610f1d6131e5565b61115d848483818110610f4957610f496131e5565b1561118b5761118b7fb0ab682100000000000000000000000000000000000000000000000000000000611580565b6111f08484838181106111a0576111a06131e5565b90506020028101906111b29190613530565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050600289019291505061208d565b5060010161112b565b61120282610b4e565b611217611212602083018361326f565b61171c565b5f8281527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd03602090815260409091209061125e906112579084018461326f565b82906118cc565b6103e861126e602084018461326f565b846109766020860186613530565b8080156113d25761128c85610b4e565b61129584611a5f565b5f8581527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd056020908152604080832087845290915290207f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd00906112f78161179d565b5f5b8381101561138257611316868683818110610f1d57610f1d6131e5565b61137986868381811061132b5761132b6131e5565b905060200281019061133d9190613530565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250869392505061208d9050565b506001016112f9565b505f878152600483016020526040902061139c9087611c15565b506040518690889033907f38ef31503bf60258feeceab5e2c3778cf74be2a8fbcc150d209ca96cd3c98553905f90a4505061104a565b61104a85855b6113e182610b4e565b6113ea81611a5f565b5f8281527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd056020908152604080832084845290915290207f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd009061144c8161179d565b5f84815260048301602052604090206114659084611d7b565b506040518390859033907f07439707c74b686d8e4d3f3226348eac82205e6dffd780ac4c555a4c2dc9d86c905f90a450505050565b6114a382610b4e565b6114b3611212602083018361326f565b5f8281527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd0360209081526040909120906114fa906114f39084018461326f565b8290611885565b6103e861150a602084018461326f565b84611914565b5f338061151b6120e3565b73ffffffffffffffffffffffffffffffffffffffff16148061157857507fe17a067c7963a59b6dfd65d33b053fdbea1c56500e2aae4f976d9eda4da9eb005460ff1615801561157857506115788482611573866135f5565b6121a3565b949350505050565b805f5260045ffd5b60605f61159783600401612473565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81166115eb576040517fe0dc2ae000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527ff785968a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8216906301ffc9a790602401602060405180830381865afa9250505080156116af575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526116ac91810190613637565b60015b6116e5576040517ff58a5f2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806104ee576040517ff58a5f2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fa558e822bd359dacbe30f0da89cbfde5f95895b441e13a4864caec1423c931006117677fa558e822bd359dacbe30f0da89cbfde5f95895b441e13a4864caec1423c931018361247f565b6104ee576040517fbd599b8000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805481905f5b8181101561187d575f84815260208120820190505f61186986835f0180546117ca9061328a565b80601f01602080910402602001604051908101604052809291908181526020018280546117f69061328a565b80156118415780601f1061181857610100808354040283529160200191611841565b820191905f5260205f20905b81548152906001019060200180831161182457829003601f168201915b5050505050805180820160209081018051600195909501815291810192019190912091905290565b55611874815f612c1a565b506001016117a3565b50505f905550565b611892600483018261247f565b6118bf576118bf7f480a52fa00000000000000000000000000000000000000000000000000000000611580565b6103e860048301826124ad565b6118d9600483018261247f565b15611907576119077ffb5584f100000000000000000000000000000000000000000000000000000000611580565b6103e860048301826124ce565b61191d8261171c565b6040517ff0c111f90000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff83169063f0c111f9906024015f604051808303815f87803b158015611982575f5ffd5b505af1158015611994573d5f5f3e3d5ffd5b505050505050565b5f8190036104ee576104ee7f947d5a8400000000000000000000000000000000000000000000000000000000611580565b6119d68461171c565b6040517fef8be57400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063ef8be57490611a2c90869086908690600401613656565b5f604051808303815f87803b158015611a43575f5ffd5b505af1158015611a55573d5f5f3e3d5ffd5b5050505050505050565b611a897f804ad633258ac9b908ae115a2763b3f6e04be3b1165402c872b25af51850430082611bcd565b610367576103677fac16968200000000000000000000000000000000000000000000000000000000611580565b606061027f7f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd01612473565b5f8181527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd036020526040812080546060929183918291908190611b239061328a565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4f9061328a565b8015611b9a5780601f10611b7157610100808354040283529160200191611b9a565b820191905f5260205f20905b815481529060010190602001808311611b7d57829003601f168201915b5050505060018301549196505060ff169350611bb860028201611051565b9250611bc381611588565b9150509193509193565b5f818152600183016020526040812054151561026c565b808210156103e8576103e87f947d5a8400000000000000000000000000000000000000000000000000000000611580565b5f61026c83836124eb565b86611c2c868883613319565b506001870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016851515179055611c66878484611128565b5f5b8151811015611a55575f73ffffffffffffffffffffffffffffffffffffffff16828281518110611c9a57611c9a6131e5565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603611ce657611ce67f7442429b00000000000000000000000000000000000000000000000000000000611580565b611d15828281518110611cfb57611cfb6131e5565b6020026020010151896004016124ce90919063ffffffff16565b50600101611c68565b60408051602081019091525f81528190611d3890826136a9565b506001810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055611d6f6002820161179d565b61036781600401612537565b5f61026c8383612540565b60607f804ad633258ac9b908ae115a2763b3f6e04be3b1165402c872b25af5185043005f611db382612623565b90505f8167ffffffffffffffff811115611dcf57611dcf6131b8565b604051908082528060200260200182016040528015611df8578160200160208202803683370190505b5093505f5b82811015611e60575f611e10858361262c565b5f8181526003870160205260409020909150611e2c9088611bcd565b15611e575780868480600101955081518110611e4a57611e4a6131e5565b6020026020010181815250505b50600101611dfd565b508352509092915050565b611e7482611a5f565b611e7d82612637565b5f8281527f804ad633258ac9b908ae115a2763b3f6e04be3b1165402c872b25af518504303602052604090207f804ad633258ac9b908ae115a2763b3f6e04be3b1165402c872b25af51850430090611ed58184611bcd565b611f0257611f027f6796073e00000000000000000000000000000000000000000000000000000000611580565b61104a8184611d7b565b5f8190036104ee576104ee7f0ce76c1000000000000000000000000000000000000000000000000000000000611580565b8051602081830181018051600186018252928201918401919091209190528054801580159291906120855784545f868152602090208691907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80830191830101848314612072575f815f018054611fb39061328a565b80601f0160208091040260200160405190810160405280929190818152602001828054611fdf9061328a565b801561202a5780601f106120015761010080835404028352916020019161202a565b820191905f5260205f20905b81548152906001019060200180831161200d57829003601f168201915b50505050509050806120478b600189035f91825260209091200190565b9061205290826136a9565b50805160208183018101805160018e018252928201919093012091528590555b61207c815f612c1a565b50909155505f82555b505092915050565b8051602081830181018051600186018252928201918401919091209190528054159081156120dc578354600181018086555f868152602090208692919082016120d687826136a9565b50835550505b5092915050565b5f807fd2f24d4f172e4e84e48e7c4125b6e904c29e5eba33ad4938fee51dd5dbd4b600805460018201546040517f6352211e000000000000000000000000000000000000000000000000000000008152600481019190915291925073ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa158015612179573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061219d91906137c0565b91505090565b5f5f6121ad6120e3565b90505f6121b985612698565b80519091505f6121c76129dc565b80519091505f5b838110156122b6575f8582815181106121e9576121e96131e5565b602002602001015190508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612236576001975050505050505050611597565b5f5b838110156122ac578173ffffffffffffffffffffffffffffffffffffffff1661227986838151811061226c5761226c6131e5565b6020026020010151612a07565b73ffffffffffffffffffffffffffffffffffffffff16036122a4575f98505050505050505050611597565b600101612238565b50506001016121ce565b507fa558e822bd359dacbe30f0da89cbfde5f95895b441e13a4864caec1423c931005f6123027fa558e822bd359dacbe30f0da89cbfde5f95895b441e13a4864caec1423c93101612623565b90505f5b81811015612462575f838161231e600183018561262c565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182015f205482517f2e1b61e40000000000000000000000000000000000000000000000000000000081529251911693508392632e1b61e492600480820193918290030181865afa15801561239a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123be9190613637565b15801561244257508073ffffffffffffffffffffffffffffffffffffffff16630cf0b5338e8a8e6040518463ffffffff1660e01b8152600401612403939291906137db565b602060405180830381865afa15801561241e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124429190613637565b156124595760019950505050505050505050611597565b50600101612306565b505f9b9a5050505050505050505050565b60605f61159783612a11565b73ffffffffffffffffffffffffffffffffffffffff81165f908152600183016020526040812054151561026c565b5f61026c8373ffffffffffffffffffffffffffffffffffffffff8416612540565b5f61026c8373ffffffffffffffffffffffffffffffffffffffff84165b5f81815260018301602052604081205461253057508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561026f565b505f61026f565b61036781612a6a565b5f818152600183016020526040812054801561261a575f612562600183613846565b85549091505f9061257590600190613846565b90508082146125d4575f865f018281548110612593576125936131e5565b905f5260205f200154905080875f0184815481106125b3576125b36131e5565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806125e5576125e5613859565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061026f565b5f91505061026f565b5f61026f825490565b5f61026c8383612ac3565b5f8181527f804ad633258ac9b908ae115a2763b3f6e04be3b1165402c872b25af518504302602052604090206001015460ff1615610367576103677fd9c0051200000000000000000000000000000000000000000000000000000000611580565b60605f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600600601546040517f02345b9800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015290911691505f9082906302345b98906024015f60405180830381865afa15801561272f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526127749190810190613886565b905080515f036128e5576040517ff821039800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301525f919084169063f821039890602401602060405180830381865afa1580156127eb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061280f91906137c0565b905073ffffffffffffffffffffffffffffffffffffffff8116156128e3576040517f02345b9800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015291955085918416906302345b98906024015f60405180830381865afa15801561289b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526128e09190810190613886565b91505b505b80515f6128f382600161392f565b67ffffffffffffffff81111561290b5761290b6131b8565b604051908082528060200260200182016040528015612934578160200160208202803683370190505b5090505f5b8281101561299a57838181518110612953576129536131e5565b602002602001015182828151811061296d5761296d6131e5565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101612939565b50858183815181106129ae576129ae6131e5565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015295945050505050565b606061027f7f49daf035076c43671ca9f9fb568d931e51ab7f9098a5a694781b45341112cf00612473565b5f61026f82612ae9565b6060815f01805480602002602001604051908101604052809291908181526020018280548015612a5e57602002820191905f5260205f20905b815481526020019060010190808311612a4a575b50505050509050919050565b5f612a73825490565b90505f5b81811015612abc57826001015f845f018381548110612a9857612a986131e5565b905f5260205f20015481526020019081526020015f205f9055806001019050612a77565b50505f9055565b5f825f018281548110612ad857612ad86131e5565b905f5260205f200154905092915050565b5f8181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df046020526040812054907f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00907c010000000000000000000000000000000000000000000000000000000083169003612be757815f03612be15780548310612ba0576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092015f81815260048401602052604090205490929091508115612ba1575b50919050565b506040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b508054612c269061328a565b5f825580601f10612c35575050565b601f0160209004905f5260205f209081019061036791905b80821115612c60575f8155600101612c4d565b5090565b5f5f83601f840112612c74575f5ffd5b50813567ffffffffffffffff811115612c8b575f5ffd5b602083019150836020828501011115612ca2575f5ffd5b9250929050565b5f5f83601f840112612cb9575f5ffd5b50813567ffffffffffffffff811115612cd0575f5ffd5b6020830191508360208260051b8501011115612ca2575f5ffd5b5f5f5f5f5f5f5f6080888a031215612d00575f5ffd5b87359650602088013567ffffffffffffffff811115612d1d575f5ffd5b612d298a828b01612c64565b909750955050604088013567ffffffffffffffff811115612d48575f5ffd5b612d548a828b01612ca9565b909550935050606088013567ffffffffffffffff811115612d73575f5ffd5b612d7f8a828b01612ca9565b989b979a50959850939692959293505050565b5f5f60408385031215612da3575f5ffd5b50508035926020909101359150565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015612e73577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452612e5e858351612db2565b94506020938401939190910190600101612e24565b50929695505050505050565b5f8151808452602084019350602083015f5b82811015612ec557815173ffffffffffffffffffffffffffffffffffffffff16865260209586019590910190600101612e91565b5093949350505050565b805182525f602082015160a06020850152612eed60a0850182612db2565b90506040830151151560408501526060830151848203606086015281815180845260208401915060208160051b8501016020840193505f5b82811015612f74577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868303018452612f5f828651612db2565b60209586019594909401939150600101612f25565b50608087015194508781036080890152612f8e8186612e7f565b98975050505050505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015612e73577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452612ffa858351612ecf565b94506020938401939190910190600101612fc0565b5f6020828403121561301f575f5ffd5b5035919050565b602081525f61026c6020830184612ecf565b5f5f5f5f5f5f6060878903121561304d575f5ffd5b863567ffffffffffffffff811115613063575f5ffd5b61306f89828a01612c64565b909750955050602087013567ffffffffffffffff81111561308e575f5ffd5b61309a89828a01612ca9565b909550935050604087013567ffffffffffffffff8111156130b9575f5ffd5b6130c589828a01612ca9565b979a9699509497509295939492505050565b5f5f5f604084860312156130e9575f5ffd5b83359250602084013567ffffffffffffffff811115613106575f5ffd5b61311286828701612ca9565b9497909650939450505050565b5f5f60408385031215613130575f5ffd5b82359150602083013567ffffffffffffffff81111561314d575f5ffd5b83016040818603121561315e575f5ffd5b809150509250929050565b5f5f5f5f6060858703121561317c575f5ffd5b8435935060208501359250604085013567ffffffffffffffff8111156131a0575f5ffd5b6131ac87828801612ca9565b95989497509550505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613244575f5ffd5b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610367575f5ffd5b5f6020828403121561327f575f5ffd5b81356115978161324e565b600181811c9082168061329e57607f821691505b602082108103612be1577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b601f8211156103e857805f5260205f20601f840160051c810160208510156132fa5750805b601f840160051c820191505b8181101561104a575f8155600101613306565b67ffffffffffffffff831115613331576133316131b8565b6133458361333f835461328a565b836132d5565b5f601f841160018114613395575f851561335f5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b17835561104a565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156133e257868501358255602094850194600190920191016133c2565b508682101561341d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613476576134766131b8565b604052919050565b5f6020828403121561348e575f5ffd5b815167ffffffffffffffff8111156134a4575f5ffd5b8201601f810184136134b4575f5ffd5b805167ffffffffffffffff8111156134ce576134ce6131b8565b6134ff60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161342f565b818152856020838501011115613513575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613563575f5ffd5b83018035915067ffffffffffffffff82111561357d575f5ffd5b602001915036819003821315612ca2575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135ee576135ee613591565b5060010190565b80516020808301519190811015612be1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b5f60208284031215613647575f5ffd5b81518015158114611597575f5ffd5b83815260406020820152816040820152818360608301375f818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b815167ffffffffffffffff8111156136c3576136c36131b8565b6136d7816136d1845461328a565b846132d5565b6020601f821160018114613728575f83156136f25750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b17845561104a565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156137755787850151825560209485019460019092019101613755565b50848210156137b157868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b5f602082840312156137d0575f5ffd5b81516115978161324e565b5f60608201858352606060208401528085518083526080850191506020870192505f5b8181101561383257835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016137fe565b505060409390930193909352509392505050565b8181038181111561026f5761026f613591565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f60208284031215613896575f5ffd5b815167ffffffffffffffff8111156138ac575f5ffd5b8201601f810184136138bc575f5ffd5b805167ffffffffffffffff8111156138d6576138d66131b8565b8060051b6138e66020820161342f565b91825260208184018101929081019087841115613901575f5ffd5b6020850194505b83851015610315578451925061391d8361324e565b82825260209485019490910190613908565b8082018082111561026f5761026f61359156";
903
+ "0x6080604052348015600e575f5ffd5b506139398061001c5f395ff3fe608060405234801561000f575f5ffd5b50600436106100da575f3560e01c80639a8e4c3e11610088578063ba201ba811610063578063ba201ba8146101be578063bd9af74a146101d1578063d2dea2b9146101e4578063dba81864146101f7575f5ffd5b80639a8e4c3e14610185578063b426423314610198578063b7515761146101ab575f5ffd5b8063784c872b116100b8578063784c872b146101315780638fcd793d146101515780639269182114610172575f5ffd5b80634d8b50a2146100de57806365634a48146100f3578063710613981461011c575b5f5ffd5b6100f16100ec366004612ce1565b61020a565b005b610106610101366004612d89565b610260565b6040516101139190612df5565b60405180910390f35b610124610275565b6040516101139190612f91565b61014461013f366004613006565b610284565b604051610113919061301d565b61016461015f36600461302f565b6102c8565b604051908152602001610113565b6100f1610180366004613006565b610320565b6100f16101933660046130ce565b61036a565b6101066101a6366004613006565b6103ed565b6100f16101b93660046130ce565b610428565b6100f16101cc366004613116565b6104a6565b6100f16101df366004613160565b6104f2565b6100f16101f2366004612d89565b610542565b6100f1610205366004613116565b61058a565b6102486040518060400160405280601381526020017f4d6f64696679537061636553657474696e6773000000000000000000000000008152506105d2565b61025787878787878787610609565b50505050505050565b606061026c83836109bf565b90505b92915050565b606061027f610a13565b905090565b6102b66040518060a001604052805f8152602001606081526020015f1515815260200160608152602001606081525090565b6102bf82610b4e565b61026f82610ba5565b5f6103076040518060400160405280601381526020017f4d6f64696679537061636553657474696e6773000000000000000000000000008152506105d2565b610315878787878787610c1a565b979650505050505050565b61035e6040518060400160405280601381526020017f4d6f64696679537061636553657474696e6773000000000000000000000000008152506105d2565b61036781610dd2565b50565b6103a86040518060400160405280601381526020017f4d6f64696679537061636553657474696e6773000000000000000000000000008152506105d2565b6103b183610b4e565b5f8381527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd03602052604090206103e8908383610efd565b505050565b5f8181527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd036020526040902060609061026f90600201611051565b6104666040518060400160405280601381526020017f4d6f64696679537061636553657474696e6773000000000000000000000000008152506105d2565b61046f83610b4e565b5f8381527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd03602052604090206103e8908383611128565b6104e46040518060400160405280601381526020017f4d6f64696679537061636553657474696e6773000000000000000000000000008152506105d2565b6104ee82826111f9565b5050565b6105306040518060400160405280601381526020017f4d6f64696679537061636553657474696e6773000000000000000000000000008152506105d2565b61053c8484848461127c565b50505050565b6105806040518060400160405280601381526020017f4d6f64696679537061636553657474696e6773000000000000000000000000008152506105d2565b6104ee82826113d8565b6105c86040518060400160405280601381526020017f4d6f64696679537061636553657474696e6773000000000000000000000000008152506105d2565b6104ee828261149a565b6105dc5f82611510565b610367576103677f338e692c00000000000000000000000000000000000000000000000000000000611577565b61061287610b4e565b5f8781527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd0360205260409020600181015460ff1615610674576106747f497dbeb100000000000000000000000000000000000000000000000000000000611577565b5f61067e8261157f565b8051909150835f8167ffffffffffffffff81111561069e5761069e6131af565b6040519080825280602002602001820160405280156106c7578160200160208202803683370190505b5090505f5b8281101561075c575f8888838181106106e7576106e76131dc565b90506020028101906106f99190613209565b610707906020810190613266565b905061071281611595565b61071b81611713565b8083838151811061072e5761072e6131dc565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152506001016106cc565b508915610771578461076f8b8d83613310565b505b871561078e5761078385600201611794565b61078e858a8a611128565b815f0361079f575050505050610257565b5f5b838110156107dd576107d58582815181106107be576107be6131dc565b60200260200101518761187c90919063ffffffff16565b6001016107a1565b505f5b8281101561081c576108148282815181106107fd576107fd6131dc565b6020026020010151876118c390919063ffffffff16565b6001016107e0565b505f5b83811015610911575f85828151811061083a5761083a6131dc565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16631eee07b28f6040518263ffffffff1660e01b815260040161087c91815260200190565b5f60405180830381865afa158015610896573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108db9190810190613475565b805190915015610908576109088683815181106108fa576108fa6131dc565b60200260200101518f61190b565b5060010161081f565b505f5b82811015610984573688888381811061092f5761092f6131dc565b90506020028101906109419190613209565b90506109586109536020830183613527565b611993565b61097b6109686020830183613266565b8f6109766020850185613527565b6119c4565b50600101610914565b506040518c9033907f1aff41ff8e9139aae6bb355cc69107cda7e1d1dcd25511da436f3171bdbf77e6905f90a3505050505050505050505050565b60606109ca83610b4e565b6109d382611a56565b5f8381527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd0560209081526040808320858452909152902061026c90611051565b60605f610a1e611aad565b80519091508067ffffffffffffffff811115610a3c57610a3c6131af565b604051908082528060200260200182016040528015610a9f57816020015b610a8c6040518060a001604052805f8152602001606081526020015f1515815260200160608152602001606081525090565b815260200190600190039081610a5a5790505b5092505f5b81811015610b48575f5f5f5f610ad2878681518110610ac557610ac56131dc565b6020026020010151611ad8565b93509350935093506040518060a00160405280888781518110610af757610af76131dc565b60200260200101518152602001858152602001841515815260200183815260200182815250888681518110610b2e57610b2e6131dc565b602002602001018190525050505050806001019050610aa4565b50505090565b610b787f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd0182611bc4565b610367576103677fa3f70f7b00000000000000000000000000000000000000000000000000000000611577565b610bd76040518060a001604052805f8152602001606081526020015f1515815260200160608152602001606081525090565b5f5f5f5f610be486611ad8565b6040805160a0810182529a8b5260208b019490945291151592890192909252606088019190915260808701525093949350505050565b5f610c2787876002611bdb565b815f8167ffffffffffffffff811115610c4257610c426131af565b604051908082528060200260200182016040528015610c6b578160200160208202803683370190505b507f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd0080549192509081905f90610ca0906135b5565b918290555093505f5b83811015610d675736878783818110610cc457610cc46131dc565b9050602002810190610cd69190613209565b9050610ced610ce86020830183613266565b611595565b610cfa6020820182613266565b848381518110610d0c57610d0c6131dc565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101820152610d409061095390830183613527565b610d5e610d506020830183613266565b876109766020850185613527565b50600101610ca9565b50610d756001820185611c0c565b505f848152600382016020526040812090610d989082908d908d908d8d89611c17565b604051859033907f20a7a288530dd94b1eccaa691a582ecfd7550c9dfcee78ddf50a97f774a2b147905f90a3505050509695505050505050565b610ddb81610b4e565b5f8181527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd03602052604081207f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd0091610e328261157f565b9050610e3d82611d15565b610e4a6001840185611d72565b505f610e5585611d7d565b80519091505f5b81811015610e8f57610e87838281518110610e7957610e796131dc565b602002602001015188611e62565b600101610e5c565b5082515f5b81811015610ec757610ebf858281518110610eb157610eb16131dc565b60200260200101518961190b565b600101610e94565b50604051879033907f268a6f1b90f6f5ddf50cc736d36513e80cdc5fd56326bff71f335e8b4b61d055905f90a350505050505050565b805f5b8181101561104a57610f34848483818110610f1d57610f1d6131dc565b9050602002810190610f2f9190613527565b611f03565b610faf848483818110610f4957610f496131dc565b9050602002810190610f5b9190613527565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050825160208185018101805160038d01825292820191909501209352505054151590565b610fdc57610fdc7f3e2b026100000000000000000000000000000000000000000000000000000000611577565b611041848483818110610ff157610ff16131dc565b90506020028101906110039190613527565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250506002890192915050611f34565b50600101610f00565b5050505050565b6060815f01805480602002602001604051908101604052809291908181526020015f905b8282101561111d578382905f5260205f2001805461109290613281565b80601f01602080910402602001604051908101604052809291908181526020018280546110be90613281565b80156111095780601f106110e057610100808354040283529160200191611109565b820191905f5260205f20905b8154815290600101906020018083116110ec57829003601f168201915b505050505081526020019060010190611075565b505050509050919050565b805f5b8181101561104a57611148848483818110610f1d57610f1d6131dc565b61115d848483818110610f4957610f496131dc565b1561118b5761118b7fb0ab682100000000000000000000000000000000000000000000000000000000611577565b6111f08484838181106111a0576111a06131dc565b90506020028101906111b29190613527565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250506002890192915050612084565b5060010161112b565b61120282610b4e565b6112176112126020830183613266565b611713565b5f8281527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd03602090815260409091209061125e9061125790840184613266565b82906118c3565b6103e861126e6020840184613266565b846109766020860186613527565b8080156113d25761128c85610b4e565b61129584611a56565b5f8581527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd056020908152604080832087845290915290207f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd00906112f781611794565b5f5b8381101561138257611316868683818110610f1d57610f1d6131dc565b61137986868381811061132b5761132b6131dc565b905060200281019061133d9190613527565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086939250506120849050565b506001016112f9565b505f878152600483016020526040902061139c9087611c0c565b506040518690889033907f38ef31503bf60258feeceab5e2c3778cf74be2a8fbcc150d209ca96cd3c98553905f90a4505061104a565b61104a85855b6113e182610b4e565b6113ea81611a56565b5f8281527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd056020908152604080832084845290915290207f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd009061144c81611794565b5f84815260048301602052604090206114659084611d72565b506040518390859033907f07439707c74b686d8e4d3f3226348eac82205e6dffd780ac4c555a4c2dc9d86c905f90a450505050565b6114a382610b4e565b6114b36112126020830183613266565b5f8281527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd0360209081526040909120906114fa906114f390840184613266565b829061187c565b6103e861150a6020840184613266565b8461190b565b5f3361151a6120da565b73ffffffffffffffffffffffffffffffffffffffff16148061026c57507fe17a067c7963a59b6dfd65d33b053fdbea1c56500e2aae4f976d9eda4da9eb005460ff1615801561026c575061026c8333611572856135ec565b61219a565b805f5260045ffd5b60605f61158e8360040161246a565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81166115e2576040517fe0dc2ae000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527ff785968a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8216906301ffc9a790602401602060405180830381865afa9250505080156116a6575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526116a39181019061362e565b60015b6116dc576040517ff58a5f2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806104ee576040517ff58a5f2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fa558e822bd359dacbe30f0da89cbfde5f95895b441e13a4864caec1423c9310061175e7fa558e822bd359dacbe30f0da89cbfde5f95895b441e13a4864caec1423c9310183612476565b6104ee576040517fbd599b8000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805481905f5b81811015611874575f84815260208120820190505f61186086835f0180546117c190613281565b80601f01602080910402602001604051908101604052809291908181526020018280546117ed90613281565b80156118385780601f1061180f57610100808354040283529160200191611838565b820191905f5260205f20905b81548152906001019060200180831161181b57829003601f168201915b5050505050805180820160209081018051600195909501815291810192019190912091905290565b5561186b815f612c11565b5060010161179a565b50505f905550565b6118896004830182612476565b6118b6576118b67f480a52fa00000000000000000000000000000000000000000000000000000000611577565b6103e860048301826124a4565b6118d06004830182612476565b156118fe576118fe7ffb5584f100000000000000000000000000000000000000000000000000000000611577565b6103e860048301826124c5565b61191482611713565b6040517ff0c111f90000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff83169063f0c111f9906024015f604051808303815f87803b158015611979575f5ffd5b505af115801561198b573d5f5f3e3d5ffd5b505050505050565b5f8190036104ee576104ee7f947d5a8400000000000000000000000000000000000000000000000000000000611577565b6119cd84611713565b6040517fef8be57400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063ef8be57490611a239086908690869060040161364d565b5f604051808303815f87803b158015611a3a575f5ffd5b505af1158015611a4c573d5f5f3e3d5ffd5b5050505050505050565b611a807f804ad633258ac9b908ae115a2763b3f6e04be3b1165402c872b25af51850430082611bc4565b610367576103677fac16968200000000000000000000000000000000000000000000000000000000611577565b606061027f7f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd0161246a565b5f8181527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd036020526040812080546060929183918291908190611b1a90613281565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4690613281565b8015611b915780601f10611b6857610100808354040283529160200191611b91565b820191905f5260205f20905b815481529060010190602001808311611b7457829003601f168201915b5050505060018301549196505060ff169350611baf60028201611051565b9250611bba8161157f565b9150509193509193565b5f818152600183016020526040812054151561026c565b808210156103e8576103e87f947d5a8400000000000000000000000000000000000000000000000000000000611577565b5f61026c83836124e2565b86611c23868883613310565b506001870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016851515179055611c5d878484611128565b5f5b8151811015611a4c575f73ffffffffffffffffffffffffffffffffffffffff16828281518110611c9157611c916131dc565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603611cdd57611cdd7f7442429b00000000000000000000000000000000000000000000000000000000611577565b611d0c828281518110611cf257611cf26131dc565b6020026020010151896004016124c590919063ffffffff16565b50600101611c5f565b60408051602081019091525f81528190611d2f90826136a0565b506001810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055611d6660028201611794565b6103678160040161252e565b5f61026c8383612537565b60607f804ad633258ac9b908ae115a2763b3f6e04be3b1165402c872b25af5185043005f611daa8261261a565b90505f8167ffffffffffffffff811115611dc657611dc66131af565b604051908082528060200260200182016040528015611def578160200160208202803683370190505b5093505f5b82811015611e57575f611e078583612623565b5f8181526003870160205260409020909150611e239088611bc4565b15611e4e5780868480600101955081518110611e4157611e416131dc565b6020026020010181815250505b50600101611df4565b508352509092915050565b611e6b82611a56565b611e748261262e565b5f8281527f804ad633258ac9b908ae115a2763b3f6e04be3b1165402c872b25af518504303602052604090207f804ad633258ac9b908ae115a2763b3f6e04be3b1165402c872b25af51850430090611ecc8184611bc4565b611ef957611ef97f6796073e00000000000000000000000000000000000000000000000000000000611577565b61104a8184611d72565b5f8190036104ee576104ee7f0ce76c1000000000000000000000000000000000000000000000000000000000611577565b80516020818301810180516001860182529282019184019190912091905280548015801592919061207c5784545f868152602090208691907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80830191830101848314612069575f815f018054611faa90613281565b80601f0160208091040260200160405190810160405280929190818152602001828054611fd690613281565b80156120215780601f10611ff857610100808354040283529160200191612021565b820191905f5260205f20905b81548152906001019060200180831161200457829003601f168201915b505050505090508061203e8b600189035f91825260209091200190565b9061204990826136a0565b50805160208183018101805160018e018252928201919093012091528590555b612073815f612c11565b50909155505f82555b505092915050565b8051602081830181018051600186018252928201918401919091209190528054159081156120d3578354600181018086555f868152602090208692919082016120cd87826136a0565b50835550505b5092915050565b5f807fd2f24d4f172e4e84e48e7c4125b6e904c29e5eba33ad4938fee51dd5dbd4b600805460018201546040517f6352211e000000000000000000000000000000000000000000000000000000008152600481019190915291925073ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa158015612170573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061219491906137b7565b91505090565b5f5f6121a46120da565b90505f6121b08561268f565b80519091505f6121be6129d3565b80519091505f5b838110156122ad575f8582815181106121e0576121e06131dc565b602002602001015190508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361222d57600197505050505050505061158e565b5f5b838110156122a3578173ffffffffffffffffffffffffffffffffffffffff16612270868381518110612263576122636131dc565b60200260200101516129fe565b73ffffffffffffffffffffffffffffffffffffffff160361229b575f9850505050505050505061158e565b60010161222f565b50506001016121c5565b507fa558e822bd359dacbe30f0da89cbfde5f95895b441e13a4864caec1423c931005f6122f97fa558e822bd359dacbe30f0da89cbfde5f95895b441e13a4864caec1423c9310161261a565b90505f5b81811015612459575f83816123156001830185612623565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182015f205482517f2e1b61e40000000000000000000000000000000000000000000000000000000081529251911693508392632e1b61e492600480820193918290030181865afa158015612391573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123b5919061362e565b15801561243957508073ffffffffffffffffffffffffffffffffffffffff16630cf0b5338e8a8e6040518463ffffffff1660e01b81526004016123fa939291906137d2565b602060405180830381865afa158015612415573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612439919061362e565b15612450576001995050505050505050505061158e565b506001016122fd565b505f9b9a5050505050505050505050565b60605f61158e83612a08565b73ffffffffffffffffffffffffffffffffffffffff81165f908152600183016020526040812054151561026c565b5f61026c8373ffffffffffffffffffffffffffffffffffffffff8416612537565b5f61026c8373ffffffffffffffffffffffffffffffffffffffff84165b5f81815260018301602052604081205461252757508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561026f565b505f61026f565b61036781612a61565b5f8181526001830160205260408120548015612611575f61255960018361383d565b85549091505f9061256c9060019061383d565b90508082146125cb575f865f01828154811061258a5761258a6131dc565b905f5260205f200154905080875f0184815481106125aa576125aa6131dc565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806125dc576125dc613850565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061026f565b5f91505061026f565b5f61026f825490565b5f61026c8383612aba565b5f8181527f804ad633258ac9b908ae115a2763b3f6e04be3b1165402c872b25af518504302602052604090206001015460ff1615610367576103677fd9c0051200000000000000000000000000000000000000000000000000000000611577565b60605f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600600601546040517f02345b9800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015290911691505f9082906302345b98906024015f60405180830381865afa158015612726573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261276b919081019061387d565b905080515f036128dc576040517ff821039800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301525f919084169063f821039890602401602060405180830381865afa1580156127e2573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061280691906137b7565b905073ffffffffffffffffffffffffffffffffffffffff8116156128da576040517f02345b9800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015291955085918416906302345b98906024015f60405180830381865afa158015612892573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526128d7919081019061387d565b91505b505b80515f6128ea826001613926565b67ffffffffffffffff811115612902576129026131af565b60405190808252806020026020018201604052801561292b578160200160208202803683370190505b5090505f5b828110156129915783818151811061294a5761294a6131dc565b6020026020010151828281518110612964576129646131dc565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101612930565b50858183815181106129a5576129a56131dc565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015295945050505050565b606061027f7f49daf035076c43671ca9f9fb568d931e51ab7f9098a5a694781b45341112cf0061246a565b5f61026f82612ae0565b6060815f01805480602002602001604051908101604052809291908181526020018280548015612a5557602002820191905f5260205f20905b815481526020019060010190808311612a41575b50505050509050919050565b5f612a6a825490565b90505f5b81811015612ab357826001015f845f018381548110612a8f57612a8f6131dc565b905f5260205f20015481526020019081526020015f205f9055806001019050612a6e565b50505f9055565b5f825f018281548110612acf57612acf6131dc565b905f5260205f200154905092915050565b5f8181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df046020526040812054907f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00907c010000000000000000000000000000000000000000000000000000000083169003612bde57815f03612bd85780548310612b97576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092015f81815260048401602052604090205490929091508115612b98575b50919050565b506040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b508054612c1d90613281565b5f825580601f10612c2c575050565b601f0160209004905f5260205f209081019061036791905b80821115612c57575f8155600101612c44565b5090565b5f5f83601f840112612c6b575f5ffd5b50813567ffffffffffffffff811115612c82575f5ffd5b602083019150836020828501011115612c99575f5ffd5b9250929050565b5f5f83601f840112612cb0575f5ffd5b50813567ffffffffffffffff811115612cc7575f5ffd5b6020830191508360208260051b8501011115612c99575f5ffd5b5f5f5f5f5f5f5f6080888a031215612cf7575f5ffd5b87359650602088013567ffffffffffffffff811115612d14575f5ffd5b612d208a828b01612c5b565b909750955050604088013567ffffffffffffffff811115612d3f575f5ffd5b612d4b8a828b01612ca0565b909550935050606088013567ffffffffffffffff811115612d6a575f5ffd5b612d768a828b01612ca0565b989b979a50959850939692959293505050565b5f5f60408385031215612d9a575f5ffd5b50508035926020909101359150565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015612e6a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452612e55858351612da9565b94506020938401939190910190600101612e1b565b50929695505050505050565b5f8151808452602084019350602083015f5b82811015612ebc57815173ffffffffffffffffffffffffffffffffffffffff16865260209586019590910190600101612e88565b5093949350505050565b805182525f602082015160a06020850152612ee460a0850182612da9565b90506040830151151560408501526060830151848203606086015281815180845260208401915060208160051b8501016020840193505f5b82811015612f6b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868303018452612f56828651612da9565b60209586019594909401939150600101612f1c565b50608087015194508781036080890152612f858186612e76565b98975050505050505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015612e6a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452612ff1858351612ec6565b94506020938401939190910190600101612fb7565b5f60208284031215613016575f5ffd5b5035919050565b602081525f61026c6020830184612ec6565b5f5f5f5f5f5f60608789031215613044575f5ffd5b863567ffffffffffffffff81111561305a575f5ffd5b61306689828a01612c5b565b909750955050602087013567ffffffffffffffff811115613085575f5ffd5b61309189828a01612ca0565b909550935050604087013567ffffffffffffffff8111156130b0575f5ffd5b6130bc89828a01612ca0565b979a9699509497509295939492505050565b5f5f5f604084860312156130e0575f5ffd5b83359250602084013567ffffffffffffffff8111156130fd575f5ffd5b61310986828701612ca0565b9497909650939450505050565b5f5f60408385031215613127575f5ffd5b82359150602083013567ffffffffffffffff811115613144575f5ffd5b830160408186031215613155575f5ffd5b809150509250929050565b5f5f5f5f60608587031215613173575f5ffd5b8435935060208501359250604085013567ffffffffffffffff811115613197575f5ffd5b6131a387828801612ca0565b95989497509550505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261323b575f5ffd5b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610367575f5ffd5b5f60208284031215613276575f5ffd5b813561158e81613245565b600181811c9082168061329557607f821691505b602082108103612bd8577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b601f8211156103e857805f5260205f20601f840160051c810160208510156132f15750805b601f840160051c820191505b8181101561104a575f81556001016132fd565b67ffffffffffffffff831115613328576133286131af565b61333c836133368354613281565b836132cc565b5f601f84116001811461338c575f85156133565750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b17835561104a565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156133d957868501358255602094850194600190920191016133b9565b5086821015613414577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561346d5761346d6131af565b604052919050565b5f60208284031215613485575f5ffd5b815167ffffffffffffffff81111561349b575f5ffd5b8201601f810184136134ab575f5ffd5b805167ffffffffffffffff8111156134c5576134c56131af565b6134f660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613426565b81815285602083850101111561350a575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261355a575f5ffd5b83018035915067ffffffffffffffff821115613574575f5ffd5b602001915036819003821315612c99575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135e5576135e5613588565b5060010190565b80516020808301519190811015612bd8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b5f6020828403121561363e575f5ffd5b8151801515811461158e575f5ffd5b83815260406020820152816040820152818360608301375f818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b815167ffffffffffffffff8111156136ba576136ba6131af565b6136ce816136c88454613281565b846132cc565b6020601f82116001811461371f575f83156136e95750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b17845561104a565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b8281101561376c578785015182556020948501946001909201910161374c565b50848210156137a857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b5f602082840312156137c7575f5ffd5b815161158e81613245565b5f60608201858352606060208401528085518083526080850191506020870192505f5b8181101561382957835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016137f5565b505060409390930193909352509392505050565b8181038181111561026f5761026f613588565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f6020828403121561388d575f5ffd5b815167ffffffffffffffff8111156138a3575f5ffd5b8201601f810184136138b3575f5ffd5b805167ffffffffffffffff8111156138cd576138cd6131af565b8060051b6138dd60208201613426565b918252602081840181019290810190878411156138f8575f5ffd5b6020850194505b83851015610315578451925061391483613245565b828252602094850194909101906138ff565b8082018082111561026f5761026f61358856";
955
904
 
956
905
  type RolesConstructorParams =
957
906
  | [signer?: Signer]