60806040523480156200001157600080fd5b5060405162003ece38038062003ece8339818101604052810190620000379190620003a0565b33828281600090816200004b919062000670565b5080600190816200005d919062000670565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000d55760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000cc91906200079c565b60405180910390fd5b620000e6816200014760201b60201c565b506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050620007b9565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000276826200022b565b810181811067ffffffffffffffff821117156200029857620002976200023c565b5b80604052505050565b6000620002ad6200020d565b9050620002bb82826200026b565b919050565b600067ffffffffffffffff821115620002de57620002dd6200023c565b5b620002e9826200022b565b9050602081019050919050565b60005b8381101562000316578082015181840152602081019050620002f9565b60008484015250505050565b6000620003396200033384620002c0565b620002a1565b90508281526020810184848401111562000358576200035762000226565b5b62000365848285620002f6565b509392505050565b600082601f83011262000385576200038462000221565b5b81516200039784826020860162000322565b91505092915050565b60008060408385031215620003ba57620003b962000217565b5b600083015167ffffffffffffffff811115620003db57620003da6200021c565b5b620003e9858286016200036d565b925050602083015167ffffffffffffffff8111156200040d576200040c6200021c565b5b6200041b858286016200036d565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200047857607f821691505b6020821081036200048e576200048d62000430565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004f87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004b9565b620005048683620004b9565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005516200054b62000545846200051c565b62000526565b6200051c565b9050919050565b6000819050919050565b6200056d8362000530565b620005856200057c8262000558565b848454620004c6565b825550505050565b600090565b6200059c6200058d565b620005a981848462000562565b505050565b5b81811015620005d157620005c560008262000592565b600181019050620005af565b5050565b601f8211156200062057620005ea8162000494565b620005f584620004a9565b8101602085101562000605578190505b6200061d6200061485620004a9565b830182620005ae565b50505b505050565b600082821c905092915050565b6000620006456000198460080262000625565b1980831691505092915050565b600062000660838362000632565b9150826002028217905092915050565b6200067b8262000425565b67ffffffffffffffff8111156200069757620006966200023c565b5b620006a382546200045f565b620006b0828285620005d5565b600060209050601f831160018114620006e85760008415620006d3578287015190505b620006df858262000652565b8655506200074f565b601f198416620006f88662000494565b60005b828110156200072257848901518255600182019150602085019450602081019050620006fb565b868310156200074257848901516200073e601f89168262000632565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007848262000757565b9050919050565b620007968162000777565b82525050565b6000602082019050620007b360008301846200078b565b92915050565b61370580620007c96000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80634f6ccce7116100de57806395d89b4111610097578063c87b56dd11610071578063c87b56dd14610446578063d3fc986414610476578063e985e9c514610492578063f2fde38b146104c257610173565b806395d89b41146103f0578063a22cb4651461040e578063b88d4fde1461042a57610173565b80634f6ccce71461031c5780636352211e1461034c578063704802751461037c57806370a0823114610398578063715018a6146103c85780638da5cb5b146103d257610173565b806323b872dd1161013057806323b872dd1461024c57806324d7806c1461026857806327fd95c9146102985780632f745c59146102b457806342842e0e146102e457806342966c681461030057610173565b806301ffc9a71461017857806306fdde03146101a8578063081812fc146101c6578063095ea7b3146101f65780631785f53c1461021257806318160ddd1461022e575b600080fd5b610192600480360381019061018d9190612867565b6104de565b60405161019f91906128af565b60405180910390f35b6101b0610558565b6040516101bd919061295a565b60405180910390f35b6101e060048036038101906101db91906129b2565b6105ea565b6040516101ed9190612a20565b60405180910390f35b610210600480360381019061020b9190612a67565b610606565b005b61022c60048036038101906102279190612aa7565b61061c565b005b6102366107ab565b6040516102439190612ae3565b60405180910390f35b61026660048036038101906102619190612afe565b6107b8565b005b610282600480360381019061027d9190612aa7565b6108ba565b60405161028f91906128af565b60405180910390f35b6102b260048036038101906102ad9190612c62565b610910565b005b6102ce60048036038101906102c99190612a67565b610b79565b6040516102db9190612ae3565b60405180910390f35b6102fe60048036038101906102f99190612afe565b610c22565b005b61031a600480360381019061031591906129b2565b610c42565b005b610336600480360381019061033191906129b2565b610cf0565b6040516103439190612ae3565b60405180910390f35b610366600480360381019061036191906129b2565b610d66565b6040516103739190612a20565b60405180910390f35b61039660048036038101906103919190612aa7565b610d78565b005b6103b260048036038101906103ad9190612aa7565b610f08565b6040516103bf9190612ae3565b60405180910390f35b6103d0610fc2565b005b6103da610fd6565b6040516103e79190612a20565b60405180910390f35b6103f8611000565b604051610405919061295a565b60405180910390f35b61042860048036038101906104239190612d42565b611092565b005b610444600480360381019061043f9190612eb2565b6110a8565b005b610460600480360381019061045b91906129b2565b6110c5565b60405161046d919061295a565b60405180910390f35b610490600480360381019061048b9190612fd6565b6111a9565b005b6104ac60048036038101906104a79190613045565b6112ee565b6040516104b991906128af565b60405180910390f35b6104dc60048036038101906104d79190612aa7565b611382565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610551575061055082611408565b5b9050919050565b606060008054610567906130b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610593906130b4565b80156105e05780601f106105b5576101008083540402835291602001916105e0565b820191906000526020600020905b8154815290600101906020018083116105c357829003601f168201915b5050505050905090565b60006105f5826114ea565b506105ff82611572565b9050919050565b61061882826106136115af565b6115b7565b5050565b6106246115c9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361068a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661070d576040517fa98bbcfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f60405160405180910390a250565b6000600880549050905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361082a5760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016108219190612a20565b60405180910390fd5b600061083e83836108396115af565b611650565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108b4578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016108ab939291906130e5565b60405180910390fd5b50505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610993576040517f06d919f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83839050868690501415806109ae5750818190508484905014155b156109ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e590613168565b60405180910390fd5b60005b86869050811015610b7057600073ffffffffffffffffffffffffffffffffffffffff16878783818110610a2757610a26613188565b5b9050602002016020810190610a3c9190612aa7565b73ffffffffffffffffffffffffffffffffffffffff1603610a89576040517f89a4ea1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ad3878783818110610a9f57610a9e613188565b5b9050602002016020810190610ab49190612aa7565b868684818110610ac757610ac6613188565b5b90506020020135611714565b610b5d858583818110610ae957610ae8613188565b5b90506020020135848484818110610b0357610b02613188565b5b9050602002810190610b1591906131c6565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061180d565b8080610b6890613258565b9150506109f1565b50505050505050565b6000610b8483610f08565b8210610bc95782826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610bc09291906132a0565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610c3d838383604051806020016040528060008152506110a8565b505050565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610cc5576040517f06d919f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cce81611871565b600c60008281526020019081526020016000206000610ced919061279e565b50565b6000610cfa6107ab565b8210610d40576000826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610d379291906132a0565b60405180910390fd5b60088281548110610d5457610d53613188565b5b90600052602060002001549050919050565b6000610d71826114ea565b9050919050565b610d806115c9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610de6576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e6a576040517fdfcc368a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e33960405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f7b5760006040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610f729190612a20565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fca6115c9565b610fd460006118f7565b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461100f906130b4565b80601f016020809104026020016040519081016040528092919081815260200182805461103b906130b4565b80156110885780601f1061105d57610100808354040283529160200191611088565b820191906000526020600020905b81548152906001019060200180831161106b57829003601f168201915b5050505050905090565b6110a461109d6115af565b83836119bd565b5050565b6110b38484846107b8565b6110bf84848484611b2c565b50505050565b60606110d082611ce3565b611106576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c60008381526020019081526020016000208054611124906130b4565b80601f0160208091040260200160405190810160405280929190818152602001828054611150906130b4565b801561119d5780601f106111725761010080835404028352916020019161119d565b820191906000526020600020905b81548152906001019060200180831161118057829003601f168201915b50505050509050919050565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661122c576040517f06d919f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611292576040517f89a4ea1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061129d84610f08565b11156112d5576040517f6e6618df00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112df8383611714565b6112e9828261180d565b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61138a6115c9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113fc5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016113f39190612a20565b60405180910390fd5b611405816118f7565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806114d357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806114e357506114e282611d70565b5b9050919050565b6000806114f683611dda565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361156957826040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016115609190612ae3565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b6115c48383836001611e17565b505050565b6115d16115af565b73ffffffffffffffffffffffffffffffffffffffff166115ef610fd6565b73ffffffffffffffffffffffffffffffffffffffff161461164e576116126115af565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016116459190612a20565b60405180910390fd5b565b60008061165c84611dda565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156116c85750600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156116ff576040517ff05c5b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61170a858585611fdc565b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117865760006040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161177d9190612a20565b60405180910390fd5b600061179483836000611650565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146118085760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016117ff9190612a20565b60405180910390fd5b505050565b61181682611ce3565b61184c576040517f0bba7b4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600c6000848152602001908152602001600020908161186c9190613475565b505050565b60006118806000836000611650565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118f357816040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016118ea9190612ae3565b60405180910390fd5b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a2e57816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401611a259190612a20565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611b1f91906128af565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115611cdd578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02611b706115af565b8685856040518563ffffffff1660e01b8152600401611b92949392919061359c565b6020604051808303816000875af1925050508015611bce57506040513d601f19601f82011682018060405250810190611bcb91906135fd565b60015b611c52573d8060008114611bfe576040519150601f19603f3d011682016040523d82523d6000602084013e611c03565b606091505b506000815103611c4a57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611c419190612a20565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611cdb57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611cd29190612a20565b60405180910390fd5b505b50505050565b60003073ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401611d1e9190612ae3565b602060405180830381865afa925050508015611d5857506040513d601f19601f82011682018060405250810190611d55919061363f565b60015b611d655760009050611d6b565b50600190505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080611e505750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f84576000611e60846114ea565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ecb57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611ede5750611edc81846112ee565b155b15611f2057826040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401611f179190612a20565b60405180910390fd5b8115611f8257838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600080611fea8585856120f9565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361202e5761202984612313565b61206d565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461206c5761206b818561235c565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036120af576120aa846124bd565b6120ee565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146120ed576120ec858561258e565b5b5b809150509392505050565b60008061210584611dda565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461214757612146818486612619565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146121d857612189600085600080611e17565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461225b576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600061236783610f08565b905060006007600084815260200190815260200160002054905081811461244c576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506124d1919061366c565b905060006009600084815260200190815260200160002054905060006008838154811061250157612500613188565b5b90600052602060002001549050806008838154811061252357612522613188565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480612572576125716136a0565b5b6001900381819060005260206000200160009055905550505050565b6000600161259b84610f08565b6125a5919061366c565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6126248383836126dd565b6126d857600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361269957806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016126909190612ae3565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016126cf9291906132a0565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561279557508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612756575061275584846112ee565b5b8061279457508273ffffffffffffffffffffffffffffffffffffffff1661277c83611572565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5080546127aa906130b4565b6000825580601f106127bc57506127db565b601f0160209004906000526020600020908101906127da91906127de565b5b50565b5b808211156127f75760008160009055506001016127df565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6128448161280f565b811461284f57600080fd5b50565b6000813590506128618161283b565b92915050565b60006020828403121561287d5761287c612805565b5b600061288b84828501612852565b91505092915050565b60008115159050919050565b6128a981612894565b82525050565b60006020820190506128c460008301846128a0565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129045780820151818401526020810190506128e9565b60008484015250505050565b6000601f19601f8301169050919050565b600061292c826128ca565b61293681856128d5565b93506129468185602086016128e6565b61294f81612910565b840191505092915050565b600060208201905081810360008301526129748184612921565b905092915050565b6000819050919050565b61298f8161297c565b811461299a57600080fd5b50565b6000813590506129ac81612986565b92915050565b6000602082840312156129c8576129c7612805565b5b60006129d68482850161299d565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a0a826129df565b9050919050565b612a1a816129ff565b82525050565b6000602082019050612a356000830184612a11565b92915050565b612a44816129ff565b8114612a4f57600080fd5b50565b600081359050612a6181612a3b565b92915050565b60008060408385031215612a7e57612a7d612805565b5b6000612a8c85828601612a52565b9250506020612a9d8582860161299d565b9150509250929050565b600060208284031215612abd57612abc612805565b5b6000612acb84828501612a52565b91505092915050565b612add8161297c565b82525050565b6000602082019050612af86000830184612ad4565b92915050565b600080600060608486031215612b1757612b16612805565b5b6000612b2586828701612a52565b9350506020612b3686828701612a52565b9250506040612b478682870161299d565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112612b7657612b75612b51565b5b8235905067ffffffffffffffff811115612b9357612b92612b56565b5b602083019150836020820283011115612baf57612bae612b5b565b5b9250929050565b60008083601f840112612bcc57612bcb612b51565b5b8235905067ffffffffffffffff811115612be957612be8612b56565b5b602083019150836020820283011115612c0557612c04612b5b565b5b9250929050565b60008083601f840112612c2257612c21612b51565b5b8235905067ffffffffffffffff811115612c3f57612c3e612b56565b5b602083019150836020820283011115612c5b57612c5a612b5b565b5b9250929050565b60008060008060008060608789031215612c7f57612c7e612805565b5b600087013567ffffffffffffffff811115612c9d57612c9c61280a565b5b612ca989828a01612b60565b9650965050602087013567ffffffffffffffff811115612ccc57612ccb61280a565b5b612cd889828a01612bb6565b9450945050604087013567ffffffffffffffff811115612cfb57612cfa61280a565b5b612d0789828a01612c0c565b92509250509295509295509295565b612d1f81612894565b8114612d2a57600080fd5b50565b600081359050612d3c81612d16565b92915050565b60008060408385031215612d5957612d58612805565b5b6000612d6785828601612a52565b9250506020612d7885828601612d2d565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612dbf82612910565b810181811067ffffffffffffffff82111715612dde57612ddd612d87565b5b80604052505050565b6000612df16127fb565b9050612dfd8282612db6565b919050565b600067ffffffffffffffff821115612e1d57612e1c612d87565b5b612e2682612910565b9050602081019050919050565b82818337600083830152505050565b6000612e55612e5084612e02565b612de7565b905082815260208101848484011115612e7157612e70612d82565b5b612e7c848285612e33565b509392505050565b600082601f830112612e9957612e98612b51565b5b8135612ea9848260208601612e42565b91505092915050565b60008060008060808587031215612ecc57612ecb612805565b5b6000612eda87828801612a52565b9450506020612eeb87828801612a52565b9350506040612efc8782880161299d565b925050606085013567ffffffffffffffff811115612f1d57612f1c61280a565b5b612f2987828801612e84565b91505092959194509250565b600067ffffffffffffffff821115612f5057612f4f612d87565b5b612f5982612910565b9050602081019050919050565b6000612f79612f7484612f35565b612de7565b905082815260208101848484011115612f9557612f94612d82565b5b612fa0848285612e33565b509392505050565b600082601f830112612fbd57612fbc612b51565b5b8135612fcd848260208601612f66565b91505092915050565b600080600060608486031215612fef57612fee612805565b5b6000612ffd86828701612a52565b935050602061300e8682870161299d565b925050604084013567ffffffffffffffff81111561302f5761302e61280a565b5b61303b86828701612fa8565b9150509250925092565b6000806040838503121561305c5761305b612805565b5b600061306a85828601612a52565b925050602061307b85828601612a52565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806130cc57607f821691505b6020821081036130df576130de613085565b5b50919050565b60006060820190506130fa6000830186612a11565b6131076020830185612ad4565b6131146040830184612a11565b949350505050565b7f4d69736d61746368656420617272617973000000000000000000000000000000600082015250565b60006131526011836128d5565b915061315d8261311c565b602082019050919050565b6000602082019050818103600083015261318181613145565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126131e3576131e26131b7565b5b80840192508235915067ffffffffffffffff821115613205576132046131bc565b5b602083019250600182023603831315613221576132206131c1565b5b509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132638261297c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361329557613294613229565b5b600182019050919050565b60006040820190506132b56000830185612a11565b6132c26020830184612ad4565b9392505050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261332b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826132ee565b61333586836132ee565b95508019841693508086168417925050509392505050565b6000819050919050565b600061337261336d6133688461297c565b61334d565b61297c565b9050919050565b6000819050919050565b61338c83613357565b6133a061339882613379565b8484546132fb565b825550505050565b600090565b6133b56133a8565b6133c0818484613383565b505050565b5b818110156133e4576133d96000826133ad565b6001810190506133c6565b5050565b601f821115613429576133fa816132c9565b613403846132de565b81016020851015613412578190505b61342661341e856132de565b8301826133c5565b50505b505050565b600082821c905092915050565b600061344c6000198460080261342e565b1980831691505092915050565b6000613465838361343b565b9150826002028217905092915050565b61347e826128ca565b67ffffffffffffffff81111561349757613496612d87565b5b6134a182546130b4565b6134ac8282856133e8565b600060209050601f8311600181146134df57600084156134cd578287015190505b6134d78582613459565b86555061353f565b601f1984166134ed866132c9565b60005b82811015613515578489015182556001820191506020850194506020810190506134f0565b86831015613532578489015161352e601f89168261343b565b8355505b6001600288020188555050505b505050505050565b600081519050919050565b600082825260208201905092915050565b600061356e82613547565b6135788185613552565b93506135888185602086016128e6565b61359181612910565b840191505092915050565b60006080820190506135b16000830187612a11565b6135be6020830186612a11565b6135cb6040830185612ad4565b81810360608301526135dd8184613563565b905095945050505050565b6000815190506135f78161283b565b92915050565b60006020828403121561361357613612612805565b5b6000613621848285016135e8565b91505092915050565b60008151905061363981612a3b565b92915050565b60006020828403121561365557613654612805565b5b60006136638482850161362a565b91505092915050565b60006136778261297c565b91506136828361297c565b925082820390508181111561369a57613699613229565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220f4c19183473788fab1ef376230a571e40b378ccdb9117e756326ef498bea25c464736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000e5368696674426c617a657273494400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045342494400000000000000000000000000000000000000000000000000000000