60806040526611c37937e08000600a556005600b556002600c556161a8600d55611388600e556000600f60006101000a81548160ff0219169083151502179055503480156200004d57600080fd5b506040518060400160405280600a81526020017f5749544348455378797a000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f57697463680000000000000000000000000000000000000000000000000000008152508160029080519060200190620000d2929190620007b4565b508060039080519060200190620000eb929190620007b4565b50620000fc6200016760201b60201c565b600081905550505062000124620001186200016c60201b60201c565b6200017460201b60201c565b620001373360056200023a60201b60201c565b6200016160405180606001604052806036815260200162003d35603691396200026060201b60201c565b62000b38565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200025c8282604051806020016040528060008152506200030b60201b60201c565b5050565b620002706200016c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000296620005f060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002e6906200098b565b60405180910390fd5b806009908051906020019062000307929190620007b4565b5050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141562000379576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000831415620003b5576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620003ca60008583866200061a60201b60201c565b600160406001901b178302600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555060e162000437600185146200062060201b60201c565b901b60a042901b6200044f866200062a60201b60201c565b1717600460008381526020019081526020016000208190555060008190506000848201905060008673ffffffffffffffffffffffffffffffffffffffff163b1462000560575b818673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46200050c60008784806001019550876200063460201b60201c565b62000543576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808210620004955782600054146200055a57600080fd5b620005cc565b5b818060010192508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821062000561575b816000819055505050620005ea6000858386620007a660201b60201c565b50505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b50505050565b6000819050919050565b6000819050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a0262000662620007ac60201b60201c565b8786866040518563ffffffff1660e01b815260040162000686949392919062000937565b602060405180830381600087803b158015620006a157600080fd5b505af1925050508015620006d557506040513d601f19601f82011682018060405250810190620006d291906200087b565b60015b62000753573d806000811462000708576040519150601f19603f3d011682016040523d82523d6000602084013e6200070d565b606091505b506000815114156200074b576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b50505050565b600033905090565b828054620007c29062000a7a565b90600052602060002090601f016020900481019282620007e6576000855562000832565b82601f106200080157805160ff191683800117855562000832565b8280016001018555821562000832579182015b828111156200083157825182559160200191906001019062000814565b5b50905062000841919062000845565b5090565b5b808211156200086057600081600090555060010162000846565b5090565b600081519050620008758162000b1e565b92915050565b60006020828403121562000894576200089362000adf565b5b6000620008a48482850162000864565b91505092915050565b620008b881620009da565b82525050565b6000620008cb82620009ad565b620008d78185620009b8565b9350620008e981856020860162000a44565b620008f48162000ae4565b840191505092915050565b60006200090e602083620009c9565b91506200091b8262000af5565b602082019050919050565b620009318162000a3a565b82525050565b60006080820190506200094e6000830187620008ad565b6200095d6020830186620008ad565b6200096c604083018562000926565b8181036060830152620009808184620008be565b905095945050505050565b60006020820190508181036000830152620009a681620008ff565b9050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000620009e78262000a1a565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000a6457808201518184015260208101905062000a47565b8381111562000a74576000848401525b50505050565b6000600282049050600182168062000a9357607f821691505b6020821081141562000aaa5762000aa962000ab0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b62000b2981620009ee565b811462000b3557600080fd5b50565b6131ed8062000b486000396000f3fe6080604052600436106101c25760003560e01c80638da5cb5b116100f7578063a702735711610095578063d5abeb0111610064578063d5abeb01146105f9578063e985e9c514610624578063f2fde38b14610661578063f968adbe1461068a576101c2565b8063a70273571461053d578063b88d4fde14610568578063c87b56dd14610591578063d1239730146105ce576101c2565b806395d89b41116100d157806395d89b41146104a2578063a035b1fe146104cd578063a0712d68146104f8578063a22cb46514610514576101c2565b80638da5cb5b1461042557806391b7f5ed1461045057806392910eec14610479576101c2565b80633ccfd60b116101645780636352211e1161013e5780636352211e1461037d57806370a08231146103ba578063715018a6146103f75780637ba5e6211461040e576101c2565b80633ccfd60b1461031457806342842e0e1461032b57806355f804b314610354576101c2565b8063095ea7b3116101a0578063095ea7b31461026c57806318160ddd1461029557806323b872dd146102c0578063333e44e6146102e9576101c2565b806301ffc9a7146101c757806306fdde0314610204578063081812fc1461022f575b600080fd5b3480156101d357600080fd5b506101ee60048036038101906101e991906125e5565b6106b5565b6040516101fb91906129ea565b60405180910390f35b34801561021057600080fd5b50610219610747565b6040516102269190612a05565b60405180910390f35b34801561023b57600080fd5b5061025660048036038101906102519190612688565b6107d9565b6040516102639190612983565b60405180910390f35b34801561027857600080fd5b50610293600480360381019061028e91906125a5565b610855565b005b3480156102a157600080fd5b506102aa6109fc565b6040516102b79190612b07565b60405180910390f35b3480156102cc57600080fd5b506102e760048036038101906102e2919061248f565b610a13565b005b3480156102f557600080fd5b506102fe610a23565b60405161030b9190612b07565b60405180910390f35b34801561032057600080fd5b50610329610a29565b005b34801561033757600080fd5b50610352600480360381019061034d919061248f565b610bed565b005b34801561036057600080fd5b5061037b6004803603810190610376919061263f565b610c0d565b005b34801561038957600080fd5b506103a4600480360381019061039f9190612688565b610ca3565b6040516103b19190612983565b60405180910390f35b3480156103c657600080fd5b506103e160048036038101906103dc9190612422565b610cb5565b6040516103ee9190612b07565b60405180910390f35b34801561040357600080fd5b5061040c610d6e565b005b34801561041a57600080fd5b50610423610df6565b005b34801561043157600080fd5b5061043a610e9e565b6040516104479190612983565b60405180910390f35b34801561045c57600080fd5b5061047760048036038101906104729190612688565b610ec8565b005b34801561048557600080fd5b506104a0600480360381019061049b9190612688565b610f4e565b005b3480156104ae57600080fd5b506104b7610fd4565b6040516104c49190612a05565b60405180910390f35b3480156104d957600080fd5b506104e2611066565b6040516104ef9190612b07565b60405180910390f35b610512600480360381019061050d9190612688565b61106c565b005b34801561052057600080fd5b5061053b60048036038101906105369190612565565b6112b8565b005b34801561054957600080fd5b50610552611430565b60405161055f9190612b07565b60405180910390f35b34801561057457600080fd5b5061058f600480360381019061058a91906124e2565b611436565b005b34801561059d57600080fd5b506105b860048036038101906105b39190612688565b6114a9565b6040516105c59190612a05565b60405180910390f35b3480156105da57600080fd5b506105e3611525565b6040516105f091906129ea565b60405180910390f35b34801561060557600080fd5b5061060e611538565b60405161061b9190612b07565b60405180910390f35b34801561063057600080fd5b5061064b6004803603810190610646919061244f565b61153e565b60405161065891906129ea565b60405180910390f35b34801561066d57600080fd5b5061068860048036038101906106839190612422565b6115d2565b005b34801561069657600080fd5b5061069f6116ca565b6040516106ac9190612b07565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061071057506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107405750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606002805461075690612dd7565b80601f016020809104026020016040519081016040528092919081815260200182805461078290612dd7565b80156107cf5780601f106107a4576101008083540402835291602001916107cf565b820191906000526020600020905b8154815290600101906020018083116107b257829003601f168201915b5050505050905090565b60006107e4826116d0565b61081a576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108608261172f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108c8576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108e76117fd565b73ffffffffffffffffffffffffffffffffffffffff161461094a576109138161090e6117fd565b61153e565b610949576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000610a06611805565b6001546000540303905090565b610a1e83838361180a565b505050565b600d5481565b610a31611bb4565b73ffffffffffffffffffffffffffffffffffffffff16610a4f610e9e565b73ffffffffffffffffffffffffffffffffffffffff1614610aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9c90612a87565b60405180910390fd5b600073d05c28a9e9f30638fd5d0389cb36309d95839fab73ffffffffffffffffffffffffffffffffffffffff166064605047610ae19190612c93565b610aeb9190612c62565b604051610af79061296e565b60006040518083038185875af1925050503d8060008114610b34576040519150601f19603f3d011682016040523d82523d6000602084013e610b39565b606091505b5050905080610b4757600080fd5b6000734804cf1880601bfbc7c3cedb2f88688dbc0d884173ffffffffffffffffffffffffffffffffffffffff166064601447610b839190612c93565b610b8d9190612c62565b604051610b999061296e565b60006040518083038185875af1925050503d8060008114610bd6576040519150601f19603f3d011682016040523d82523d6000602084013e610bdb565b606091505b5050905080610be957600080fd5b5050565b610c0883838360405180602001604052806000815250611436565b505050565b610c15611bb4565b73ffffffffffffffffffffffffffffffffffffffff16610c33610e9e565b73ffffffffffffffffffffffffffffffffffffffff1614610c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8090612a87565b60405180910390fd5b8060099080519060200190610c9f929190612236565b5050565b6000610cae8261172f565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1d576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b610d76611bb4565b73ffffffffffffffffffffffffffffffffffffffff16610d94610e9e565b73ffffffffffffffffffffffffffffffffffffffff1614610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de190612a87565b60405180910390fd5b610df46000611bbc565b565b610dfe611bb4565b73ffffffffffffffffffffffffffffffffffffffff16610e1c610e9e565b73ffffffffffffffffffffffffffffffffffffffff1614610e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6990612a87565b60405180910390fd5b600f60009054906101000a900460ff1615600f60006101000a81548160ff021916908315150217905550565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ed0611bb4565b73ffffffffffffffffffffffffffffffffffffffff16610eee610e9e565b73ffffffffffffffffffffffffffffffffffffffff1614610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b90612a87565b60405180910390fd5b80600a8190555050565b610f56611bb4565b73ffffffffffffffffffffffffffffffffffffffff16610f74610e9e565b73ffffffffffffffffffffffffffffffffffffffff1614610fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc190612a87565b60405180910390fd5b80600d8190555050565b606060038054610fe390612dd7565b80601f016020809104026020016040519081016040528092919081815260200182805461100f90612dd7565b801561105c5780601f106110315761010080835404028352916020019161105c565b820191906000526020600020905b81548152906001019060200180831161103f57829003601f168201915b5050505050905090565b600a5481565b6000600a54905060006001600d546110849190612c0c565b8361108d6109fc565b6110979190612c0c565b1080156110f05750600c5483601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110ed9190612c0c565b11155b905080156110fd57600091505b81836111099190612c93565b34101561114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114290612ac7565b60405180910390fd5b6001600e5461115a9190612c0c565b836111636109fc565b61116d9190612c0c565b106111ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a490612a47565b60405180910390fd5b600f60009054906101000a900460ff166111fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f390612a27565b60405180910390fd5b6001600b5461120b9190612c0c565b831061124c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124390612ae7565b60405180910390fd5b80156112a95782601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112a19190612c0c565b925050819055505b6112b33384611c82565b505050565b6112c06117fd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611325576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600760006113326117fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166113df6117fd565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161142491906129ea565b60405180910390a35050565b600c5481565b61144184848461180a565b60008373ffffffffffffffffffffffffffffffffffffffff163b146114a35761146c84848484611ca0565b6114a2576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b60606114b4826116d0565b6114f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ea90612aa7565b60405180910390fd5b60096114fe83611e00565b60405160200161150f92919061293f565b6040516020818303038152906040529050919050565b600f60009054906101000a900460ff1681565b600e5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6115da611bb4565b73ffffffffffffffffffffffffffffffffffffffff166115f8610e9e565b73ffffffffffffffffffffffffffffffffffffffff161461164e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164590612a87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b590612a67565b60405180910390fd5b6116c781611bbc565b50565b600b5481565b6000816116db611805565b111580156116ea575060005482105b8015611728575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b6000808290508061173e611805565b116117c6576000548110156117c55760006004600083815260200190815260200160002054905060007c0100000000000000000000000000000000000000000000000000000000821614156117c3575b60008114156117b957600460008360019003935083815260200190815260200160002054905061178e565b80925050506117f8565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b600033905090565b600090565b60006118158261172f565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461187c576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff1661189d6117fd565b73ffffffffffffffffffffffffffffffffffffffff1614806118cc57506118cb856118c66117fd565b61153e565b5b8061191157506118da6117fd565b73ffffffffffffffffffffffffffffffffffffffff166118f9846107d9565b73ffffffffffffffffffffffffffffffffffffffff16145b90508061194a576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156119b1576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119be8585856001611f61565b6006600084815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154600101919050819055507c020000000000000000000000000000000000000000000000000000000060a042901b611abb86611f67565b1717600460008581526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000083161415611b45576000600184019050600060046000838152602001908152602001600020541415611b43576000548114611b42578260046000838152602001908152602001600020819055505b5b505b828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611bad8585856001611f71565b5050505050565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611c9c828260405180602001604052806000815250611f77565b5050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611cc66117fd565b8786866040518563ffffffff1660e01b8152600401611ce8949392919061299e565b602060405180830381600087803b158015611d0257600080fd5b505af1925050508015611d3357506040513d601f19601f82011682018060405250810190611d309190612612565b60015b611dad573d8060008114611d63576040519150601f19603f3d011682016040523d82523d6000602084013e611d68565b606091505b50600081511415611da5576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60606000821415611e48576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611f5c565b600082905060005b60008214611e7a578080611e6390612e3a565b915050600a82611e739190612c62565b9150611e50565b60008167ffffffffffffffff811115611e9657611e95612f70565b5b6040519080825280601f01601f191660200182016040528015611ec85781602001600182028036833780820191505090505b5090505b60008514611f5557600182611ee19190612ced565b9150600a85611ef09190612e83565b6030611efc9190612c0c565b60f81b818381518110611f1257611f11612f41565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611f4e9190612c62565b9450611ecc565b8093505050505b919050565b50505050565b6000819050919050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611fe4576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083141561201f576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61202c6000858386611f61565b600160406001901b178302600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555060e16120916001851461222c565b901b60a042901b6120a186611f67565b1717600460008381526020019081526020016000208190555060008190506000848201905060008673ffffffffffffffffffffffffffffffffffffffff163b146121a5575b818673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46121556000878480600101955087611ca0565b61218b576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8082106120e65782600054146121a057600080fd5b612210565b5b818060010192508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48082106121a6575b8160008190555050506122266000858386611f71565b50505050565b6000819050919050565b82805461224290612dd7565b90600052602060002090601f01602090048101928261226457600085556122ab565b82601f1061227d57805160ff19168380011785556122ab565b828001600101855582156122ab579182015b828111156122aa57825182559160200191906001019061228f565b5b5090506122b891906122bc565b5090565b5b808211156122d55760008160009055506001016122bd565b5090565b60006122ec6122e784612b47565b612b22565b90508281526020810184848401111561230857612307612fa4565b5b612313848285612d95565b509392505050565b600061232e61232984612b78565b612b22565b90508281526020810184848401111561234a57612349612fa4565b5b612355848285612d95565b509392505050565b60008135905061236c8161315b565b92915050565b60008135905061238181613172565b92915050565b60008135905061239681613189565b92915050565b6000815190506123ab81613189565b92915050565b600082601f8301126123c6576123c5612f9f565b5b81356123d68482602086016122d9565b91505092915050565b600082601f8301126123f4576123f3612f9f565b5b813561240484826020860161231b565b91505092915050565b60008135905061241c816131a0565b92915050565b60006020828403121561243857612437612fae565b5b60006124468482850161235d565b91505092915050565b6000806040838503121561246657612465612fae565b5b60006124748582860161235d565b92505060206124858582860161235d565b9150509250929050565b6000806000606084860312156124a8576124a7612fae565b5b60006124b68682870161235d565b93505060206124c78682870161235d565b92505060406124d88682870161240d565b9150509250925092565b600080600080608085870312156124fc576124fb612fae565b5b600061250a8782880161235d565b945050602061251b8782880161235d565b935050604061252c8782880161240d565b925050606085013567ffffffffffffffff81111561254d5761254c612fa9565b5b612559878288016123b1565b91505092959194509250565b6000806040838503121561257c5761257b612fae565b5b600061258a8582860161235d565b925050602061259b85828601612372565b9150509250929050565b600080604083850312156125bc576125bb612fae565b5b60006125ca8582860161235d565b92505060206125db8582860161240d565b9150509250929050565b6000602082840312156125fb576125fa612fae565b5b600061260984828501612387565b91505092915050565b60006020828403121561262857612627612fae565b5b60006126368482850161239c565b91505092915050565b60006020828403121561265557612654612fae565b5b600082013567ffffffffffffffff81111561267357612672612fa9565b5b61267f848285016123df565b91505092915050565b60006020828403121561269e5761269d612fae565b5b60006126ac8482850161240d565b91505092915050565b6126be81612d21565b82525050565b6126cd81612d33565b82525050565b60006126de82612bbe565b6126e88185612bd4565b93506126f8818560208601612da4565b61270181612fb3565b840191505092915050565b600061271782612bc9565b6127218185612bf0565b9350612731818560208601612da4565b61273a81612fb3565b840191505092915050565b600061275082612bc9565b61275a8185612c01565b935061276a818560208601612da4565b80840191505092915050565b6000815461278381612dd7565b61278d8186612c01565b945060018216600081146127a857600181146127b9576127ec565b60ff198316865281860193506127ec565b6127c285612ba9565b60005b838110156127e4578154818901526001820191506020810190506127c5565b838801955050505b50505092915050565b6000612802601783612bf0565b915061280d82612fc4565b602082019050919050565b6000612825600783612bf0565b915061283082612fed565b602082019050919050565b6000612848602683612bf0565b915061285382613016565b604082019050919050565b600061286b600583612c01565b915061287682613065565b600582019050919050565b600061288e602083612bf0565b91506128998261308e565b602082019050919050565b60006128b1602f83612bf0565b91506128bc826130b7565b604082019050919050565b60006128d4601d83612bf0565b91506128df82613106565b602082019050919050565b60006128f7600083612be5565b91506129028261312f565b600082019050919050565b600061291a601383612bf0565b915061292582613132565b602082019050919050565b61293981612d8b565b82525050565b600061294b8285612776565b91506129578284612745565b91506129628261285e565b91508190509392505050565b6000612979826128ea565b9150819050919050565b600060208201905061299860008301846126b5565b92915050565b60006080820190506129b360008301876126b5565b6129c060208301866126b5565b6129cd6040830185612930565b81810360608301526129df81846126d3565b905095945050505050565b60006020820190506129ff60008301846126c4565b92915050565b60006020820190508181036000830152612a1f818461270c565b905092915050565b60006020820190508181036000830152612a40816127f5565b9050919050565b60006020820190508181036000830152612a6081612818565b9050919050565b60006020820190508181036000830152612a808161283b565b9050919050565b60006020820190508181036000830152612aa081612881565b9050919050565b60006020820190508181036000830152612ac0816128a4565b9050919050565b60006020820190508181036000830152612ae0816128c7565b9050919050565b60006020820190508181036000830152612b008161290d565b9050919050565b6000602082019050612b1c6000830184612930565b92915050565b6000612b2c612b3d565b9050612b388282612e09565b919050565b6000604051905090565b600067ffffffffffffffff821115612b6257612b61612f70565b5b612b6b82612fb3565b9050602081019050919050565b600067ffffffffffffffff821115612b9357612b92612f70565b5b612b9c82612fb3565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000612c1782612d8b565b9150612c2283612d8b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612c5757612c56612eb4565b5b828201905092915050565b6000612c6d82612d8b565b9150612c7883612d8b565b925082612c8857612c87612ee3565b5b828204905092915050565b6000612c9e82612d8b565b9150612ca983612d8b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612ce257612ce1612eb4565b5b828202905092915050565b6000612cf882612d8b565b9150612d0383612d8b565b925082821015612d1657612d15612eb4565b5b828203905092915050565b6000612d2c82612d6b565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612dc2578082015181840152602081019050612da7565b83811115612dd1576000848401525b50505050565b60006002820490506001821680612def57607f821691505b60208210811415612e0357612e02612f12565b5b50919050565b612e1282612fb3565b810181811067ffffffffffffffff82111715612e3157612e30612f70565b5b80604052505050565b6000612e4582612d8b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612e7857612e77612eb4565b5b600182019050919050565b6000612e8e82612d8b565b9150612e9983612d8b565b925082612ea957612ea8612ee3565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4d696e74696e67206973206e6f74206c69766520796574000000000000000000600082015250565b7f4e6f206d6f726500000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f506c656173652073656e642074686520657861637420616d6f756e742e000000600082015250565b50565b7f4d61782070657220545820726561636865642e00000000000000000000000000600082015250565b61316481612d21565b811461316f57600080fd5b50565b61317b81612d33565b811461318657600080fd5b50565b61319281612d3f565b811461319d57600080fd5b50565b6131a981612d8b565b81146131b457600080fd5b5056fea2646970667358221220f778e78b344137f7ad36473c207c0b9ac074bf5f6cffd0bc4b363447394221de64736f6c63430008070033697066733a2f2f516d5235745355413264346b6e42456141386f7952676d5663743778446d53705865356e6a4a77466f33464565792f