aiia-vault-sdk 1.1.6 → 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -311,18 +311,6 @@ export declare class SeedRoundFundraiserSDK {
|
|
311
311
|
* @notice For ERC20 tokens, ensure you have approved the contract first
|
312
312
|
*/
|
313
313
|
buildContributeTx(roundId: number, token: string, amount: number): Promise<ethers.ContractTransaction>;
|
314
|
-
/**
|
315
|
-
* Builds a transaction to claim allocated tokens
|
316
|
-
*
|
317
|
-
* @returns Populated transaction for claiming tokens from all eligible rounds
|
318
|
-
*/
|
319
|
-
buildClaimTokensTx(): Promise<ethers.ContractTransaction>;
|
320
|
-
/**
|
321
|
-
* Builds a transaction to request a refund
|
322
|
-
*
|
323
|
-
* @returns Populated transaction for requesting refund from eligible rounds
|
324
|
-
*/
|
325
|
-
buildRefundTx(): Promise<ethers.ContractTransaction>;
|
326
314
|
/**
|
327
315
|
* Builds a transaction to withdraw accumulated funds
|
328
316
|
*
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";var t=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.SeedRoundFundraiserSDK=void 0;const e=require("ethers"),n=t(require("./abis/SeedRoundFundraiser.json")),o=t(require("./contracts.json")),r=require("./utils"),i=t(require("./whitelist-tokens.json"));exports.SeedRoundFundraiserSDK=class{constructor(t,i){this.name="SeedRoundFundraiser",this.isBootstrapped=!1,this.PRICE_PRECISION=1e18,this.whitelistedTokensArray=[],this.projectToken="",this.projectTokenDecimals=0,this.formatEventArgs=t=>{const{eventName:e,args:n}=t;switch(e){case"TokenWhitelisted":return{...t,args:{...n,token:n.token.toLowerCase(),price:Number(n.price)/this.PRICE_PRECISION}};case"TokenPriceUpdated":return{...t,args:{...n,token:n.token.toLowerCase(),oldPrice:Number(n.oldPrice)/this.PRICE_PRECISION,newPrice:Number(n.newPrice)/this.PRICE_PRECISION}};case"TokenRemovedFromWhitelist":return{...t,args:{...n,token:n.token.toLowerCase()}};case"RoundCreated":case"RoundUpdated":return{...t,args:{...n,roundId:Number(n.roundId),startTime:Number(n.startTime),endTime:Number(n.endTime),targetFund:Number(n.targetFund)/this.PRICE_PRECISION,totalAllocation:Number(n.totalAllocation),maxFundPerAccount:Number(n.maxFundPerAccount)/this.PRICE_PRECISION}};case"RoundEnded":return{...t,args:{...n,roundId:Number(n.roundId),raisedFunds:Number(n.raisedFunds)/this.PRICE_PRECISION,participants:Number(n.participants)}};case"Contribution":return{...t,args:{...n,roundId:Number(n.roundId),contributor:n.contributor.toLowerCase(),token:n.token.toLowerCase(),amount:Number(n.amount),fundAmount:Number(n.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(n.tokenAllocation)}};case"TokensClaimed":return{...t,args:{...n,roundId:Number(n.roundId),user:n.user.toLowerCase(),amount:Number(n.amount)}};case"ProjectTokenUpdated":return{...t,args:{...n,oldToken:n.oldToken.toLowerCase(),newToken:n.newToken.toLowerCase()}};case"ClaimingEnabledUpdated":case"RefundEnabledUpdated":return{...t,args:{...n,roundId:Number(n.roundId),enabled:n.enabled}};case"Refunded":return{...t,args:{...n,roundId:Number(n.roundId),user:n.user.toLowerCase(),token:n.token.toLowerCase(),amount:Number(n.amount)}};default:return t}};const a=Array.isArray(t)?t:[t];this.providers=a.map((t=>new e.ethers.JsonRpcProvider(t)));const s=(0,r.getRandomProvider)(this.providers);this.contractAddress=(0,r.resolveContractAddress)(a[0],this.name,o.default,i),this.contract=new e.ethers.Contract(this.contractAddress,n.default.abi,s),this.networkName=this.getNetworkNameFromRpc(a[0]),this.importWhitelistedTokens()}getNetworkNameFromRpc(t){const e=t.toLowerCase();return e.includes("sepolia.base")?"base-sepolia":e.includes("sepolia")?"sepolia":e.includes("mainnet")?"mainnet":e.includes("localhost")||e.includes("127.0.0.1")?"hardhat":"sepolia"}importWhitelistedTokens(){try{i.default[this.networkName]?(this.whitelistedTokensArray=i.default[this.networkName].map((t=>t.toLowerCase())),console.log(`Imported ${this.whitelistedTokensArray.length} whitelisted tokens for ${this.networkName} network`)):console.log(`No whitelisted tokens found for ${this.networkName} network`)}catch(t){console.error("Error importing whitelisted tokens:",t)}}async getWhitelistedTokenInfo(t){const n=t.toLowerCase();if(!this.whitelistedTokensArray.includes(n))return null;const o=await this.getWhitelistedToken(n);if(!o.isWhitelisted)return null;let i="ETH",a=18;n!==e.ethers.ZeroAddress&&([i,a]=await Promise.all([(0,r.getTokenSymbol)(n,this.getRandomProvider()),(0,r.getTokenDecimals)(n,this.getRandomProvider())]));const s=await this.getLatestRoundId();let d=0;if(s>=0){const t=await this.getRound(s);t.exists&&!t.ended&&(d=t.maxFundPerAccount/o.price)}return{address:n,isWhitelisted:o.isWhitelisted,price:o.price,symbol:i,maxContribution:d,maxContributionRaw:Math.floor(d*Math.pow(10,a)),decimals:a}}async getAllWhitelistedTokensInfo(){const t=[];for(const e of this.whitelistedTokensArray){const n=await this.getWhitelistedTokenInfo(e);n&&t.push(n)}return t}getRandomProvider(){return(0,r.getRandomProvider)(this.providers)}getContractWithRandomProvider(){return new e.ethers.Contract(this.contractAddress,n.default.abi,this.getRandomProvider())}async bootstrap(){if(this.isBootstrapped)return;const t=await Promise.all(this.providers.map(((t,e)=>(0,r.checkRpcHealth)(t,e))));if(this.providers=this.providers.filter(((e,n)=>t[n])),0===this.providers.length)throw new Error("No active RPC providers available");this.projectToken=await this.getProjectToken(),this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()),this.isBootstrapped=!0}async signAndSendTransaction(t,e,n={}){return(0,r.signAndSendTransaction)(t,e,(()=>this.getRandomProvider()),n,this.contract)}async buildAddWhitelistedTokenTx(t,e){const n=BigInt(Math.floor(e*this.PRICE_PRECISION));return await this.contract.addWhitelistedToken.populateTransaction(t,n)}async buildUpdateTokenPriceTx(t,e){const n=BigInt(Math.floor(e*this.PRICE_PRECISION));return await this.contract.updateTokenPrice.populateTransaction(t,n)}async buildRemoveWhitelistedTokenTx(t){return await this.contract.removeWhitelistedToken.populateTransaction(t)}async buildCreateRoundTx(t,e,n,o,i){const a=BigInt(Math.floor(n*this.PRICE_PRECISION)),s=BigInt(Math.floor(i*this.PRICE_PRECISION)),d=await(0,r.getTokenDecimals)(await this.getProjectToken(),this.getRandomProvider()),c=BigInt(Math.floor(o*Math.pow(10,d)));return await this.contract.createRound.populateTransaction(t,e,a,c,s)}async buildUpdateRoundTx(t,e,n,o,r,i){const a=BigInt(Math.floor(o*this.PRICE_PRECISION)),s=BigInt(Math.floor(i*this.PRICE_PRECISION));return await this.contract.updateRound.populateTransaction(t,e,n,a,r,s)}async buildEndRoundTx(t){return await this.contract.endRound.populateTransaction(t)}async buildSetClaimingEnabledTx(t,e){return await this.contract.setClaimingEnabled.populateTransaction(t,e)}async buildSetRefundEnabledTx(t,e){return await this.contract.setRefundEnabled.populateTransaction(t,e)}async buildContributeTx(t,n,o){let i=18;n!==e.ethers.ZeroAddress&&(i=await(0,r.getTokenDecimals)(n,this.getRandomProvider()));const a=e.ethers.parseUnits(o.toString(),i),s=await this.contract.contribute.populateTransaction(t,n,n===e.ethers.ZeroAddress?0:a);return n===e.ethers.ZeroAddress&&(s.value=a),s}async buildClaimTokensTx(){return await this.contract.claimTokens.populateTransaction()}async buildRefundTx(){return await this.contract.refund.populateTransaction()}async buildWithdrawFundsTx(t,e){const n=await(0,r.getTokenDecimals)(t,this.getRandomProvider()),o=BigInt(Math.floor(e*Math.pow(10,n)));return await this.contract.withdrawFunds.populateTransaction(t,o)}async buildClaimTokensByRoundIdTx(t){return await this.contract.claimTokensByRoundId.populateTransaction(t)}async getWhitelistedToken(t){const e=await this.contract.whitelistedTokens(t);return{isWhitelisted:e.isWhitelisted,price:Number(e.price)/this.PRICE_PRECISION}}async getRound(t){const e=await this.contract.rounds(t);return this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider())),{startTime:Number(e.startTime),endTime:Number(e.endTime),targetFund:Number(e.targetFund)/this.PRICE_PRECISION,totalAllocation:Number(e.totalAllocation)/10**this.projectTokenDecimals,maxFundPerAccount:Number(e.maxFundPerAccount)/this.PRICE_PRECISION,exists:e.exists,ended:e.ended,claimingEnabled:e.claimingEnabled,refundEnabled:e.refundEnabled}}async getUserContribution(t,n){this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()));const o=await this.contract.userContributions(t,n);let i=18;return o.contributedToken!==e.ethers.ZeroAddress&&"0x0000000000000000000000000000000000000000"!==o.contributedToken&&(i=await(0,r.getTokenDecimals)(o.contributedToken,this.getRandomProvider())),{fundAmount:Number(o.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(o.tokenAllocation)/10**this.projectTokenDecimals,claimed:o.claimed,refunded:o.refunded,contributedToken:o.contributedToken,contributedAmount:Number(o.contributedAmount)/10**i}}async getRoundRaisedFunds(t){const e=await this.contract.roundRaisedFunds(t);return Number(e)/this.PRICE_PRECISION}async getRoundParticipants(t){const e=await this.contract.roundParticipants(t);return Number(e)}async getUserParticipatedRound(t){const e=await this.contract.userParticipatedRound(t);return Number(e)}async getProjectToken(){return await this.contract.projectToken()}async getTotalRounds(){const t=await this.contract.totalRounds();return Number(t)}async getTotalRaisedFunds(){const t=await this.contract.totalRaisedFunds();return Number(t)/this.PRICE_PRECISION}async isRoundActive(t){return await this.contract.isRoundActive(t)}async getLatestRoundId(){const t=await this.getTotalRounds();return 0===t?-1:t-1}async getRoundInfo(t){const e=await this.getTotalRounds();if(t<0||t>=e)throw new Error(`Invalid round ID: ${t}`);return{roundId:t,config:await this.getRound(t),raisedFunds:await this.getRoundRaisedFunds(t),participants:await this.getRoundParticipants(t),isActive:await this.isRoundActive(t)}}async getUserTotalContribution(t){const e=await this.contract.getUserTotalContribution(t);return{totalFundAmount:Number(e.totalFundAmount)/this.PRICE_PRECISION,totalTokenAllocation:Number(e.totalTokenAllocation)}}async getTransactionStatus(t,e=10){return await(0,r.getTransactionStatus)(this.getRandomProvider(),t,e)}getContractAddress(){return this.contractAddress}async getAllEvents(t,e){return await this.bootstrap(),(0,r.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),t,e)}async streamEvents(t,e,n,o=1e3,i=5e3){return await this.bootstrap(),(0,r.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,e)=>this.getAllEvents(t,e),formatEvent:t=>this.formatEventArgs(t),onEvent:e,saveLatestBlock:n,fromBlock:t,batchSize:o,sleepTime:i})}async getUserRoundContribution(t,n){const[o,i]=await Promise.all([this.contract.getUserRoundContribution(t,n),this.contract.rounds(t)]),a={fundAmount:Number(o.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(o.tokenAllocation),claimed:o.claimed,refunded:o.refunded,contributedToken:o.contributedToken,contributedAmount:Number(o.contributedAmount)},s=Math.floor(Date.now()/1e3),d=i.exists&&!i.ended&&s>=Number(i.startTime)&&s<=Number(i.endTime),c={contribution:a,roundInfo:{exists:i.exists,isActive:d,claimingEnabled:i.claimingEnabled,refundEnabled:i.refundEnabled}};if(a.fundAmount>0){const t=a.contributedToken;let n="ETH",o=18;return t!==e.ethers.ZeroAddress&&([n,o]=await Promise.all([(0,r.getTokenSymbol)(t,this.getRandomProvider()),(0,r.getTokenDecimals)(t,this.getRandomProvider())])),{...c,tokenInfo:{symbol:n,decimals:o}}}return c}};
|
1
|
+
"use strict";var t=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.SeedRoundFundraiserSDK=void 0;const e=require("ethers"),n=t(require("./abis/SeedRoundFundraiser.json")),o=t(require("./contracts.json")),r=require("./utils"),i=t(require("./whitelist-tokens.json"));exports.SeedRoundFundraiserSDK=class{constructor(t,i){this.name="SeedRoundFundraiser",this.isBootstrapped=!1,this.PRICE_PRECISION=1e18,this.whitelistedTokensArray=[],this.projectToken="",this.projectTokenDecimals=0,this.formatEventArgs=t=>{const{eventName:e,args:n}=t;switch(e){case"TokenWhitelisted":return{...t,args:{...n,token:n.token.toLowerCase(),price:Number(n.price)/this.PRICE_PRECISION}};case"TokenPriceUpdated":return{...t,args:{...n,token:n.token.toLowerCase(),oldPrice:Number(n.oldPrice)/this.PRICE_PRECISION,newPrice:Number(n.newPrice)/this.PRICE_PRECISION}};case"TokenRemovedFromWhitelist":return{...t,args:{...n,token:n.token.toLowerCase()}};case"RoundCreated":case"RoundUpdated":return{...t,args:{...n,roundId:Number(n.roundId),startTime:Number(n.startTime),endTime:Number(n.endTime),targetFund:Number(n.targetFund)/this.PRICE_PRECISION,totalAllocation:Number(n.totalAllocation),maxFundPerAccount:Number(n.maxFundPerAccount)/this.PRICE_PRECISION}};case"RoundEnded":return{...t,args:{...n,roundId:Number(n.roundId),raisedFunds:Number(n.raisedFunds)/this.PRICE_PRECISION,participants:Number(n.participants)}};case"Contribution":return{...t,args:{...n,roundId:Number(n.roundId),contributor:n.contributor.toLowerCase(),token:n.token.toLowerCase(),amount:Number(n.amount),fundAmount:Number(n.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(n.tokenAllocation)}};case"TokensClaimed":return{...t,args:{...n,roundId:Number(n.roundId),user:n.user.toLowerCase(),amount:Number(n.amount)}};case"ProjectTokenUpdated":return{...t,args:{...n,oldToken:n.oldToken.toLowerCase(),newToken:n.newToken.toLowerCase()}};case"ClaimingEnabledUpdated":case"RefundEnabledUpdated":return{...t,args:{...n,roundId:Number(n.roundId),enabled:n.enabled}};case"Refunded":return{...t,args:{...n,roundId:Number(n.roundId),user:n.user.toLowerCase(),token:n.token.toLowerCase(),amount:Number(n.amount)}};default:return t}};const s=Array.isArray(t)?t:[t];this.providers=s.map((t=>new e.ethers.JsonRpcProvider(t)));const a=(0,r.getRandomProvider)(this.providers);this.contractAddress=(0,r.resolveContractAddress)(s[0],this.name,o.default,i),this.contract=new e.ethers.Contract(this.contractAddress,n.default.abi,a),this.networkName=this.getNetworkNameFromRpc(s[0]),this.importWhitelistedTokens()}getNetworkNameFromRpc(t){const e=t.toLowerCase();return e.includes("sepolia.base")?"base-sepolia":e.includes("sepolia")?"sepolia":e.includes("mainnet")?"mainnet":e.includes("localhost")||e.includes("127.0.0.1")?"hardhat":"sepolia"}importWhitelistedTokens(){try{i.default[this.networkName]?(this.whitelistedTokensArray=i.default[this.networkName].map((t=>t.toLowerCase())),console.log(`Imported ${this.whitelistedTokensArray.length} whitelisted tokens for ${this.networkName} network`)):console.log(`No whitelisted tokens found for ${this.networkName} network`)}catch(t){console.error("Error importing whitelisted tokens:",t)}}async getWhitelistedTokenInfo(t){const n=t.toLowerCase();if(!this.whitelistedTokensArray.includes(n))return null;const o=await this.getWhitelistedToken(n);if(!o.isWhitelisted)return null;let i="ETH",s=18;n!==e.ethers.ZeroAddress&&([i,s]=await Promise.all([(0,r.getTokenSymbol)(n,this.getRandomProvider()),(0,r.getTokenDecimals)(n,this.getRandomProvider())]));const a=await this.getLatestRoundId();let d=0;if(a>=0){const t=await this.getRound(a);t.exists&&!t.ended&&(d=t.maxFundPerAccount/o.price)}return{address:n,isWhitelisted:o.isWhitelisted,price:o.price,symbol:i,maxContribution:d,maxContributionRaw:Math.floor(d*Math.pow(10,s)),decimals:s}}async getAllWhitelistedTokensInfo(){const t=[];for(const e of this.whitelistedTokensArray){const n=await this.getWhitelistedTokenInfo(e);n&&t.push(n)}return t}getRandomProvider(){return(0,r.getRandomProvider)(this.providers)}getContractWithRandomProvider(){return new e.ethers.Contract(this.contractAddress,n.default.abi,this.getRandomProvider())}async bootstrap(){if(this.isBootstrapped)return;const t=await Promise.all(this.providers.map(((t,e)=>(0,r.checkRpcHealth)(t,e))));if(this.providers=this.providers.filter(((e,n)=>t[n])),0===this.providers.length)throw new Error("No active RPC providers available");this.projectToken=await this.getProjectToken(),this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()),this.isBootstrapped=!0}async signAndSendTransaction(t,e,n={}){return(0,r.signAndSendTransaction)(t,e,(()=>this.getRandomProvider()),n,this.contract)}async buildAddWhitelistedTokenTx(t,e){const n=BigInt(Math.floor(e*this.PRICE_PRECISION));return await this.contract.addWhitelistedToken.populateTransaction(t,n)}async buildUpdateTokenPriceTx(t,e){const n=BigInt(Math.floor(e*this.PRICE_PRECISION));return await this.contract.updateTokenPrice.populateTransaction(t,n)}async buildRemoveWhitelistedTokenTx(t){return await this.contract.removeWhitelistedToken.populateTransaction(t)}async buildCreateRoundTx(t,e,n,o,i){const s=BigInt(Math.floor(n*this.PRICE_PRECISION)),a=BigInt(Math.floor(i*this.PRICE_PRECISION)),d=await(0,r.getTokenDecimals)(await this.getProjectToken(),this.getRandomProvider()),c=BigInt(Math.floor(o*Math.pow(10,d)));return await this.contract.createRound.populateTransaction(t,e,s,c,a)}async buildUpdateRoundTx(t,e,n,o,r,i){const s=BigInt(Math.floor(o*this.PRICE_PRECISION)),a=BigInt(Math.floor(i*this.PRICE_PRECISION));return await this.contract.updateRound.populateTransaction(t,e,n,s,r,a)}async buildEndRoundTx(t){return await this.contract.endRound.populateTransaction(t)}async buildSetClaimingEnabledTx(t,e){return await this.contract.setClaimingEnabled.populateTransaction(t,e)}async buildSetRefundEnabledTx(t,e){return await this.contract.setRefundEnabled.populateTransaction(t,e)}async buildContributeTx(t,n,o){let i=18;n!==e.ethers.ZeroAddress&&(i=await(0,r.getTokenDecimals)(n,this.getRandomProvider()));const s=e.ethers.parseUnits(o.toString(),i),a=await this.contract.contribute.populateTransaction(t,n,n===e.ethers.ZeroAddress?0:s);return n===e.ethers.ZeroAddress&&(a.value=s),a}async buildWithdrawFundsTx(t,e){const n=await(0,r.getTokenDecimals)(t,this.getRandomProvider()),o=BigInt(Math.floor(e*Math.pow(10,n)));return await this.contract.withdrawFunds.populateTransaction(t,o)}async buildClaimTokensByRoundIdTx(t){return await this.contract.claimTokensByRoundId.populateTransaction(t)}async getWhitelistedToken(t){const e=await this.contract.whitelistedTokens(t);return{isWhitelisted:e.isWhitelisted,price:Number(e.price)/this.PRICE_PRECISION}}async getRound(t){const e=await this.contract.rounds(t);return this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider())),{startTime:Number(e.startTime),endTime:Number(e.endTime),targetFund:Number(e.targetFund)/this.PRICE_PRECISION,totalAllocation:Number(e.totalAllocation)/10**this.projectTokenDecimals,maxFundPerAccount:Number(e.maxFundPerAccount)/this.PRICE_PRECISION,exists:e.exists,ended:e.ended,claimingEnabled:e.claimingEnabled,refundEnabled:e.refundEnabled}}async getUserContribution(t,n){this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()));const o=await this.contract.userContributions(t,n);let i=18;return o.contributedToken!==e.ethers.ZeroAddress&&"0x0000000000000000000000000000000000000000"!==o.contributedToken&&(i=await(0,r.getTokenDecimals)(o.contributedToken,this.getRandomProvider())),{fundAmount:Number(o.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(o.tokenAllocation)/10**this.projectTokenDecimals,claimed:o.claimed,refunded:o.refunded,contributedToken:o.contributedToken,contributedAmount:Number(o.contributedAmount)/10**i}}async getRoundRaisedFunds(t){const e=await this.contract.roundRaisedFunds(t);return Number(e)/this.PRICE_PRECISION}async getRoundParticipants(t){const e=await this.contract.roundParticipants(t);return Number(e)}async getUserParticipatedRound(t){const e=await this.contract.userParticipatedRound(t);return Number(e)}async getProjectToken(){return await this.contract.projectToken()}async getTotalRounds(){const t=await this.contract.totalRounds();return Number(t)}async getTotalRaisedFunds(){const t=await this.contract.totalRaisedFunds();return Number(t)/this.PRICE_PRECISION}async isRoundActive(t){return await this.contract.isRoundActive(t)}async getLatestRoundId(){const t=await this.getTotalRounds();return 0===t?-1:t-1}async getRoundInfo(t){const e=await this.getTotalRounds();if(t<0||t>=e)throw new Error(`Invalid round ID: ${t}`);return{roundId:t,config:await this.getRound(t),raisedFunds:await this.getRoundRaisedFunds(t),participants:await this.getRoundParticipants(t),isActive:await this.isRoundActive(t)}}async getUserTotalContribution(t){const e=await this.contract.getUserTotalContribution(t);return{totalFundAmount:Number(e.totalFundAmount)/this.PRICE_PRECISION,totalTokenAllocation:Number(e.totalTokenAllocation)}}async getTransactionStatus(t,e=10){return await(0,r.getTransactionStatus)(this.getRandomProvider(),t,e)}getContractAddress(){return this.contractAddress}async getAllEvents(t,e){return await this.bootstrap(),(0,r.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),t,e)}async streamEvents(t,e,n,o=1e3,i=5e3){return await this.bootstrap(),(0,r.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,e)=>this.getAllEvents(t,e),formatEvent:t=>this.formatEventArgs(t),onEvent:e,saveLatestBlock:n,fromBlock:t,batchSize:o,sleepTime:i})}async getUserRoundContribution(t,n){const[o,i]=await Promise.all([this.contract.getUserRoundContribution(t,n),this.contract.rounds(t)]),s={fundAmount:Number(o.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(o.tokenAllocation),claimed:o.claimed,refunded:o.refunded,contributedToken:o.contributedToken,contributedAmount:Number(o.contributedAmount)},a=Math.floor(Date.now()/1e3),d=i.exists&&!i.ended&&a>=Number(i.startTime)&&a<=Number(i.endTime),c={contribution:s,roundInfo:{exists:i.exists,isActive:d,claimingEnabled:i.claimingEnabled,refundEnabled:i.refundEnabled}};if(s.fundAmount>0){const t=s.contributedToken;let n="ETH",o=18;return t!==e.ethers.ZeroAddress&&([n,o]=await Promise.all([(0,r.getTokenSymbol)(t,this.getRandomProvider()),(0,r.getTokenDecimals)(t,this.getRandomProvider())])),{...c,tokenInfo:{symbol:n,decimals:o}}}return c}};
|
@@ -707,6 +707,19 @@
|
|
707
707
|
"stateMutability": "view",
|
708
708
|
"type": "function"
|
709
709
|
},
|
710
|
+
{
|
711
|
+
"inputs": [],
|
712
|
+
"name": "TREASURER_ROLE",
|
713
|
+
"outputs": [
|
714
|
+
{
|
715
|
+
"internalType": "bytes32",
|
716
|
+
"name": "",
|
717
|
+
"type": "bytes32"
|
718
|
+
}
|
719
|
+
],
|
720
|
+
"stateMutability": "view",
|
721
|
+
"type": "function"
|
722
|
+
},
|
710
723
|
{
|
711
724
|
"inputs": [
|
712
725
|
{
|
@@ -725,13 +738,6 @@
|
|
725
738
|
"stateMutability": "nonpayable",
|
726
739
|
"type": "function"
|
727
740
|
},
|
728
|
-
{
|
729
|
-
"inputs": [],
|
730
|
-
"name": "claimTokens",
|
731
|
-
"outputs": [],
|
732
|
-
"stateMutability": "nonpayable",
|
733
|
-
"type": "function"
|
734
|
-
},
|
735
741
|
{
|
736
742
|
"inputs": [
|
737
743
|
{
|
@@ -969,6 +975,19 @@
|
|
969
975
|
"stateMutability": "nonpayable",
|
970
976
|
"type": "function"
|
971
977
|
},
|
978
|
+
{
|
979
|
+
"inputs": [
|
980
|
+
{
|
981
|
+
"internalType": "address",
|
982
|
+
"name": "treasurer",
|
983
|
+
"type": "address"
|
984
|
+
}
|
985
|
+
],
|
986
|
+
"name": "grantTreasurerRole",
|
987
|
+
"outputs": [],
|
988
|
+
"stateMutability": "nonpayable",
|
989
|
+
"type": "function"
|
990
|
+
},
|
972
991
|
{
|
973
992
|
"inputs": [
|
974
993
|
{
|
@@ -1052,7 +1071,18 @@
|
|
1052
1071
|
"type": "function"
|
1053
1072
|
},
|
1054
1073
|
{
|
1055
|
-
"inputs": [
|
1074
|
+
"inputs": [
|
1075
|
+
{
|
1076
|
+
"internalType": "uint256",
|
1077
|
+
"name": "_roundId",
|
1078
|
+
"type": "uint256"
|
1079
|
+
},
|
1080
|
+
{
|
1081
|
+
"internalType": "address",
|
1082
|
+
"name": "_user",
|
1083
|
+
"type": "address"
|
1084
|
+
}
|
1085
|
+
],
|
1056
1086
|
"name": "refund",
|
1057
1087
|
"outputs": [],
|
1058
1088
|
"stateMutability": "nonpayable",
|
@@ -1512,8 +1542,8 @@
|
|
1512
1542
|
"type": "receive"
|
1513
1543
|
}
|
1514
1544
|
],
|
1515
|
-
"bytecode": "0x608060405234801561001057600080fd5b5061001f61002460201b60201c565b61018e565b600061003461012860201b60201c565b90508060000160089054906101000a900460ff161561007f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff80168160000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16146101255767ffffffffffffffff8160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff60405161011c9190610173565b60405180910390a15b50565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b600067ffffffffffffffff82169050919050565b61016d81610150565b82525050565b60006020820190506101886000830184610164565b92915050565b614b5e8061019d6000396000f3fe60806040526004361061026b5760003560e01c806395082d2511610144578063d4bcdfa1116100b6578063eb4c9e9b1161007a578063eb4c9e9b14610929578063ed54890d14610966578063efe9c9e2146109a8578063f0e1bb3e146109d1578063f2fde38b14610a0e578063f5b541a614610a375761026c565b8063d4bcdfa114610832578063d4ee651b1461085b578063d547741f14610884578063d871b0e3146108ad578063daf9c210146108eb5761026c565b8063a217fddf11610108578063a217fddf14610738578063a6be83dd14610763578063a734f06e1461078c578063c1075329146107b7578063c4428a89146107e0578063c4d66de8146108095761026c565b806395082d251461063f57806397ac4a251461066a5780639bb92c4e146106a75780639da64ac2146106d0578063a09686c41461070d5761026c565b80635a1e6ca1116101dd5780638952ac1e116101a15780638952ac1e146105215780638a5682991461053d5780638c65c81f146105685780638d52e555146105ae5780638da5cb5b146105d757806391d14854146106025761026c565b80635a1e6ca1146104525780635af6df4c1461047b5780636fed6940146104a4578063715018a6146104e15780637cf30c60146104f85761026c565b80632f2ff15d1161022f5780632f2ff15d1461037c57806336568abe146103a557806342683c67146103ce57806348c54b9d146103f95780634b60ce7714610410578063590e1ae31461043b5761026c565b806301ffc9a71461026e5780631c88705d146102ab578063248a9ca3146102d457806327ac0c581461031157806328f3e6581461033a5761026c565b5b005b34801561027a57600080fd5b506102956004803603810190610290919061414e565b610a62565b6040516102a29190614196565b60405180910390f35b3480156102b757600080fd5b506102d260048036038101906102cd919061420f565b610a74565b005b3480156102e057600080fd5b506102fb60048036038101906102f69190614272565b610bc4565b60405161030891906142ae565b60405180910390f35b34801561031d57600080fd5b506103386004803603810190610333919061420f565b610bf2565b005b34801561034657600080fd5b50610361600480360381019061035c91906142ff565b610c2e565b6040516103739695949392919061435d565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e91906143be565b610cfa565b005b3480156103b157600080fd5b506103cc60048036038101906103c791906143be565b610d1c565b005b3480156103da57600080fd5b506103e3610d97565b6040516103f091906143fe565b60405180910390f35b34801561040557600080fd5b5061040e610d9d565b005b34801561041c57600080fd5b50610425610e3a565b6040516104329190614419565b60405180910390f35b34801561044757600080fd5b50610450610e60565b005b34801561045e57600080fd5b5061047960048036038101906104749190614434565b611493565b005b34801561048757600080fd5b506104a2600480360381019061049d9190614461565b6115e1565b005b3480156104b057600080fd5b506104cb60048036038101906104c69190614434565b6118bb565b6040516104d891906143fe565b60405180910390f35b3480156104ed57600080fd5b506104f66118d3565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614508565b6118e7565b005b61053b60048036038101906105369190614548565b6119d6565b005b34801561054957600080fd5b5061055261220b565b60405161055f91906143fe565b60405180910390f35b34801561057457600080fd5b5061058f600480360381019061058a9190614434565b612211565b6040516105a59a9998979695949392919061459b565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d09190614508565b6122a6565b005b3480156105e357600080fd5b506105ec612395565b6040516105f99190614419565b60405180910390f35b34801561060e57600080fd5b50610629600480360381019061062491906143be565b6123cd565b6040516106369190614196565b60405180910390f35b34801561064b57600080fd5b50610654612446565b60405161066191906143fe565b60405180910390f35b34801561067657600080fd5b50610691600480360381019061068c9190614434565b612452565b60405161069e9190614196565b60405180910390f35b3480156106b357600080fd5b506106ce60048036038101906106c99190614508565b612548565b005b3480156106dc57600080fd5b506106f760048036038101906106f2919061420f565b612637565b60405161070491906143fe565b60405180910390f35b34801561071957600080fd5b506107226126a4565b60405161072f91906143fe565b60405180910390f35b34801561074457600080fd5b5061074d6126ae565b60405161075a91906142ae565b60405180910390f35b34801561076f57600080fd5b5061078a60048036038101906107859190614637565b6126b5565b005b34801561079857600080fd5b506107a16129bc565b6040516107ae9190614419565b60405180910390f35b3480156107c357600080fd5b506107de60048036038101906107d991906146c4565b6129c1565b005b3480156107ec57600080fd5b5061080760048036038101906108029190614434565b612c92565b005b34801561081557600080fd5b50610830600480360381019061082b919061420f565b612c9f565b005b34801561083e57600080fd5b50610859600480360381019061085491906146c4565b612f16565b005b34801561086757600080fd5b50610882600480360381019061087d91906146c4565b6130f0565b005b34801561089057600080fd5b506108ab60048036038101906108a691906143be565b6132bb565b005b3480156108b957600080fd5b506108d460048036038101906108cf919061420f565b6132dd565b6040516108e2929190614704565b60405180910390f35b3480156108f757600080fd5b50610912600480360381019061090d919061420f565b613379565b60405161092092919061472d565b60405180910390f35b34801561093557600080fd5b50610950600480360381019061094b919061420f565b6133aa565b60405161095d91906143fe565b60405180910390f35b34801561097257600080fd5b5061098d600480360381019061098891906142ff565b6133c2565b60405161099f9695949392919061435d565b60405180910390f35b3480156109b457600080fd5b506109cf60048036038101906109ca919061420f565b613445565b005b3480156109dd57600080fd5b506109f860048036038101906109f39190614434565b613579565b604051610a0591906143fe565b60405180910390f35b348015610a1a57600080fd5b50610a356004803603810190610a30919061420f565b613591565b005b348015610a4357600080fd5b50610a4c613617565b604051610a5991906142ae565b60405180910390f35b6000610a6d8261363b565b9050919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610a9e816136b5565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16610b23576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fdd2e6d9f52cbe8f695939d018b7d4a216dc613a669876163ac548b916489d91760405160405180910390a25050565b600080610bcf6136c9565b905080600001600084815260200190815260200160002060010154915050919050565b6000801b610bff816136b5565b610c297f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929836136f1565b505050565b6000806000806000806000600260008a815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806000015481600101548260020160009054906101000a900460ff168360020160019054906101000a900460ff168460020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560030154965096509650965096509650509295509295509295565b610d0382610bc4565b610d0c816136b5565b610d1683836136f1565b50505050565b610d246137f2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d88576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d9282826137fa565b505050565b60085481565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008103610e1b576040517f55842fea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600182610e2a9190614785565b9050610e3681336138fc565b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008103610ede576040517f55842fea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600182610eed9190614785565b90506001600082815260200190815260200160002060050160009054906101000a900460ff16610f49576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600082815260200190815260200160002060050160039054906101000a900460ff16610fa3576040517f089c998700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015403611035576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160009054906101000a900460ff161561107e576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160019054906101000a900460ff16156110c7576040517fa85e6f1a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600082600301549050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361116c5747811115611167576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611226565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111a79190614419565b602060405180830381865afa1580156111c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e891906147ce565b905080821115611224576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b60018360020160016101000a81548160ff021916908315150217905550826000015460036000868152602001908152602001600020600082825461126a9190614785565b925050819055508260000154600860008282546112879190614785565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361136b5760003373ffffffffffffffffffffffffffffffffffffffff16826040516112e89061482c565b60006040518083038185875af1925050503d8060008114611325576040519150601f19603f3d011682016040523d82523d6000602084013e61132a565b606091505b5050905080611365576040517f6d963f8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50611426565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016113a8929190614841565b6020604051808303816000875af11580156113c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113eb919061487f565b905080611424576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16857f1c26abe6289671e3a9d493647349673af828abb9dbadff1e81762387f7cd99a38460405161148491906143fe565b60405180910390a45050505050565b61149b613d84565b6001600082815260200190815260200160002060050160009054906101000a900460ff166114f5576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600082815260200190815260200160002060050160019054906101000a900460ff1615611550576040517f0f5eeea600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180600083815260200190815260200160002060050160016101000a81548160ff021916908315150217905550807fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad57600360008481526020019081526020016000205460046000858152602001908152602001600020546040516115d6929190614704565b60405180910390a250565b6115e9613d84565b42851015611623576040517fb290253c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84841161165c576040517f38af65f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008303611696576040517fe2494de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082036116d0576040517f0baf743200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008114806116de57508281115b15611715576040517f90e3cae900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060075490506040518061014001604052808781526020018681526020018581526020018481526020018381526020016001151581526020016000151581526020016000151581526020016000151581526020016001151581525060016000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e08201518160050160026101000a81548160ff0219169083151502179055506101008201518160050160036101000a81548160ff0219169083151502179055506101208201518160050160046101000a81548160ff0219169083151502179055509050506007600081548092919061186e906148ac565b9190505550807f21fb045299ceafb7a136c74ee07b22d481ee9bf37a85b2d8f20c59f83ada413387878787876040516118ab9594939291906148f4565b60405180910390a2505050505050565b60046020528060005260406000206000915090505481565b6118db613d84565b6118e56000613e0b565b565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929611911816136b5565b6001600084815260200190815260200160002060050160009054906101000a900460ff1661196b576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160036101000a81548160ff021916908315150217905550827f653b56ea3ea7dfba44234dbc807bac97a2a0adafb6d22427d818250375f1e911836040516119c99190614196565b60405180910390a2505050565b6119df83612452565b611a15576040517f3df07da500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611a9a576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b115760003403611b09576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b349050611b4f565b60008203611b4b576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8190505b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114158015611bb05750600185611bac9190614947565b8114155b15611c10576001600086815260200190815260200160002060050160049054906101000a900460ff16611c0f576040517f827a86b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506000670de0b6b3a76400008285611c6d919061497b565b611c7791906149ec565b905060006002600089815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000828260000154611cdf9190614947565b9050600160008a815260200190815260200160002060040154811115611d31576040517f1cd861cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600360008c815260200190815260200160002054611d529190614947565b9050600160008b815260200190815260200160002060020154811115611da4576040517f397bb34300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614611e955760008973ffffffffffffffffffffffffffffffffffffffff166323b872dd33308b6040518463ffffffff1660e01b8152600401611e1793929190614a1d565b6020604051808303816000875af1158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a919061487f565b905080611e93576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b6000600160008c815260200190815260200160002060020154600160008d81526020019081526020016000206003015486611ed0919061497b565b611eda91906149ec565b90506000846000015403611fb257600460008c81526020019081526020016000206000815480929190611f0c906148ac565b919050555060018b611f1e9190614947565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550898460020160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087846003018190555061205c565b8973ffffffffffffffffffffffffffffffffffffffff168460020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612029578784600301600082825461201d9190614947565b9250508190555061205b565b6040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b848460000160008282546120709190614947565b925050819055508084600101600082825461208b9190614947565b9250508190555084600360008d815260200190815260200160002060008282546120b59190614947565b9250508190555084600860008282546120ce9190614947565b92505081905550600160008c815260200190815260200160002060020154600360008d815260200190815260200160002054106121945760018060008d815260200190815260200160002060050160016101000a81548160ff0219169083151502179055508a7fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad57600360008e815260200190815260200160002054600460008f81526020019081526020016000205460405161218b929190614704565b60405180910390a25b8973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168c7fb479ec976a9860505652c0d9f5dc15bc5fbca1a55c3da9cabe662f1b6f8090d28b89866040516121f693929190614a54565b60405180910390a45050505050505050505050565b60075481565b60016020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050160009054906101000a900460ff16908060050160019054906101000a900460ff16908060050160029054906101000a900460ff16908060050160039054906101000a900460ff16908060050160049054906101000a900460ff1690508a565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296122d0816136b5565b6001600084815260200190815260200160002060050160009054906101000a900460ff1661232a576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160046101000a81548160ff021916908315150217905550827f1c1c03453d1eefaa85a62e371adba496bc16fa6320bf5416b0af1249081ca84c836040516123889190614196565b60405180910390a2505050565b6000806123a0613ee2565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b6000806123d86136c9565b905080600001600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b670de0b6b3a764000081565b60006001600083815260200190815260200160002060050160009054906101000a900460ff166124855760009050612543565b6001600083815260200190815260200160002060050160019054906101000a900460ff16156124b75760009050612543565b60016000838152602001908152602001600020600001544210156124de5760009050612543565b60016000838152602001908152602001600020600101544211156125055760009050612543565b600160008381526020019081526020016000206002015460036000848152602001908152602001600020541061253e5760009050612543565b600190505b919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929612572816136b5565b6001600084815260200190815260200160002060050160009054906101000a900460ff166125cc576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160026101000a81548160ff021916908315150217905550827f74c19978ee48fa394fffde7cccc94793539daf917f2a8fd2d5e851409de3f7a08360405161262a9190614196565b60405180910390a2505050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000810361268e57600091505061269f565b60018161269b9190614785565b9150505b919050565b6000600754905090565b6000801b81565b6126bd613d84565b6001600087815260200190815260200160002060050160009054906101000a900460ff16612717576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600087815260200190815260200160002060050160019054906101000a900460ff1615612772576040517f0f5eeea600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160008781526020019081526020016000206000015442106127c1576040517f4eb5402b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428510156127fb576040517fb290253c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b848411612834576040517f38af65f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000830361286e576040517fe2494de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082036128a8576040517f0baf743200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008114806128b657508281115b156128ed576040517f90e3cae900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600088815260200190815260200160002060000181905550836001600088815260200190815260200160002060010181905550826001600088815260200190815260200160002060020181905550816001600088815260200190815260200160002060030181905550806001600088815260200190815260200160002060040181905550857fe35865500052be0ea409d44d56e7f66a0e0728bab40a71f941ccd691b915959686868686866040516129ac9594939291906148f4565b60405180910390a2505050505050565b600081565b6129c9613d84565b60008103612a03576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b1a5747811115612a71576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1682604051612a979061482c565b60006040518083038185875af1925050503d8060008114612ad4576040519150601f19603f3d011682016040523d82523d6000602084013e612ad9565b606091505b5050905080612b14576040517f6d963f8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50612c8e565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b559190614419565b602060405180830381865afa158015612b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9691906147ce565b905080821115612bd2576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401612c0f929190614841565b6020604051808303816000875af1158015612c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c52919061487f565b905080612c8b576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505b5050565b612c9c81336138fc565b50565b6000612ca9613f0a565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015612cf75750825b9050600060018367ffffffffffffffff16148015612d2c575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015612d3a575080155b15612d71576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315612dc15760018560000160086101000a81548160ff0219169083151502179055505b612dca33613f32565b612dd2613f46565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612e38576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612e866000801b336136f1565b50612eb17f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929336136f1565b508315612f0e5760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051612f059190614ae4565b60405180910390a15b505050505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929612f40816136b5565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612fa95750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612fe0576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000820361301a576040517ff083859200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060400160405280600115158152602001838152506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101559050508273ffffffffffffffffffffffffffffffffffffffff167fe184914670d9e097e90729e2a9159866b30b1203952f0586bedca1d6fcf130a8836040516130e391906143fe565b60405180910390a2505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961311a816136b5565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1661319f576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082036131d9576040517ff083859200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055508373ffffffffffffffffffffffffffffffffffffffff167f62e2c9c75b287778c0b58f1c1d83fa8f9978a33848e0b423735fd44f48ebe3c182856040516132ad929190614704565b60405180910390a250505050565b6132c482610bc4565b6132cd816136b5565b6132d783836137fa565b50505050565b60008060005b6007548110156133735760006002600083815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000154846133519190614947565b93508060010154836133639190614947565b92505080806001019150506132e3565b50915091565b60006020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154905082565b60056020528060005260406000206000915090505481565b6002602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020160009054906101000a900460ff16908060020160019054906101000a900460ff16908060020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905086565b61344d613d84565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036134b3576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f38b700f64059658d3f95b87d8db51f669197c89da3076d26d42bb8fb06159fa960405160405180910390a35050565b60036020528060005260406000206000915090505481565b613599613d84565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361360b5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016136029190614419565b60405180910390fd5b61361481613e0b565b50565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806136ae57506136ad82613f50565b5b9050919050565b6136c6816136c16137f2565b613fba565b50565b60007f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b6000806136fc6136c9565b905061370884846123cd565b6137e657600181600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506137826137f2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506137ec565b60009150505b92915050565b600033905090565b6000806138056136c9565b905061381184846123cd565b156138f057600081600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061388c6137f2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019150506138f6565b60009150505b92915050565b6001600083815260200190815260200160002060050160009054906101000a900460ff16613956576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600083815260200190815260200160002060050160019054906101000a900460ff1615801561399d575060016000838152602001908152602001600020600101544211155b156139d4576040517f3df07da500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600083815260200190815260200160002060050160029054906101000a900460ff16613a2e576040517fe2c858ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015403613ac0576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160009054906101000a900460ff1615613b09576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160019054906101000a900460ff1615613b52576040517fa85e6f1a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000816001015490506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613bb89190614419565b602060405180830381865afa158015613bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bf991906147ce565b905080821115613c35576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018360020160006101000a81548160ff0219169083151502179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86856040518363ffffffff1660e01b8152600401613cb1929190614841565b6020604051808303816000875af1158015613cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cf4919061487f565b905080613d2d576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16867f880f2ef2613b092f1a0a819f294155c98667eb294b7e6bf7a3810278142c1a1c85604051613d7491906143fe565b60405180910390a3505050505050565b613d8c6137f2565b73ffffffffffffffffffffffffffffffffffffffff16613daa612395565b73ffffffffffffffffffffffffffffffffffffffff1614613e0957613dcd6137f2565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401613e009190614419565b60405180910390fd5b565b6000613e15613ee2565b905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60007f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b613f3a61400b565b613f438161404b565b50565b613f4e61400b565b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b613fc482826123cd565b6140075780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401613ffe929190614aff565b60405180910390fd5b5050565b6140136140d1565b614049576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61405361400b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036140c55760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016140bc9190614419565b60405180910390fd5b6140ce81613e0b565b50565b60006140db613f0a565b60000160089054906101000a900460ff16905090565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61412b816140f6565b811461413657600080fd5b50565b60008135905061414881614122565b92915050565b600060208284031215614164576141636140f1565b5b600061417284828501614139565b91505092915050565b60008115159050919050565b6141908161417b565b82525050565b60006020820190506141ab6000830184614187565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141dc826141b1565b9050919050565b6141ec816141d1565b81146141f757600080fd5b50565b600081359050614209816141e3565b92915050565b600060208284031215614225576142246140f1565b5b6000614233848285016141fa565b91505092915050565b6000819050919050565b61424f8161423c565b811461425a57600080fd5b50565b60008135905061426c81614246565b92915050565b600060208284031215614288576142876140f1565b5b60006142968482850161425d565b91505092915050565b6142a88161423c565b82525050565b60006020820190506142c3600083018461429f565b92915050565b6000819050919050565b6142dc816142c9565b81146142e757600080fd5b50565b6000813590506142f9816142d3565b92915050565b60008060408385031215614316576143156140f1565b5b6000614324858286016142ea565b9250506020614335858286016141fa565b9150509250929050565b614348816142c9565b82525050565b614357816141d1565b82525050565b600060c082019050614372600083018961433f565b61437f602083018861433f565b61438c6040830187614187565b6143996060830186614187565b6143a6608083018561434e565b6143b360a083018461433f565b979650505050505050565b600080604083850312156143d5576143d46140f1565b5b60006143e38582860161425d565b92505060206143f4858286016141fa565b9150509250929050565b6000602082019050614413600083018461433f565b92915050565b600060208201905061442e600083018461434e565b92915050565b60006020828403121561444a576144496140f1565b5b6000614458848285016142ea565b91505092915050565b600080600080600060a0868803121561447d5761447c6140f1565b5b600061448b888289016142ea565b955050602061449c888289016142ea565b94505060406144ad888289016142ea565b93505060606144be888289016142ea565b92505060806144cf888289016142ea565b9150509295509295909350565b6144e58161417b565b81146144f057600080fd5b50565b600081359050614502816144dc565b92915050565b6000806040838503121561451f5761451e6140f1565b5b600061452d858286016142ea565b925050602061453e858286016144f3565b9150509250929050565b600080600060608486031215614561576145606140f1565b5b600061456f868287016142ea565b9350506020614580868287016141fa565b9250506040614591868287016142ea565b9150509250925092565b6000610140820190506145b1600083018d61433f565b6145be602083018c61433f565b6145cb604083018b61433f565b6145d8606083018a61433f565b6145e5608083018961433f565b6145f260a0830188614187565b6145ff60c0830187614187565b61460c60e0830186614187565b61461a610100830185614187565b614628610120830184614187565b9b9a5050505050505050505050565b60008060008060008060c08789031215614654576146536140f1565b5b600061466289828a016142ea565b965050602061467389828a016142ea565b955050604061468489828a016142ea565b945050606061469589828a016142ea565b93505060806146a689828a016142ea565b92505060a06146b789828a016142ea565b9150509295509295509295565b600080604083850312156146db576146da6140f1565b5b60006146e9858286016141fa565b92505060206146fa858286016142ea565b9150509250929050565b6000604082019050614719600083018561433f565b614726602083018461433f565b9392505050565b60006040820190506147426000830185614187565b61474f602083018461433f565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614790826142c9565b915061479b836142c9565b92508282039050818111156147b3576147b2614756565b5b92915050565b6000815190506147c8816142d3565b92915050565b6000602082840312156147e4576147e36140f1565b5b60006147f2848285016147b9565b91505092915050565b600081905092915050565b50565b60006148166000836147fb565b915061482182614806565b600082019050919050565b600061483782614809565b9150819050919050565b6000604082019050614856600083018561434e565b614863602083018461433f565b9392505050565b600081519050614879816144dc565b92915050565b600060208284031215614895576148946140f1565b5b60006148a38482850161486a565b91505092915050565b60006148b7826142c9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148e9576148e8614756565b5b600182019050919050565b600060a082019050614909600083018861433f565b614916602083018761433f565b614923604083018661433f565b614930606083018561433f565b61493d608083018461433f565b9695505050505050565b6000614952826142c9565b915061495d836142c9565b925082820190508082111561497557614974614756565b5b92915050565b6000614986826142c9565b9150614991836142c9565b925082820261499f816142c9565b915082820484148315176149b6576149b5614756565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006149f7826142c9565b9150614a02836142c9565b925082614a1257614a116149bd565b5b828204905092915050565b6000606082019050614a32600083018661434e565b614a3f602083018561434e565b614a4c604083018461433f565b949350505050565b6000606082019050614a69600083018661433f565b614a76602083018561433f565b614a83604083018461433f565b949350505050565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b6000614ace614ac9614ac484614a8b565b614aa9565b614a95565b9050919050565b614ade81614ab3565b82525050565b6000602082019050614af96000830184614ad5565b92915050565b6000604082019050614b14600083018561434e565b614b21602083018461429f565b939250505056fea26469706673582212205552cebf2a4717e828cf36f91c5ae4faa354fa4de28b3ac58004670b3fecd6f164736f6c634300081c0033",
|
1516
|
-
"deployedBytecode": "0x60806040526004361061026b5760003560e01c806395082d2511610144578063d4bcdfa1116100b6578063eb4c9e9b1161007a578063eb4c9e9b14610929578063ed54890d14610966578063efe9c9e2146109a8578063f0e1bb3e146109d1578063f2fde38b14610a0e578063f5b541a614610a375761026c565b8063d4bcdfa114610832578063d4ee651b1461085b578063d547741f14610884578063d871b0e3146108ad578063daf9c210146108eb5761026c565b8063a217fddf11610108578063a217fddf14610738578063a6be83dd14610763578063a734f06e1461078c578063c1075329146107b7578063c4428a89146107e0578063c4d66de8146108095761026c565b806395082d251461063f57806397ac4a251461066a5780639bb92c4e146106a75780639da64ac2146106d0578063a09686c41461070d5761026c565b80635a1e6ca1116101dd5780638952ac1e116101a15780638952ac1e146105215780638a5682991461053d5780638c65c81f146105685780638d52e555146105ae5780638da5cb5b146105d757806391d14854146106025761026c565b80635a1e6ca1146104525780635af6df4c1461047b5780636fed6940146104a4578063715018a6146104e15780637cf30c60146104f85761026c565b80632f2ff15d1161022f5780632f2ff15d1461037c57806336568abe146103a557806342683c67146103ce57806348c54b9d146103f95780634b60ce7714610410578063590e1ae31461043b5761026c565b806301ffc9a71461026e5780631c88705d146102ab578063248a9ca3146102d457806327ac0c581461031157806328f3e6581461033a5761026c565b5b005b34801561027a57600080fd5b506102956004803603810190610290919061414e565b610a62565b6040516102a29190614196565b60405180910390f35b3480156102b757600080fd5b506102d260048036038101906102cd919061420f565b610a74565b005b3480156102e057600080fd5b506102fb60048036038101906102f69190614272565b610bc4565b60405161030891906142ae565b60405180910390f35b34801561031d57600080fd5b506103386004803603810190610333919061420f565b610bf2565b005b34801561034657600080fd5b50610361600480360381019061035c91906142ff565b610c2e565b6040516103739695949392919061435d565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e91906143be565b610cfa565b005b3480156103b157600080fd5b506103cc60048036038101906103c791906143be565b610d1c565b005b3480156103da57600080fd5b506103e3610d97565b6040516103f091906143fe565b60405180910390f35b34801561040557600080fd5b5061040e610d9d565b005b34801561041c57600080fd5b50610425610e3a565b6040516104329190614419565b60405180910390f35b34801561044757600080fd5b50610450610e60565b005b34801561045e57600080fd5b5061047960048036038101906104749190614434565b611493565b005b34801561048757600080fd5b506104a2600480360381019061049d9190614461565b6115e1565b005b3480156104b057600080fd5b506104cb60048036038101906104c69190614434565b6118bb565b6040516104d891906143fe565b60405180910390f35b3480156104ed57600080fd5b506104f66118d3565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614508565b6118e7565b005b61053b60048036038101906105369190614548565b6119d6565b005b34801561054957600080fd5b5061055261220b565b60405161055f91906143fe565b60405180910390f35b34801561057457600080fd5b5061058f600480360381019061058a9190614434565b612211565b6040516105a59a9998979695949392919061459b565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d09190614508565b6122a6565b005b3480156105e357600080fd5b506105ec612395565b6040516105f99190614419565b60405180910390f35b34801561060e57600080fd5b50610629600480360381019061062491906143be565b6123cd565b6040516106369190614196565b60405180910390f35b34801561064b57600080fd5b50610654612446565b60405161066191906143fe565b60405180910390f35b34801561067657600080fd5b50610691600480360381019061068c9190614434565b612452565b60405161069e9190614196565b60405180910390f35b3480156106b357600080fd5b506106ce60048036038101906106c99190614508565b612548565b005b3480156106dc57600080fd5b506106f760048036038101906106f2919061420f565b612637565b60405161070491906143fe565b60405180910390f35b34801561071957600080fd5b506107226126a4565b60405161072f91906143fe565b60405180910390f35b34801561074457600080fd5b5061074d6126ae565b60405161075a91906142ae565b60405180910390f35b34801561076f57600080fd5b5061078a60048036038101906107859190614637565b6126b5565b005b34801561079857600080fd5b506107a16129bc565b6040516107ae9190614419565b60405180910390f35b3480156107c357600080fd5b506107de60048036038101906107d991906146c4565b6129c1565b005b3480156107ec57600080fd5b5061080760048036038101906108029190614434565b612c92565b005b34801561081557600080fd5b50610830600480360381019061082b919061420f565b612c9f565b005b34801561083e57600080fd5b50610859600480360381019061085491906146c4565b612f16565b005b34801561086757600080fd5b50610882600480360381019061087d91906146c4565b6130f0565b005b34801561089057600080fd5b506108ab60048036038101906108a691906143be565b6132bb565b005b3480156108b957600080fd5b506108d460048036038101906108cf919061420f565b6132dd565b6040516108e2929190614704565b60405180910390f35b3480156108f757600080fd5b50610912600480360381019061090d919061420f565b613379565b60405161092092919061472d565b60405180910390f35b34801561093557600080fd5b50610950600480360381019061094b919061420f565b6133aa565b60405161095d91906143fe565b60405180910390f35b34801561097257600080fd5b5061098d600480360381019061098891906142ff565b6133c2565b60405161099f9695949392919061435d565b60405180910390f35b3480156109b457600080fd5b506109cf60048036038101906109ca919061420f565b613445565b005b3480156109dd57600080fd5b506109f860048036038101906109f39190614434565b613579565b604051610a0591906143fe565b60405180910390f35b348015610a1a57600080fd5b50610a356004803603810190610a30919061420f565b613591565b005b348015610a4357600080fd5b50610a4c613617565b604051610a5991906142ae565b60405180910390f35b6000610a6d8261363b565b9050919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610a9e816136b5565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16610b23576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fdd2e6d9f52cbe8f695939d018b7d4a216dc613a669876163ac548b916489d91760405160405180910390a25050565b600080610bcf6136c9565b905080600001600084815260200190815260200160002060010154915050919050565b6000801b610bff816136b5565b610c297f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929836136f1565b505050565b6000806000806000806000600260008a815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806000015481600101548260020160009054906101000a900460ff168360020160019054906101000a900460ff168460020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560030154965096509650965096509650509295509295509295565b610d0382610bc4565b610d0c816136b5565b610d1683836136f1565b50505050565b610d246137f2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d88576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d9282826137fa565b505050565b60085481565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008103610e1b576040517f55842fea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600182610e2a9190614785565b9050610e3681336138fc565b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008103610ede576040517f55842fea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600182610eed9190614785565b90506001600082815260200190815260200160002060050160009054906101000a900460ff16610f49576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600082815260200190815260200160002060050160039054906101000a900460ff16610fa3576040517f089c998700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015403611035576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160009054906101000a900460ff161561107e576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160019054906101000a900460ff16156110c7576040517fa85e6f1a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600082600301549050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361116c5747811115611167576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611226565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111a79190614419565b602060405180830381865afa1580156111c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e891906147ce565b905080821115611224576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b60018360020160016101000a81548160ff021916908315150217905550826000015460036000868152602001908152602001600020600082825461126a9190614785565b925050819055508260000154600860008282546112879190614785565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361136b5760003373ffffffffffffffffffffffffffffffffffffffff16826040516112e89061482c565b60006040518083038185875af1925050503d8060008114611325576040519150601f19603f3d011682016040523d82523d6000602084013e61132a565b606091505b5050905080611365576040517f6d963f8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50611426565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016113a8929190614841565b6020604051808303816000875af11580156113c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113eb919061487f565b905080611424576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16857f1c26abe6289671e3a9d493647349673af828abb9dbadff1e81762387f7cd99a38460405161148491906143fe565b60405180910390a45050505050565b61149b613d84565b6001600082815260200190815260200160002060050160009054906101000a900460ff166114f5576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600082815260200190815260200160002060050160019054906101000a900460ff1615611550576040517f0f5eeea600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180600083815260200190815260200160002060050160016101000a81548160ff021916908315150217905550807fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad57600360008481526020019081526020016000205460046000858152602001908152602001600020546040516115d6929190614704565b60405180910390a250565b6115e9613d84565b42851015611623576040517fb290253c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84841161165c576040517f38af65f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008303611696576040517fe2494de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082036116d0576040517f0baf743200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008114806116de57508281115b15611715576040517f90e3cae900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060075490506040518061014001604052808781526020018681526020018581526020018481526020018381526020016001151581526020016000151581526020016000151581526020016000151581526020016001151581525060016000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e08201518160050160026101000a81548160ff0219169083151502179055506101008201518160050160036101000a81548160ff0219169083151502179055506101208201518160050160046101000a81548160ff0219169083151502179055509050506007600081548092919061186e906148ac565b9190505550807f21fb045299ceafb7a136c74ee07b22d481ee9bf37a85b2d8f20c59f83ada413387878787876040516118ab9594939291906148f4565b60405180910390a2505050505050565b60046020528060005260406000206000915090505481565b6118db613d84565b6118e56000613e0b565b565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929611911816136b5565b6001600084815260200190815260200160002060050160009054906101000a900460ff1661196b576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160036101000a81548160ff021916908315150217905550827f653b56ea3ea7dfba44234dbc807bac97a2a0adafb6d22427d818250375f1e911836040516119c99190614196565b60405180910390a2505050565b6119df83612452565b611a15576040517f3df07da500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611a9a576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b115760003403611b09576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b349050611b4f565b60008203611b4b576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8190505b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114158015611bb05750600185611bac9190614947565b8114155b15611c10576001600086815260200190815260200160002060050160049054906101000a900460ff16611c0f576040517f827a86b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506000670de0b6b3a76400008285611c6d919061497b565b611c7791906149ec565b905060006002600089815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000828260000154611cdf9190614947565b9050600160008a815260200190815260200160002060040154811115611d31576040517f1cd861cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600360008c815260200190815260200160002054611d529190614947565b9050600160008b815260200190815260200160002060020154811115611da4576040517f397bb34300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614611e955760008973ffffffffffffffffffffffffffffffffffffffff166323b872dd33308b6040518463ffffffff1660e01b8152600401611e1793929190614a1d565b6020604051808303816000875af1158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a919061487f565b905080611e93576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b6000600160008c815260200190815260200160002060020154600160008d81526020019081526020016000206003015486611ed0919061497b565b611eda91906149ec565b90506000846000015403611fb257600460008c81526020019081526020016000206000815480929190611f0c906148ac565b919050555060018b611f1e9190614947565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550898460020160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087846003018190555061205c565b8973ffffffffffffffffffffffffffffffffffffffff168460020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612029578784600301600082825461201d9190614947565b9250508190555061205b565b6040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b848460000160008282546120709190614947565b925050819055508084600101600082825461208b9190614947565b9250508190555084600360008d815260200190815260200160002060008282546120b59190614947565b9250508190555084600860008282546120ce9190614947565b92505081905550600160008c815260200190815260200160002060020154600360008d815260200190815260200160002054106121945760018060008d815260200190815260200160002060050160016101000a81548160ff0219169083151502179055508a7fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad57600360008e815260200190815260200160002054600460008f81526020019081526020016000205460405161218b929190614704565b60405180910390a25b8973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168c7fb479ec976a9860505652c0d9f5dc15bc5fbca1a55c3da9cabe662f1b6f8090d28b89866040516121f693929190614a54565b60405180910390a45050505050505050505050565b60075481565b60016020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050160009054906101000a900460ff16908060050160019054906101000a900460ff16908060050160029054906101000a900460ff16908060050160039054906101000a900460ff16908060050160049054906101000a900460ff1690508a565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296122d0816136b5565b6001600084815260200190815260200160002060050160009054906101000a900460ff1661232a576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160046101000a81548160ff021916908315150217905550827f1c1c03453d1eefaa85a62e371adba496bc16fa6320bf5416b0af1249081ca84c836040516123889190614196565b60405180910390a2505050565b6000806123a0613ee2565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b6000806123d86136c9565b905080600001600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b670de0b6b3a764000081565b60006001600083815260200190815260200160002060050160009054906101000a900460ff166124855760009050612543565b6001600083815260200190815260200160002060050160019054906101000a900460ff16156124b75760009050612543565b60016000838152602001908152602001600020600001544210156124de5760009050612543565b60016000838152602001908152602001600020600101544211156125055760009050612543565b600160008381526020019081526020016000206002015460036000848152602001908152602001600020541061253e5760009050612543565b600190505b919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929612572816136b5565b6001600084815260200190815260200160002060050160009054906101000a900460ff166125cc576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160026101000a81548160ff021916908315150217905550827f74c19978ee48fa394fffde7cccc94793539daf917f2a8fd2d5e851409de3f7a08360405161262a9190614196565b60405180910390a2505050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000810361268e57600091505061269f565b60018161269b9190614785565b9150505b919050565b6000600754905090565b6000801b81565b6126bd613d84565b6001600087815260200190815260200160002060050160009054906101000a900460ff16612717576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600087815260200190815260200160002060050160019054906101000a900460ff1615612772576040517f0f5eeea600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160008781526020019081526020016000206000015442106127c1576040517f4eb5402b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428510156127fb576040517fb290253c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b848411612834576040517f38af65f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000830361286e576040517fe2494de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082036128a8576040517f0baf743200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008114806128b657508281115b156128ed576040517f90e3cae900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600088815260200190815260200160002060000181905550836001600088815260200190815260200160002060010181905550826001600088815260200190815260200160002060020181905550816001600088815260200190815260200160002060030181905550806001600088815260200190815260200160002060040181905550857fe35865500052be0ea409d44d56e7f66a0e0728bab40a71f941ccd691b915959686868686866040516129ac9594939291906148f4565b60405180910390a2505050505050565b600081565b6129c9613d84565b60008103612a03576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b1a5747811115612a71576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1682604051612a979061482c565b60006040518083038185875af1925050503d8060008114612ad4576040519150601f19603f3d011682016040523d82523d6000602084013e612ad9565b606091505b5050905080612b14576040517f6d963f8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50612c8e565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b559190614419565b602060405180830381865afa158015612b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9691906147ce565b905080821115612bd2576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401612c0f929190614841565b6020604051808303816000875af1158015612c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c52919061487f565b905080612c8b576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505b5050565b612c9c81336138fc565b50565b6000612ca9613f0a565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015612cf75750825b9050600060018367ffffffffffffffff16148015612d2c575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015612d3a575080155b15612d71576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315612dc15760018560000160086101000a81548160ff0219169083151502179055505b612dca33613f32565b612dd2613f46565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612e38576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612e866000801b336136f1565b50612eb17f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929336136f1565b508315612f0e5760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051612f059190614ae4565b60405180910390a15b505050505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929612f40816136b5565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612fa95750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612fe0576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000820361301a576040517ff083859200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060400160405280600115158152602001838152506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101559050508273ffffffffffffffffffffffffffffffffffffffff167fe184914670d9e097e90729e2a9159866b30b1203952f0586bedca1d6fcf130a8836040516130e391906143fe565b60405180910390a2505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961311a816136b5565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1661319f576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082036131d9576040517ff083859200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055508373ffffffffffffffffffffffffffffffffffffffff167f62e2c9c75b287778c0b58f1c1d83fa8f9978a33848e0b423735fd44f48ebe3c182856040516132ad929190614704565b60405180910390a250505050565b6132c482610bc4565b6132cd816136b5565b6132d783836137fa565b50505050565b60008060005b6007548110156133735760006002600083815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000154846133519190614947565b93508060010154836133639190614947565b92505080806001019150506132e3565b50915091565b60006020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154905082565b60056020528060005260406000206000915090505481565b6002602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020160009054906101000a900460ff16908060020160019054906101000a900460ff16908060020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905086565b61344d613d84565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036134b3576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f38b700f64059658d3f95b87d8db51f669197c89da3076d26d42bb8fb06159fa960405160405180910390a35050565b60036020528060005260406000206000915090505481565b613599613d84565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361360b5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016136029190614419565b60405180910390fd5b61361481613e0b565b50565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806136ae57506136ad82613f50565b5b9050919050565b6136c6816136c16137f2565b613fba565b50565b60007f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b6000806136fc6136c9565b905061370884846123cd565b6137e657600181600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506137826137f2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506137ec565b60009150505b92915050565b600033905090565b6000806138056136c9565b905061381184846123cd565b156138f057600081600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061388c6137f2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019150506138f6565b60009150505b92915050565b6001600083815260200190815260200160002060050160009054906101000a900460ff16613956576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600083815260200190815260200160002060050160019054906101000a900460ff1615801561399d575060016000838152602001908152602001600020600101544211155b156139d4576040517f3df07da500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600083815260200190815260200160002060050160029054906101000a900460ff16613a2e576040517fe2c858ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015403613ac0576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160009054906101000a900460ff1615613b09576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160019054906101000a900460ff1615613b52576040517fa85e6f1a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000816001015490506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613bb89190614419565b602060405180830381865afa158015613bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bf991906147ce565b905080821115613c35576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018360020160006101000a81548160ff0219169083151502179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86856040518363ffffffff1660e01b8152600401613cb1929190614841565b6020604051808303816000875af1158015613cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cf4919061487f565b905080613d2d576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16867f880f2ef2613b092f1a0a819f294155c98667eb294b7e6bf7a3810278142c1a1c85604051613d7491906143fe565b60405180910390a3505050505050565b613d8c6137f2565b73ffffffffffffffffffffffffffffffffffffffff16613daa612395565b73ffffffffffffffffffffffffffffffffffffffff1614613e0957613dcd6137f2565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401613e009190614419565b60405180910390fd5b565b6000613e15613ee2565b905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60007f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b613f3a61400b565b613f438161404b565b50565b613f4e61400b565b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b613fc482826123cd565b6140075780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401613ffe929190614aff565b60405180910390fd5b5050565b6140136140d1565b614049576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61405361400b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036140c55760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016140bc9190614419565b60405180910390fd5b6140ce81613e0b565b50565b60006140db613f0a565b60000160089054906101000a900460ff16905090565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61412b816140f6565b811461413657600080fd5b50565b60008135905061414881614122565b92915050565b600060208284031215614164576141636140f1565b5b600061417284828501614139565b91505092915050565b60008115159050919050565b6141908161417b565b82525050565b60006020820190506141ab6000830184614187565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141dc826141b1565b9050919050565b6141ec816141d1565b81146141f757600080fd5b50565b600081359050614209816141e3565b92915050565b600060208284031215614225576142246140f1565b5b6000614233848285016141fa565b91505092915050565b6000819050919050565b61424f8161423c565b811461425a57600080fd5b50565b60008135905061426c81614246565b92915050565b600060208284031215614288576142876140f1565b5b60006142968482850161425d565b91505092915050565b6142a88161423c565b82525050565b60006020820190506142c3600083018461429f565b92915050565b6000819050919050565b6142dc816142c9565b81146142e757600080fd5b50565b6000813590506142f9816142d3565b92915050565b60008060408385031215614316576143156140f1565b5b6000614324858286016142ea565b9250506020614335858286016141fa565b9150509250929050565b614348816142c9565b82525050565b614357816141d1565b82525050565b600060c082019050614372600083018961433f565b61437f602083018861433f565b61438c6040830187614187565b6143996060830186614187565b6143a6608083018561434e565b6143b360a083018461433f565b979650505050505050565b600080604083850312156143d5576143d46140f1565b5b60006143e38582860161425d565b92505060206143f4858286016141fa565b9150509250929050565b6000602082019050614413600083018461433f565b92915050565b600060208201905061442e600083018461434e565b92915050565b60006020828403121561444a576144496140f1565b5b6000614458848285016142ea565b91505092915050565b600080600080600060a0868803121561447d5761447c6140f1565b5b600061448b888289016142ea565b955050602061449c888289016142ea565b94505060406144ad888289016142ea565b93505060606144be888289016142ea565b92505060806144cf888289016142ea565b9150509295509295909350565b6144e58161417b565b81146144f057600080fd5b50565b600081359050614502816144dc565b92915050565b6000806040838503121561451f5761451e6140f1565b5b600061452d858286016142ea565b925050602061453e858286016144f3565b9150509250929050565b600080600060608486031215614561576145606140f1565b5b600061456f868287016142ea565b9350506020614580868287016141fa565b9250506040614591868287016142ea565b9150509250925092565b6000610140820190506145b1600083018d61433f565b6145be602083018c61433f565b6145cb604083018b61433f565b6145d8606083018a61433f565b6145e5608083018961433f565b6145f260a0830188614187565b6145ff60c0830187614187565b61460c60e0830186614187565b61461a610100830185614187565b614628610120830184614187565b9b9a5050505050505050505050565b60008060008060008060c08789031215614654576146536140f1565b5b600061466289828a016142ea565b965050602061467389828a016142ea565b955050604061468489828a016142ea565b945050606061469589828a016142ea565b93505060806146a689828a016142ea565b92505060a06146b789828a016142ea565b9150509295509295509295565b600080604083850312156146db576146da6140f1565b5b60006146e9858286016141fa565b92505060206146fa858286016142ea565b9150509250929050565b6000604082019050614719600083018561433f565b614726602083018461433f565b9392505050565b60006040820190506147426000830185614187565b61474f602083018461433f565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614790826142c9565b915061479b836142c9565b92508282039050818111156147b3576147b2614756565b5b92915050565b6000815190506147c8816142d3565b92915050565b6000602082840312156147e4576147e36140f1565b5b60006147f2848285016147b9565b91505092915050565b600081905092915050565b50565b60006148166000836147fb565b915061482182614806565b600082019050919050565b600061483782614809565b9150819050919050565b6000604082019050614856600083018561434e565b614863602083018461433f565b9392505050565b600081519050614879816144dc565b92915050565b600060208284031215614895576148946140f1565b5b60006148a38482850161486a565b91505092915050565b60006148b7826142c9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148e9576148e8614756565b5b600182019050919050565b600060a082019050614909600083018861433f565b614916602083018761433f565b614923604083018661433f565b614930606083018561433f565b61493d608083018461433f565b9695505050505050565b6000614952826142c9565b915061495d836142c9565b925082820190508082111561497557614974614756565b5b92915050565b6000614986826142c9565b9150614991836142c9565b925082820261499f816142c9565b915082820484148315176149b6576149b5614756565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006149f7826142c9565b9150614a02836142c9565b925082614a1257614a116149bd565b5b828204905092915050565b6000606082019050614a32600083018661434e565b614a3f602083018561434e565b614a4c604083018461433f565b949350505050565b6000606082019050614a69600083018661433f565b614a76602083018561433f565b614a83604083018461433f565b949350505050565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b6000614ace614ac9614ac484614a8b565b614aa9565b614a95565b9050919050565b614ade81614ab3565b82525050565b6000602082019050614af96000830184614ad5565b92915050565b6000604082019050614b14600083018561434e565b614b21602083018461429f565b939250505056fea26469706673582212205552cebf2a4717e828cf36f91c5ae4faa354fa4de28b3ac58004670b3fecd6f164736f6c634300081c0033",
|
1545
|
+
"bytecode": "0x608060405234801561001057600080fd5b5061001f61002460201b60201c565b61018e565b600061003461012860201b60201c565b90508060000160089054906101000a900460ff161561007f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff80168160000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16146101255767ffffffffffffffff8160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff60405161011c9190610173565b60405180910390a15b50565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b600067ffffffffffffffff82169050919050565b61016d81610150565b82525050565b60006020820190506101886000830184610164565b92915050565b614c2c8061019d6000396000f3fe6080604052600436106102765760003560e01c806397ac4a251161014f578063d4bcdfa1116100c1578063ed54890d1161007a578063ed54890d14610995578063efe9c9e2146109d7578063f0a3a97c14610a00578063f0e1bb3e14610a2b578063f2fde38b14610a68578063f5b541a614610a9157610277565b8063d4bcdfa114610861578063d4ee651b1461088a578063d547741f146108b3578063d871b0e3146108dc578063daf9c2101461091a578063eb4c9e9b1461095857610277565b8063a6be83dd11610113578063a6be83dd14610769578063a734f06e14610792578063c1075329146107bd578063c213df78146107e6578063c4428a891461080f578063c4d66de81461083857610277565b806397ac4a25146106705780639bb92c4e146106ad5780639da64ac2146106d6578063a09686c414610713578063a217fddf1461073e57610277565b80636fed6940116101e85780638a568299116101ac5780638a568299146105435780638c65c81f1461056e5780638d52e555146105b45780638da5cb5b146105dd57806391d148541461060857806395082d251461064557610277565b80636fed694014610481578063715018a6146104be5780637ad226dc146104d55780637cf30c60146104fe5780638952ac1e1461052757610277565b80632f2ff15d1161023a5780632f2ff15d1461038757806336568abe146103b057806342683c67146103d95780634b60ce77146104045780635a1e6ca11461042f5780635af6df4c1461045857610277565b806301ffc9a7146102795780631c88705d146102b6578063248a9ca3146102df57806327ac0c581461031c57806328f3e6581461034557610277565b5b005b34801561028557600080fd5b506102a0600480360381019061029b919061421c565b610abc565b6040516102ad9190614264565b60405180910390f35b3480156102c257600080fd5b506102dd60048036038101906102d891906142dd565b610ace565b005b3480156102eb57600080fd5b5061030660048036038101906103019190614340565b610c1e565b604051610313919061437c565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e91906142dd565b610c4c565b005b34801561035157600080fd5b5061036c600480360381019061036791906143cd565b610c88565b60405161037e9695949392919061442b565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a9919061448c565b610d54565b005b3480156103bc57600080fd5b506103d760048036038101906103d2919061448c565b610d76565b005b3480156103e557600080fd5b506103ee610df1565b6040516103fb91906144cc565b60405180910390f35b34801561041057600080fd5b50610419610df7565b60405161042691906144e7565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190614502565b610e1d565b005b34801561046457600080fd5b5061047f600480360381019061047a919061452f565b610f8e565b005b34801561048d57600080fd5b506104a860048036038101906104a39190614502565b61128b565b6040516104b591906144cc565b60405180910390f35b3480156104ca57600080fd5b506104d36112a3565b005b3480156104e157600080fd5b506104fc60048036038101906104f791906143cd565b6112b7565b005b34801561050a57600080fd5b50610525600480360381019061052091906145d6565b6118ec565b005b610541600480360381019061053c9190614616565b6119db565b005b34801561054f57600080fd5b50610558612210565b60405161056591906144cc565b60405180910390f35b34801561057a57600080fd5b5061059560048036038101906105909190614502565b612216565b6040516105ab9a99989796959493929190614669565b60405180910390f35b3480156105c057600080fd5b506105db60048036038101906105d691906145d6565b6122ab565b005b3480156105e957600080fd5b506105f261239a565b6040516105ff91906144e7565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a919061448c565b6123d2565b60405161063c9190614264565b60405180910390f35b34801561065157600080fd5b5061065a61244b565b60405161066791906144cc565b60405180910390f35b34801561067c57600080fd5b5061069760048036038101906106929190614502565b612457565b6040516106a49190614264565b60405180910390f35b3480156106b957600080fd5b506106d460048036038101906106cf91906145d6565b61254d565b005b3480156106e257600080fd5b506106fd60048036038101906106f891906142dd565b61263c565b60405161070a91906144cc565b60405180910390f35b34801561071f57600080fd5b506107286126a9565b60405161073591906144cc565b60405180910390f35b34801561074a57600080fd5b506107536126b3565b604051610760919061437c565b60405180910390f35b34801561077557600080fd5b50610790600480360381019061078b9190614705565b6126ba565b005b34801561079e57600080fd5b506107a76129e4565b6040516107b491906144e7565b60405180910390f35b3480156107c957600080fd5b506107e460048036038101906107df9190614792565b6129e9565b005b3480156107f257600080fd5b5061080d600480360381019061080891906142dd565b612cdd565b005b34801561081b57600080fd5b5061083660048036038101906108319190614502565b612d19565b005b34801561084457600080fd5b5061085f600480360381019061085a91906142dd565b612d26565b005b34801561086d57600080fd5b5061088860048036038101906108839190614792565b612f9d565b005b34801561089657600080fd5b506108b160048036038101906108ac9190614792565b613177565b005b3480156108bf57600080fd5b506108da60048036038101906108d5919061448c565b613342565b005b3480156108e857600080fd5b5061090360048036038101906108fe91906142dd565b613364565b6040516109119291906147d2565b60405180910390f35b34801561092657600080fd5b50610941600480360381019061093c91906142dd565b613400565b60405161094f9291906147fb565b60405180910390f35b34801561096457600080fd5b5061097f600480360381019061097a91906142dd565b613431565b60405161098c91906144cc565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b791906143cd565b613449565b6040516109ce9695949392919061442b565b60405180910390f35b3480156109e357600080fd5b506109fe60048036038101906109f991906142dd565b6134cc565b005b348015610a0c57600080fd5b50610a15613623565b604051610a22919061437c565b60405180910390f35b348015610a3757600080fd5b50610a526004803603810190610a4d9190614502565b613647565b604051610a5f91906144cc565b60405180910390f35b348015610a7457600080fd5b50610a8f6004803603810190610a8a91906142dd565b61365f565b005b348015610a9d57600080fd5b50610aa66136e5565b604051610ab3919061437c565b60405180910390f35b6000610ac782613709565b9050919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610af881613783565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16610b7d576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fdd2e6d9f52cbe8f695939d018b7d4a216dc613a669876163ac548b916489d91760405160405180910390a25050565b600080610c29613797565b905080600001600084815260200190815260200160002060010154915050919050565b6000801b610c5981613783565b610c837f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929836137bf565b505050565b6000806000806000806000600260008a815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806000015481600101548260020160009054906101000a900460ff168360020160019054906101000a900460ff168460020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560030154965096509650965096509650509295509295509295565b610d5d82610c1e565b610d6681613783565b610d7083836137bf565b50505050565b610d7e6138c0565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610de2576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dec82826138c8565b505050565b60085481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610e4781613783565b6001600083815260200190815260200160002060050160009054906101000a900460ff16610ea1576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600083815260200190815260200160002060050160019054906101000a900460ff1615610efc576040517f0f5eeea600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180600084815260200190815260200160002060050160016101000a81548160ff021916908315150217905550817fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad5760036000858152602001908152602001600020546004600086815260200190815260200160002054604051610f829291906147d2565b60405180910390a25050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610fb881613783565b42861015610ff2576040517fb290253c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85851161102b576040517f38af65f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008403611065576040517fe2494de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000830361109f576040517f0baf743200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214806110ad57508382115b156110e4576040517f90e3cae900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060075490506040518061014001604052808881526020018781526020018681526020018581526020018481526020016001151581526020016000151581526020016000151581526020016000151581526020016001151581525060016000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e08201518160050160026101000a81548160ff0219169083151502179055506101008201518160050160036101000a81548160ff0219169083151502179055506101208201518160050160046101000a81548160ff0219169083151502179055509050506007600081548092919061123d90614853565b9190505550807f21fb045299ceafb7a136c74ee07b22d481ee9bf37a85b2d8f20c59f83ada4133888888888860405161127a95949392919061489b565b60405180910390a250505050505050565b60046020528060005260406000206000915090505481565b6112ab6139ca565b6112b56000613a51565b565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296112e181613783565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611347576040517f702b3d9000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600084815260200190815260200160002060050160009054906101000a900460ff166113a1576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600084815260200190815260200160002060050160039054906101000a900460ff166113fb576040517f089c998700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600001540361148d576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160009054906101000a900460ff16156114d6576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160019054906101000a900460ff161561151f576040517fa85e6f1a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600082600301549050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115c457478111156115bf576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61167e565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115ff91906144e7565b602060405180830381865afa15801561161c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116409190614903565b90508082111561167c576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b60018360020160016101000a81548160ff02191690831515021790555082600001546003600088815260200190815260200160002060008282546116c29190614930565b925050819055508260000154600860008282546116df9190614930565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117c35760008573ffffffffffffffffffffffffffffffffffffffff168260405161174090614995565b60006040518083038185875af1925050503d806000811461177d576040519150601f19603f3d011682016040523d82523d6000602084013e611782565b606091505b50509050806117bd576040517f6d963f8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061187e565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87846040518363ffffffff1660e01b81526004016118009291906149aa565b6020604051808303816000875af115801561181f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184391906149e8565b90508061187c576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b8173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16877f1c26abe6289671e3a9d493647349673af828abb9dbadff1e81762387f7cd99a3846040516118dc91906144cc565b60405180910390a4505050505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961191681613783565b6001600084815260200190815260200160002060050160009054906101000a900460ff16611970576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160036101000a81548160ff021916908315150217905550827f653b56ea3ea7dfba44234dbc807bac97a2a0adafb6d22427d818250375f1e911836040516119ce9190614264565b60405180910390a2505050565b6119e483612457565b611a1a576040517f3df07da500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611a9f576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b165760003403611b0e576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b349050611b54565b60008203611b50576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8190505b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114158015611bb55750600185611bb19190614a15565b8114155b15611c15576001600086815260200190815260200160002060050160049054906101000a900460ff16611c14576040517f827a86b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506000670de0b6b3a76400008285611c729190614a49565b611c7c9190614aba565b905060006002600089815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000828260000154611ce49190614a15565b9050600160008a815260200190815260200160002060040154811115611d36576040517f1cd861cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600360008c815260200190815260200160002054611d579190614a15565b9050600160008b815260200190815260200160002060020154811115611da9576040517f397bb34300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614611e9a5760008973ffffffffffffffffffffffffffffffffffffffff166323b872dd33308b6040518463ffffffff1660e01b8152600401611e1c93929190614aeb565b6020604051808303816000875af1158015611e3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5f91906149e8565b905080611e98576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b6000600160008c815260200190815260200160002060020154600160008d81526020019081526020016000206003015486611ed59190614a49565b611edf9190614aba565b90506000846000015403611fb757600460008c81526020019081526020016000206000815480929190611f1190614853565b919050555060018b611f239190614a15565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550898460020160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878460030181905550612061565b8973ffffffffffffffffffffffffffffffffffffffff168460020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361202e57878460030160008282546120229190614a15565b92505081905550612060565b6040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b848460000160008282546120759190614a15565b92505081905550808460010160008282546120909190614a15565b9250508190555084600360008d815260200190815260200160002060008282546120ba9190614a15565b9250508190555084600860008282546120d39190614a15565b92505081905550600160008c815260200190815260200160002060020154600360008d815260200190815260200160002054106121995760018060008d815260200190815260200160002060050160016101000a81548160ff0219169083151502179055508a7fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad57600360008e815260200190815260200160002054600460008f8152602001908152602001600020546040516121909291906147d2565b60405180910390a25b8973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168c7fb479ec976a9860505652c0d9f5dc15bc5fbca1a55c3da9cabe662f1b6f8090d28b89866040516121fb93929190614b22565b60405180910390a45050505050505050505050565b60075481565b60016020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050160009054906101000a900460ff16908060050160019054906101000a900460ff16908060050160029054906101000a900460ff16908060050160039054906101000a900460ff16908060050160049054906101000a900460ff1690508a565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296122d581613783565b6001600084815260200190815260200160002060050160009054906101000a900460ff1661232f576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160046101000a81548160ff021916908315150217905550827f1c1c03453d1eefaa85a62e371adba496bc16fa6320bf5416b0af1249081ca84c8360405161238d9190614264565b60405180910390a2505050565b6000806123a5613b28565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b6000806123dd613797565b905080600001600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b670de0b6b3a764000081565b60006001600083815260200190815260200160002060050160009054906101000a900460ff1661248a5760009050612548565b6001600083815260200190815260200160002060050160019054906101000a900460ff16156124bc5760009050612548565b60016000838152602001908152602001600020600001544210156124e35760009050612548565b600160008381526020019081526020016000206001015442111561250a5760009050612548565b60016000838152602001908152602001600020600201546003600084815260200190815260200160002054106125435760009050612548565b600190505b919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961257781613783565b6001600084815260200190815260200160002060050160009054906101000a900460ff166125d1576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160026101000a81548160ff021916908315150217905550827f74c19978ee48fa394fffde7cccc94793539daf917f2a8fd2d5e851409de3f7a08360405161262f9190614264565b60405180910390a2505050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081036126935760009150506126a4565b6001816126a09190614930565b9150505b919050565b6000600754905090565b6000801b81565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296126e481613783565b6001600088815260200190815260200160002060050160009054906101000a900460ff1661273e576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600088815260200190815260200160002060050160019054906101000a900460ff1615612799576040517f0f5eeea600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160008881526020019081526020016000206000015442106127e8576040517f4eb5402b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42861015612822576040517fb290253c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85851161285b576040517f38af65f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008403612895576040517fe2494de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083036128cf576040517f0baf743200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214806128dd57508382115b15612914576040517f90e3cae900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b856001600089815260200190815260200160002060000181905550846001600089815260200190815260200160002060010181905550836001600089815260200190815260200160002060020181905550826001600089815260200190815260200160002060030181905550816001600089815260200190815260200160002060040181905550867fe35865500052be0ea409d44d56e7f66a0e0728bab40a71f941ccd691b915959687878787876040516129d395949392919061489b565b60405180910390a250505050505050565b600081565b7f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07612a1381613783565b60008203612a4d576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b645747821115612abb576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1683604051612ae190614995565b60006040518083038185875af1925050503d8060008114612b1e576040519150601f19603f3d011682016040523d82523d6000602084013e612b23565b606091505b5050905080612b5e576040517f6d963f8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50612cd8565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b9f91906144e7565b602060405180830381865afa158015612bbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be09190614903565b905080831115612c1c576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff1660e01b8152600401612c599291906149aa565b6020604051808303816000875af1158015612c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9c91906149e8565b905080612cd5576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505b505050565b6000801b612cea81613783565b612d147f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07836137bf565b505050565b612d238133613b50565b50565b6000612d30613fd8565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015612d7e5750825b9050600060018367ffffffffffffffff16148015612db3575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015612dc1575080155b15612df8576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315612e485760018560000160086101000a81548160ff0219169083151502179055505b612e5133614000565b612e59614014565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612ebf576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612f0d6000801b336137bf565b50612f387f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929336137bf565b508315612f955760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051612f8c9190614bb2565b60405180910390a15b505050505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929612fc781613783565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130305750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15613067576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082036130a1576040517ff083859200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060400160405280600115158152602001838152506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101559050508273ffffffffffffffffffffffffffffffffffffffff167fe184914670d9e097e90729e2a9159866b30b1203952f0586bedca1d6fcf130a88360405161316a91906144cc565b60405180910390a2505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296131a181613783565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16613226576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008203613260576040517ff083859200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055508373ffffffffffffffffffffffffffffffffffffffff167f62e2c9c75b287778c0b58f1c1d83fa8f9978a33848e0b423735fd44f48ebe3c182856040516133349291906147d2565b60405180910390a250505050565b61334b82610c1e565b61335481613783565b61335e83836138c8565b50505050565b60008060005b6007548110156133fa5760006002600083815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000154846133d89190614a15565b93508060010154836133ea9190614a15565b925050808060010191505061336a565b50915091565b60006020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154905082565b60056020528060005260406000206000915090505481565b6002602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020160009054906101000a900460ff16908060020160019054906101000a900460ff16908060020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905086565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296134f681613783565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361355c576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f38b700f64059658d3f95b87d8db51f669197c89da3076d26d42bb8fb06159fa960405160405180910390a3505050565b7f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d0781565b60036020528060005260406000206000915090505481565b6136676139ca565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036136d95760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016136d091906144e7565b60405180910390fd5b6136e281613a51565b50565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061377c575061377b8261401e565b5b9050919050565b6137948161378f6138c0565b614088565b50565b60007f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b6000806137ca613797565b90506137d684846123d2565b6138b457600181600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506138506138c0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506138ba565b60009150505b92915050565b600033905090565b6000806138d3613797565b90506138df84846123d2565b156139be57600081600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061395a6138c0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019150506139c4565b60009150505b92915050565b6139d26138c0565b73ffffffffffffffffffffffffffffffffffffffff166139f061239a565b73ffffffffffffffffffffffffffffffffffffffff1614613a4f57613a136138c0565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401613a4691906144e7565b60405180910390fd5b565b6000613a5b613b28565b905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60007f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b6001600083815260200190815260200160002060050160009054906101000a900460ff16613baa576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600083815260200190815260200160002060050160019054906101000a900460ff16158015613bf1575060016000838152602001908152602001600020600101544211155b15613c28576040517f3df07da500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600083815260200190815260200160002060050160029054906101000a900460ff16613c82576040517fe2c858ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015403613d14576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160009054906101000a900460ff1615613d5d576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160019054906101000a900460ff1615613da6576040517fa85e6f1a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000816001015490506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613e0c91906144e7565b602060405180830381865afa158015613e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e4d9190614903565b905080821115613e89576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018360020160006101000a81548160ff0219169083151502179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86856040518363ffffffff1660e01b8152600401613f059291906149aa565b6020604051808303816000875af1158015613f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4891906149e8565b905080613f81576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16867f880f2ef2613b092f1a0a819f294155c98667eb294b7e6bf7a3810278142c1a1c85604051613fc891906144cc565b60405180910390a3505050505050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b6140086140d9565b61401181614119565b50565b61401c6140d9565b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61409282826123d2565b6140d55780826040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526004016140cc929190614bcd565b60405180910390fd5b5050565b6140e161419f565b614117576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6141216140d9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036141935760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161418a91906144e7565b60405180910390fd5b61419c81613a51565b50565b60006141a9613fd8565b60000160089054906101000a900460ff16905090565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6141f9816141c4565b811461420457600080fd5b50565b600081359050614216816141f0565b92915050565b600060208284031215614232576142316141bf565b5b600061424084828501614207565b91505092915050565b60008115159050919050565b61425e81614249565b82525050565b60006020820190506142796000830184614255565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006142aa8261427f565b9050919050565b6142ba8161429f565b81146142c557600080fd5b50565b6000813590506142d7816142b1565b92915050565b6000602082840312156142f3576142f26141bf565b5b6000614301848285016142c8565b91505092915050565b6000819050919050565b61431d8161430a565b811461432857600080fd5b50565b60008135905061433a81614314565b92915050565b600060208284031215614356576143556141bf565b5b60006143648482850161432b565b91505092915050565b6143768161430a565b82525050565b6000602082019050614391600083018461436d565b92915050565b6000819050919050565b6143aa81614397565b81146143b557600080fd5b50565b6000813590506143c7816143a1565b92915050565b600080604083850312156143e4576143e36141bf565b5b60006143f2858286016143b8565b9250506020614403858286016142c8565b9150509250929050565b61441681614397565b82525050565b6144258161429f565b82525050565b600060c082019050614440600083018961440d565b61444d602083018861440d565b61445a6040830187614255565b6144676060830186614255565b614474608083018561441c565b61448160a083018461440d565b979650505050505050565b600080604083850312156144a3576144a26141bf565b5b60006144b18582860161432b565b92505060206144c2858286016142c8565b9150509250929050565b60006020820190506144e1600083018461440d565b92915050565b60006020820190506144fc600083018461441c565b92915050565b600060208284031215614518576145176141bf565b5b6000614526848285016143b8565b91505092915050565b600080600080600060a0868803121561454b5761454a6141bf565b5b6000614559888289016143b8565b955050602061456a888289016143b8565b945050604061457b888289016143b8565b935050606061458c888289016143b8565b925050608061459d888289016143b8565b9150509295509295909350565b6145b381614249565b81146145be57600080fd5b50565b6000813590506145d0816145aa565b92915050565b600080604083850312156145ed576145ec6141bf565b5b60006145fb858286016143b8565b925050602061460c858286016145c1565b9150509250929050565b60008060006060848603121561462f5761462e6141bf565b5b600061463d868287016143b8565b935050602061464e868287016142c8565b925050604061465f868287016143b8565b9150509250925092565b60006101408201905061467f600083018d61440d565b61468c602083018c61440d565b614699604083018b61440d565b6146a6606083018a61440d565b6146b3608083018961440d565b6146c060a0830188614255565b6146cd60c0830187614255565b6146da60e0830186614255565b6146e8610100830185614255565b6146f6610120830184614255565b9b9a5050505050505050505050565b60008060008060008060c08789031215614722576147216141bf565b5b600061473089828a016143b8565b965050602061474189828a016143b8565b955050604061475289828a016143b8565b945050606061476389828a016143b8565b935050608061477489828a016143b8565b92505060a061478589828a016143b8565b9150509295509295509295565b600080604083850312156147a9576147a86141bf565b5b60006147b7858286016142c8565b92505060206147c8858286016143b8565b9150509250929050565b60006040820190506147e7600083018561440d565b6147f4602083018461440d565b9392505050565b60006040820190506148106000830185614255565b61481d602083018461440d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061485e82614397565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148905761488f614824565b5b600182019050919050565b600060a0820190506148b0600083018861440d565b6148bd602083018761440d565b6148ca604083018661440d565b6148d7606083018561440d565b6148e4608083018461440d565b9695505050505050565b6000815190506148fd816143a1565b92915050565b600060208284031215614919576149186141bf565b5b6000614927848285016148ee565b91505092915050565b600061493b82614397565b915061494683614397565b925082820390508181111561495e5761495d614824565b5b92915050565b600081905092915050565b50565b600061497f600083614964565b915061498a8261496f565b600082019050919050565b60006149a082614972565b9150819050919050565b60006040820190506149bf600083018561441c565b6149cc602083018461440d565b9392505050565b6000815190506149e2816145aa565b92915050565b6000602082840312156149fe576149fd6141bf565b5b6000614a0c848285016149d3565b91505092915050565b6000614a2082614397565b9150614a2b83614397565b9250828201905080821115614a4357614a42614824565b5b92915050565b6000614a5482614397565b9150614a5f83614397565b9250828202614a6d81614397565b91508282048414831517614a8457614a83614824565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614ac582614397565b9150614ad083614397565b925082614ae057614adf614a8b565b5b828204905092915050565b6000606082019050614b00600083018661441c565b614b0d602083018561441c565b614b1a604083018461440d565b949350505050565b6000606082019050614b37600083018661440d565b614b44602083018561440d565b614b51604083018461440d565b949350505050565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b6000614b9c614b97614b9284614b59565b614b77565b614b63565b9050919050565b614bac81614b81565b82525050565b6000602082019050614bc76000830184614ba3565b92915050565b6000604082019050614be2600083018561441c565b614bef602083018461436d565b939250505056fea2646970667358221220b62a2df386c339c73773cfd5bbae2ef8b1fe4e98c7b355111b802fd05e87f97e64736f6c634300081c0033",
|
1546
|
+
"deployedBytecode": "0x6080604052600436106102765760003560e01c806397ac4a251161014f578063d4bcdfa1116100c1578063ed54890d1161007a578063ed54890d14610995578063efe9c9e2146109d7578063f0a3a97c14610a00578063f0e1bb3e14610a2b578063f2fde38b14610a68578063f5b541a614610a9157610277565b8063d4bcdfa114610861578063d4ee651b1461088a578063d547741f146108b3578063d871b0e3146108dc578063daf9c2101461091a578063eb4c9e9b1461095857610277565b8063a6be83dd11610113578063a6be83dd14610769578063a734f06e14610792578063c1075329146107bd578063c213df78146107e6578063c4428a891461080f578063c4d66de81461083857610277565b806397ac4a25146106705780639bb92c4e146106ad5780639da64ac2146106d6578063a09686c414610713578063a217fddf1461073e57610277565b80636fed6940116101e85780638a568299116101ac5780638a568299146105435780638c65c81f1461056e5780638d52e555146105b45780638da5cb5b146105dd57806391d148541461060857806395082d251461064557610277565b80636fed694014610481578063715018a6146104be5780637ad226dc146104d55780637cf30c60146104fe5780638952ac1e1461052757610277565b80632f2ff15d1161023a5780632f2ff15d1461038757806336568abe146103b057806342683c67146103d95780634b60ce77146104045780635a1e6ca11461042f5780635af6df4c1461045857610277565b806301ffc9a7146102795780631c88705d146102b6578063248a9ca3146102df57806327ac0c581461031c57806328f3e6581461034557610277565b5b005b34801561028557600080fd5b506102a0600480360381019061029b919061421c565b610abc565b6040516102ad9190614264565b60405180910390f35b3480156102c257600080fd5b506102dd60048036038101906102d891906142dd565b610ace565b005b3480156102eb57600080fd5b5061030660048036038101906103019190614340565b610c1e565b604051610313919061437c565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e91906142dd565b610c4c565b005b34801561035157600080fd5b5061036c600480360381019061036791906143cd565b610c88565b60405161037e9695949392919061442b565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a9919061448c565b610d54565b005b3480156103bc57600080fd5b506103d760048036038101906103d2919061448c565b610d76565b005b3480156103e557600080fd5b506103ee610df1565b6040516103fb91906144cc565b60405180910390f35b34801561041057600080fd5b50610419610df7565b60405161042691906144e7565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190614502565b610e1d565b005b34801561046457600080fd5b5061047f600480360381019061047a919061452f565b610f8e565b005b34801561048d57600080fd5b506104a860048036038101906104a39190614502565b61128b565b6040516104b591906144cc565b60405180910390f35b3480156104ca57600080fd5b506104d36112a3565b005b3480156104e157600080fd5b506104fc60048036038101906104f791906143cd565b6112b7565b005b34801561050a57600080fd5b50610525600480360381019061052091906145d6565b6118ec565b005b610541600480360381019061053c9190614616565b6119db565b005b34801561054f57600080fd5b50610558612210565b60405161056591906144cc565b60405180910390f35b34801561057a57600080fd5b5061059560048036038101906105909190614502565b612216565b6040516105ab9a99989796959493929190614669565b60405180910390f35b3480156105c057600080fd5b506105db60048036038101906105d691906145d6565b6122ab565b005b3480156105e957600080fd5b506105f261239a565b6040516105ff91906144e7565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a919061448c565b6123d2565b60405161063c9190614264565b60405180910390f35b34801561065157600080fd5b5061065a61244b565b60405161066791906144cc565b60405180910390f35b34801561067c57600080fd5b5061069760048036038101906106929190614502565b612457565b6040516106a49190614264565b60405180910390f35b3480156106b957600080fd5b506106d460048036038101906106cf91906145d6565b61254d565b005b3480156106e257600080fd5b506106fd60048036038101906106f891906142dd565b61263c565b60405161070a91906144cc565b60405180910390f35b34801561071f57600080fd5b506107286126a9565b60405161073591906144cc565b60405180910390f35b34801561074a57600080fd5b506107536126b3565b604051610760919061437c565b60405180910390f35b34801561077557600080fd5b50610790600480360381019061078b9190614705565b6126ba565b005b34801561079e57600080fd5b506107a76129e4565b6040516107b491906144e7565b60405180910390f35b3480156107c957600080fd5b506107e460048036038101906107df9190614792565b6129e9565b005b3480156107f257600080fd5b5061080d600480360381019061080891906142dd565b612cdd565b005b34801561081b57600080fd5b5061083660048036038101906108319190614502565b612d19565b005b34801561084457600080fd5b5061085f600480360381019061085a91906142dd565b612d26565b005b34801561086d57600080fd5b5061088860048036038101906108839190614792565b612f9d565b005b34801561089657600080fd5b506108b160048036038101906108ac9190614792565b613177565b005b3480156108bf57600080fd5b506108da60048036038101906108d5919061448c565b613342565b005b3480156108e857600080fd5b5061090360048036038101906108fe91906142dd565b613364565b6040516109119291906147d2565b60405180910390f35b34801561092657600080fd5b50610941600480360381019061093c91906142dd565b613400565b60405161094f9291906147fb565b60405180910390f35b34801561096457600080fd5b5061097f600480360381019061097a91906142dd565b613431565b60405161098c91906144cc565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b791906143cd565b613449565b6040516109ce9695949392919061442b565b60405180910390f35b3480156109e357600080fd5b506109fe60048036038101906109f991906142dd565b6134cc565b005b348015610a0c57600080fd5b50610a15613623565b604051610a22919061437c565b60405180910390f35b348015610a3757600080fd5b50610a526004803603810190610a4d9190614502565b613647565b604051610a5f91906144cc565b60405180910390f35b348015610a7457600080fd5b50610a8f6004803603810190610a8a91906142dd565b61365f565b005b348015610a9d57600080fd5b50610aa66136e5565b604051610ab3919061437c565b60405180910390f35b6000610ac782613709565b9050919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610af881613783565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16610b7d576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fdd2e6d9f52cbe8f695939d018b7d4a216dc613a669876163ac548b916489d91760405160405180910390a25050565b600080610c29613797565b905080600001600084815260200190815260200160002060010154915050919050565b6000801b610c5981613783565b610c837f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929836137bf565b505050565b6000806000806000806000600260008a815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806000015481600101548260020160009054906101000a900460ff168360020160019054906101000a900460ff168460020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560030154965096509650965096509650509295509295509295565b610d5d82610c1e565b610d6681613783565b610d7083836137bf565b50505050565b610d7e6138c0565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610de2576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dec82826138c8565b505050565b60085481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610e4781613783565b6001600083815260200190815260200160002060050160009054906101000a900460ff16610ea1576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600083815260200190815260200160002060050160019054906101000a900460ff1615610efc576040517f0f5eeea600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180600084815260200190815260200160002060050160016101000a81548160ff021916908315150217905550817fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad5760036000858152602001908152602001600020546004600086815260200190815260200160002054604051610f829291906147d2565b60405180910390a25050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610fb881613783565b42861015610ff2576040517fb290253c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85851161102b576040517f38af65f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008403611065576040517fe2494de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000830361109f576040517f0baf743200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214806110ad57508382115b156110e4576040517f90e3cae900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060075490506040518061014001604052808881526020018781526020018681526020018581526020018481526020016001151581526020016000151581526020016000151581526020016000151581526020016001151581525060016000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e08201518160050160026101000a81548160ff0219169083151502179055506101008201518160050160036101000a81548160ff0219169083151502179055506101208201518160050160046101000a81548160ff0219169083151502179055509050506007600081548092919061123d90614853565b9190505550807f21fb045299ceafb7a136c74ee07b22d481ee9bf37a85b2d8f20c59f83ada4133888888888860405161127a95949392919061489b565b60405180910390a250505050505050565b60046020528060005260406000206000915090505481565b6112ab6139ca565b6112b56000613a51565b565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296112e181613783565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611347576040517f702b3d9000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600084815260200190815260200160002060050160009054906101000a900460ff166113a1576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600084815260200190815260200160002060050160039054906101000a900460ff166113fb576040517f089c998700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600001540361148d576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160009054906101000a900460ff16156114d6576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160019054906101000a900460ff161561151f576040517fa85e6f1a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600082600301549050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115c457478111156115bf576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61167e565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115ff91906144e7565b602060405180830381865afa15801561161c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116409190614903565b90508082111561167c576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b60018360020160016101000a81548160ff02191690831515021790555082600001546003600088815260200190815260200160002060008282546116c29190614930565b925050819055508260000154600860008282546116df9190614930565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117c35760008573ffffffffffffffffffffffffffffffffffffffff168260405161174090614995565b60006040518083038185875af1925050503d806000811461177d576040519150601f19603f3d011682016040523d82523d6000602084013e611782565b606091505b50509050806117bd576040517f6d963f8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061187e565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87846040518363ffffffff1660e01b81526004016118009291906149aa565b6020604051808303816000875af115801561181f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184391906149e8565b90508061187c576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b8173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16877f1c26abe6289671e3a9d493647349673af828abb9dbadff1e81762387f7cd99a3846040516118dc91906144cc565b60405180910390a4505050505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961191681613783565b6001600084815260200190815260200160002060050160009054906101000a900460ff16611970576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160036101000a81548160ff021916908315150217905550827f653b56ea3ea7dfba44234dbc807bac97a2a0adafb6d22427d818250375f1e911836040516119ce9190614264565b60405180910390a2505050565b6119e483612457565b611a1a576040517f3df07da500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611a9f576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b165760003403611b0e576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b349050611b54565b60008203611b50576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8190505b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114158015611bb55750600185611bb19190614a15565b8114155b15611c15576001600086815260200190815260200160002060050160049054906101000a900460ff16611c14576040517f827a86b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506000670de0b6b3a76400008285611c729190614a49565b611c7c9190614aba565b905060006002600089815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000828260000154611ce49190614a15565b9050600160008a815260200190815260200160002060040154811115611d36576040517f1cd861cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600360008c815260200190815260200160002054611d579190614a15565b9050600160008b815260200190815260200160002060020154811115611da9576040517f397bb34300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614611e9a5760008973ffffffffffffffffffffffffffffffffffffffff166323b872dd33308b6040518463ffffffff1660e01b8152600401611e1c93929190614aeb565b6020604051808303816000875af1158015611e3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5f91906149e8565b905080611e98576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b6000600160008c815260200190815260200160002060020154600160008d81526020019081526020016000206003015486611ed59190614a49565b611edf9190614aba565b90506000846000015403611fb757600460008c81526020019081526020016000206000815480929190611f1190614853565b919050555060018b611f239190614a15565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550898460020160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878460030181905550612061565b8973ffffffffffffffffffffffffffffffffffffffff168460020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361202e57878460030160008282546120229190614a15565b92505081905550612060565b6040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b848460000160008282546120759190614a15565b92505081905550808460010160008282546120909190614a15565b9250508190555084600360008d815260200190815260200160002060008282546120ba9190614a15565b9250508190555084600860008282546120d39190614a15565b92505081905550600160008c815260200190815260200160002060020154600360008d815260200190815260200160002054106121995760018060008d815260200190815260200160002060050160016101000a81548160ff0219169083151502179055508a7fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad57600360008e815260200190815260200160002054600460008f8152602001908152602001600020546040516121909291906147d2565b60405180910390a25b8973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168c7fb479ec976a9860505652c0d9f5dc15bc5fbca1a55c3da9cabe662f1b6f8090d28b89866040516121fb93929190614b22565b60405180910390a45050505050505050505050565b60075481565b60016020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050160009054906101000a900460ff16908060050160019054906101000a900460ff16908060050160029054906101000a900460ff16908060050160039054906101000a900460ff16908060050160049054906101000a900460ff1690508a565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296122d581613783565b6001600084815260200190815260200160002060050160009054906101000a900460ff1661232f576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160046101000a81548160ff021916908315150217905550827f1c1c03453d1eefaa85a62e371adba496bc16fa6320bf5416b0af1249081ca84c8360405161238d9190614264565b60405180910390a2505050565b6000806123a5613b28565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b6000806123dd613797565b905080600001600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b670de0b6b3a764000081565b60006001600083815260200190815260200160002060050160009054906101000a900460ff1661248a5760009050612548565b6001600083815260200190815260200160002060050160019054906101000a900460ff16156124bc5760009050612548565b60016000838152602001908152602001600020600001544210156124e35760009050612548565b600160008381526020019081526020016000206001015442111561250a5760009050612548565b60016000838152602001908152602001600020600201546003600084815260200190815260200160002054106125435760009050612548565b600190505b919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961257781613783565b6001600084815260200190815260200160002060050160009054906101000a900460ff166125d1576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160026101000a81548160ff021916908315150217905550827f74c19978ee48fa394fffde7cccc94793539daf917f2a8fd2d5e851409de3f7a08360405161262f9190614264565b60405180910390a2505050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081036126935760009150506126a4565b6001816126a09190614930565b9150505b919050565b6000600754905090565b6000801b81565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296126e481613783565b6001600088815260200190815260200160002060050160009054906101000a900460ff1661273e576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600088815260200190815260200160002060050160019054906101000a900460ff1615612799576040517f0f5eeea600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160008881526020019081526020016000206000015442106127e8576040517f4eb5402b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42861015612822576040517fb290253c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85851161285b576040517f38af65f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008403612895576040517fe2494de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083036128cf576040517f0baf743200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214806128dd57508382115b15612914576040517f90e3cae900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b856001600089815260200190815260200160002060000181905550846001600089815260200190815260200160002060010181905550836001600089815260200190815260200160002060020181905550826001600089815260200190815260200160002060030181905550816001600089815260200190815260200160002060040181905550867fe35865500052be0ea409d44d56e7f66a0e0728bab40a71f941ccd691b915959687878787876040516129d395949392919061489b565b60405180910390a250505050505050565b600081565b7f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07612a1381613783565b60008203612a4d576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b645747821115612abb576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1683604051612ae190614995565b60006040518083038185875af1925050503d8060008114612b1e576040519150601f19603f3d011682016040523d82523d6000602084013e612b23565b606091505b5050905080612b5e576040517f6d963f8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50612cd8565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b9f91906144e7565b602060405180830381865afa158015612bbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be09190614903565b905080831115612c1c576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff1660e01b8152600401612c599291906149aa565b6020604051808303816000875af1158015612c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9c91906149e8565b905080612cd5576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505b505050565b6000801b612cea81613783565b612d147f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07836137bf565b505050565b612d238133613b50565b50565b6000612d30613fd8565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015612d7e5750825b9050600060018367ffffffffffffffff16148015612db3575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015612dc1575080155b15612df8576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315612e485760018560000160086101000a81548160ff0219169083151502179055505b612e5133614000565b612e59614014565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612ebf576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612f0d6000801b336137bf565b50612f387f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929336137bf565b508315612f955760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051612f8c9190614bb2565b60405180910390a15b505050505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929612fc781613783565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130305750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15613067576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082036130a1576040517ff083859200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060400160405280600115158152602001838152506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101559050508273ffffffffffffffffffffffffffffffffffffffff167fe184914670d9e097e90729e2a9159866b30b1203952f0586bedca1d6fcf130a88360405161316a91906144cc565b60405180910390a2505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296131a181613783565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16613226576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008203613260576040517ff083859200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055508373ffffffffffffffffffffffffffffffffffffffff167f62e2c9c75b287778c0b58f1c1d83fa8f9978a33848e0b423735fd44f48ebe3c182856040516133349291906147d2565b60405180910390a250505050565b61334b82610c1e565b61335481613783565b61335e83836138c8565b50505050565b60008060005b6007548110156133fa5760006002600083815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000154846133d89190614a15565b93508060010154836133ea9190614a15565b925050808060010191505061336a565b50915091565b60006020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154905082565b60056020528060005260406000206000915090505481565b6002602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020160009054906101000a900460ff16908060020160019054906101000a900460ff16908060020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905086565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296134f681613783565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361355c576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f38b700f64059658d3f95b87d8db51f669197c89da3076d26d42bb8fb06159fa960405160405180910390a3505050565b7f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d0781565b60036020528060005260406000206000915090505481565b6136676139ca565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036136d95760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016136d091906144e7565b60405180910390fd5b6136e281613a51565b50565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061377c575061377b8261401e565b5b9050919050565b6137948161378f6138c0565b614088565b50565b60007f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b6000806137ca613797565b90506137d684846123d2565b6138b457600181600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506138506138c0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506138ba565b60009150505b92915050565b600033905090565b6000806138d3613797565b90506138df84846123d2565b156139be57600081600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061395a6138c0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019150506139c4565b60009150505b92915050565b6139d26138c0565b73ffffffffffffffffffffffffffffffffffffffff166139f061239a565b73ffffffffffffffffffffffffffffffffffffffff1614613a4f57613a136138c0565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401613a4691906144e7565b60405180910390fd5b565b6000613a5b613b28565b905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60007f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b6001600083815260200190815260200160002060050160009054906101000a900460ff16613baa576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600083815260200190815260200160002060050160019054906101000a900460ff16158015613bf1575060016000838152602001908152602001600020600101544211155b15613c28576040517f3df07da500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600083815260200190815260200160002060050160029054906101000a900460ff16613c82576040517fe2c858ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015403613d14576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160009054906101000a900460ff1615613d5d576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160019054906101000a900460ff1615613da6576040517fa85e6f1a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000816001015490506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613e0c91906144e7565b602060405180830381865afa158015613e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e4d9190614903565b905080821115613e89576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018360020160006101000a81548160ff0219169083151502179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86856040518363ffffffff1660e01b8152600401613f059291906149aa565b6020604051808303816000875af1158015613f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4891906149e8565b905080613f81576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16867f880f2ef2613b092f1a0a819f294155c98667eb294b7e6bf7a3810278142c1a1c85604051613fc891906144cc565b60405180910390a3505050505050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b6140086140d9565b61401181614119565b50565b61401c6140d9565b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61409282826123d2565b6140d55780826040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526004016140cc929190614bcd565b60405180910390fd5b5050565b6140e161419f565b614117576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6141216140d9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036141935760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161418a91906144e7565b60405180910390fd5b61419c81613a51565b50565b60006141a9613fd8565b60000160089054906101000a900460ff16905090565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6141f9816141c4565b811461420457600080fd5b50565b600081359050614216816141f0565b92915050565b600060208284031215614232576142316141bf565b5b600061424084828501614207565b91505092915050565b60008115159050919050565b61425e81614249565b82525050565b60006020820190506142796000830184614255565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006142aa8261427f565b9050919050565b6142ba8161429f565b81146142c557600080fd5b50565b6000813590506142d7816142b1565b92915050565b6000602082840312156142f3576142f26141bf565b5b6000614301848285016142c8565b91505092915050565b6000819050919050565b61431d8161430a565b811461432857600080fd5b50565b60008135905061433a81614314565b92915050565b600060208284031215614356576143556141bf565b5b60006143648482850161432b565b91505092915050565b6143768161430a565b82525050565b6000602082019050614391600083018461436d565b92915050565b6000819050919050565b6143aa81614397565b81146143b557600080fd5b50565b6000813590506143c7816143a1565b92915050565b600080604083850312156143e4576143e36141bf565b5b60006143f2858286016143b8565b9250506020614403858286016142c8565b9150509250929050565b61441681614397565b82525050565b6144258161429f565b82525050565b600060c082019050614440600083018961440d565b61444d602083018861440d565b61445a6040830187614255565b6144676060830186614255565b614474608083018561441c565b61448160a083018461440d565b979650505050505050565b600080604083850312156144a3576144a26141bf565b5b60006144b18582860161432b565b92505060206144c2858286016142c8565b9150509250929050565b60006020820190506144e1600083018461440d565b92915050565b60006020820190506144fc600083018461441c565b92915050565b600060208284031215614518576145176141bf565b5b6000614526848285016143b8565b91505092915050565b600080600080600060a0868803121561454b5761454a6141bf565b5b6000614559888289016143b8565b955050602061456a888289016143b8565b945050604061457b888289016143b8565b935050606061458c888289016143b8565b925050608061459d888289016143b8565b9150509295509295909350565b6145b381614249565b81146145be57600080fd5b50565b6000813590506145d0816145aa565b92915050565b600080604083850312156145ed576145ec6141bf565b5b60006145fb858286016143b8565b925050602061460c858286016145c1565b9150509250929050565b60008060006060848603121561462f5761462e6141bf565b5b600061463d868287016143b8565b935050602061464e868287016142c8565b925050604061465f868287016143b8565b9150509250925092565b60006101408201905061467f600083018d61440d565b61468c602083018c61440d565b614699604083018b61440d565b6146a6606083018a61440d565b6146b3608083018961440d565b6146c060a0830188614255565b6146cd60c0830187614255565b6146da60e0830186614255565b6146e8610100830185614255565b6146f6610120830184614255565b9b9a5050505050505050505050565b60008060008060008060c08789031215614722576147216141bf565b5b600061473089828a016143b8565b965050602061474189828a016143b8565b955050604061475289828a016143b8565b945050606061476389828a016143b8565b935050608061477489828a016143b8565b92505060a061478589828a016143b8565b9150509295509295509295565b600080604083850312156147a9576147a86141bf565b5b60006147b7858286016142c8565b92505060206147c8858286016143b8565b9150509250929050565b60006040820190506147e7600083018561440d565b6147f4602083018461440d565b9392505050565b60006040820190506148106000830185614255565b61481d602083018461440d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061485e82614397565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148905761488f614824565b5b600182019050919050565b600060a0820190506148b0600083018861440d565b6148bd602083018761440d565b6148ca604083018661440d565b6148d7606083018561440d565b6148e4608083018461440d565b9695505050505050565b6000815190506148fd816143a1565b92915050565b600060208284031215614919576149186141bf565b5b6000614927848285016148ee565b91505092915050565b600061493b82614397565b915061494683614397565b925082820390508181111561495e5761495d614824565b5b92915050565b600081905092915050565b50565b600061497f600083614964565b915061498a8261496f565b600082019050919050565b60006149a082614972565b9150819050919050565b60006040820190506149bf600083018561441c565b6149cc602083018461440d565b9392505050565b6000815190506149e2816145aa565b92915050565b6000602082840312156149fe576149fd6141bf565b5b6000614a0c848285016149d3565b91505092915050565b6000614a2082614397565b9150614a2b83614397565b9250828201905080821115614a4357614a42614824565b5b92915050565b6000614a5482614397565b9150614a5f83614397565b9250828202614a6d81614397565b91508282048414831517614a8457614a83614824565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614ac582614397565b9150614ad083614397565b925082614ae057614adf614a8b565b5b828204905092915050565b6000606082019050614b00600083018661441c565b614b0d602083018561441c565b614b1a604083018461440d565b949350505050565b6000606082019050614b37600083018661440d565b614b44602083018561440d565b614b51604083018461440d565b949350505050565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b6000614b9c614b97614b9284614b59565b614b77565b614b63565b9050919050565b614bac81614b81565b82525050565b6000602082019050614bc76000830184614ba3565b92915050565b6000604082019050614be2600083018561441c565b614bef602083018461436d565b939250505056fea2646970667358221220b62a2df386c339c73773cfd5bbae2ef8b1fe4e98c7b355111b802fd05e87f97e64736f6c634300081c0033",
|
1517
1547
|
"linkReferences": {},
|
1518
1548
|
"deployedLinkReferences": {}
|
1519
1549
|
}
|
@@ -1,14 +1,14 @@
|
|
1
1
|
import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, EventFragment, AddressLike, ContractRunner, ContractMethod, Listener } from "ethers";
|
2
2
|
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedLogDescription, TypedListener, TypedContractMethod } from "../common";
|
3
3
|
export interface SeedRoundFundraiserInterface extends Interface {
|
4
|
-
getFunction(nameOrSignature: "DEFAULT_ADMIN_ROLE" | "ETH_ADDRESS" | "OPERATOR_ROLE" | "PRICE_PRECISION" | "
|
4
|
+
getFunction(nameOrSignature: "DEFAULT_ADMIN_ROLE" | "ETH_ADDRESS" | "OPERATOR_ROLE" | "PRICE_PRECISION" | "TREASURER_ROLE" | "addWhitelistedToken" | "claimTokensByRoundId" | "contribute" | "createRound" | "endRound" | "getRoleAdmin" | "getRoundsCount" | "getUserParticipatedRound" | "getUserRoundContribution" | "getUserTotalContribution" | "grantOperatorRole" | "grantRole" | "grantTreasurerRole" | "hasRole" | "initialize" | "isRoundActive" | "owner" | "projectToken" | "refund" | "removeWhitelistedToken" | "renounceOwnership" | "renounceRole" | "revokeRole" | "roundParticipants" | "roundRaisedFunds" | "rounds" | "setClaimingEnabled" | "setMultiRoundParticipation" | "setProjectToken" | "setRefundEnabled" | "supportsInterface" | "totalRaisedFunds" | "totalRounds" | "transferOwnership" | "updateRound" | "updateTokenPrice" | "userContributions" | "userParticipatedRound" | "whitelistedTokens" | "withdrawFunds"): FunctionFragment;
|
5
5
|
getEvent(nameOrSignatureOrTopic: "ClaimingEnabledUpdated" | "Contribution" | "Initialized" | "MultiRoundParticipationUpdated" | "OwnershipTransferred" | "ProjectTokenUpdated" | "RefundEnabledUpdated" | "Refunded" | "RoleAdminChanged" | "RoleGranted" | "RoleRevoked" | "RoundCreated" | "RoundEnded" | "RoundUpdated" | "TokenPriceUpdated" | "TokenRemovedFromWhitelist" | "TokenWhitelisted" | "TokensClaimed"): EventFragment;
|
6
6
|
encodeFunctionData(functionFragment: "DEFAULT_ADMIN_ROLE", values?: undefined): string;
|
7
7
|
encodeFunctionData(functionFragment: "ETH_ADDRESS", values?: undefined): string;
|
8
8
|
encodeFunctionData(functionFragment: "OPERATOR_ROLE", values?: undefined): string;
|
9
9
|
encodeFunctionData(functionFragment: "PRICE_PRECISION", values?: undefined): string;
|
10
|
+
encodeFunctionData(functionFragment: "TREASURER_ROLE", values?: undefined): string;
|
10
11
|
encodeFunctionData(functionFragment: "addWhitelistedToken", values: [AddressLike, BigNumberish]): string;
|
11
|
-
encodeFunctionData(functionFragment: "claimTokens", values?: undefined): string;
|
12
12
|
encodeFunctionData(functionFragment: "claimTokensByRoundId", values: [BigNumberish]): string;
|
13
13
|
encodeFunctionData(functionFragment: "contribute", values: [BigNumberish, AddressLike, BigNumberish]): string;
|
14
14
|
encodeFunctionData(functionFragment: "createRound", values: [
|
@@ -26,12 +26,13 @@ export interface SeedRoundFundraiserInterface extends Interface {
|
|
26
26
|
encodeFunctionData(functionFragment: "getUserTotalContribution", values: [AddressLike]): string;
|
27
27
|
encodeFunctionData(functionFragment: "grantOperatorRole", values: [AddressLike]): string;
|
28
28
|
encodeFunctionData(functionFragment: "grantRole", values: [BytesLike, AddressLike]): string;
|
29
|
+
encodeFunctionData(functionFragment: "grantTreasurerRole", values: [AddressLike]): string;
|
29
30
|
encodeFunctionData(functionFragment: "hasRole", values: [BytesLike, AddressLike]): string;
|
30
31
|
encodeFunctionData(functionFragment: "initialize", values: [AddressLike]): string;
|
31
32
|
encodeFunctionData(functionFragment: "isRoundActive", values: [BigNumberish]): string;
|
32
33
|
encodeFunctionData(functionFragment: "owner", values?: undefined): string;
|
33
34
|
encodeFunctionData(functionFragment: "projectToken", values?: undefined): string;
|
34
|
-
encodeFunctionData(functionFragment: "refund", values
|
35
|
+
encodeFunctionData(functionFragment: "refund", values: [BigNumberish, AddressLike]): string;
|
35
36
|
encodeFunctionData(functionFragment: "removeWhitelistedToken", values: [AddressLike]): string;
|
36
37
|
encodeFunctionData(functionFragment: "renounceOwnership", values?: undefined): string;
|
37
38
|
encodeFunctionData(functionFragment: "renounceRole", values: [BytesLike, AddressLike]): string;
|
@@ -64,8 +65,8 @@ export interface SeedRoundFundraiserInterface extends Interface {
|
|
64
65
|
decodeFunctionResult(functionFragment: "ETH_ADDRESS", data: BytesLike): Result;
|
65
66
|
decodeFunctionResult(functionFragment: "OPERATOR_ROLE", data: BytesLike): Result;
|
66
67
|
decodeFunctionResult(functionFragment: "PRICE_PRECISION", data: BytesLike): Result;
|
68
|
+
decodeFunctionResult(functionFragment: "TREASURER_ROLE", data: BytesLike): Result;
|
67
69
|
decodeFunctionResult(functionFragment: "addWhitelistedToken", data: BytesLike): Result;
|
68
|
-
decodeFunctionResult(functionFragment: "claimTokens", data: BytesLike): Result;
|
69
70
|
decodeFunctionResult(functionFragment: "claimTokensByRoundId", data: BytesLike): Result;
|
70
71
|
decodeFunctionResult(functionFragment: "contribute", data: BytesLike): Result;
|
71
72
|
decodeFunctionResult(functionFragment: "createRound", data: BytesLike): Result;
|
@@ -77,6 +78,7 @@ export interface SeedRoundFundraiserInterface extends Interface {
|
|
77
78
|
decodeFunctionResult(functionFragment: "getUserTotalContribution", data: BytesLike): Result;
|
78
79
|
decodeFunctionResult(functionFragment: "grantOperatorRole", data: BytesLike): Result;
|
79
80
|
decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result;
|
81
|
+
decodeFunctionResult(functionFragment: "grantTreasurerRole", data: BytesLike): Result;
|
80
82
|
decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result;
|
81
83
|
decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
|
82
84
|
decodeFunctionResult(functionFragment: "isRoundActive", data: BytesLike): Result;
|
@@ -440,13 +442,13 @@ export interface SeedRoundFundraiser extends BaseContract {
|
|
440
442
|
ETH_ADDRESS: TypedContractMethod<[], [string], "view">;
|
441
443
|
OPERATOR_ROLE: TypedContractMethod<[], [string], "view">;
|
442
444
|
PRICE_PRECISION: TypedContractMethod<[], [bigint], "view">;
|
445
|
+
TREASURER_ROLE: TypedContractMethod<[], [string], "view">;
|
443
446
|
addWhitelistedToken: TypedContractMethod<[
|
444
447
|
_token: AddressLike,
|
445
448
|
_price: BigNumberish
|
446
449
|
], [
|
447
450
|
void
|
448
451
|
], "nonpayable">;
|
449
|
-
claimTokens: TypedContractMethod<[], [void], "nonpayable">;
|
450
452
|
claimTokensByRoundId: TypedContractMethod<[
|
451
453
|
_roundId: BigNumberish
|
452
454
|
], [
|
@@ -518,6 +520,11 @@ export interface SeedRoundFundraiser extends BaseContract {
|
|
518
520
|
], [
|
519
521
|
void
|
520
522
|
], "nonpayable">;
|
523
|
+
grantTreasurerRole: TypedContractMethod<[
|
524
|
+
treasurer: AddressLike
|
525
|
+
], [
|
526
|
+
void
|
527
|
+
], "nonpayable">;
|
521
528
|
hasRole: TypedContractMethod<[
|
522
529
|
role: BytesLike,
|
523
530
|
account: AddressLike
|
@@ -536,7 +543,12 @@ export interface SeedRoundFundraiser extends BaseContract {
|
|
536
543
|
], "view">;
|
537
544
|
owner: TypedContractMethod<[], [string], "view">;
|
538
545
|
projectToken: TypedContractMethod<[], [string], "view">;
|
539
|
-
refund: TypedContractMethod<[
|
546
|
+
refund: TypedContractMethod<[
|
547
|
+
_roundId: BigNumberish,
|
548
|
+
_user: AddressLike
|
549
|
+
], [
|
550
|
+
void
|
551
|
+
], "nonpayable">;
|
540
552
|
removeWhitelistedToken: TypedContractMethod<[
|
541
553
|
_token: AddressLike
|
542
554
|
], [
|
@@ -683,13 +695,13 @@ export interface SeedRoundFundraiser extends BaseContract {
|
|
683
695
|
getFunction(nameOrSignature: "ETH_ADDRESS"): TypedContractMethod<[], [string], "view">;
|
684
696
|
getFunction(nameOrSignature: "OPERATOR_ROLE"): TypedContractMethod<[], [string], "view">;
|
685
697
|
getFunction(nameOrSignature: "PRICE_PRECISION"): TypedContractMethod<[], [bigint], "view">;
|
698
|
+
getFunction(nameOrSignature: "TREASURER_ROLE"): TypedContractMethod<[], [string], "view">;
|
686
699
|
getFunction(nameOrSignature: "addWhitelistedToken"): TypedContractMethod<[
|
687
700
|
_token: AddressLike,
|
688
701
|
_price: BigNumberish
|
689
702
|
], [
|
690
703
|
void
|
691
704
|
], "nonpayable">;
|
692
|
-
getFunction(nameOrSignature: "claimTokens"): TypedContractMethod<[], [void], "nonpayable">;
|
693
705
|
getFunction(nameOrSignature: "claimTokensByRoundId"): TypedContractMethod<[_roundId: BigNumberish], [void], "nonpayable">;
|
694
706
|
getFunction(nameOrSignature: "contribute"): TypedContractMethod<[
|
695
707
|
_roundId: BigNumberish,
|
@@ -749,6 +761,7 @@ export interface SeedRoundFundraiser extends BaseContract {
|
|
749
761
|
], [
|
750
762
|
void
|
751
763
|
], "nonpayable">;
|
764
|
+
getFunction(nameOrSignature: "grantTreasurerRole"): TypedContractMethod<[treasurer: AddressLike], [void], "nonpayable">;
|
752
765
|
getFunction(nameOrSignature: "hasRole"): TypedContractMethod<[
|
753
766
|
role: BytesLike,
|
754
767
|
account: AddressLike
|
@@ -759,7 +772,12 @@ export interface SeedRoundFundraiser extends BaseContract {
|
|
759
772
|
getFunction(nameOrSignature: "isRoundActive"): TypedContractMethod<[_roundId: BigNumberish], [boolean], "view">;
|
760
773
|
getFunction(nameOrSignature: "owner"): TypedContractMethod<[], [string], "view">;
|
761
774
|
getFunction(nameOrSignature: "projectToken"): TypedContractMethod<[], [string], "view">;
|
762
|
-
getFunction(nameOrSignature: "refund"): TypedContractMethod<[
|
775
|
+
getFunction(nameOrSignature: "refund"): TypedContractMethod<[
|
776
|
+
_roundId: BigNumberish,
|
777
|
+
_user: AddressLike
|
778
|
+
], [
|
779
|
+
void
|
780
|
+
], "nonpayable">;
|
763
781
|
getFunction(nameOrSignature: "removeWhitelistedToken"): TypedContractMethod<[_token: AddressLike], [void], "nonpayable">;
|
764
782
|
getFunction(nameOrSignature: "renounceOwnership"): TypedContractMethod<[], [void], "nonpayable">;
|
765
783
|
getFunction(nameOrSignature: "renounceRole"): TypedContractMethod<[
|
package/dist/contracts.json
CHANGED
@@ -21,8 +21,8 @@
|
|
21
21
|
"Currency": "0xDB2e50234a3BE8aA4200C96712F190cf712cd8ec",
|
22
22
|
"Reward": "0xa5Ef2328aa2F6F231D15cdcF48503974D0938eD4",
|
23
23
|
"SeedRoundFundraiser": "0xbd520dbcb8e0b062D10d7879D27C20d214a262F6",
|
24
|
-
"SeedRoundFundraiser-implemented": "
|
24
|
+
"SeedRoundFundraiser-implemented": "0x40f56F138439fD5bB10741f5527A9DA05461636E",
|
25
25
|
"WETH": "0x08a2d38807B1D345b6c1642f8030a29DC2Cc7223",
|
26
|
-
"SeedRoundFundraiser-implemented-old": "
|
26
|
+
"SeedRoundFundraiser-implemented-old": "0xbd687508aBEb3DDd983323dD98145A9D1ebE3223"
|
27
27
|
}
|
28
28
|
}
|