6080604052733249f8c62640dc8ae2f4ed14cd03bca9c6af98b2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000a857600080fd5b5060405162003f1838038062003f18833981810160405260e0811015620000ce57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050818060018190555050600062000136620002cb60201b60201c565b905080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001e685620002d360201b60201c565b83600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504260108190555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560118190555086600b819055505050505050505062000316565b600033905090565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b613bf280620003266000396000f3fe608060405234801561001057600080fd5b50600436106103825760003560e01c806372f702f3116101de578063ad1d5af41161010f578063df2671cf116100ad578063ebe2b12b1161007c578063ebe2b12b14610d86578063efef39a114610da4578063f2fde38b14610dd2578063f7c618c114610e1657610382565b8063df2671cf14610cae578063e14b441a14610d06578063e64d75bc14610d5e578063e9fad8ee14610d7c57610382565b8063cd3daf9d116100e9578063cd3daf9d14610c36578063d87190a914610c54578063dd51bca114610c72578063df136d6514610c9057610382565b8063ad1d5af414610b23578063bbd2697c14610bc0578063c8f33c9114610c1857610382565b806383a1b1511161017c57806393a1c2841161015657806393a1c28414610a4d578063a1ebfbd214610a81578063a3b78f8314610a9f578063a694fc3a14610af557610382565b806383a1b151146109a35780638b876347146109c15780638da5cb5b14610a1957610382565b80637ccea678116101b85780637ccea6781461090557806380faa57d14610923578063817c89661461094157806382e94ac51461099957610382565b806372f702f31461089557806378e97925146108c95780637b0a47ee146108e757610382565b80633c6b16ab116102b8578063461ac0191161025657806365d0d8741161023057806365d0d874146107bd5780636ebcf607146107db57806370a0823114610833578063715018a61461088b57610382565b8063461ac019146107055780634af18f4f14610723578063510be0141461076557610382565b806341c0e1b51161029257806341c0e1b51461068b57806342603602146106955780634390d2a8146106b357806344579cc9146106e757610382565b80633c6b16ab146106355780633d18b912146106635780633eaaf86b1461066d57610382565b80631a700268116103255780631e487eaf116102ff5780631e487eaf1461057357806322643a461461059157806322e6179b146105e95780632e1a7d4d1461060757610382565b80631a700268146104f35780631b3ed722146105215780631be052891461055557610382565b80630aae105d116103615780630aae105d1461045557806313af40351461047357806316589b6c146104b757806318160ddd146104d557610382565b80628cc2621461038757806301e492df146103df5780630700037d146103fd575b600080fd5b6103c96004803603602081101561039d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e4a565b6040518082815260200191505060405180910390f35b6103e7610fbe565b6040518082815260200191505060405180910390f35b61043f6004803603602081101561041357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fc4565b6040518082815260200191505060405180910390f35b61045d610fdc565b6040518082815260200191505060405180910390f35b6104b56004803603602081101561048957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fe2565b005b6104bf6110b8565b6040518082815260200191505060405180910390f35b6104dd6110be565b6040518082815260200191505060405180910390f35b61051f6004803603602081101561050957600080fd5b81019080803590602001909291905050506110c8565b005b61052961125f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61055d611285565b6040518082815260200191505060405180910390f35b61057b61128b565b6040518082815260200191505060405180910390f35b6105d3600480360360208110156105a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611291565b6040518082815260200191505060405180910390f35b6105f16112a8565b6040518082815260200191505060405180910390f35b6106336004803603602081101561061d57600080fd5b81019080803590602001909291905050506112ae565b005b6106616004803603602081101561064b57600080fd5b8101908080359060200190929190505050611652565b005b61066b61180b565b005b6106756119c9565b6040518082815260200191505060405180910390f35b6106936119cf565b005b61069d611aa2565b6040518082815260200191505060405180910390f35b6106bb611aa8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106ef611ace565b6040518082815260200191505060405180910390f35b61070d611ad4565b6040518082815260200191505060405180910390f35b61074f6004803603602081101561073957600080fd5b8101908080359060200190929190505050611ada565b6040518082815260200191505060405180910390f35b6107a76004803603602081101561077b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c77565b6040518082815260200191505060405180910390f35b6107c5611c8f565b6040518082815260200191505060405180910390f35b61081d600480360360208110156107f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c95565b6040518082815260200191505060405180910390f35b6108756004803603602081101561084957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cad565b6040518082815260200191505060405180910390f35b610893611cf6565b005b61089d611e81565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108d1611ea5565b6040518082815260200191505060405180910390f35b6108ef611eab565b6040518082815260200191505060405180910390f35b61090d611eb1565b6040518082815260200191505060405180910390f35b61092b611eb7565b6040518082815260200191505060405180910390f35b6109836004803603602081101561095757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611eca565b6040518082815260200191505060405180910390f35b6109a1611f13565b005b6109ab61215d565b6040518082815260200191505060405180910390f35b610a03600480360360208110156109d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612163565b6040518082815260200191505060405180910390f35b610a2161217b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a556121a5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a896121cb565b6040518082815260200191505060405180910390f35b610adf60048036036060811015610ab557600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506121d1565b6040518082815260200191505060405180910390f35b610b2160048036036020811015610b0b57600080fd5b8101908080359060200190929190505050612206565b005b610bbe6004803603610180811015610b3a57600080fd5b810190808035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291905050506124b4565b005b610c0260048036036020811015610bd657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125e0565b6040518082815260200191505060405180910390f35b610c206125f8565b6040518082815260200191505060405180910390f35b610c3e6125fe565b6040518082815260200191505060405180910390f35b610c5c6126ba565b6040518082815260200191505060405180910390f35b610c7a6126c0565b6040518082815260200191505060405180910390f35b610c986126c6565b6040518082815260200191505060405180910390f35b610cf060048036036020811015610cc457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126cc565b6040518082815260200191505060405180910390f35b610d4860048036036020811015610d1c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129ba565b6040518082815260200191505060405180910390f35b610d66612a03565b6040518082815260200191505060405180910390f35b610d84612a09565b005b610d8e612a24565b6040518082815260200191505060405180910390f35b610dd060048036036020811015610dba57600080fd5b8101908080359060200190929190505050612a2a565b005b610e1460048036036020811015610de857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e80565b005b610e1e613090565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080610ede600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130b690919063ffffffff16565b9050610fb6601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fa8670de0b6b3a7640000610f9a610f8b601e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f7d6125fe565b61313e90919063ffffffff16565b8661318890919063ffffffff16565b61320e90919063ffffffff16565b6130b690919063ffffffff16565b915050919050565b60125481565b601f6020528060005260406000206000915090505481565b60155481565b610fea613258565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6110b581612e80565b50565b601a5481565b6000600354905090565b6110d0613258565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61119a613260565b600c5442106111c3576111b8600b548261320e90919063ffffffff16565b600d81905550611225565b60006111da42600c5461313e90919063ffffffff16565b905060006111f3600d548361318890919063ffffffff16565b905061121c600b5461120e83866130b690919063ffffffff16565b61320e90919063ffffffff16565b600d8190555050505b7fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d816040518082815260200191505060405180910390a150565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b60165481565b602080528060005260406000206000915090505481565b60175481565b60008111611324576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f43616e6e6f74207769746864726177203000000000000000000000000000000081525060200191505060405180910390fd5b61132d3361327e565b6000611356606461134860018561318890919063ffffffff16565b61320e90919063ffffffff16565b90506113c5600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661331b9092919063ffffffff16565b611422336113dc838561313e90919063ffffffff16565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661331b9092919063ffffffff16565b61142b826133bd565b6000602160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611600576000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006114c2336126cc565b90506000611583600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611575670de0b6b3a764000061156786600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318890919063ffffffff16565b61320e90919063ffffffff16565b61313e90919063ffffffff16565b905080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006115de828561313e90919063ffffffff16565b90506115f58160055461313e90919063ffffffff16565b600581905550505050505b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040518082815260200191505060405180910390a25050565b61165a613258565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461171c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611724613260565b600c54421061174d57611742600b548261320e90919063ffffffff16565b600d819055506117af565b600061176442600c5461313e90919063ffffffff16565b9050600061177d600d548361318890919063ffffffff16565b90506117a6600b5461179883866130b690919063ffffffff16565b61320e90919063ffffffff16565b600d8190555050505b42600e819055506117cb600b54426130b690919063ffffffff16565b600c819055507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d816040518082815260200191505060405180910390a150565b6118143361327e565b600061181f33610e4a565b905060008111156119c6576000601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118e23361189a606461188c60608661318890919063ffffffff16565b61320e90919063ffffffff16565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661331b9092919063ffffffff16565b611977600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661192f606461192160048661318890919063ffffffff16565b61320e90919063ffffffff16565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661331b9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826040518082815260200191505060405180910390a25b50565b60035481565b6119d7613258565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b42600c81905550565b60135481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b60105481565b600080611aec601054426011546121d1565b90506005811115611afc57600590505b6001831415611b3a57611b3281600a0a611b248360090a60125461318890919063ffffffff16565b61320e90919063ffffffff16565b915050611c72565b6002831415611b7857611b7081600a0a611b628360090a60135461318890919063ffffffff16565b61320e90919063ffffffff16565b915050611c72565b6003831415611bb657611bae81600a0a611ba08360090a60145461318890919063ffffffff16565b61320e90919063ffffffff16565b915050611c72565b6004831415611bf457611bec81600a0a611bde8360090a60155461318890919063ffffffff16565b61320e90919063ffffffff16565b915050611c72565b6005831415611c3257611c2a81600a0a611c1c8360090a60165461318890919063ffffffff16565b61320e90919063ffffffff16565b915050611c72565b6006831415611c7057611c6881600a0a611c5a8360090a60175461318890919063ffffffff16565b61320e90919063ffffffff16565b915050611c72565b505b919050565b60066020528060005260406000206000915090505481565b60055481565b60046020528060005260406000206000915090505481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611cfe613258565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b600d5481565b601c5481565b6000611ec542600c54613470565b905090565b6000602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611f1b613258565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fdd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b42600154108015611ff05750600c544210155b612045576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180613b626037913960400191505060405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156120d057600080fd5b505afa1580156120e4573d6000803e3d6000fd5b505050506040513d60208110156120fa57600080fd5b8101908080519060200190929190505050905061215a3382600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661331b9092919063ffffffff16565b50565b601b5481565b601e6020528060005260406000206000915090505481565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b6000806121f9836121eb878761313e90919063ffffffff16565b61320e90919063ffffffff16565b9050809150509392505050565b61220f3361327e565b60008111612285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f43616e6e6f74207374616b65203000000000000000000000000000000000000081525060200191505060405180910390fd5b61228e81613489565b6000602160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612463576000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000612325336126cc565b905060006123e6600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d8670de0b6b3a76400006123ca86600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318890919063ffffffff16565b61320e90919063ffffffff16565b61313e90919063ffffffff16565b905080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612441848361313e90919063ffffffff16565b9050612458816005546130b690919063ffffffff16565b600581905550505050505b3373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d826040518082815260200191505060405180910390a250565b6124bc613258565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461257e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8b6012819055508a60138190555089601481905550886015819055508760168190555086601781905550856018819055508460198190555083601a8190555082601b8190555081601c8190555080601d81905550505050505050505050505050565b60216020528060005260406000206000915090505481565b600e5481565b600060015442101561261357600090506126b7565b6000600354141561262857600f5490506126b7565b60006126416005546003546130b690919063ffffffff16565b90506126b36126a282612694670de0b6b3a7640000612686600d54612678600e5461266a611eb7565b61313e90919063ffffffff16565b61318890919063ffffffff16565b61318890919063ffffffff16565b61320e90919063ffffffff16565b600f546130b690919063ffffffff16565b9150505b90565b60145481565b60115481565b600f5481565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347469420846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561275857600080fd5b505afa15801561276c573d6000803e3d6000fd5b505050506040513d602081101561278257600080fd5b8101908080519060200190929190505050905060006001602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156127e9576018549050612984565b6002602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561283b576019549050612983565b6003602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561288d57601a549050612982565b6004602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156128df57601b549050612981565b6005602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561293157601c549050612980565b6006602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561297f57601d5490505b5b5b5b5b5b6129b1670de0b6b3a76400006129a383856130b690919063ffffffff16565b6130b690919063ffffffff16565b92505050919050565b6000602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60195481565b612a1161180b565b612a22612a1d33611cad565b6112ae565b565b600c5481565b80602160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613b996024913960400191505060405180910390fd5b6000612acd82611ada565b90506000612b23602060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361313e90919063ffffffff16565b9050612b9633600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613589909392919063ffffffff16565b612be881602060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130b690919063ffffffff16565b602060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082602160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612e44576000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000612d06336126cc565b90506000612dc7600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612db9670de0b6b3a7640000612dab86600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318890919063ffffffff16565b61320e90919063ffffffff16565b61313e90919063ffffffff16565b905080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612e22848361313e90919063ffffffff16565b9050612e39816005546130b690919063ffffffff16565b600581905550505050505b7f70b27848abfd4ab169b72857464ef4ae0e45c29525a4deb12dfbb56467295594836040518082815260200191505060405180910390a1505050565b612e88613258565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f4a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613af16026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080828401905083811015613134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061318083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061364a565b905092915050565b60008083141561319b5760009050613208565b60008284029050828482816131ac57fe5b0414613203576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613b176021913960400191505060405180910390fd5b809150505b92915050565b600061325083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061370a565b905092915050565b600033905090565b6132686125fe565b600f81905550613276611eb7565b600e81905550565b613286613260565b61328f81610e4a565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f54601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6133b88363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506137d0565b505050565b6133d28160035461313e90919063ffffffff16565b60038190555061342a81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461313e90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b600081831061347f5781613481565b825b905092915050565b6134db81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130b690919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613533816003546130b690919063ffffffff16565b60038190555061358633308360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613589909392919063ffffffff16565b50565b613644846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506137d0565b50505050565b60008383111582906136f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156136bc5780820151818401526020810190506136a1565b50505050905090810190601f1680156136e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080831182906137b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561377b578082015181840152602081019050613760565b50505050905090810190601f1680156137a85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816137c257fe5b049050809150509392505050565b6060613832826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166138bf9092919063ffffffff16565b90506000815111156138ba5780806020019051602081101561385357600080fd5b81019080805190602001909291905050506138b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613b38602a913960400191505060405180910390fd5b5b505050565b60606138ce84846000856138d7565b90509392505050565b60606138e285613add565b613954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106139a45780518252602082019150602081019050602083039250613981565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613a06576040519150601f19603f3d011682016040523d82523d6000602084013e613a0b565b606091505b50915091508115613a20578092505050613ad5565b600081511115613a335780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613a9a578082015181840152602081019050613a7f565b50505050905090810190601f168015613ac75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b600080823b90506000811191505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656443616e6e6f7420656a656374206265666f726520706572696f642066696e6973686573206f7220706f6f6c20686173207374617274656443616e6e6f7420646f776e6772616465206c6576656c206f722073616d65206c6576656ca264697066735822122090cac276201a118460cbf06901b99196767f65253f85bf731b00bfb9558e57c364736f6c634300060c003300000000000000000000000000000000000000000000000000000000000fd200000000000000000000000000000000000000000000000000000000000000a8c0000000000000000000000000c75f15ada581219c95485c578e124df3985e4ce000000000000000000000000066b3037aa8dd64c3ef1aee13a4d1f2509f672d1c00000000000000000000000066b3037aa8dd64c3ef1aee13a4d1f2509f672d1c000000000000000000000000000000000000000000000000000000005fb0330300000000000000000000000064912352749e2be98c374b93a57f301f95cf1bff