github.com/hashgraph/hedera-sdk-go/v2@v2.48.0/examples/precompile_example/PrecompileExample.json (about) 1 { 2 "abi": [ 3 { 4 "inputs": [ 5 { 6 "internalType": "address payable", 7 "name": "_owner", 8 "type": "address" 9 }, 10 { 11 "internalType": "address payable", 12 "name": "_aliceAccount", 13 "type": "address" 14 } 15 ], 16 "stateMutability": "nonpayable", 17 "type": "constructor" 18 }, 19 { 20 "anonymous": false, 21 "inputs": [ 22 { 23 "indexed": false, 24 "internalType": "bool", 25 "name": "", 26 "type": "bool" 27 }, 28 { 29 "indexed": false, 30 "internalType": "bytes", 31 "name": "", 32 "type": "bytes" 33 } 34 ], 35 "name": "CallResponseEvent", 36 "type": "event" 37 }, 38 { 39 "inputs": [], 40 "name": "getPseudorandomSeed", 41 "outputs": [ 42 { 43 "internalType": "bytes32", 44 "name": "seedBytes", 45 "type": "bytes32" 46 } 47 ], 48 "stateMutability": "nonpayable", 49 "type": "function" 50 }, 51 { 52 "inputs": [ 53 { 54 "internalType": "address", 55 "name": "token", 56 "type": "address" 57 }, 58 { 59 "internalType": "bytes", 60 "name": "encodedFunctionSelector", 61 "type": "bytes" 62 } 63 ], 64 "name": "redirectForToken", 65 "outputs": [ 66 { 67 "internalType": "int256", 68 "name": "responseCode", 69 "type": "int256" 70 }, 71 { 72 "internalType": "bytes", 73 "name": "response", 74 "type": "bytes" 75 } 76 ], 77 "stateMutability": "nonpayable", 78 "type": "function" 79 }, 80 { 81 "inputs": [], 82 "name": "step0", 83 "outputs": [ 84 { 85 "internalType": "bytes32", 86 "name": "result", 87 "type": "bytes32" 88 } 89 ], 90 "stateMutability": "nonpayable", 91 "type": "function" 92 }, 93 { 94 "inputs": [], 95 "name": "step1", 96 "outputs": [ 97 { 98 "internalType": "int256", 99 "name": "responseCode", 100 "type": "int256" 101 } 102 ], 103 "stateMutability": "payable", 104 "type": "function" 105 }, 106 { 107 "inputs": [], 108 "name": "step10", 109 "outputs": [ 110 { 111 "internalType": "int256", 112 "name": "responseCode", 113 "type": "int256" 114 } 115 ], 116 "stateMutability": "nonpayable", 117 "type": "function" 118 }, 119 { 120 "inputs": [ 121 { 122 "internalType": "bytes", 123 "name": "keyBytes", 124 "type": "bytes" 125 } 126 ], 127 "name": "step11", 128 "outputs": [ 129 { 130 "internalType": "int256", 131 "name": "responseCode", 132 "type": "int256" 133 }, 134 { 135 "internalType": "address", 136 "name": "", 137 "type": "address" 138 } 139 ], 140 "stateMutability": "payable", 141 "type": "function" 142 }, 143 { 144 "inputs": [ 145 { 146 "internalType": "bytes[]", 147 "name": "metadatas", 148 "type": "bytes[]" 149 } 150 ], 151 "name": "step12", 152 "outputs": [ 153 { 154 "internalType": "int256", 155 "name": "responseCode", 156 "type": "int256" 157 } 158 ], 159 "stateMutability": "nonpayable", 160 "type": "function" 161 }, 162 { 163 "inputs": [], 164 "name": "step13", 165 "outputs": [ 166 { 167 "internalType": "int256", 168 "name": "responseCode", 169 "type": "int256" 170 } 171 ], 172 "stateMutability": "nonpayable", 173 "type": "function" 174 }, 175 { 176 "inputs": [], 177 "name": "step14", 178 "outputs": [ 179 { 180 "internalType": "int256", 181 "name": "responseCode", 182 "type": "int256" 183 } 184 ], 185 "stateMutability": "nonpayable", 186 "type": "function" 187 }, 188 { 189 "inputs": [], 190 "name": "step15", 191 "outputs": [ 192 { 193 "internalType": "int256", 194 "name": "responseCode", 195 "type": "int256" 196 } 197 ], 198 "stateMutability": "nonpayable", 199 "type": "function" 200 }, 201 { 202 "inputs": [], 203 "name": "step16", 204 "outputs": [ 205 { 206 "internalType": "int256", 207 "name": "responseCode", 208 "type": "int256" 209 } 210 ], 211 "stateMutability": "nonpayable", 212 "type": "function" 213 }, 214 { 215 "inputs": [], 216 "name": "step2", 217 "outputs": [ 218 { 219 "internalType": "int256", 220 "name": "responseCode", 221 "type": "int256" 222 } 223 ], 224 "stateMutability": "nonpayable", 225 "type": "function" 226 }, 227 { 228 "inputs": [], 229 "name": "step3", 230 "outputs": [ 231 { 232 "internalType": "int256", 233 "name": "responseCode", 234 "type": "int256" 235 } 236 ], 237 "stateMutability": "nonpayable", 238 "type": "function" 239 }, 240 { 241 "inputs": [], 242 "name": "step4", 243 "outputs": [ 244 { 245 "internalType": "int256", 246 "name": "responseCode", 247 "type": "int256" 248 } 249 ], 250 "stateMutability": "nonpayable", 251 "type": "function" 252 }, 253 { 254 "inputs": [], 255 "name": "step5", 256 "outputs": [ 257 { 258 "internalType": "int256", 259 "name": "responseCode", 260 "type": "int256" 261 } 262 ], 263 "stateMutability": "nonpayable", 264 "type": "function" 265 }, 266 { 267 "inputs": [], 268 "name": "step6", 269 "outputs": [ 270 { 271 "internalType": "int256", 272 "name": "responseCode", 273 "type": "int256" 274 } 275 ], 276 "stateMutability": "nonpayable", 277 "type": "function" 278 }, 279 { 280 "inputs": [], 281 "name": "step7", 282 "outputs": [ 283 { 284 "internalType": "int256", 285 "name": "responseCode", 286 "type": "int256" 287 } 288 ], 289 "stateMutability": "nonpayable", 290 "type": "function" 291 }, 292 { 293 "inputs": [], 294 "name": "step8", 295 "outputs": [ 296 { 297 "internalType": "int256", 298 "name": "responseCode", 299 "type": "int256" 300 } 301 ], 302 "stateMutability": "nonpayable", 303 "type": "function" 304 }, 305 { 306 "inputs": [], 307 "name": "step9", 308 "outputs": [ 309 { 310 "internalType": "int256", 311 "name": "responseCode", 312 "type": "int256" 313 } 314 ], 315 "stateMutability": "nonpayable", 316 "type": "function" 317 }, 318 { 319 "inputs": [ 320 { 321 "internalType": "address", 322 "name": "token", 323 "type": "address" 324 }, 325 { 326 "internalType": "address", 327 "name": "from", 328 "type": "address" 329 }, 330 { 331 "internalType": "address", 332 "name": "to", 333 "type": "address" 334 }, 335 { 336 "internalType": "uint256", 337 "name": "amount", 338 "type": "uint256" 339 } 340 ], 341 "name": "transferFrom", 342 "outputs": [ 343 { 344 "internalType": "int64", 345 "name": "responseCode", 346 "type": "int64" 347 } 348 ], 349 "stateMutability": "nonpayable", 350 "type": "function" 351 }, 352 { 353 "inputs": [ 354 { 355 "internalType": "address", 356 "name": "token", 357 "type": "address" 358 }, 359 { 360 "internalType": "address", 361 "name": "from", 362 "type": "address" 363 }, 364 { 365 "internalType": "address", 366 "name": "to", 367 "type": "address" 368 }, 369 { 370 "internalType": "uint256", 371 "name": "serialNumber", 372 "type": "uint256" 373 } 374 ], 375 "name": "transferFromNFT", 376 "outputs": [ 377 { 378 "internalType": "int64", 379 "name": "responseCode", 380 "type": "int64" 381 } 382 ], 383 "stateMutability": "nonpayable", 384 "type": "function" 385 } 386 ], 387 "bytecode": "60806040523480156200001157600080fd5b50604051620049a5380380620049a5833981810160405281019062000037919062000304565b60018060008060068111156200005257620000516200034b565b5b60068111156200006757620000666200034b565b5b815260200190815260200160002081905550600260016000600160068111156200009657620000956200034b565b5b6006811115620000ab57620000aa6200034b565b5b81526020019081526020016000208190555060046001600060026006811115620000da57620000d96200034b565b5b6006811115620000ef57620000ee6200034b565b5b815260200190815260200160002081905550600860016000600360068111156200011e576200011d6200034b565b5b60068111156200013357620001326200034b565b5b815260200190815260200160002081905550601060016000600460068111156200016257620001616200034b565b5b60068111156200017757620001766200034b565b5b81526020019081526020016000208190555060206001600060056006811115620001a657620001a56200034b565b5b6006811115620001bb57620001ba6200034b565b5b815260200190815260200160002081905550604060016000600680811115620001e957620001e86200034b565b5b6006811115620001fe57620001fd6200034b565b5b81526020019081526020016000208190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506200037a565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002cc826200029f565b9050919050565b620002de81620002bf565b8114620002ea57600080fd5b50565b600081519050620002fe81620002d3565b92915050565b600080604083850312156200031e576200031d6200029a565b5b60006200032e85828601620002ed565b92505060206200034185828601620002ed565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b61461b806200038a6000396000f3fe60806040526004361061012a5760003560e01c80639b23d3d9116100ab578063c30131c51161006f578063c30131c514610403578063d40a71fb1461042e578063d83bf9a11461044c578063df4ec24914610477578063eb7c6f72146104a2578063fb5d7376146104cd5761012a565b80639b23d3d91461031a578063a3221c8e14610357578063ade094b414610382578063bdc7a422146103ad578063bddd3a6b146103d85761012a565b80634fb4bcec116100f25780634fb4bcec1461021e578063618dc65e146102495780637f990e8f146102875780637fbaadba146102c45780638f4ed333146102ef5761012a565b806315dacbea1461012f57806323a452ad1461016c57806336f468911461019d57806344ac2d48146101c8578063462a08df146101f3575b600080fd5b34801561013b57600080fd5b5061015660048036038101906101519190613240565b6104f8565b60405161016391906132c3565b60405180910390f35b61018660048036038101906101819190613424565b610616565b604051610194929190613495565b60405180910390f35b3480156101a957600080fd5b506101b26109ec565b6040516101bf91906134be565b60405180910390f35b3480156101d457600080fd5b506101dd610a9e565b6040516101ea91906134f2565b60405180910390f35b3480156101ff57600080fd5b50610208610b70565b60405161021591906134be565b60405180910390f35b34801561022a57600080fd5b50610233610c91565b60405161024091906134be565b60405180910390f35b34801561025557600080fd5b50610270600480360381019061026b919061350d565b610d42565b60405161027e9291906135e8565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a991906136fe565b610eaf565b6040516102bb91906134be565b60405180910390f35b3480156102d057600080fd5b506102d9610ffd565b6040516102e691906134be565b60405180910390f35b3480156102fb57600080fd5b506103046110af565b60405161031191906134be565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c9190613240565b6111ac565b60405161034e91906132c3565b60405180910390f35b34801561036357600080fd5b5061036c6112ca565b60405161037991906134be565b60405180910390f35b34801561038e57600080fd5b5061039761137c565b6040516103a491906134be565b60405180910390f35b3480156103b957600080fd5b506103c261146d565b6040516103cf91906134be565b60405180910390f35b3480156103e457600080fd5b506103ed61151c565b6040516103fa91906134be565b60405180910390f35b34801561040f57600080fd5b506104186115a8565b60405161042591906134be565b60405180910390f35b610436611659565b60405161044391906134be565b60405180910390f35b34801561045857600080fd5b506104616119c9565b60405161046e91906134f2565b60405180910390f35b34801561048357600080fd5b5061048c611b01565b60405161049991906134be565b60405180910390f35b3480156104ae57600080fd5b506104b7611bb0565b6040516104c491906134be565b60405180910390f35b3480156104d957600080fd5b506104e2611c3c565b6040516104ef91906134be565b60405180910390f35b600080600061016773ffffffffffffffffffffffffffffffffffffffff166315dacbea60e01b888888886040516024016105359493929190613756565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161059f91906137d7565b6000604051808303816000865af19150503d80600081146105dc576040519150601f19603f3d011682016040523d82523d6000602084013e6105e1565b606091505b5091509150816105f2576015610607565b808060200190518101906106069190613827565b5b60030b92505050949350505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461067357600080fd5b6000600167ffffffffffffffff8111156106905761068f6132f9565b5b6040519080825280602002602001820160405280156106c957816020015b6106b661300f565b8152602001906001900390816106ae5790505b5090506106db60006004600287611cee565b816000815181106106ef576106ee613854565b5b60200260200101819052506000600167ffffffffffffffff811115610717576107166132f9565b5b60405190808252806020026020018201604052801561075057816020015b61073d61302f565b8152602001906001900390816107355790505b5090506107836305f5e100600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611d27565b8160008151811061079757610796613854565b5b602002602001018190525061090c6040518061012001604052806040518060400160405280601181526020017f4578616d706c65204e465420746f6b656e00000000000000000000000000000081525081526020016040518060400160405280600481526020017f454e46540000000000000000000000000000000000000000000000000000000081525081526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060400160405280600481526020017f6d656d6f0000000000000000000000000000000000000000000000000000000081525081526020016001151581526020016103e860070b81526020016000151581526020018481526020016108ae30626acfc0611d90565b81525082600067ffffffffffffffff8111156108cd576108cc6132f9565b5b60405190808252806020026020018201604052801561090657816020015b6108f3613091565b8152602001906001900390816108eb5790505b50611de8565b600560008291906101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508195505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156109bc573d6000803e3d6000fd5b5083600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935093505050915091565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a4857600080fd5b610a99600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611f5e565b905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afa57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff1663d83bf9a16040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610b47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6b91906138af565b905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bcc57600080fd5b6000600167ffffffffffffffff811115610be957610be86132f9565b5b604051908082528060200260200182016040528015610c175781602001602082028036833780820191505090505b509050600381600081518110610c3057610c2f613854565b5b602002602001019060070b908160070b815250506000610c74600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008461207c565b809250819450505060028160070b14610c8c57600080fd5b505090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ced57600080fd5b610d3d600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660646121a4565b905090565b6000606060008061016773ffffffffffffffffffffffffffffffffffffffff1663618dc65e60e01b8787604051602401610d7d9291906138dc565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610de791906137d7565b6000604051808303816000865af19150503d8060008114610e24576040519150601f19603f3d011682016040523d82523d6000602084013e610e29565b606091505b50915091507f4af4780e06fe8cb9df64b0794fa6f01399af979175bb988e35e0e57e594567bc8282604051610e5f929190613927565b60405180910390a181610e8357601560405180602001604052806000815250610e98565b80806020019051810190610e9791906139c7565b5b8160030b9150809450819550505050509250929050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f0b57600080fd5b6003825114610f1957600080fd5b60006060610f4b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000866122bf565b80935081945082955050505060038260070b14610f6757600080fd5b6003815114610f7557600080fd5b600181600081518110610f8b57610f8a613854565b5b602002602001015160070b14610fa057600080fd5b600281600181518110610fb657610fb5613854565b5b602002602001015160070b14610fcb57600080fd5b600381600281518110610fe157610fe0613854565b5b602002602001015160070b14610ff657600080fd5b5050919050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461105957600080fd5b6110a7600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612437565b60070b905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461110b57600080fd5b6000606061118b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166064600067ffffffffffffffff811115611152576111516132f9565b5b60405190808252806020026020018201604052801561118557816020015b60608152602001906001900390816111705790505b506122bf565b80935081945082955050505060c88260070b146111a757600080fd5b505090565b600080600061016773ffffffffffffffffffffffffffffffffffffffff16639b23d3d960e01b888888886040516024016111e99493929190613756565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161125391906137d7565b6000604051808303816000865af19150503d8060008114611290576040519150601f19603f3d011682016040523d82523d6000602084013e611295565b606091505b5091509150816112a65760156112bb565b808060200190518101906112ba9190613827565b5b60030b92505050949350505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461132657600080fd5b611374600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661254f565b60070b905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113d857600080fd5b6000611451600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166032600067ffffffffffffffff81111561141d5761141c6132f9565b5b60405190808252806020026020018201604052801561144b5781602001602082028036833780820191505090505b5061207c565b809250819350505060968160070b1461146957600080fd5b5090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114c957600080fd5b611517600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612667565b905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461157857600080fd5b6115a3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661277f565b905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461160457600080fd5b611654600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002612894565b905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116b557600080fd5b6000600467ffffffffffffffff8111156116d2576116d16132f9565b5b60405190808252806020026020018201604052801561170b57816020015b6116f861300f565b8152602001906001900390816116f05790505b50905061172c60006006600060405180602001604052806000815250611cee565b816000815181106117405761173f613854565b5b602002602001018190525061176760026000604051806020016040528060008152506129af565b8160018151811061177b5761177a613854565b5b60200260200101819052506117a260036000604051806020016040528060008152506129af565b816002815181106117b6576117b5613854565b5b60200260200101819052506117dd60046000604051806020016040528060008152506129af565b816003815181106117f1576117f0613854565b5b60200260200101819052506119146040518061012001604052806040518060400160405280601681526020017f4578616d706c652046756e6769626c6520746f6b656e0000000000000000000081525081526020016040518060400160405280600181526020017f450000000000000000000000000000000000000000000000000000000000000081525081526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060400160405280600481526020017f6d656d6f0000000000000000000000000000000000000000000000000000000081525081526020016001151581526020016103e860070b815260200160001515815260200183815260200161190830626acfc0611d90565b815250606460006129e6565b600460008291906101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508193505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156119c4573d6000803e3d6000fd5b505090565b600080600061016973ffffffffffffffffffffffffffffffffffffffff1663d83bf9a160e01b604051602401604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611a5f91906137d7565b6000604051808303816000865af19150503d8060008114611a9c576040519150601f19603f3d011682016040523d82523d6000602084013e611aa1565b606091505b509150915081611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90613a80565b60405180910390fd5b80806020019051810190611afa91906138af565b9250505090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b5d57600080fd5b611bab600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612667565b905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c0c57600080fd5b611c37600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612b5c565b905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c9857600080fd5b611ce9600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166064612c71565b905090565b611cf661300f565b6040518060400160405280611d0b8787612d8f565b8152602001611d1a8585612de5565b8152509050949350505050565b611d2f61302f565b82816000019060070b908160070b81525050600181604001901515908115158152505081816080019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505092915050565b611d986130fe565b82816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081816040019060070b908160070b8152505092915050565b6000808460008161010001516000015160070b148015611e14575060008161010001516040015160070b145b15611e37576276a70060030b8161010001516040019060070b908160070b815250505b60008061016773ffffffffffffffffffffffffffffffffffffffff163463abb54eb560e01b8a8a8a604051602401611e7193929190614054565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611edb91906137d7565b60006040518083038185875af1925050503d8060008114611f18576040519150601f19603f3d011682016040523d82523d6000602084013e611f1d565b606091505b509150915081611f305760156000611f45565b80806020019051810190611f4491906140de565b5b8160030b91508095508196505050505050935093915050565b600080600061016773ffffffffffffffffffffffffffffffffffffffff16635cfc901160e01b88888888604051602401611f9b949392919061411e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161200591906137d7565b6000604051808303816000865af19150503d8060008114612042576040519150601f19603f3d011682016040523d82523d6000602084013e612047565b606091505b50915091508161205857601561206d565b8080602001905181019061206c9190613827565b5b60030b92505050949350505050565b60008060008061016773ffffffffffffffffffffffffffffffffffffffff1663d6910d0660e01b8888886040516024016120b893929190614212565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161212291906137d7565b6000604051808303816000865af19150503d806000811461215f576040519150601f19603f3d011682016040523d82523d6000602084013e612164565b606091505b509150915081612177576015600061218c565b8080602001905181019061218b919061427c565b5b8160030b915080945081955050505050935093915050565b600080600061016773ffffffffffffffffffffffffffffffffffffffff1663e1f21c6760e01b8787876040516024016121df939291906142bc565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161224991906137d7565b6000604051808303816000865af19150503d8060008114612286576040519150601f19603f3d011682016040523d82523d6000602084013e61228b565b606091505b50915091508161229c5760156122b1565b808060200190518101906122b09190613827565b5b60030b925050509392505050565b600080606060008061016773ffffffffffffffffffffffffffffffffffffffff1663e0f4059a60e01b8989896040516024016122fd939291906143b5565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161236791906137d7565b6000604051808303816000865af19150503d80600081146123a4576040519150601f19603f3d011682016040523d82523d6000602084013e6123a9565b606091505b50915091508161240557601560008067ffffffffffffffff8111156123d1576123d06132f9565b5b6040519080825280602002602001820160405280156123ff5781602001602082028036833780820191505090505b5061241a565b8080602001905181019061241991906144b6565b5b8260030b9250809550819650829750505050505093509350939050565b600080600061016773ffffffffffffffffffffffffffffffffffffffff166352f9138760e01b8686604051602401612470929190614525565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516124da91906137d7565b6000604051808303816000865af19150503d8060008114612517576040519150601f19603f3d011682016040523d82523d6000602084013e61251c565b606091505b50915091508161252d576015612542565b808060200190518101906125419190613827565b5b60030b9250505092915050565b600080600061016773ffffffffffffffffffffffffffffffffffffffff16635b8f858460e01b8686604051602401612588929190614525565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516125f291906137d7565b6000604051808303816000865af19150503d806000811461262f576040519150601f19603f3d011682016040523d82523d6000602084013e612634565b606091505b50915091508161264557601561265a565b808060200190518101906126599190613827565b5b60030b9250505092915050565b600080600061016773ffffffffffffffffffffffffffffffffffffffff166349146bde60e01b86866040516024016126a0929190614525565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161270a91906137d7565b6000604051808303816000865af19150503d8060008114612747576040519150601f19603f3d011682016040523d82523d6000602084013e61274c565b606091505b50915091508161275d576015612772565b808060200190518101906127719190613827565b5b60030b9250505092915050565b600080600061016773ffffffffffffffffffffffffffffffffffffffff16633b3bff0f60e01b856040516024016127b6919061454e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161282091906137d7565b6000604051808303816000865af19150503d806000811461285d576040519150601f19603f3d011682016040523d82523d6000602084013e612862565b606091505b509150915081612873576015612888565b808060200190518101906128879190613827565b5b60030b92505050919050565b600080600061016773ffffffffffffffffffffffffffffffffffffffff16637336aaf060e01b8787876040516024016128cf939291906142bc565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161293991906137d7565b6000604051808303816000865af19150503d8060008114612976576040519150601f19603f3d011682016040523d82523d6000602084013e61297b565b606091505b50915091508161298c5760156129a1565b808060200190518101906129a09190613827565b5b60030b925050509392505050565b6129b761300f565b60405180604001604052806129cb86612fba565b81526020016129da8585612de5565b81525090509392505050565b6000808460008161010001516000015160070b148015612a12575060008161010001516040015160070b145b15612a35576276a70060030b8161010001516040019060070b908160070b815250505b60008061016773ffffffffffffffffffffffffffffffffffffffff1634630fb65bf360e01b8a8a8a604051602401612a6f93929190614578565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612ad991906137d7565b60006040518083038185875af1925050503d8060008114612b16576040519150601f19603f3d011682016040523d82523d6000602084013e612b1b565b606091505b509150915081612b2e5760156000612b43565b80806020019051810190612b4291906140de565b5b8160030b91508095508196505050505050935093915050565b600080600061016773ffffffffffffffffffffffffffffffffffffffff16637c41ad2c60e01b85604051602401612b93919061454e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612bfd91906137d7565b6000604051808303816000865af19150503d8060008114612c3a576040519150601f19603f3d011682016040523d82523d6000602084013e612c3f565b606091505b509150915081612c50576015612c65565b80806020019051810190612c649190613827565b5b60030b92505050919050565b600080600061016773ffffffffffffffffffffffffffffffffffffffff1663eca3691760e01b88888888604051602401612cae949392919061411e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612d1891906137d7565b6000604051808303816000865af19150503d8060008114612d55576040519150601f19603f3d011682016040523d82523d6000602084013e612d5a565b606091505b509150915081612d6b576015612d80565b80806020019051810190612d7f9190613827565b5b60030b92505050949350505050565b6000612db6836006811115612da757612da66145b6565b5b82612ffb90919063ffffffff16565b9050612ddd826006811115612dce57612dcd6145b6565b5b82612ffb90919063ffffffff16565b905092915050565b612ded61313b565b60006004811115612e0157612e006145b6565b5b836004811115612e1457612e136145b6565b5b03612e2f576001816000019015159081151581525050612fb4565b60016004811115612e4357612e426145b6565b5b836004811115612e5657612e556145b6565b5b03612eb85760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612fb3565b60026004811115612ecc57612ecb6145b6565b5b836004811115612edf57612ede6145b6565b5b03612ef257818160400181905250612fb2565b60036004811115612f0657612f056145b6565b5b836004811115612f1957612f186145b6565b5b03612f2c57818160600181905250612fb1565b600480811115612f3f57612f3e6145b6565b5b836004811115612f5257612f516145b6565b5b03612fb05760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816080019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b5b5b5b5b92915050565b600060016000836006811115612fd357612fd26145b6565b5b6006811115612fe557612fe46145b6565b5b8152602001908152602001600020549050919050565b60008160ff166001901b8317905092915050565b60405180604001604052806000815260200161302961313b565b81525090565b6040518060a00160405280600060070b8152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b6040518060c00160405280600060070b8152602001600060070b8152602001600060070b8152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b6040518060600160405280600060070b8152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600060070b81525090565b6040518060a00160405280600015158152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131d7826131ac565b9050919050565b6131e7816131cc565b81146131f257600080fd5b50565b600081359050613204816131de565b92915050565b6000819050919050565b61321d8161320a565b811461322857600080fd5b50565b60008135905061323a81613214565b92915050565b6000806000806080858703121561325a576132596131a2565b5b6000613268878288016131f5565b9450506020613279878288016131f5565b935050604061328a878288016131f5565b925050606061329b8782880161322b565b91505092959194509250565b60008160070b9050919050565b6132bd816132a7565b82525050565b60006020820190506132d860008301846132b4565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613331826132e8565b810181811067ffffffffffffffff821117156133505761334f6132f9565b5b80604052505050565b6000613363613198565b905061336f8282613328565b919050565b600067ffffffffffffffff82111561338f5761338e6132f9565b5b613398826132e8565b9050602081019050919050565b82818337600083830152505050565b60006133c76133c284613374565b613359565b9050828152602081018484840111156133e3576133e26132e3565b5b6133ee8482856133a5565b509392505050565b600082601f83011261340b5761340a6132de565b5b813561341b8482602086016133b4565b91505092915050565b60006020828403121561343a576134396131a2565b5b600082013567ffffffffffffffff811115613458576134576131a7565b5b613464848285016133f6565b91505092915050565b6000819050919050565b6134808161346d565b82525050565b61348f816131cc565b82525050565b60006040820190506134aa6000830185613477565b6134b76020830184613486565b9392505050565b60006020820190506134d36000830184613477565b92915050565b6000819050919050565b6134ec816134d9565b82525050565b600060208201905061350760008301846134e3565b92915050565b60008060408385031215613524576135236131a2565b5b6000613532858286016131f5565b925050602083013567ffffffffffffffff811115613553576135526131a7565b5b61355f858286016133f6565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156135a3578082015181840152602081019050613588565b60008484015250505050565b60006135ba82613569565b6135c48185613574565b93506135d4818560208601613585565b6135dd816132e8565b840191505092915050565b60006040820190506135fd6000830185613477565b818103602083015261360f81846135af565b90509392505050565b600067ffffffffffffffff821115613633576136326132f9565b5b602082029050602081019050919050565b600080fd5b600061365c61365784613618565b613359565b9050808382526020820190506020840283018581111561367f5761367e613644565b5b835b818110156136c657803567ffffffffffffffff8111156136a4576136a36132de565b5b8086016136b189826133f6565b85526020850194505050602081019050613681565b5050509392505050565b600082601f8301126136e5576136e46132de565b5b81356136f5848260208601613649565b91505092915050565b600060208284031215613714576137136131a2565b5b600082013567ffffffffffffffff811115613732576137316131a7565b5b61373e848285016136d0565b91505092915050565b6137508161320a565b82525050565b600060808201905061376b6000830187613486565b6137786020830186613486565b6137856040830185613486565b6137926060830184613747565b95945050505050565b600081905092915050565b60006137b182613569565b6137bb818561379b565b93506137cb818560208601613585565b80840191505092915050565b60006137e382846137a6565b915081905092915050565b60008160030b9050919050565b613804816137ee565b811461380f57600080fd5b50565b600081519050613821816137fb565b92915050565b60006020828403121561383d5761383c6131a2565b5b600061384b84828501613812565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b61388c816134d9565b811461389757600080fd5b50565b6000815190506138a981613883565b92915050565b6000602082840312156138c5576138c46131a2565b5b60006138d38482850161389a565b91505092915050565b60006040820190506138f16000830185613486565b818103602083015261390381846135af565b90509392505050565b60008115159050919050565b6139218161390c565b82525050565b600060408201905061393c6000830185613918565b818103602083015261394e81846135af565b90509392505050565b600061396a61396584613374565b613359565b905082815260208101848484011115613986576139856132e3565b5b613991848285613585565b509392505050565b600082601f8301126139ae576139ad6132de565b5b81516139be848260208601613957565b91505092915050565b600080604083850312156139de576139dd6131a2565b5b60006139ec85828601613812565b925050602083015167ffffffffffffffff811115613a0d57613a0c6131a7565b5b613a1985828601613999565b9150509250929050565b600082825260208201905092915050565b7f50524e472073797374656d2063616c6c206661696c6564000000000000000000600082015250565b6000613a6a601783613a23565b9150613a7582613a34565b602082019050919050565b60006020820190508181036000830152613a9981613a5d565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613ac782613aa0565b613ad18185613aab565b9350613ae1818560208601613585565b613aea816132e8565b840191505092915050565b613afe816131cc565b82525050565b613b0d8161390c565b82525050565b613b1c816132a7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b578161320a565b82525050565b600082825260208201905092915050565b6000613b7982613569565b613b838185613b5d565b9350613b93818560208601613585565b613b9c816132e8565b840191505092915050565b600060a083016000830151613bbf6000860182613b04565b506020830151613bd26020860182613af5565b5060408301518482036040860152613bea8282613b6e565b91505060608301518482036060860152613c048282613b6e565b9150506080830151613c196080860182613af5565b508091505092915050565b6000604083016000830151613c3c6000860182613b4e565b5060208301518482036020860152613c548282613ba7565b9150508091505092915050565b6000613c6d8383613c24565b905092915050565b6000602082019050919050565b6000613c8d82613b22565b613c978185613b2d565b935083602082028501613ca985613b3e565b8060005b85811015613ce55784840389528151613cc68582613c61565b9450613cd183613c75565b925060208a01995050600181019050613cad565b50829750879550505050505092915050565b606082016000820151613d0d6000850182613b13565b506020820151613d206020850182613af5565b506040820151613d336040850182613b13565b50505050565b6000610160830160008301518482036000860152613d578282613abc565b91505060208301518482036020860152613d718282613abc565b9150506040830151613d866040860182613af5565b5060608301518482036060860152613d9e8282613abc565b9150506080830151613db36080860182613b04565b5060a0830151613dc660a0860182613b13565b5060c0830151613dd960c0860182613b04565b5060e083015184820360e0860152613df18282613c82565b915050610100830151613e08610100860182613cf7565b508091505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60a082016000820151613e556000850182613b13565b506020820151613e686020850182613af5565b506040820151613e7b6040850182613b04565b506060820151613e8e6060850182613b04565b506080820151613ea16080850182613af5565b50505050565b6000613eb38383613e3f565b60a08301905092915050565b6000602082019050919050565b6000613ed782613e13565b613ee18185613e1e565b9350613eec83613e2f565b8060005b83811015613f1d578151613f048882613ea7565b9750613f0f83613ebf565b925050600181019050613ef0565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60c082016000820151613f6c6000850182613b13565b506020820151613f7f6020850182613b13565b506040820151613f926040850182613b13565b506060820151613fa56060850182613af5565b506080820151613fb86080850182613b04565b5060a0820151613fcb60a0850182613af5565b50505050565b6000613fdd8383613f56565b60c08301905092915050565b6000602082019050919050565b600061400182613f2a565b61400b8185613f35565b935061401683613f46565b8060005b8381101561404757815161402e8882613fd1565b975061403983613fe9565b92505060018101905061401a565b5085935050505092915050565b6000606082019050818103600083015261406e8186613d39565b905081810360208301526140828185613ecc565b905081810360408301526140968184613ff6565b9050949350505050565b60006140ab826131ac565b9050919050565b6140bb816140a0565b81146140c657600080fd5b50565b6000815190506140d8816140b2565b92915050565b600080604083850312156140f5576140f46131a2565b5b600061410385828601613812565b9250506020614114858286016140c9565b9150509250929050565b60006080820190506141336000830187613486565b6141406020830186613486565b61414d6040830185613486565b61415a60608301846132b4565b95945050505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600061419b8383613b13565b60208301905092915050565b6000602082019050919050565b60006141bf82614163565b6141c9818561416e565b93506141d48361417f565b8060005b838110156142055781516141ec888261418f565b97506141f7836141a7565b9250506001810190506141d8565b5085935050505092915050565b60006060820190506142276000830186613486565b61423460208301856132b4565b818103604083015261424681846141b4565b9050949350505050565b614259816132a7565b811461426457600080fd5b50565b60008151905061427681614250565b92915050565b60008060408385031215614293576142926131a2565b5b60006142a185828601613812565b92505060206142b285828601614267565b9150509250929050565b60006060820190506142d16000830186613486565b6142de6020830185613486565b6142eb6040830184613747565b949350505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600061432b8383613b6e565b905092915050565b6000602082019050919050565b600061434b826142f3565b61435581856142fe565b9350836020820285016143678561430f565b8060005b858110156143a35784840389528151614384858261431f565b945061438f83614333565b925060208a0199505060018101905061436b565b50829750879550505050505092915050565b60006060820190506143ca6000830186613486565b6143d760208301856132b4565b81810360408301526143e98184614340565b9050949350505050565b600067ffffffffffffffff82111561440e5761440d6132f9565b5b602082029050602081019050919050565b600061443261442d846143f3565b613359565b9050808382526020820190506020840283018581111561445557614454613644565b5b835b8181101561447e578061446a8882614267565b845260208401935050602081019050614457565b5050509392505050565b600082601f83011261449d5761449c6132de565b5b81516144ad84826020860161441f565b91505092915050565b6000806000606084860312156144cf576144ce6131a2565b5b60006144dd86828701613812565b93505060206144ee86828701614267565b925050604084015167ffffffffffffffff81111561450f5761450e6131a7565b5b61451b86828701614488565b9150509250925092565b600060408201905061453a6000830185613486565b6145476020830184613486565b9392505050565b60006020820190506145636000830184613486565b92915050565b614572816137ee565b82525050565b600060608201905081810360008301526145928186613d39565b90506145a160208301856132b4565b6145ae6040830184614569565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220f9b7a70107280779fe1d24ca3491ff2674f160d598ac86c1f0374413bf96fdf364736f6c63430008120033" 388 }