60806040526001600660006101000a81548160ff02191690831515021790555060006007556000600855600060095560c8600a5560c8600b55601e600c556000600d556008600a62000052919062000864565b621e8480620000629190620008b5565b600e556008600a62000075919062000864565b621e8480620000859190620008b5565b600f556008600a62000098919062000864565b6207a120620000a89190620008b5565b6010556008600a620000bb919062000864565b6216e360620000cb9190620008b5565b601155737a250d5630b4cf539739df2c5dacb4c659f2488d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff0219169083151502179055503480156200016657600080fd5b506000620001796200069960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620002276200069960201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600a62000277919062000864565b6305f5e100620002889190620008b5565b600160006200029c6200069960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160036000620002f0620006a160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000481573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a791906200096a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000531573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055791906200096a565b6040518363ffffffff1660e01b815260040162000576929190620009ad565b6020604051808303816000875af115801562000596573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005bc91906200096a565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200060c6200069960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a6200066b919062000864565b6305f5e1006200067c9190620008b5565b6040516200068b9190620009eb565b60405180910390a362000a08565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007585780860481111562000730576200072f620006ca565b5b6001851615620007405780820291505b80810290506200075085620006f9565b945062000710565b94509492505050565b60008262000773576001905062000846565b8162000783576000905062000846565b81600181146200079c5760028114620007a757620007dd565b600191505062000846565b60ff841115620007bc57620007bb620006ca565b5b8360020a915084821115620007d657620007d5620006ca565b5b5062000846565b5060208310610133831016604e8410600b8410161715620008175782820a905083811115620008115762000810620006ca565b5b62000846565b62000826848484600162000706565b9250905081840481111562000840576200083f620006ca565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000871826200084d565b91506200087e8362000857565b9250620008ad7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000761565b905092915050565b6000620008c2826200084d565b9150620008cf836200084d565b9250828202620008df816200084d565b91508282048414831517620008f957620008f8620006ca565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009328262000905565b9050919050565b620009448162000925565b81146200095057600080fd5b50565b600081519050620009648162000939565b92915050565b60006020828403121562000983576200098262000900565b5b6000620009938482850162000953565b91505092915050565b620009a78162000925565b82525050565b6000604082019050620009c460008301856200099c565b620009d360208301846200099c565b9392505050565b620009e5816200084d565b82525050565b600060208201905062000a026000830184620009da565b92915050565b6138138062000a186000396000f3fe60806040526004361061016a5760003560e01c8063715018a6116100d1578063a9059cbb1161008a578063cb4972a411610064578063cb4972a414610515578063d34628cc1461053e578063dd62ed3e14610567578063eb7ba964146105a457610171565b8063a9059cbb14610482578063bf474bed146104bf578063c876d0b9146104ea57610171565b8063715018a6146103a8578063751039fc146103bf5780637d1db4a5146103d65780638da5cb5b146104015780638f9a55c01461042c57806395d89b411461045757610171565b806331c2d8471161012357806331c2d8471461029c57806334848b9a146102c55780633bbac579146102ee5780634fc3f41a1461032b57806351bc3c851461035457806370a082311461036b57610171565b806306fdde0314610176578063095ea7b3146101a15780630faee56f146101de57806318160ddd1461020957806323b872dd14610234578063313ce5671461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105cf565b6040516101989190612655565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c3919061271f565b61060c565b6040516101d5919061277a565b60405180910390f35b3480156101ea57600080fd5b506101f361062a565b60405161020091906127a4565b60405180910390f35b34801561021557600080fd5b5061021e610630565b60405161022b91906127a4565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906127bf565b610654565b604051610268919061277a565b60405180910390f35b34801561027d57600080fd5b5061028661072d565b604051610293919061282e565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be9190612991565b610736565b005b3480156102d157600080fd5b506102ec60048036038101906102e791906129da565b610860565b005b3480156102fa57600080fd5b5061031560048036038101906103109190612a2d565b610b7d565b604051610322919061277a565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190612a5a565b610bd3565b005b34801561036057600080fd5b50610369610c77565b005b34801561037757600080fd5b50610392600480360381019061038d9190612a2d565b610cb3565b60405161039f91906127a4565b60405180910390f35b3480156103b457600080fd5b506103bd610cfc565b005b3480156103cb57600080fd5b506103d4610e4f565b005b3480156103e257600080fd5b506103eb610f9a565b6040516103f891906127a4565b60405180910390f35b34801561040d57600080fd5b50610416610fa0565b6040516104239190612a96565b60405180910390f35b34801561043857600080fd5b50610441610fc9565b60405161044e91906127a4565b60405180910390f35b34801561046357600080fd5b5061046c610fcf565b6040516104799190612655565b60405180910390f35b34801561048e57600080fd5b506104a960048036038101906104a4919061271f565b61100c565b6040516104b6919061277a565b60405180910390f35b3480156104cb57600080fd5b506104d461102a565b6040516104e191906127a4565b60405180910390f35b3480156104f657600080fd5b506104ff611030565b60405161050c919061277a565b60405180910390f35b34801561052157600080fd5b5061053c600480360381019061053791906129da565b611043565b005b34801561054a57600080fd5b5061056560048036038101906105609190612991565b6110f4565b005b34801561057357600080fd5b5061058e60048036038101906105899190612ab1565b6113cd565b60405161059b91906127a4565b60405180910390f35b3480156105b057600080fd5b506105b9611454565b6040516105c69190612a96565b60405180910390f35b60606040518060400160405280600881526020017f4d61746368204149000000000000000000000000000000000000000000000000815250905090565b600061062061061961147e565b8484611486565b6001905092915050565b60115481565b60006008600a6106409190612c53565b6305f5e10061064f9190612c9e565b905090565b600061066184848461164f565b6107228461066d61147e565b61071d856040518060600160405280602881526020016137b660289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106d361147e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120949092919063ffffffff16565b611486565b600190509392505050565b60006008905090565b61073e61147e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c290612d2c565b60405180910390fd5b60005b815181101561085c576000600460008484815181106107f0576107ef612d4c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061085490612d7b565b9150506107ce565b5050565b61086861147e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ec90612d2c565b60405180910390fd5b601360149054906101000a900460ff1615610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093c90612e0f565b60405180910390fd5b61098e30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a61097a9190612c53565b6305f5e1006109899190612c9e565b611486565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306109d730610cb3565b6000806109e2610fa0565b426040518863ffffffff1660e01b8152600401610a0496959493929190612e74565b60606040518083038185885af1158015610a22573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a479190612eea565b5050506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550826007819055508160088190555080600981905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610b34929190612f3d565b6020604051808303816000875af1158015610b53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b779190612f92565b50505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610bdb61147e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5f90612d2c565b60405180910390fd5b80600a819055600b8190555050565b6000610c8230610cb3565b90506000811115610c9757610c96816120f8565b5b60004790506000811115610caf57610cae81612371565b5b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d0461147e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8890612d2c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e5761147e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edb90612d2c565b60405180910390fd5b6008600a610ef29190612c53565b6305f5e100610f019190612c9e565b600e819055506008600a610f159190612c53565b6305f5e100610f249190612c9e565b600f819055506000600660006101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610f749190612c53565b6305f5e100610f839190612c9e565b604051610f9091906127a4565b60405180910390a1565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600381526020017f4d41490000000000000000000000000000000000000000000000000000000000815250905090565b600061102061101961147e565b848461164f565b6001905092915050565b60105481565b600660009054906101000a900460ff1681565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661108461147e565b73ffffffffffffffffffffffffffffffffffffffff16146110da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d19061300b565b60405180910390fd5b816007819055508060088190555082600981905550505050565b6110fc61147e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118090612d2c565b60405180910390fd5b60005b81518110156113c957601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106111e1576111e0612d4c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156112755750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061125457611253612d4c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b80156112c757503073ffffffffffffffffffffffffffffffffffffffff168282815181106112a6576112a5612d4c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b801561133b5750600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061131a57611319612d4c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b61134457600080fd5b60016004600084848151811061135d5761135c612d4c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113c190612d7b565b91505061118c565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec9061309d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155b9061312f565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161164291906127a4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b5906131c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361172d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172490613253565b60405180910390fd5b60008111611770576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611767906132e5565b60405180910390fd5b600061177a610fa0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117e857506117b8610fa0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611dd757600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118915750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61189a57600080fd5b6118d660646118c8600a54600d54116118b5576007546118b9565b6009545b856123dd90919063ffffffff16565b61245790919063ffffffff16565b9050600660009054906101000a900460ff1615611a6557601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119995750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a645743600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a169061339d565b60405180910390fd5b43600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b105750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b665750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c2157600e54821115611bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba790613409565b60405180910390fd5b600f5482611bbd85610cb3565b611bc79190613429565b1115611c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bff906134a9565b60405180910390fd5b600d6000815480929190611c1b90612d7b565b91905055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611caa57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611cee57611ceb6064611cdd600b54600d5411611cca57600854611cce565b6009545b856123dd90919063ffffffff16565b61245790919063ffffffff16565b90505b6000611cf930610cb3565b9050601360159054906101000a900460ff16158015611d655750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611d7d5750601360169054906101000a900460ff165b8015611d8a575060105481115b8015611d995750600c54600d54115b15611dd557611dbb611db684611db1846011546124a1565b6124a1565b6120f8565b60004790506000811115611dd357611dd247612371565b5b505b505b611e2982600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124ba90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ed0611e8282846124ba90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250490919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611f7584866124ba90919063ffffffff16565b604051611f8291906127a4565b60405180910390a3600081111561208e57611fe581600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161208591906127a4565b60405180910390a35b50505050565b60008383111582906120dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d39190612655565b60405180910390fd5b50600083856120eb91906134c9565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121305761212f61284e565b5b60405190808252806020026020018201604052801561215e5781602001602082028036833780820191505090505b509050308160008151811061217657612175612d4c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561221d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122419190613512565b8160018151811061225557612254612d4c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122bc30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611486565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123209594939291906135fd565b600060405180830381600087803b15801561233a57600080fd5b505af115801561234e573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156123d9573d6000803e3d6000fd5b5050565b60008083036123ef5760009050612451565b600082846123fd9190612c9e565b905082848261240c9190613686565b1461244c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244390613729565b60405180910390fd5b809150505b92915050565b600061249983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612562565b905092915050565b60008183116124b057826124b2565b815b905092915050565b60006124fc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612094565b905092915050565b60008082846125139190613429565b905083811015612558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254f90613795565b60405180910390fd5b8091505092915050565b600080831182906125a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a09190612655565b60405180910390fd5b50600083856125b89190613686565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156125ff5780820151818401526020810190506125e4565b60008484015250505050565b6000601f19601f8301169050919050565b6000612627826125c5565b61263181856125d0565b93506126418185602086016125e1565b61264a8161260b565b840191505092915050565b6000602082019050818103600083015261266f818461261c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126b68261268b565b9050919050565b6126c6816126ab565b81146126d157600080fd5b50565b6000813590506126e3816126bd565b92915050565b6000819050919050565b6126fc816126e9565b811461270757600080fd5b50565b600081359050612719816126f3565b92915050565b6000806040838503121561273657612735612681565b5b6000612744858286016126d4565b92505060206127558582860161270a565b9150509250929050565b60008115159050919050565b6127748161275f565b82525050565b600060208201905061278f600083018461276b565b92915050565b61279e816126e9565b82525050565b60006020820190506127b96000830184612795565b92915050565b6000806000606084860312156127d8576127d7612681565b5b60006127e6868287016126d4565b93505060206127f7868287016126d4565b92505060406128088682870161270a565b9150509250925092565b600060ff82169050919050565b61282881612812565b82525050565b6000602082019050612843600083018461281f565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128868261260b565b810181811067ffffffffffffffff821117156128a5576128a461284e565b5b80604052505050565b60006128b8612677565b90506128c4828261287d565b919050565b600067ffffffffffffffff8211156128e4576128e361284e565b5b602082029050602081019050919050565b600080fd5b600061290d612908846128c9565b6128ae565b905080838252602082019050602084028301858111156129305761292f6128f5565b5b835b81811015612959578061294588826126d4565b845260208401935050602081019050612932565b5050509392505050565b600082601f83011261297857612977612849565b5b81356129888482602086016128fa565b91505092915050565b6000602082840312156129a7576129a6612681565b5b600082013567ffffffffffffffff8111156129c5576129c4612686565b5b6129d184828501612963565b91505092915050565b6000806000606084860312156129f3576129f2612681565b5b6000612a018682870161270a565b9350506020612a128682870161270a565b9250506040612a238682870161270a565b9150509250925092565b600060208284031215612a4357612a42612681565b5b6000612a51848285016126d4565b91505092915050565b600060208284031215612a7057612a6f612681565b5b6000612a7e8482850161270a565b91505092915050565b612a90816126ab565b82525050565b6000602082019050612aab6000830184612a87565b92915050565b60008060408385031215612ac857612ac7612681565b5b6000612ad6858286016126d4565b9250506020612ae7858286016126d4565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612b7757808604811115612b5357612b52612af1565b5b6001851615612b625780820291505b8081029050612b7085612b20565b9450612b37565b94509492505050565b600082612b905760019050612c4c565b81612b9e5760009050612c4c565b8160018114612bb45760028114612bbe57612bed565b6001915050612c4c565b60ff841115612bd057612bcf612af1565b5b8360020a915084821115612be757612be6612af1565b5b50612c4c565b5060208310610133831016604e8410600b8410161715612c225782820a905083811115612c1d57612c1c612af1565b5b612c4c565b612c2f8484846001612b2d565b92509050818404811115612c4657612c45612af1565b5b81810290505b9392505050565b6000612c5e826126e9565b9150612c6983612812565b9250612c967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612b80565b905092915050565b6000612ca9826126e9565b9150612cb4836126e9565b9250828202612cc2816126e9565b91508282048414831517612cd957612cd8612af1565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d166020836125d0565b9150612d2182612ce0565b602082019050919050565b60006020820190508181036000830152612d4581612d09565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612d86826126e9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612db857612db7612af1565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612df96017836125d0565b9150612e0482612dc3565b602082019050919050565b60006020820190508181036000830152612e2881612dec565b9050919050565b6000819050919050565b6000819050919050565b6000612e5e612e59612e5484612e2f565b612e39565b6126e9565b9050919050565b612e6e81612e43565b82525050565b600060c082019050612e896000830189612a87565b612e966020830188612795565b612ea36040830187612e65565b612eb06060830186612e65565b612ebd6080830185612a87565b612eca60a0830184612795565b979650505050505050565b600081519050612ee4816126f3565b92915050565b600080600060608486031215612f0357612f02612681565b5b6000612f1186828701612ed5565b9350506020612f2286828701612ed5565b9250506040612f3386828701612ed5565b9150509250925092565b6000604082019050612f526000830185612a87565b612f5f6020830184612795565b9392505050565b612f6f8161275f565b8114612f7a57600080fd5b50565b600081519050612f8c81612f66565b92915050565b600060208284031215612fa857612fa7612681565b5b6000612fb684828501612f7d565b91505092915050565b7f796f7520617265206e6f7420746865206f776e65720000000000000000000000600082015250565b6000612ff56015836125d0565b915061300082612fbf565b602082019050919050565b6000602082019050818103600083015261302481612fe8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006130876024836125d0565b91506130928261302b565b604082019050919050565b600060208201905081810360008301526130b68161307a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131196022836125d0565b9150613124826130bd565b604082019050919050565b600060208201905081810360008301526131488161310c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131ab6025836125d0565b91506131b68261314f565b604082019050919050565b600060208201905081810360008301526131da8161319e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061323d6023836125d0565b9150613248826131e1565b604082019050919050565b6000602082019050818103600083015261326c81613230565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006132cf6029836125d0565b91506132da82613273565b604082019050919050565b600060208201905081810360008301526132fe816132c2565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006133876049836125d0565b915061339282613305565b606082019050919050565b600060208201905081810360008301526133b68161337a565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b60006133f36019836125d0565b91506133fe826133bd565b602082019050919050565b60006020820190508181036000830152613422816133e6565b9050919050565b6000613434826126e9565b915061343f836126e9565b925082820190508082111561345757613456612af1565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613493601a836125d0565b915061349e8261345d565b602082019050919050565b600060208201905081810360008301526134c281613486565b9050919050565b60006134d4826126e9565b91506134df836126e9565b92508282039050818111156134f7576134f6612af1565b5b92915050565b60008151905061350c816126bd565b92915050565b60006020828403121561352857613527612681565b5b6000613536848285016134fd565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613574816126ab565b82525050565b6000613586838361356b565b60208301905092915050565b6000602082019050919050565b60006135aa8261353f565b6135b4818561354a565b93506135bf8361355b565b8060005b838110156135f05781516135d7888261357a565b97506135e283613592565b9250506001810190506135c3565b5085935050505092915050565b600060a0820190506136126000830188612795565b61361f6020830187612e65565b8181036040830152613631818661359f565b90506136406060830185612a87565b61364d6080830184612795565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613691826126e9565b915061369c836126e9565b9250826136ac576136ab613657565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006137136021836125d0565b915061371e826136b7565b604082019050919050565b6000602082019050818103600083015261374281613706565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061377f601b836125d0565b915061378a82613749565b602082019050919050565b600060208201905081810360008301526137ae81613772565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200f15c39974d9e571c21aff53caaf529d2bb962ff14b11cf3fcc70248c361ef3a64736f6c63430008110033