-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathVoting.json
372 lines (372 loc) · 63.9 KB
/
Voting.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
{
"_format": "hh-sol-artifact-1",
"contractName": "Voting",
"sourceName": "contracts/Voting.sol",
"abi": [
{
"inputs": [
{
"internalType": "bytes",
"name": "_backendKey",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "_candidateAddress",
"type": "address"
},
{
"internalType": "string",
"name": "_name",
"type": "string"
}
],
"name": "addCandidate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_voter",
"type": "address"
}
],
"name": "addVoter",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "backendKey",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "candidateAddresses",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "candidates",
"outputs": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "uint256",
"name": "voteCount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_candidateAddress",
"type": "address"
}
],
"name": "deleteCandidate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "electionRunning",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "endElection",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getAllCandidates",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
},
{
"internalType": "string[]",
"name": "",
"type": "string[]"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getAllVoters",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
},
{
"internalType": "bool[]",
"name": "",
"type": "bool[]"
},
{
"internalType": "bool[]",
"name": "",
"type": "bool[]"
},
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_candidateAddress",
"type": "address"
}
],
"name": "getCandidate",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getTotalVotes",
"outputs": [
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_voter",
"type": "address"
}
],
"name": "getVoterInfo",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
},
{
"internalType": "bool",
"name": "",
"type": "bool"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "resetElection",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "selfDestruct",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "startElection",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_voter",
"type": "address"
},
{
"internalType": "bytes",
"name": "_backendKey",
"type": "bytes"
}
],
"name": "validateVote",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_candidateAddress",
"type": "address"
}
],
"name": "vote",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "voterAddresses",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "voters",
"outputs": [
{
"internalType": "bool",
"name": "hasVoted",
"type": "bool"
},
{
"internalType": "bool",
"name": "isValidated",
"type": "bool"
},
{
"internalType": "address",
"name": "votedCandidate",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60806040526000600460146101000a81548160ff0219169083151502179055503480156200002c57600080fd5b5060405162003b5c38038062003b5c83398181016040528101906200005291906200023f565b33600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060059081620000a49190620004db565b5050620005c2565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200011582620000ca565b810181811067ffffffffffffffff82111715620001375762000136620000db565b5b80604052505050565b60006200014c620000ac565b90506200015a82826200010a565b919050565b600067ffffffffffffffff8211156200017d576200017c620000db565b5b6200018882620000ca565b9050602081019050919050565b60005b83811015620001b557808201518184015260208101905062000198565b60008484015250505050565b6000620001d8620001d2846200015f565b62000140565b905082815260208101848484011115620001f757620001f6620000c5565b5b6200020484828562000195565b509392505050565b600082601f830112620002245762000223620000c0565b5b815162000236848260208601620001c1565b91505092915050565b600060208284031215620002585762000257620000b6565b5b600082015167ffffffffffffffff811115620002795762000278620000bb565b5b62000287848285016200020c565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002e357607f821691505b602082108103620002f957620002f86200029b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003637fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000324565b6200036f868362000324565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003bc620003b6620003b08462000387565b62000391565b62000387565b9050919050565b6000819050919050565b620003d8836200039b565b620003f0620003e782620003c3565b84845462000331565b825550505050565b600090565b62000407620003f8565b62000414818484620003cd565b505050565b5b818110156200043c5762000430600082620003fd565b6001810190506200041a565b5050565b601f8211156200048b576200045581620002ff565b620004608462000314565b8101602085101562000470578190505b620004886200047f8562000314565b83018262000419565b50505b505050565b600082821c905092915050565b6000620004b06000198460080262000490565b1980831691505092915050565b6000620004cb83836200049d565b9150826002028217905092915050565b620004e68262000290565b67ffffffffffffffff811115620005025762000501620000db565b5b6200050e8254620002ca565b6200051b82828562000440565b600060209050601f8311600181146200055357600084156200053e578287015190505b6200054a8582620004bd565b865550620005ba565b601f1984166200056386620002ff565b60005b828110156200058d5784890151825560018201915060208501945060208101905062000566565b86831015620005ad5784890151620005a9601f8916826200049d565b8355505b6001600288020188555050505b505050505050565b61358a80620005d26000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80639a0e7d66116100b8578063b7adcf1d1161007c578063b7adcf1d146102fa578063d55d73c51461032b578063d655d58e1461035b578063dd0e237314610379578063e8f30523146103a9578063f4ab9adf146103b357610137565b80639a0e7d66146102525780639a594f06146102705780639cb8a26a1461028c5780639ed1f25514610296578063a3ec138d146102c857610137565b806362d73eb8116100ff57806362d73eb8146101c15780636dd7d8ea146101cb5780638ab66a90146101e75780638da5cb5b1461021857806395f11ce61461023657610137565b806313086ec91461013c5780632e6997fe1461015a57806335bbe70e1461017a578063392dc4fd1461019b57806359f78468146101b7575b600080fd5b6101446103cf565b6040516101519190612334565b60405180910390f35b6101626103e2565b60405161017193929190612659565b60405180910390f35b6101826106d4565b6040516101929493929190612763565b60405180910390f35b6101b560048036038101906101b09190612939565b610a48565b005b6101bf610d73565b005b6101c9610e20565b005b6101e560048036038101906101e09190612995565b610f76565b005b61020160048036038101906101fc9190612995565b61121e565b60405161020f929190612a1b565b60405180910390f35b6102206112ca565b60405161022d9190612a5a565b60405180910390f35b610250600480360381019061024b9190612995565b6112f0565b005b61025a6115f3565b6040516102679190612a75565b60405180910390f35b61028a60048036038101906102859190612b38565b611711565b005b61029461190f565b005b6102b060048036038101906102ab9190612995565b6119da565b6040516102bf93929190612b94565b60405180910390f35b6102e260048036038101906102dd9190612995565b611ad5565b6040516102f193929190612b94565b60405180910390f35b610314600480360381019061030f9190612995565b611b39565b604051610322929190612a1b565b60405180910390f35b61034560048036038101906103409190612bf7565b611cc9565b6040516103529190612a5a565b60405180910390f35b610363611d08565b6040516103709190612c79565b60405180910390f35b610393600480360381019061038e9190612bf7565b611d96565b6040516103a09190612a5a565b60405180910390f35b6103b1611dd5565b005b6103cd60048036038101906103c89190612995565b6120c5565b005b600460149054906101000a900460ff1681565b6060806060600060028054905067ffffffffffffffff8111156104085761040761280e565b5b60405190808252806020026020018201604052801561043b57816020015b60608152602001906001900390816104265790505b509050600060028054905067ffffffffffffffff81111561045f5761045e61280e565b5b60405190808252806020026020018201604052801561048d5781602001602082028036833780820191505090505b50905060005b60028054905081101561063a576000600282815481106104b6576104b5612c9b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001805461052f90612cf9565b80601f016020809104026020016040519081016040528092919081815260200182805461055b90612cf9565b80156105a85780601f1061057d576101008083540402835291602001916105a8565b820191906000526020600020905b81548152906001019060200180831161058b57829003601f168201915b50505050508483815181106105c0576105bf612c9b565b5b60200260200101819052506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548383815181106106205761061f612c9b565b5b602002602001018181525050508080600101915050610493565b5060028282828054806020026020016040519081016040528092919081815260200182805480156106c057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610676575b505050505092509450945094505050909192565b6060806060806000600380549050905060008167ffffffffffffffff811115610700576106ff61280e565b5b60405190808252806020026020018201604052801561072e5781602001602082028036833780820191505090505b50905060008267ffffffffffffffff81111561074d5761074c61280e565b5b60405190808252806020026020018201604052801561077b5781602001602082028036833780820191505090505b50905060008367ffffffffffffffff81111561079a5761079961280e565b5b6040519080825280602002602001820160405280156107c85781602001602082028036833780820191505090505b50905060005b848110156109a8576000600382815481106107ec576107eb612c9b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff161515151581526020016000820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050806000015186848151811061090b5761090a612c9b565b5b602002602001019015159081151581525050806020015185848151811061093557610934612c9b565b5b602002602001019015159081151581525050806040015184848151811061095f5761095e612c9b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050505080806001019150506107ce565b50600383838383805480602002602001604051908101604052809291908181526020018280548015610a2f57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109e5575b5050505050935097509750975097505050505090919293565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf90612d9c565b60405180910390fd5b80805190602001206005604051610aef9190612e5f565b604051809103902014610b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2e90612ec2565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16610bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbd90612f2e565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff1615610c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4d90612f9a565b60405180910390fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff0219169083151502179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000815480929190610d6990612fe9565b9190505550505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa90612d9c565b60405180910390fd5b6000600460146101000a81548160ff021916908315150217905550565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea790612d9c565b60405180910390fd5b60005b600280549050811015610f5857600060028281548110610ed657610ed5612c9b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550508080600101915050610eb3565b506001600460146101000a81548160ff021916908315150217905550565b600460149054906101000a900460ff16610fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbc906130a3565b60405180910390fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104c9061310f565b60405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180546110a390612cf9565b9050036110e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dc9061317b565b60405180910390fd5b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055506000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff02191690831515021790555080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060205280600052604060002060009150905080600001805461124190612cf9565b80601f016020809104026020016040519081016040528092919081815260200182805461126d90612cf9565b80156112ba5780601f1061128f576101008083540402835291602001916112ba565b820191906000526020600020905b81548152906001019060200180831161129d57829003601f168201915b5050505050908060010154905082565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137790612d9c565b60405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180546113ce90612cf9565b905003611410576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611407906131e7565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600061145f91906122bc565b6001820160009055505060005b6002805490508110156115ef578173ffffffffffffffffffffffffffffffffffffffff16600282815481106114a4576114a3612c9b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036115e257600260016002805490506114fe9190613207565b8154811061150f5761150e612c9b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002828154811061154e5761154d612c9b565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060028054806115a8576115a761323b565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556115ef565b808060010191505061146c565b5050565b6060600060028054905067ffffffffffffffff8111156116165761161561280e565b5b6040519080825280602002602001820160405280156116445781602001602082028036833780820191505090505b50905060005b6002805490508110156117095760006002828154811061166d5761166c612c9b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548383815181106116ef576116ee612c9b565b5b60200260200101818152505050808060010191505061164a565b508091505090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179890612d9c565b60405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180546117ef90612cf9565b905014611831576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611828906132b6565b60405180910390fd5b604051806040016040528082815260200160008152506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001908161189a9190613482565b50602082015181600101559050506002829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461199f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199690612d9c565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b600080600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff161515151581526020016000820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050806000015181602001518260400151935093509350509193909250565b60016020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b60606000806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054611b8a90612cf9565b905003611bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc39061317b565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806040016040529081600082018054611c2790612cf9565b80601f0160208091040260200160405190810160405280929190818152602001828054611c5390612cf9565b8015611ca05780601f10611c7557610100808354040283529160200191611ca0565b820191906000526020600020905b815481529060010190602001808311611c8357829003601f168201915b505050505081526020016001820154815250509050806000015181602001519250925050915091565b60028181548110611cd957600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60058054611d1590612cf9565b80601f0160208091040260200160405190810160405280929190818152602001828054611d4190612cf9565b8015611d8e5780601f10611d6357610100808354040283529160200191611d8e565b820191906000526020600020905b815481529060010190602001808311611d7157829003601f168201915b505050505081565b60038181548110611da657600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5c90612d9c565b60405180910390fd5b60005b600280549050811015611f0d57600060028281548110611e8b57611e8a612c9b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550508080600101915050611e68565b5060005b6003805490508110156120a757600060038281548110611f3457611f33612c9b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff0219169083151502179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508080600101915050611f11565b506000600460146101000a81548160ff021916908315150217905550565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214c90612d9c565b60405180910390fd5b6040518060600160405280600015158152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff16815250600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff02191690831515021790555060408201518160000160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5080546122c890612cf9565b6000825580601f106122da57506122f9565b601f0160209004906000526020600020908101906122f891906122fc565b5b50565b5b808211156123155760008160009055506001016122fd565b5090565b60008115159050919050565b61232e81612319565b82525050565b60006020820190506123496000830184612325565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123a68261237b565b9050919050565b6123b68161239b565b82525050565b60006123c883836123ad565b60208301905092915050565b6000602082019050919050565b60006123ec8261234f565b6123f6818561235a565b93506124018361236b565b8060005b8381101561243257815161241988826123bc565b9750612424836123d4565b925050600181019050612405565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124a557808201518184015260208101905061248a565b60008484015250505050565b6000601f19601f8301169050919050565b60006124cd8261246b565b6124d78185612476565b93506124e7818560208601612487565b6124f0816124b1565b840191505092915050565b600061250783836124c2565b905092915050565b6000602082019050919050565b60006125278261243f565b612531818561244a565b9350836020820285016125438561245b565b8060005b8581101561257f578484038952815161256085826124fb565b945061256b8361250f565b925060208a01995050600181019050612547565b50829750879550505050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b6125d0816125bd565b82525050565b60006125e283836125c7565b60208301905092915050565b6000602082019050919050565b600061260682612591565b612610818561259c565b935061261b836125ad565b8060005b8381101561264c57815161263388826125d6565b975061263e836125ee565b92505060018101905061261f565b5085935050505092915050565b6000606082019050818103600083015261267381866123e1565b90508181036020830152612687818561251c565b9050818103604083015261269b81846125fb565b9050949350505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6126da81612319565b82525050565b60006126ec83836126d1565b60208301905092915050565b6000602082019050919050565b6000612710826126a5565b61271a81856126b0565b9350612725836126c1565b8060005b8381101561275657815161273d88826126e0565b9750612748836126f8565b925050600181019050612729565b5085935050505092915050565b6000608082019050818103600083015261277d81876123e1565b905081810360208301526127918186612705565b905081810360408301526127a58185612705565b905081810360608301526127b981846123e1565b905095945050505050565b6000604051905090565b600080fd5b600080fd5b6127e18161239b565b81146127ec57600080fd5b50565b6000813590506127fe816127d8565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612846826124b1565b810181811067ffffffffffffffff821117156128655761286461280e565b5b80604052505050565b60006128786127c4565b9050612884828261283d565b919050565b600067ffffffffffffffff8211156128a4576128a361280e565b5b6128ad826124b1565b9050602081019050919050565b82818337600083830152505050565b60006128dc6128d784612889565b61286e565b9050828152602081018484840111156128f8576128f7612809565b5b6129038482856128ba565b509392505050565b600082601f8301126129205761291f612804565b5b81356129308482602086016128c9565b91505092915050565b600080604083850312156129505761294f6127ce565b5b600061295e858286016127ef565b925050602083013567ffffffffffffffff81111561297f5761297e6127d3565b5b61298b8582860161290b565b9150509250929050565b6000602082840312156129ab576129aa6127ce565b5b60006129b9848285016127ef565b91505092915050565b600082825260208201905092915050565b60006129de8261246b565b6129e881856129c2565b93506129f8818560208601612487565b612a01816124b1565b840191505092915050565b612a15816125bd565b82525050565b60006040820190508181036000830152612a3581856129d3565b9050612a446020830184612a0c565b9392505050565b612a548161239b565b82525050565b6000602082019050612a6f6000830184612a4b565b92915050565b60006020820190508181036000830152612a8f81846125fb565b905092915050565b600067ffffffffffffffff821115612ab257612ab161280e565b5b612abb826124b1565b9050602081019050919050565b6000612adb612ad684612a97565b61286e565b905082815260208101848484011115612af757612af6612809565b5b612b028482856128ba565b509392505050565b600082601f830112612b1f57612b1e612804565b5b8135612b2f848260208601612ac8565b91505092915050565b60008060408385031215612b4f57612b4e6127ce565b5b6000612b5d858286016127ef565b925050602083013567ffffffffffffffff811115612b7e57612b7d6127d3565b5b612b8a85828601612b0a565b9150509250929050565b6000606082019050612ba96000830186612325565b612bb66020830185612325565b612bc36040830184612a4b565b949350505050565b612bd4816125bd565b8114612bdf57600080fd5b50565b600081359050612bf181612bcb565b92915050565b600060208284031215612c0d57612c0c6127ce565b5b6000612c1b84828501612be2565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000612c4b82612c24565b612c558185612c2f565b9350612c65818560208601612487565b612c6e816124b1565b840191505092915050565b60006020820190508181036000830152612c938184612c40565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d1157607f821691505b602082108103612d2457612d23612cca565b5b50919050565b7f4f6e6c7920746865206f776e65722063616e20706572666f726d20746869732060008201527f616374696f6e0000000000000000000000000000000000000000000000000000602082015250565b6000612d866026836129c2565b9150612d9182612d2a565b604082019050919050565b60006020820190508181036000830152612db581612d79565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b60008154612de981612cf9565b612df38186612dbc565b94506001821660008114612e0e5760018114612e2357612e56565b60ff1983168652811515820286019350612e56565b612e2c85612dc7565b60005b83811015612e4e57815481890152600182019150602081019050612e2f565b838801955050505b50505092915050565b6000612e6b8284612ddc565b915081905092915050565b7f496e76616c6964206261636b656e64206b657900000000000000000000000000600082015250565b6000612eac6013836129c2565b9150612eb782612e76565b602082019050919050565b60006020820190508181036000830152612edb81612e9f565b9050919050565b7f566f74657220686173206e6f7420766f74656420796574000000000000000000600082015250565b6000612f186017836129c2565b9150612f2382612ee2565b602082019050919050565b60006020820190508181036000830152612f4781612f0b565b9050919050565b7f566f746520616c72656164792076616c69646174656400000000000000000000600082015250565b6000612f846016836129c2565b9150612f8f82612f4e565b602082019050919050565b60006020820190508181036000830152612fb381612f77565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ff4826125bd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361302657613025612fba565b5b600182019050919050565b7f456c656374696f6e206973206e6f742063757272656e746c792072756e6e696e60008201527f6700000000000000000000000000000000000000000000000000000000000000602082015250565b600061308d6021836129c2565b915061309882613031565b604082019050919050565b600060208201905081810360008301526130bc81613080565b9050919050565b7f596f75206861766520616c726561647920766f74656400000000000000000000600082015250565b60006130f96016836129c2565b9150613104826130c3565b602082019050919050565b60006020820190508181036000830152613128816130ec565b9050919050565b7f496e76616c69642063616e646964617465000000000000000000000000000000600082015250565b60006131656011836129c2565b91506131708261312f565b602082019050919050565b6000602082019050818103600083015261319481613158565b9050919050565b7f43616e64696461746520646f6573206e6f742065786973740000000000000000600082015250565b60006131d16018836129c2565b91506131dc8261319b565b602082019050919050565b60006020820190508181036000830152613200816131c4565b9050919050565b6000613212826125bd565b915061321d836125bd565b925082820390508181111561323557613234612fba565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f43616e64696461746520616c7265616479206578697374730000000000000000600082015250565b60006132a06018836129c2565b91506132ab8261326a565b602082019050919050565b600060208201905081810360008301526132cf81613293565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026133387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826132fb565b61334286836132fb565b95508019841693508086168417925050509392505050565b6000819050919050565b600061337f61337a613375846125bd565b61335a565b6125bd565b9050919050565b6000819050919050565b61339983613364565b6133ad6133a582613386565b848454613308565b825550505050565b600090565b6133c26133b5565b6133cd818484613390565b505050565b5b818110156133f1576133e66000826133ba565b6001810190506133d3565b5050565b601f82111561343657613407816132d6565b613410846132eb565b8101602085101561341f578190505b61343361342b856132eb565b8301826133d2565b50505b505050565b600082821c905092915050565b60006134596000198460080261343b565b1980831691505092915050565b60006134728383613448565b9150826002028217905092915050565b61348b8261246b565b67ffffffffffffffff8111156134a4576134a361280e565b5b6134ae8254612cf9565b6134b98282856133f5565b600060209050601f8311600181146134ec57600084156134da578287015190505b6134e48582613466565b86555061354c565b601f1984166134fa866132d6565b60005b82811015613522578489015182556001820191506020850194506020810190506134fd565b8683101561353f578489015161353b601f891682613448565b8355505b6001600288020188555050505b50505050505056fea26469706673582212201317c3ccd55b9ce35ef49afefd1adfc1ad6e1915ee00e10e54d20c15b5cd047e64736f6c63430008180033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c80639a0e7d66116100b8578063b7adcf1d1161007c578063b7adcf1d146102fa578063d55d73c51461032b578063d655d58e1461035b578063dd0e237314610379578063e8f30523146103a9578063f4ab9adf146103b357610137565b80639a0e7d66146102525780639a594f06146102705780639cb8a26a1461028c5780639ed1f25514610296578063a3ec138d146102c857610137565b806362d73eb8116100ff57806362d73eb8146101c15780636dd7d8ea146101cb5780638ab66a90146101e75780638da5cb5b1461021857806395f11ce61461023657610137565b806313086ec91461013c5780632e6997fe1461015a57806335bbe70e1461017a578063392dc4fd1461019b57806359f78468146101b7575b600080fd5b6101446103cf565b6040516101519190612334565b60405180910390f35b6101626103e2565b60405161017193929190612659565b60405180910390f35b6101826106d4565b6040516101929493929190612763565b60405180910390f35b6101b560048036038101906101b09190612939565b610a48565b005b6101bf610d73565b005b6101c9610e20565b005b6101e560048036038101906101e09190612995565b610f76565b005b61020160048036038101906101fc9190612995565b61121e565b60405161020f929190612a1b565b60405180910390f35b6102206112ca565b60405161022d9190612a5a565b60405180910390f35b610250600480360381019061024b9190612995565b6112f0565b005b61025a6115f3565b6040516102679190612a75565b60405180910390f35b61028a60048036038101906102859190612b38565b611711565b005b61029461190f565b005b6102b060048036038101906102ab9190612995565b6119da565b6040516102bf93929190612b94565b60405180910390f35b6102e260048036038101906102dd9190612995565b611ad5565b6040516102f193929190612b94565b60405180910390f35b610314600480360381019061030f9190612995565b611b39565b604051610322929190612a1b565b60405180910390f35b61034560048036038101906103409190612bf7565b611cc9565b6040516103529190612a5a565b60405180910390f35b610363611d08565b6040516103709190612c79565b60405180910390f35b610393600480360381019061038e9190612bf7565b611d96565b6040516103a09190612a5a565b60405180910390f35b6103b1611dd5565b005b6103cd60048036038101906103c89190612995565b6120c5565b005b600460149054906101000a900460ff1681565b6060806060600060028054905067ffffffffffffffff8111156104085761040761280e565b5b60405190808252806020026020018201604052801561043b57816020015b60608152602001906001900390816104265790505b509050600060028054905067ffffffffffffffff81111561045f5761045e61280e565b5b60405190808252806020026020018201604052801561048d5781602001602082028036833780820191505090505b50905060005b60028054905081101561063a576000600282815481106104b6576104b5612c9b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001805461052f90612cf9565b80601f016020809104026020016040519081016040528092919081815260200182805461055b90612cf9565b80156105a85780601f1061057d576101008083540402835291602001916105a8565b820191906000526020600020905b81548152906001019060200180831161058b57829003601f168201915b50505050508483815181106105c0576105bf612c9b565b5b60200260200101819052506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548383815181106106205761061f612c9b565b5b602002602001018181525050508080600101915050610493565b5060028282828054806020026020016040519081016040528092919081815260200182805480156106c057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610676575b505050505092509450945094505050909192565b6060806060806000600380549050905060008167ffffffffffffffff811115610700576106ff61280e565b5b60405190808252806020026020018201604052801561072e5781602001602082028036833780820191505090505b50905060008267ffffffffffffffff81111561074d5761074c61280e565b5b60405190808252806020026020018201604052801561077b5781602001602082028036833780820191505090505b50905060008367ffffffffffffffff81111561079a5761079961280e565b5b6040519080825280602002602001820160405280156107c85781602001602082028036833780820191505090505b50905060005b848110156109a8576000600382815481106107ec576107eb612c9b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff161515151581526020016000820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050806000015186848151811061090b5761090a612c9b565b5b602002602001019015159081151581525050806020015185848151811061093557610934612c9b565b5b602002602001019015159081151581525050806040015184848151811061095f5761095e612c9b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050505080806001019150506107ce565b50600383838383805480602002602001604051908101604052809291908181526020018280548015610a2f57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109e5575b5050505050935097509750975097505050505090919293565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf90612d9c565b60405180910390fd5b80805190602001206005604051610aef9190612e5f565b604051809103902014610b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2e90612ec2565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16610bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbd90612f2e565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff1615610c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4d90612f9a565b60405180910390fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff0219169083151502179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000815480929190610d6990612fe9565b9190505550505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa90612d9c565b60405180910390fd5b6000600460146101000a81548160ff021916908315150217905550565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea790612d9c565b60405180910390fd5b60005b600280549050811015610f5857600060028281548110610ed657610ed5612c9b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550508080600101915050610eb3565b506001600460146101000a81548160ff021916908315150217905550565b600460149054906101000a900460ff16610fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbc906130a3565b60405180910390fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104c9061310f565b60405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180546110a390612cf9565b9050036110e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dc9061317b565b60405180910390fd5b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055506000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff02191690831515021790555080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060205280600052604060002060009150905080600001805461124190612cf9565b80601f016020809104026020016040519081016040528092919081815260200182805461126d90612cf9565b80156112ba5780601f1061128f576101008083540402835291602001916112ba565b820191906000526020600020905b81548152906001019060200180831161129d57829003601f168201915b5050505050908060010154905082565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137790612d9c565b60405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180546113ce90612cf9565b905003611410576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611407906131e7565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600061145f91906122bc565b6001820160009055505060005b6002805490508110156115ef578173ffffffffffffffffffffffffffffffffffffffff16600282815481106114a4576114a3612c9b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036115e257600260016002805490506114fe9190613207565b8154811061150f5761150e612c9b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002828154811061154e5761154d612c9b565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060028054806115a8576115a761323b565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556115ef565b808060010191505061146c565b5050565b6060600060028054905067ffffffffffffffff8111156116165761161561280e565b5b6040519080825280602002602001820160405280156116445781602001602082028036833780820191505090505b50905060005b6002805490508110156117095760006002828154811061166d5761166c612c9b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548383815181106116ef576116ee612c9b565b5b60200260200101818152505050808060010191505061164a565b508091505090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179890612d9c565b60405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180546117ef90612cf9565b905014611831576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611828906132b6565b60405180910390fd5b604051806040016040528082815260200160008152506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001908161189a9190613482565b50602082015181600101559050506002829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461199f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199690612d9c565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b600080600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff161515151581526020016000820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050806000015181602001518260400151935093509350509193909250565b60016020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b60606000806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054611b8a90612cf9565b905003611bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc39061317b565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806040016040529081600082018054611c2790612cf9565b80601f0160208091040260200160405190810160405280929190818152602001828054611c5390612cf9565b8015611ca05780601f10611c7557610100808354040283529160200191611ca0565b820191906000526020600020905b815481529060010190602001808311611c8357829003601f168201915b505050505081526020016001820154815250509050806000015181602001519250925050915091565b60028181548110611cd957600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60058054611d1590612cf9565b80601f0160208091040260200160405190810160405280929190818152602001828054611d4190612cf9565b8015611d8e5780601f10611d6357610100808354040283529160200191611d8e565b820191906000526020600020905b815481529060010190602001808311611d7157829003601f168201915b505050505081565b60038181548110611da657600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5c90612d9c565b60405180910390fd5b60005b600280549050811015611f0d57600060028281548110611e8b57611e8a612c9b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550508080600101915050611e68565b5060005b6003805490508110156120a757600060038281548110611f3457611f33612c9b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff0219169083151502179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508080600101915050611f11565b506000600460146101000a81548160ff021916908315150217905550565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214c90612d9c565b60405180910390fd5b6040518060600160405280600015158152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff16815250600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff02191690831515021790555060408201518160000160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5080546122c890612cf9565b6000825580601f106122da57506122f9565b601f0160209004906000526020600020908101906122f891906122fc565b5b50565b5b808211156123155760008160009055506001016122fd565b5090565b60008115159050919050565b61232e81612319565b82525050565b60006020820190506123496000830184612325565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123a68261237b565b9050919050565b6123b68161239b565b82525050565b60006123c883836123ad565b60208301905092915050565b6000602082019050919050565b60006123ec8261234f565b6123f6818561235a565b93506124018361236b565b8060005b8381101561243257815161241988826123bc565b9750612424836123d4565b925050600181019050612405565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124a557808201518184015260208101905061248a565b60008484015250505050565b6000601f19601f8301169050919050565b60006124cd8261246b565b6124d78185612476565b93506124e7818560208601612487565b6124f0816124b1565b840191505092915050565b600061250783836124c2565b905092915050565b6000602082019050919050565b60006125278261243f565b612531818561244a565b9350836020820285016125438561245b565b8060005b8581101561257f578484038952815161256085826124fb565b945061256b8361250f565b925060208a01995050600181019050612547565b50829750879550505050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b6125d0816125bd565b82525050565b60006125e283836125c7565b60208301905092915050565b6000602082019050919050565b600061260682612591565b612610818561259c565b935061261b836125ad565b8060005b8381101561264c57815161263388826125d6565b975061263e836125ee565b92505060018101905061261f565b5085935050505092915050565b6000606082019050818103600083015261267381866123e1565b90508181036020830152612687818561251c565b9050818103604083015261269b81846125fb565b9050949350505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6126da81612319565b82525050565b60006126ec83836126d1565b60208301905092915050565b6000602082019050919050565b6000612710826126a5565b61271a81856126b0565b9350612725836126c1565b8060005b8381101561275657815161273d88826126e0565b9750612748836126f8565b925050600181019050612729565b5085935050505092915050565b6000608082019050818103600083015261277d81876123e1565b905081810360208301526127918186612705565b905081810360408301526127a58185612705565b905081810360608301526127b981846123e1565b905095945050505050565b6000604051905090565b600080fd5b600080fd5b6127e18161239b565b81146127ec57600080fd5b50565b6000813590506127fe816127d8565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612846826124b1565b810181811067ffffffffffffffff821117156128655761286461280e565b5b80604052505050565b60006128786127c4565b9050612884828261283d565b919050565b600067ffffffffffffffff8211156128a4576128a361280e565b5b6128ad826124b1565b9050602081019050919050565b82818337600083830152505050565b60006128dc6128d784612889565b61286e565b9050828152602081018484840111156128f8576128f7612809565b5b6129038482856128ba565b509392505050565b600082601f8301126129205761291f612804565b5b81356129308482602086016128c9565b91505092915050565b600080604083850312156129505761294f6127ce565b5b600061295e858286016127ef565b925050602083013567ffffffffffffffff81111561297f5761297e6127d3565b5b61298b8582860161290b565b9150509250929050565b6000602082840312156129ab576129aa6127ce565b5b60006129b9848285016127ef565b91505092915050565b600082825260208201905092915050565b60006129de8261246b565b6129e881856129c2565b93506129f8818560208601612487565b612a01816124b1565b840191505092915050565b612a15816125bd565b82525050565b60006040820190508181036000830152612a3581856129d3565b9050612a446020830184612a0c565b9392505050565b612a548161239b565b82525050565b6000602082019050612a6f6000830184612a4b565b92915050565b60006020820190508181036000830152612a8f81846125fb565b905092915050565b600067ffffffffffffffff821115612ab257612ab161280e565b5b612abb826124b1565b9050602081019050919050565b6000612adb612ad684612a97565b61286e565b905082815260208101848484011115612af757612af6612809565b5b612b028482856128ba565b509392505050565b600082601f830112612b1f57612b1e612804565b5b8135612b2f848260208601612ac8565b91505092915050565b60008060408385031215612b4f57612b4e6127ce565b5b6000612b5d858286016127ef565b925050602083013567ffffffffffffffff811115612b7e57612b7d6127d3565b5b612b8a85828601612b0a565b9150509250929050565b6000606082019050612ba96000830186612325565b612bb66020830185612325565b612bc36040830184612a4b565b949350505050565b612bd4816125bd565b8114612bdf57600080fd5b50565b600081359050612bf181612bcb565b92915050565b600060208284031215612c0d57612c0c6127ce565b5b6000612c1b84828501612be2565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000612c4b82612c24565b612c558185612c2f565b9350612c65818560208601612487565b612c6e816124b1565b840191505092915050565b60006020820190508181036000830152612c938184612c40565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d1157607f821691505b602082108103612d2457612d23612cca565b5b50919050565b7f4f6e6c7920746865206f776e65722063616e20706572666f726d20746869732060008201527f616374696f6e0000000000000000000000000000000000000000000000000000602082015250565b6000612d866026836129c2565b9150612d9182612d2a565b604082019050919050565b60006020820190508181036000830152612db581612d79565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b60008154612de981612cf9565b612df38186612dbc565b94506001821660008114612e0e5760018114612e2357612e56565b60ff1983168652811515820286019350612e56565b612e2c85612dc7565b60005b83811015612e4e57815481890152600182019150602081019050612e2f565b838801955050505b50505092915050565b6000612e6b8284612ddc565b915081905092915050565b7f496e76616c6964206261636b656e64206b657900000000000000000000000000600082015250565b6000612eac6013836129c2565b9150612eb782612e76565b602082019050919050565b60006020820190508181036000830152612edb81612e9f565b9050919050565b7f566f74657220686173206e6f7420766f74656420796574000000000000000000600082015250565b6000612f186017836129c2565b9150612f2382612ee2565b602082019050919050565b60006020820190508181036000830152612f4781612f0b565b9050919050565b7f566f746520616c72656164792076616c69646174656400000000000000000000600082015250565b6000612f846016836129c2565b9150612f8f82612f4e565b602082019050919050565b60006020820190508181036000830152612fb381612f77565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ff4826125bd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361302657613025612fba565b5b600182019050919050565b7f456c656374696f6e206973206e6f742063757272656e746c792072756e6e696e60008201527f6700000000000000000000000000000000000000000000000000000000000000602082015250565b600061308d6021836129c2565b915061309882613031565b604082019050919050565b600060208201905081810360008301526130bc81613080565b9050919050565b7f596f75206861766520616c726561647920766f74656400000000000000000000600082015250565b60006130f96016836129c2565b9150613104826130c3565b602082019050919050565b60006020820190508181036000830152613128816130ec565b9050919050565b7f496e76616c69642063616e646964617465000000000000000000000000000000600082015250565b60006131656011836129c2565b91506131708261312f565b602082019050919050565b6000602082019050818103600083015261319481613158565b9050919050565b7f43616e64696461746520646f6573206e6f742065786973740000000000000000600082015250565b60006131d16018836129c2565b91506131dc8261319b565b602082019050919050565b60006020820190508181036000830152613200816131c4565b9050919050565b6000613212826125bd565b915061321d836125bd565b925082820390508181111561323557613234612fba565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f43616e64696461746520616c7265616479206578697374730000000000000000600082015250565b60006132a06018836129c2565b91506132ab8261326a565b602082019050919050565b600060208201905081810360008301526132cf81613293565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026133387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826132fb565b61334286836132fb565b95508019841693508086168417925050509392505050565b6000819050919050565b600061337f61337a613375846125bd565b61335a565b6125bd565b9050919050565b6000819050919050565b61339983613364565b6133ad6133a582613386565b848454613308565b825550505050565b600090565b6133c26133b5565b6133cd818484613390565b505050565b5b818110156133f1576133e66000826133ba565b6001810190506133d3565b5050565b601f82111561343657613407816132d6565b613410846132eb565b8101602085101561341f578190505b61343361342b856132eb565b8301826133d2565b50505b505050565b600082821c905092915050565b60006134596000198460080261343b565b1980831691505092915050565b60006134728383613448565b9150826002028217905092915050565b61348b8261246b565b67ffffffffffffffff8111156134a4576134a361280e565b5b6134ae8254612cf9565b6134b98282856133f5565b600060209050601f8311600181146134ec57600084156134da578287015190505b6134e48582613466565b86555061354c565b601f1984166134fa866132d6565b60005b82811015613522578489015182556001820191506020850194506020810190506134fd565b8683101561353f578489015161353b601f891682613448565b8355505b6001600288020188555050505b50505050505056fea26469706673582212201317c3ccd55b9ce35ef49afefd1adfc1ad6e1915ee00e10e54d20c15b5cd047e64736f6c63430008180033",
"linkReferences": {},
"deployedLinkReferences": {}
}