60806040523480156200001157600080fd5b50604051620021c7380380620021c7833981810160405281019062000037919062000475565b6000620000496200026160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508360049081620000f8919062000766565b5082600590816200010a919062000766565b5081600660006101000a81548160ff021916908360ff16021790555081600a620001359190620009d0565b8162000142919062000a21565b60078190555033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060075460016000620001a06200026160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001ee6200026160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6007546040516200024f919062000a7d565b60405180910390a35050505062000a9a565b600033905090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002d28262000287565b810181811067ffffffffffffffff82111715620002f457620002f362000298565b5b80604052505050565b60006200030962000269565b9050620003178282620002c7565b919050565b600067ffffffffffffffff8211156200033a576200033962000298565b5b620003458262000287565b9050602081019050919050565b60005b838110156200037257808201518184015260208101905062000355565b60008484015250505050565b6000620003956200038f846200031c565b620002fd565b905082815260208101848484011115620003b457620003b362000282565b5b620003c184828562000352565b509392505050565b600082601f830112620003e157620003e06200027d565b5b8151620003f38482602086016200037e565b91505092915050565b600060ff82169050919050565b6200041481620003fc565b81146200042057600080fd5b50565b600081519050620004348162000409565b92915050565b6000819050919050565b6200044f816200043a565b81146200045b57600080fd5b50565b6000815190506200046f8162000444565b92915050565b6000806000806080858703121562000492576200049162000273565b5b600085015167ffffffffffffffff811115620004b357620004b262000278565b5b620004c187828801620003c9565b945050602085015167ffffffffffffffff811115620004e557620004e462000278565b5b620004f387828801620003c9565b9350506040620005068782880162000423565b925050606062000519878288016200045e565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200057857607f821691505b6020821081036200058e576200058d62000530565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005f87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005b9565b620006048683620005b9565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000647620006416200063b846200043a565b6200061c565b6200043a565b9050919050565b6000819050919050565b620006638362000626565b6200067b62000672826200064e565b848454620005c6565b825550505050565b600090565b6200069262000683565b6200069f81848462000658565b505050565b5b81811015620006c757620006bb60008262000688565b600181019050620006a5565b5050565b601f8211156200071657620006e08162000594565b620006eb84620005a9565b81016020851015620006fb578190505b620007136200070a85620005a9565b830182620006a4565b50505b505050565b600082821c905092915050565b60006200073b600019846008026200071b565b1980831691505092915050565b600062000756838362000728565b9150826002028217905092915050565b620007718262000525565b67ffffffffffffffff8111156200078d576200078c62000298565b5b6200079982546200055f565b620007a6828285620006cb565b600060209050601f831160018114620007de5760008415620007c9578287015190505b620007d5858262000748565b86555062000845565b601f198416620007ee8662000594565b60005b828110156200081857848901518255600182019150602085019450602081019050620007f1565b8683101562000838578489015162000834601f89168262000728565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620008db57808604811115620008b357620008b26200084d565b5b6001851615620008c35780820291505b8081029050620008d3856200087c565b945062000893565b94509492505050565b600082620008f65760019050620009c9565b81620009065760009050620009c9565b81600181146200091f57600281146200092a5762000960565b6001915050620009c9565b60ff8411156200093f576200093e6200084d565b5b8360020a9150848211156200095957620009586200084d565b5b50620009c9565b5060208310610133831016604e8410600b84101617156200099a5782820a9050838111156200099457620009936200084d565b5b620009c9565b620009a9848484600162000889565b92509050818404811115620009c357620009c26200084d565b5b81810290505b9392505050565b6000620009dd826200043a565b9150620009ea83620003fc565b925062000a197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008e4565b905092915050565b600062000a2e826200043a565b915062000a3b836200043a565b925082820262000a4b816200043a565b9150828204841483151762000a655762000a646200084d565b5b5092915050565b62000a77816200043a565b82525050565b600060208201905062000a94600083018462000a6c565b92915050565b61171d8062000aaa6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c5780638e502878116100665780638e5028781461020257806395d89b411461021e578063a9059cbb1461023c578063dd62ed3e1461026c576100cf565b806370a08231146101aa578063715018a6146101da5780638da5cb5b146101e4576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce567146101705780636c0ed6d41461018e575b600080fd5b6100dc61029c565b6040516100e99190611044565b60405180910390f35b61010c600480360381019061010791906110ff565b61032e565b604051610119919061115a565b60405180910390f35b61012a61042e565b6040516101379190611184565b60405180910390f35b61015a6004803603810190610155919061119f565b610438565b604051610167919061115a565b60405180910390f35b6101786107e2565b604051610185919061120e565b60405180910390f35b6101a860048036038101906101a391906110ff565b6107f9565b005b6101c460048036038101906101bf9190611229565b610868565b6040516101d19190611184565b60405180910390f35b6101e26108b1565b005b6101ec6109eb565b6040516101f99190611265565b60405180910390f35b61021c600480360381019061021791906110ff565b610a14565b005b610226610aaa565b6040516102339190611044565b60405180910390f35b610256600480360381019061025191906110ff565b610b3c565b604051610263919061115a565b60405180910390f35b61028660048036038101906102819190611280565b610e2a565b6040516102939190611184565b60405180910390f35b6060600480546102ab906112ef565b80601f01602080910402602001604051908101604052809291908181526020018280546102d7906112ef565b80156103245780601f106102f957610100808354040283529160200191610324565b820191906000526020600020905b81548152906001019060200180831161030757829003601f168201915b5050505050905090565b6000816002600061033d610eb1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff166103d7610eb1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161041c9190611184565b60405180910390a36001905092915050565b6000600754905090565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610484610eb1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f790611392565b60405180910390fd5b60006064600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461054f91906113e1565b6105599190611452565b9050600081846105699190611483565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105ba9190611483565b9250508190555080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461061091906114b7565b9250508190555083600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610661610eb1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106aa9190611483565b92505081905550816001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461070291906114b7565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107669190611184565b60405180910390a361dead73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107cd9190611184565b60405180910390a36001925050509392505050565b6000600660009054906101000a900460ff16905090565b61080233610eb9565b610841576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108389061155d565b60405180910390fd5b600060649050600081831115905061085881610eca565b6108628484610f0d565b50505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108b9610eb1565b73ffffffffffffffffffffffffffffffffffffffff166108d76109eb565b73ffffffffffffffffffffffffffffffffffffffff161461092d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610924906115c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081905080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a6683610eb9565b610aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9c9061155d565b60405180910390fd5b505050565b606060058054610ab9906112ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae5906112ef565b8015610b325780601f10610b0757610100808354040283529160200191610b32565b820191906000526020600020905b815481529060010190602001808311610b1557829003601f168201915b5050505050905090565b60008160016000610b4b610eb1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbe9061165b565b60405180910390fd5b6000606460036000610bd7610eb1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484610c1d91906113e1565b610c279190611452565b905060008184610c379190611483565b90508360016000610c46610eb1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c8f9190611483565b9250508190555080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ce591906114b7565b92505081905550816001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d3d91906114b7565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16610d63610eb1565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610da89190611184565b60405180910390a361dead73ffffffffffffffffffffffffffffffffffffffff16610dd1610eb1565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e169190611184565b60405180910390a360019250505092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b6000610ec3610f55565b9050919050565b80610f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f01906116c7565b60405180910390fd5b50565b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f98610eb1565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600081519050919050565b600082825260208201905092915050565b60005b83811015610fee578082015181840152602081019050610fd3565b60008484015250505050565b6000601f19601f8301169050919050565b600061101682610fb4565b6110208185610fbf565b9350611030818560208601610fd0565b61103981610ffa565b840191505092915050565b6000602082019050818103600083015261105e818461100b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006110968261106b565b9050919050565b6110a68161108b565b81146110b157600080fd5b50565b6000813590506110c38161109d565b92915050565b6000819050919050565b6110dc816110c9565b81146110e757600080fd5b50565b6000813590506110f9816110d3565b92915050565b6000806040838503121561111657611115611066565b5b6000611124858286016110b4565b9250506020611135858286016110ea565b9150509250929050565b60008115159050919050565b6111548161113f565b82525050565b600060208201905061116f600083018461114b565b92915050565b61117e816110c9565b82525050565b60006020820190506111996000830184611175565b92915050565b6000806000606084860312156111b8576111b7611066565b5b60006111c6868287016110b4565b93505060206111d7868287016110b4565b92505060406111e8868287016110ea565b9150509250925092565b600060ff82169050919050565b611208816111f2565b82525050565b600060208201905061122360008301846111ff565b92915050565b60006020828403121561123f5761123e611066565b5b600061124d848285016110b4565b91505092915050565b61125f8161108b565b82525050565b600060208201905061127a6000830184611256565b92915050565b6000806040838503121561129757611296611066565b5b60006112a5858286016110b4565b92505060206112b6858286016110b4565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061130757607f821691505b60208210810361131a576113196112c0565b5b50919050565b7f54543a207472616e7366657220616d6f756e74206578636565647320616c6c6f60008201527f77616e6365000000000000000000000000000000000000000000000000000000602082015250565b600061137c602583610fbf565b915061138782611320565b604082019050919050565b600060208201905081810360008301526113ab8161136f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006113ec826110c9565b91506113f7836110c9565b9250828202611405816110c9565b9150828204841483151761141c5761141b6113b2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061145d826110c9565b9150611468836110c9565b92508261147857611477611423565b5b828204905092915050565b600061148e826110c9565b9150611499836110c9565b92508282039050818111156114b1576114b06113b2565b5b92915050565b60006114c2826110c9565b91506114cd836110c9565b92508282019050808211156114e5576114e46113b2565b5b92915050565b7f43616c6c6572206973206e6f7420746865206f726967696e616c2063616c6c6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000611547602183610fbf565b9150611552826114eb565b604082019050919050565b600060208201905081810360008301526115768161153a565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006115b3602083610fbf565b91506115be8261157d565b602082019050919050565b600060208201905081810360008301526115e2816115a6565b9050919050565b7f54543a207472616e7366657220616d6f756e7420657863656564732062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000611645602383610fbf565b9150611650826115e9565b604082019050919050565b6000602082019050818103600083015261167481611638565b9050919050565b7f496e76616c6964206665652070657263656e7400000000000000000000000000600082015250565b60006116b1601383610fbf565b91506116bc8261167b565b602082019050919050565b600060208201905081810360008301526116e0816116a4565b905091905056fea2646970667358221220d4b5e57f1b92c751305a879c32be76efb217afc2b1db263c558857fe54c7c17564736f6c63430008120033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000002540be40000000000000000000000000000000000000000000000000000000000000000094261627957616c6c79000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000094241425957414c4c590000000000000000000000000000000000000000000000