From 51e4d281feeab0824aea20f640e735a1bab5e5b5 Mon Sep 17 00:00:00 2001 From: Billy Rennekamp Date: Tue, 10 Sep 2024 17:03:01 +0200 Subject: [PATCH] deployed again again --- contractData/84532-ExternalMetadata.json | 2 +- contractData/84532-Selection.json | 2 +- contractData/ABI-84532-Selection.json | 2 +- contracts/ExternalMetadata.sol | 11 ++++---- contracts/Selection.sol | 1 + docs/index.html | 4 +-- docs/selection.js | 4 +-- docs/selection.js.map | 2 +- index.html | 9 +------ src/selection.js | 33 +++++++++++++++--------- 10 files changed, 37 insertions(+), 33 deletions(-) diff --git a/contractData/84532-ExternalMetadata.json b/contractData/84532-ExternalMetadata.json index 422f77e..0c846ff 100644 --- a/contractData/84532-ExternalMetadata.json +++ b/contractData/84532-ExternalMetadata.json @@ -1 +1 @@ -{"address":"0x96E5DBb8D775d523303dC3549CC1049F0A249724","chain":{"chainId":84532,"name":"unknown"}} \ No newline at end of file +{"address":"0x081EBC966C9AA09e68422fCeDCe1C054354E997f","chain":{"chainId":84532,"name":"unknown"}} \ No newline at end of file diff --git a/contractData/84532-Selection.json b/contractData/84532-Selection.json index b9e81cb..91edae8 100644 --- a/contractData/84532-Selection.json +++ b/contractData/84532-Selection.json @@ -1 +1 @@ -{"address":"0xFD7E4290209FC87817a105E909B3eAB0E2Aba090","chain":{"chainId":84532,"name":"unknown"}} \ No newline at end of file +{"address":"0xbD37D3EcbD6f235fAC6d22Cb4b9f799Aa98f7A5F","chain":{"chainId":84532,"name":"unknown"}} \ No newline at end of file diff --git a/contractData/ABI-84532-Selection.json b/contractData/ABI-84532-Selection.json index 9ab1ea2..7f80729 100644 --- a/contractData/ABI-84532-Selection.json +++ b/contractData/ABI-84532-Selection.json @@ -1 +1 @@ -{"contractName":"Selection","abi":[{"inputs":[{"internalType":"address","name":"externalMetadata_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"override_","type":"uint256"}],"name":"BackgroundUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_toTokenId","type":"uint256"}],"name":"BatchMetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"bool","name":"success","type":"bool"},{"indexed":false,"internalType":"bytes","name":"returnData","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EthMoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"MetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"total","type":"uint256"}],"name":"adminMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"backgroundOverride","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"backgroundOverriden","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"override_","type":"uint256"}],"name":"changeBackground","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"internalType":"uint256","name":"toTokenId","type":"uint256"}],"name":"emitBatchMetadataUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"externalMetadata","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getBackgroundOverride","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"total","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceToMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proceedRecipient","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_to","type":"address"}],"name":"recoverUnsuccessfulPayment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startingDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"externalMetadata_","type":"address"}],"name":"updateExternalMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"paused_","type":"bool"}],"name":"updatePaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceToMint_","type":"uint256"}],"name":"updatePriceToMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"proceedRecipient_","type":"address"}],"name":"updateProceedRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"startingDate_","type":"uint256"}],"name":"updateStartingDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]} \ No newline at end of file +{"contractName":"Selection","abi":[{"inputs":[{"internalType":"address","name":"externalMetadata_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"override_","type":"uint256"}],"name":"BackgroundUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_toTokenId","type":"uint256"}],"name":"BatchMetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"bool","name":"success","type":"bool"},{"indexed":false,"internalType":"bytes","name":"returnData","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EthMoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"MetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"total","type":"uint256"}],"name":"adminMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"backgroundOverride","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"backgroundOverriden","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"override_","type":"uint256"}],"name":"changeBackground","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"internalType":"uint256","name":"toTokenId","type":"uint256"}],"name":"emitBatchMetadataUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"externalMetadata","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getBackgroundOverride","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"total","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceToMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proceedRecipient","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_to","type":"address"}],"name":"recoverUnsuccessfulPayment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startingDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"externalMetadata_","type":"address"}],"name":"updateExternalMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"paused_","type":"bool"}],"name":"updatePaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceToMint_","type":"uint256"}],"name":"updatePriceToMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"proceedRecipient_","type":"address"}],"name":"updateProceedRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"startingDate_","type":"uint256"}],"name":"updateStartingDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]} \ No newline at end of file diff --git a/contracts/ExternalMetadata.sol b/contracts/ExternalMetadata.sol index aefecd4..ffd4262 100644 --- a/contracts/ExternalMetadata.sol +++ b/contracts/ExternalMetadata.sol @@ -38,7 +38,7 @@ contract ExternalMetadata is Ownable { "background-position: 0 0, 0 4px, 4px -4px, -4px 0px;"; address payable public selection; - string public filename = "selection_15_35.js.gz"; + string public filename = "selection_16_14.js.gz"; constructor() {} @@ -84,8 +84,8 @@ contract ExternalMetadata is Ownable { '{"name":"Selection No. ', getName(tokenId), '",', - '"description": "In Selection, the focus of the work is focus itself.\n\n' - "The project is a fully on-chain generated collection of selection areas, the familiar marching ants conceived by Bill Atkinson which have become such a ubiquitous part of interface culture.\n" + '"description": "In Selection, the focus of the work is focus itself.\\n\\n', + "The project is a fully on-chain generated collection of selection areas, the familiar marching ants conceived by Bill Atkinson which have become such a ubiquitous part of interface culture.\\n", "Selection is released in partnership with Folia.", '","image": "', svg, @@ -174,13 +174,14 @@ contract ExternalMetadata is Ownable { bool backroundOverridden, uint256 backgroundOverride ) = getBackgroundOverride(tokenId); - uint256 totalStyles = 4; // 0: color // 1: white // 2: black // 3: transparent - uint256 bgStyle = bgStyleRand <= 7 + uint256 bgStyle = backroundOverridden + ? backgroundOverride + : bgStyleRand <= 7 ? 0 : (bgStyleRand <= 8 ? 1 : (bgStyleRand <= 9 ? 2 : 3)); string memory finalColor; diff --git a/contracts/Selection.sol b/contracts/Selection.sol index 4b9162d..8c187ac 100644 --- a/contracts/Selection.sol +++ b/contracts/Selection.sol @@ -70,6 +70,7 @@ contract Selection is Ownable, ERC2981, ERC721 { function changeBackground(uint256 tokenId, uint256 override_) public { require(_isApprovedOrOwner(_msgSender(), tokenId), "Not approved"); + require(override_ <= 3, "invalid override number"); backgroundOverride[tokenId] = override_; backgroundOverriden[tokenId] = true; emit BackgroundUpdated(tokenId, override_); diff --git a/docs/index.html b/docs/index.html index b4569b9..2012eb7 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,5 +1,5 @@ Selection, 2024 - Jan Robert Leegte \ No newline at end of file + background-position: 0 0, 0 4px, 4px -4px, -4px 0px;`;console.log({bgState:p,finalColor:e}),document.getElementsByTagName("svg")[0].style=e}function ey(){console.log("resizeEnded"),tV=window.innerWidth,tG=window.innerHeight,t0=parseInt((tK=tV>=tG?tV:tG)/tQ),ef()}window.onload=function(){console.log("init"),document.querySelector("svg").onclick=function(){tU++,ec(tj)},ec(tj),ef()},window.onresize=function(){console.log("clearTimeout",t),clearTimeout(t),t=setTimeout(ey,500)}}(); \ No newline at end of file diff --git a/docs/selection.js b/docs/selection.js index 0b2fe82..faf5040 100644 --- a/docs/selection.js +++ b/docs/selection.js @@ -1,6 +1,6 @@ let t;function e(t){return t&&t.__esModule?t.default:t}function i(t,{strict:e=!0}={}){return!!t&&"string"==typeof t&&(e?/^0x[0-9a-fA-F]*$/.test(t):t.startsWith("0x"))}function n(t){return i(t,{strict:!1})?Math.ceil((t.length-2)/2):t.length}const r="2.21.2";let o={getDocsUrl:({docsBaseUrl:t,docsPath:e="",docsSlug:i})=>e?`${t??"https://viem.sh"}${e}${i?`#${i}`:""}`:void 0,version:r};class s extends Error{constructor(t,e={}){let i=e.cause instanceof s?e.cause.details:e.cause?.message?e.cause.message:e.details,n=e.cause instanceof s&&e.cause.docsPath||e.docsPath,l=o.getDocsUrl?.({...e,docsPath:n});super([t||"An error occurred.","",...e.metaMessages?[...e.metaMessages,""]:[],...l?[`Docs: ${l}`]:[],...i?[`Details: ${i}`]:[],...o.version?[`Version: ${o.version}`]:[]].join("\n"),e.cause?{cause:e.cause}:void 0),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BaseError"}),this.details=i,this.docsPath=n,this.metaMessages=e.metaMessages,this.name=e.name??this.name,this.shortMessage=t,this.version=r}walk(t){return function t(e,i){return i?.(e)?e:e&&"object"==typeof e&&"cause"in e?t(e.cause,i):i?null:e}(this,t)}}class l extends s{constructor({expectedLength:t,givenLength:e}){super(`ABI encoding params/values length mismatch. Expected length (params): ${t} -Given length (values): ${e}`,{name:"AbiEncodingLengthMismatchError"})}}class p extends s{constructor({expectedSize:t,givenSize:e}){super(`Expected bytes${t}, got bytes${e}.`,{name:"BytesSizeMismatchError"})}}class h extends s{constructor(t){super(`Type "${t}" is not supported for packed encoding.`,{name:"UnsupportedPackedAbiType"})}}class u extends s{constructor({address:t}){super(`Address "${t}" is invalid.`,{metaMessages:["- Address must be a hex value of 20 bytes (40 hex characters).","- Address must match its checksum counterpart."],name:"InvalidAddressError"})}}class a extends Map{constructor(t){super(),Object.defineProperty(this,"maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=t}set(t,e){return super.set(t,e),this.maxSize&&this.size>this.maxSize&&this.delete(this.keys().next().value),this}}class f extends s{constructor({size:t,targetSize:e,type:i}){super(`${i.charAt(0).toUpperCase()}${i.slice(1).toLowerCase()} size (${t}) exceeds padding size (${e}).`,{name:"SizeExceedsPaddingSizeError"})}}function d(t,{dir:e,size:i=32}={}){return"string"==typeof t?function(t,{dir:e,size:i=32}={}){if(null===i)return t;let n=t.replace("0x","");if(n.length>2*i)throw new f({size:Math.ceil(n.length/2),targetSize:i,type:"hex"});return`0x${n["right"===e?"padEnd":"padStart"](2*i,"0")}`}(t,{dir:e,size:i}):function(t,{dir:e,size:i=32}={}){if(null===i)return t;if(t.length>i)throw new f({size:t.length,targetSize:i,type:"bytes"});let n=new Uint8Array(i);for(let r=0;re)throw new c({givenSize:n(t),maxSize:e})}const m=/*#__PURE__*/Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function v(t,e={}){let i=`0x${Number(t)}`;return"number"==typeof e.size?(y(i,{size:e.size}),d(i,{size:e.size})):i}function x(t,e={}){let i="";for(let e=0;ei||o=L.zero&&t<=L.nine?t-L.zero:t>=L.A&&t<=L.F?t-(L.A-10):t>=L.a&&t<=L.f?t-(L.a-10):void 0}function T(t,e={}){let i=t;e.size&&(y(i,{size:e.size}),i=d(i,{dir:"right",size:e.size}));let n=i.slice(2);n.length%2&&(n=`0${n}`);let r=n.length/2,o=new Uint8Array(r);for(let t=0,e=0;t0&&!e.includes(t.length))throw Error(`Expected Uint8Array of length ${e}, not of length=${t.length}`)}function A(t){if("function"!=typeof t||"function"!=typeof t.create)throw Error("Hash should be wrapped by utils.wrapConstructor");N(t.outputLen),N(t.blockLen)}function B(t,e=!0){if(t.destroyed)throw Error("Hash instance has been destroyed");if(e&&t.finished)throw Error("Hash#digest() has already been called")}function w(t,e){b(t);let i=e.outputLen;if(t.length>R&M)}:{h:0|Number(t>>R&M),l:0|Number(t&M)}}function z(t,e=!1){let i=new Uint32Array(t.length),n=new Uint32Array(t.length);for(let r=0;rBigInt(t>>>0)<>>0);D.toBig=W;const k=(t,e,i)=>t>>>i;D.shrSH=k;const q=(t,e,i)=>t<<32-i|e>>>i;D.shrSL=q;const H=(t,e,i)=>t>>>i|e<<32-i;D.rotrSH=H;const Z=(t,e,i)=>t<<32-i|e>>>i;D.rotrSL=Z;const U=(t,e,i)=>t<<64-i|e>>>i-32;D.rotrBH=U;const $=(t,e,i)=>t>>>i-32|e<<64-i;D.rotrBL=$;const j=(t,e)=>e;D.rotr32H=j;const J=(t,e)=>t;D.rotr32L=J;const V=(t,e,i)=>t<>>32-i;D.rotlSH=V;const G=(t,e,i)=>e<>>32-i;D.rotlSL=G;const K=(t,e,i)=>e<>>64-i;D.rotlBH=K;const Q=(t,e,i)=>t<>>64-i;function tt(t,e,i,n){let r=(e>>>0)+(n>>>0);return{h:t+i+(r/4294967296|0)|0,l:0|r}}D.rotlBL=Q,D.add=tt;const te=(t,e,i)=>(t>>>0)+(e>>>0)+(i>>>0);D.add3L=te;const ti=(t,e,i,n)=>e+i+n+(t/4294967296|0)|0;D.add3H=ti;const tn=(t,e,i,n)=>(t>>>0)+(e>>>0)+(i>>>0)+(n>>>0);D.add4L=tn;const tr=(t,e,i,n,r)=>e+i+n+r+(t/4294967296|0)|0;D.add4H=tr;const to=(t,e,i,n,r)=>(t>>>0)+(e>>>0)+(i>>>0)+(n>>>0)+(r>>>0);D.add5L=to;const ts=(t,e,i,n,r,o)=>e+i+n+r+o+(t/4294967296|0)|0;D.add5H=ts,D.default={fromBig:F,split:z,toBig:W,shrSH:k,shrSL:q,rotrSH:H,rotrSL:Z,rotrBH:U,rotrBL:$,rotr32H:j,rotr32L:J,rotlSH:V,rotlSL:G,rotlBH:K,rotlBL:Q,add:tt,add3L:te,add3H:ti,add4L:tn,add4H:tr,add5H:ts,add5L:to};var tl={};/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */Object.defineProperty(tl,"__esModule",{value:!0}),tl.randomBytes=tl.wrapXOFConstructorWithOpts=tl.wrapConstructorWithOpts=tl.wrapConstructor=tl.checkOpts=tl.Hash=tl.concatBytes=tl.toBytes=tl.utf8ToBytes=tl.asyncLoop=tl.nextTick=tl.hexToBytes=tl.bytesToHex=tl.isLE=tl.rotr=tl.createView=tl.u32=tl.u8=void 0;var tp={};Object.defineProperty(tp,"__esModule",{value:!0}),tp.crypto=void 0,tp.crypto="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0;const th=t=>t instanceof Uint8Array;if(tl.u8=t=>new Uint8Array(t.buffer,t.byteOffset,t.byteLength),tl.u32=t=>new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4)),tl.createView=t=>new DataView(t.buffer,t.byteOffset,t.byteLength),tl.rotr=(t,e)=>t<<32-e|t>>>e,tl.isLE=68===new Uint8Array(new Uint32Array([287454020]).buffer)[0],!tl.isLE)throw Error("Non little-endian hardware is not supported");const tu=/* @__PURE__ */Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));tl.bytesToHex=function(t){if(!th(t))throw Error("Uint8Array expected");let e="";for(let i=0;i{};async function tf(t,e,i){let n=Date.now();for(let r=0;r=0&&tt+e.length,0)),i=0;return t.forEach(t=>{if(!th(t))throw Error("Uint8Array expected");e.set(t,i),i+=t.length}),e},tl.Hash=class{clone(){return this._cloneInto()}};const tc={}.toString;tl.checkOpts=function(t,e){if(void 0!==e&&"[object Object]"!==tc.call(e))throw Error("Options should be object or undefined");return Object.assign(t,e)},tl.wrapConstructor=function(t){let e=e=>t().update(tP(e)).digest(),i=t();return e.outputLen=i.outputLen,e.blockLen=i.blockLen,e.create=()=>t(),e},tl.wrapConstructorWithOpts=function(t){let e=(e,i)=>t(i).update(tP(e)).digest(),i=t({});return e.outputLen=i.outputLen,e.blockLen=i.blockLen,e.create=e=>t(e),e},tl.wrapXOFConstructorWithOpts=function(t){let e=(e,i)=>t(i).update(tP(e)).digest(),i=t({});return e.outputLen=i.outputLen,e.blockLen=i.blockLen,e.create=e=>t(e),e},tl.randomBytes=function(t=32){if(tp.crypto&&"function"==typeof tp.crypto.getRandomValues)return tp.crypto.getRandomValues(new Uint8Array(t));throw Error("crypto.getRandomValues must be defined")};const[ty,tm,tv]=[[],[],[]],tx=/* @__PURE__ */BigInt(0),tI=/* @__PURE__ */BigInt(1),tg=/* @__PURE__ */BigInt(2),tC=/* @__PURE__ */BigInt(7),t_=/* @__PURE__ */BigInt(256),tL=/* @__PURE__ */BigInt(113);for(let t=0,e=tI,i=1,n=0;t<24;t++){[i,n]=[n,(2*i+3*n)%5],ty.push(2*(5*n+i)),tm.push((t+1)*(t+2)/2%64);let r=tx;for(let t=0;t<7;t++)(e=(e<>tC)*tL)%t_)&tg&&(r^=tI<<(tI<i>32?(0,D.rotlBH)(t,e,i):(0,D.rotlSH)(t,e,i),tY=(t,e,i)=>i>32?(0,D.rotlBL)(t,e,i):(0,D.rotlSL)(t,e,i);function tO(t,e=24){let i=new Uint32Array(10);for(let n=24-e;n<24;n++){for(let e=0;e<10;e++)i[e]=t[e]^t[e+10]^t[e+20]^t[e+30]^t[e+40];for(let e=0;e<10;e+=2){let n=(e+8)%10,r=(e+2)%10,o=i[r],s=i[r+1],l=tX(o,s,1)^i[n],p=tY(o,s,1)^i[n+1];for(let i=0;i<50;i+=10)t[e+i]^=l,t[e+i+1]^=p}let e=t[2],r=t[3];for(let i=0;i<24;i++){let n=tm[i],o=tX(e,r,n),s=tY(e,r,n),l=ty[i];e=t[l],r=t[l+1],t[l]=o,t[l+1]=s}for(let e=0;e<50;e+=10){for(let n=0;n<10;n++)i[n]=t[e+n];for(let n=0;n<10;n++)t[e+n]^=~i[(n+2)%10]&i[(n+4)%10]}t[0]^=tE[n],t[1]^=tT[n]}i.fill(0)}Y.keccakP=tO;class tN extends tl.Hash{constructor(t,e,i,n=!1,r=24){if(super(),this.blockLen=t,this.suffix=e,this.outputLen=i,this.enableXOF=n,this.rounds=r,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,(0,O.number)(i),0>=this.blockLen||this.blockLen>=200)throw Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=(0,tl.u32)(this.state)}keccak(){tO(this.state32,this.rounds),this.posOut=0,this.pos=0}update(t){(0,O.exists)(this);let{blockLen:e,state:i}=this,n=(t=(0,tl.toBytes)(t)).length;for(let r=0;r=i&&this.keccak();let o=Math.min(i-this.posOut,r-n);t.set(e.subarray(this.posOut,this.posOut+o),n),this.posOut+=o,n+=o}return t}xofInto(t){if(!this.enableXOF)throw Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return(0,O.number)(t),this.xofInto(new Uint8Array(t))}digestInto(t){if((0,O.output)(t,this),this.finished)throw Error("digest() was already called");return this.writeInto(t),this.destroy(),t}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(t){let{blockLen:e,suffix:i,outputLen:n,rounds:r,enableXOF:o}=this;return t||(t=new tN(e,i,n,o,r)),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=r,t.suffix=i,t.outputLen=n,t.enableXOF=o,t.destroyed=this.destroyed,t}}Y.Keccak=tN;const tS=(t,e,i)=>(0,tl.wrapConstructor)(()=>new tN(e,t,i));Y.sha3_224=tS(6,144,28),Y.sha3_256=tS(6,136,32),Y.sha3_384=tS(6,104,48),Y.sha3_512=tS(6,72,64),Y.keccak_224=tS(1,144,28),Y.keccak_256=tS(1,136,32),Y.keccak_384=tS(1,104,48),Y.keccak_512=tS(1,72,64);const tb=(t,e,i)=>(0,tl.wrapXOFConstructorWithOpts)((n={})=>new tN(e,t,void 0===n.dkLen?i:n.dkLen,!0));function tA(t,e){let n=(0,Y.keccak_256)(i(t,{strict:!1})?function(t,e={}){return"number"==typeof t||"bigint"==typeof t?T(I(t,e)):"boolean"==typeof t?function(t,e={}){let i=new Uint8Array(1);return(i[0]=Number(t),"number"==typeof e.size)?(y(i,{size:e.size}),d(i,{size:e.size})):i}(t,e):i(t)?T(t,e):X(t,e)}(t):t);return"bytes"===(e||"hex")?n:function(t,e={}){return"number"==typeof t||"bigint"==typeof t?I(t,e):"string"==typeof t?C(t,e):"boolean"==typeof t?v(t,e):x(t,e)}(n)}Y.shake128=tb(31,168,16),Y.shake256=tb(31,136,32);const tB=/*#__PURE__*/new a(8192),tw=/^0x[a-fA-F0-9]{40}$/,tD=/*#__PURE__*/new a(8192);function tM(t){return`0x${t.reduce((t,e)=>t+e.replace("0x",""),"")}`}const tR=/^(.*)\[([0-9]*)\]$/,tF=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,tz=/^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;var tW={};!function(){function t(t,e,i){P.biginteger_used=1,null!=t&&("number"==typeof t&&void 0===e?this.fromInt(t):"number"==typeof t?this.fromNumber(t,e,i):null==e&&"string"!=typeof t?this.fromString(t,256):this.fromString(t,e))}function e(){return new t(null,void 0,void 0)}function i(t,e){var i=E[t.charCodeAt(e)];return null==i?-1:i}function n(t){var i=e();return i.fromInt(t),i}function r(t){var e,i=1;return 0!=(e=t>>>16)&&(t=e,i+=16),0!=(e=t>>8)&&(t=e,i+=8),0!=(e=t>>4)&&(t=e,i+=4),0!=(e=t>>2)&&(t=e,i+=2),0!=t>>1&&(i+=1),i}function o(t){this.m=t}function s(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=15;0<=--o;){var l=32767&this[t],p=this[t++]>>15,h=e*l+p*s;r=((l=s*l+((32767&h)<<15)+i[n]+(1073741823&r))>>>30)+(h>>>15)+e*p+(r>>>30),i[n++]=1073741823&l}return r},m=30):"Netscape"!=m?(t.prototype.am=function(t,e,i,n,r,o){for(;0<=--o;){var s=e*this[t++]+i[n]+r;r=Math.floor(s/67108864),i[n++]=67108863&s}return r},m=26):(t.prototype.am=function(t,e,i,n,r,o){var s=16383&e;for(e>>=14;0<=--o;){var l=16383&this[t],p=this[t++]>>14,h=e*l+p*s;r=((l=s*l+((16383&h)<<14)+i[n]+r)>>28)+(h>>14)+e*p,i[n++]=268435455&l}return r},m=28),t.prototype.DB=m,t.prototype.DM=(1<=L;++L)E[m++]=L;for(L=10,m=97;36>L;++L)E[m++]=L;for(L=10,m=65;36>L;++L)E[m++]=L;o.prototype.convert=function(t){return 0>t.s||0<=t.compareTo(this.m)?t.mod(this.m):t},o.prototype.revert=function(t){return t},o.prototype.reduce=function(t){t.divRemTo(this.m,null,t)},o.prototype.mulTo=function(t,e,i){t.multiplyTo(e,i),this.reduce(i)},o.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},s.prototype.convert=function(i){var n=e();return i.abs().dlShiftTo(this.m.t,n),n.divRemTo(this.m,null,n),0>i.s&&0>15)*this.mpl&this.um)<<15)&t.DM;for(i=e+this.m.t,t[i]+=this.m.am(0,n,t,e,0,this.m.t);t[i]>=t.DV;)t[i]-=t.DV,t[++i]++}t.clamp(),t.drShiftTo(this.m.t,t),0<=t.compareTo(this.m)&&t.subTo(this.m,t)},s.prototype.mulTo=function(t,e,i){t.multiplyTo(e,i),this.reduce(i)},s.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},t.prototype.copyTo=function(t){for(var e=this.t-1;0<=e;--e)t[e]=this[e];t.t=this.t,t.s=this.s},t.prototype.fromInt=function(t){this.t=1,this.s=0>t?-1:0,0t?this[0]=t+this.DV:this.t=0},t.prototype.fromString=function(e,n){if(16==n)var r=4;else if(8==n)r=3;else if(256==n)r=8;else if(2==n)r=1;else if(32==n)r=5;else if(4==n)r=2;else{this.fromRadix(e,n);return}this.s=this.t=0;for(var o=e.length,s=!1,l=0;0<=--o;){var p=8==r?255&e[o]:i(e,o);0>p?"-"==e.charAt(o)&&(s=!0):(s=!1,0==l?this[this.t++]=p:l+r>this.DB?(this[this.t-1]|=(p&(1<>this.DB-l):this[this.t-1]|=p<=this.DB&&(l-=this.DB))}8==r&&0!=(128&e[0])&&(this.s=-1,0>r|l,l=(this[i]&o)<=this.t)e.t=0;else{var n=t%this.DB,r=this.DB-n,o=(1<>n;for(var s=i+1;s>n;0>=this.DB;if(t.t>=this.DB;n+=this.s}else{for(n+=this.s;i>=this.DB;n-=t.s}e.s=0>n?-1:0,-1>n?e[i++]=this.DV+n:0=e.DV&&(t[i+e.t]-=e.DV,t[i+e.t+1]=1)}0=s.t)){var l=this.abs();if(l.t>this.F2:0),f=this.FV/a;a=(1<h&&t.ZERO.subTo(o,o)}}}},t.prototype.invDigit=function(){if(1>this.t)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return 0<(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)?this.DV-e:-e},t.prototype.isEven=function(){return 0==(0i)return t.ONE;var o=e(),s=e(),l=n.convert(this),p=r(i)-1;for(l.copyTo(o);0<=--p;)if(n.sqrTo(o,s),0<(i&1<this.s)return"-"+this.negate().toString(t);if(16==t)t=4;else if(8==t)t=3;else if(2==t)t=1;else if(32==t)t=5;else{if(4!=t)return this.toRadix(t);t=2}var e,i=(1<>s)&&(n=!0,r="0123456789abcdefghijklmnopqrstuvwxyz".charAt(e));0<=o;)s>(s+=this.DB-t):(e=this[o]>>(s-=t)&i,0>=s&&(s+=this.DB,--o)),0this.s?this.negate():this},t.prototype.compareTo=function(t){var e=this.s-t.s;if(0!=e)return e;var i=this.t;if(0!=(e=i-t.t))return 0>this.s?-e:e;for(;0<=--i;)if(0!=(e=this[i]-t[i]))return e;return 0},t.prototype.bitLength=function(){return 0>=this.t?0:this.DB*(this.t-1)+r(this[this.t-1]^this.s&this.DM)},t.prototype.mod=function(i){var n=e();return this.abs().divRemTo(i,null,n),0>this.s&&0t||e.isEven()?new o(e):new s(e);return this.exp(t,i)},t.ZERO=n(0),t.ONE=n(1),a.prototype.convert=f,a.prototype.revert=f,a.prototype.mulTo=function(t,e,i){t.multiplyTo(e,i)},a.prototype.sqrTo=function(t,e){t.squareTo(e)},d.prototype.convert=function(t){if(0>t.s||t.t>2*this.m.t)return t.mod(this.m);if(0>t.compareTo(this.m))return t;var i=e();return t.copyTo(i),this.reduce(i),i},d.prototype.revert=function(t){return t},d.prototype.reduce=function(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);0>t.compareTo(this.r2);)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);0<=t.compareTo(this.m);)t.subTo(this.m,t)},d.prototype.mulTo=function(t,e,i){t.multiplyTo(e,i),this.reduce(i)},d.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)};var T=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],X=67108864/T[T.length-1];t.prototype.chunkSize=function(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},t.prototype.toRadix=function(t){if(null==t&&(t=10),0==this.signum()||2>t||36u?"-"==e.charAt(h)&&0==this.signum()&&(s=!0):(p=n*p+u,++l>=r&&(this.dMultiply(o),this.dAddOffset(p,0),p=l=0))}0e)this.fromInt(1);else for(this.fromNumber(e,n),this.testBit(e-1)||this.bitwiseTo(t.ONE.shiftLeft(e-1),p,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(i);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(t.ONE.shiftLeft(e-1),this)}else{var r=7&e;(n=[]).length=(e>>3)+1,i.nextBytes(n),n[0]=0>=this.DB;if(t.t>=this.DB;n+=this.s}else{for(n+=this.s;i>=this.DB;n+=t.s}e.s=0>n?-1:0,0n&&(e[i++]=this.DV+n),e.t=i,e.clamp()},t.prototype.dMultiply=function(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},t.prototype.dAddOffset=function(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},t.prototype.multiplyLowerTo=function(t,e,i){var n,r=Math.min(this.t+t.t,e);for(i.s=0,i.t=r;0=t)return 0;var e=this.DV%t,i=0>this.s?t-1:0;if(0=r)return!1;var o=n.shiftRight(r);(i=i+1>>1)>T.length&&(i=T.length);for(var s=e(),l=0;lthis.s){if(1==this.t)return this[0]-this.DV;if(0==this.t)return -1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<>24},t.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},t.prototype.signum=function(){return 0>this.s?-1:0>=this.t||1==this.t&&0>=this[0]?0:1},t.prototype.toByteArray=function(){var t=this.t,e=[];e[0]=this.s;var i,n=this.DB-t*this.DB%8,r=0;if(0>n)!=(this.s&this.DM)>>n&&(e[r++]=i|this.s<n?i=(this[t]&(1<>(n+=this.DB-8):(i=this[t]>>(n-=8)&255,0>=n&&(n+=this.DB,--t)),0!=(128&i)&&(i|=-256),0==r&&(128&this.s)!=(128&i)&&++r,(0this.compareTo(t)?this:t},t.prototype.max=function(t){return 0t?this.rShiftTo(-t,i):this.lShiftTo(t,i),i},t.prototype.shiftRight=function(t){var i=e();return 0>t?this.lShiftTo(-t,i):this.rShiftTo(t,i),i},t.prototype.getLowestSetBit=function(){for(var t=0;t>=16,i+=16),0==(255&t)&&(t>>=8,i+=8),0==(15&t)&&(t>>=4,i+=4),0==(3&t)&&(t>>=2,i+=2),0==(1&t)&&++i,t=i}return e+t}return 0>this.s?this.t*this.DB:-1},t.prototype.bitCount=function(){for(var t=0,e=this.s&this.DM,i=0;i=this.t?0!=this.s:0!=(this[e]&1<=l)return p;var h=18>l?1:48>l?3:144>l?4:768>l?5:6,u=8>l?new o(i):i.isEven()?new d(i):new s(i),a=[],f=3,P=h-1,c=(1<=P)var x=t[y]>>l-P&c;else x=(t[y]&(1<>this.DB+l-P);for(f=h;0==(1&x);)x>>=1,--f;if(0>(l-=f)&&(l+=this.DB,--y),m)a[x].copyTo(p),m=!1;else{for(;1--l&&(l=this.DB-1,--y)}return u.revert(p)},t.prototype.modInverse=function(e){var i=e.isEven();if(this.isEven()&&i||0==e.signum())return t.ZERO;for(var r=e.clone(),o=this.clone(),s=n(1),l=n(0),p=n(0),h=n(1);0!=r.signum();){for(;r.isEven();)r.rShiftTo(1,r),i?(s.isEven()&&l.isEven()||(s.addTo(this,s),l.subTo(e,l)),s.rShiftTo(1,s)):l.isEven()||l.subTo(e,l),l.rShiftTo(1,l);for(;o.isEven();)o.rShiftTo(1,o),i?(p.isEven()&&h.isEven()||(p.addTo(this,p),h.subTo(e,h)),p.rShiftTo(1,p)):h.isEven()||h.subTo(e,h),h.rShiftTo(1,h);0<=r.compareTo(o)?(r.subTo(o,r),i&&s.subTo(p,s),l.subTo(h,l)):(o.subTo(r,o),i&&p.subTo(s,p),h.subTo(l,h))}return 0!=o.compareTo(t.ONE)?t.ZERO:0<=h.compareTo(e)?h.subtract(e):0>h.signum()?(h.addTo(e,h),0>h.signum()?h.add(e):h):h},t.prototype.pow=function(t){return this.exp(t,new a)},t.prototype.gcd=function(t){var e=0>this.s?this.negate():this.clone();if(t=0>t.s?t.negate():t.clone(),0>e.compareTo(t)){var i=e;e=t,t=i}i=e.getLowestSetBit();var n=t.getLowestSetBit();if(0>n)return e;for(it.compareTo(e)},t.op_Addition=function(e,i){return new t(e,void 0,void 0).add(new t(i,void 0,void 0))},t.op_Subtraction=function(e,i){return new t(e,void 0,void 0).subtract(new t(i,void 0,void 0))},t.Int128Mul=function(e,i){return new t(e,void 0,void 0).multiply(new t(i,void 0,void 0))},t.op_Division=function(t,e){return t.divide(e)},t.prototype.ToDouble=function(){return parseFloat(this.toString())},m=function(t,e){var i;if(void 0===Object.getOwnPropertyNames)for(i in e.prototype)(void 0===t.prototype[i]||t.prototype[i]===Object.prototype[i])&&(t.prototype[i]=e.prototype[i]);else for(var n=Object.getOwnPropertyNames(e.prototype),r=0;rt||2147483647t?Math.ceil(t):Math.floor(t):~~t}:I&&"function"==typeof Number.toInteger?function(t){return Number.toInteger(t)}:_||C?function(t){return parseInt(t,10)}:y?function(t){return -2147483648>t||2147483647t?Math.ceil(t):Math.floor(t):0|t}:function(t){return 0>t?Math.ceil(t):Math.floor(t)},P.Clear=function(t){t.length=0},P.PI=3.141592653589793,P.PI2=6.283185307179586,P.IntPoint=function(){var t=arguments,e=t.length;this.Y=this.X=0,P.use_xyz?(this.Z=0,3===e?(this.X=t[0],this.Y=t[1],this.Z=t[2]):2===e?(this.X=t[0],this.Y=t[1],this.Z=0):1===e?t[0]instanceof P.DoublePoint?(t=t[0],this.X=P.Clipper.Round(t.X),this.Y=P.Clipper.Round(t.Y),this.Z=0):(void 0===(t=t[0]).Z&&(t.Z=0),this.X=t.X,this.Y=t.Y,this.Z=t.Z):this.Z=this.Y=this.X=0):2===e?(this.X=t[0],this.Y=t[1]):1===e?t[0]instanceof P.DoublePoint?(t=t[0],this.X=P.Clipper.Round(t.X),this.Y=P.Clipper.Round(t.Y)):(t=t[0],this.X=t.X,this.Y=t.Y):this.Y=this.X=0},P.IntPoint.op_Equality=function(t,e){return t.X===e.X&&t.Y===e.Y},P.IntPoint.op_Inequality=function(t,e){return t.X!==e.X||t.Y!==e.Y},P.IntPoint0=function(){this.Y=this.X=0,P.use_xyz&&(this.Z=0)},P.IntPoint0.prototype=P.IntPoint.prototype,P.IntPoint1=function(t){this.X=t.X,this.Y=t.Y,P.use_xyz&&(this.Z=void 0===t.Z?0:t.Z)},P.IntPoint1.prototype=P.IntPoint.prototype,P.IntPoint1dp=function(t){this.X=P.Clipper.Round(t.X),this.Y=P.Clipper.Round(t.Y),P.use_xyz&&(this.Z=0)},P.IntPoint1dp.prototype=P.IntPoint.prototype,P.IntPoint2=function(t,e,i){this.X=t,this.Y=e,P.use_xyz&&(this.Z=void 0===i?0:i)},P.IntPoint2.prototype=P.IntPoint.prototype,P.IntRect=function(){var t=arguments,e=t.length;4===e?(this.left=t[0],this.top=t[1],this.right=t[2],this.bottom=t[3]):1===e?(t=t[0],this.left=t.left,this.top=t.top,this.right=t.right,this.bottom=t.bottom):this.bottom=this.right=this.top=this.left=0},P.IntRect0=function(){this.bottom=this.right=this.top=this.left=0},P.IntRect0.prototype=P.IntRect.prototype,P.IntRect1=function(t){this.left=t.left,this.top=t.top,this.right=t.right,this.bottom=t.bottom},P.IntRect1.prototype=P.IntRect.prototype,P.IntRect4=function(t,e,i,n){this.left=t,this.top=e,this.right=i,this.bottom=n},P.IntRect4.prototype=P.IntRect.prototype,P.ClipType={ctIntersection:0,ctUnion:1,ctDifference:2,ctXor:3},P.PolyType={ptSubject:0,ptClip:1},P.PolyFillType={pftEvenOdd:0,pftNonZero:1,pftPositive:2,pftNegative:3},P.JoinType={jtSquare:0,jtRound:1,jtMiter:2},P.EndType={etOpenSquare:0,etOpenRound:1,etOpenButt:2,etClosedLine:3,etClosedPolygon:4},P.EdgeSide={esLeft:0,esRight:1},P.Direction={dRightToLeft:0,dLeftToRight:1},P.TEdge=function(){this.Bot=new P.IntPoint0,this.Curr=new P.IntPoint0,this.Top=new P.IntPoint0,this.Delta=new P.IntPoint0,this.Dx=0,this.PolyTyp=P.PolyType.ptSubject,this.Side=P.EdgeSide.esLeft,this.OutIdx=this.WindCnt2=this.WindCnt=this.WindDelta=0,this.PrevInSEL=this.NextInSEL=this.PrevInAEL=this.NextInAEL=this.NextInLML=this.Prev=this.Next=null},P.IntersectNode=function(){this.Edge2=this.Edge1=null,this.Pt=new P.IntPoint0},P.MyIntersectNodeSort=function(){},P.MyIntersectNodeSort.Compare=function(t,e){var i=e.Pt.Y-t.Pt.Y;return 0i?-1:0},P.LocalMinima=function(){this.Y=0,this.Next=this.RightBound=this.LeftBound=null},P.Scanbeam=function(){this.Y=0,this.Next=null},P.Maxima=function(){this.X=0,this.Prev=this.Next=null},P.OutRec=function(){this.Idx=0,this.IsOpen=this.IsHole=!1,this.PolyNode=this.BottomPt=this.Pts=this.FirstLeft=null},P.OutPt=function(){this.Idx=0,this.Pt=new P.IntPoint0,this.Prev=this.Next=null},P.Join=function(){this.OutPt2=this.OutPt1=null,this.OffPt=new P.IntPoint0},P.ClipperBase=function(){this.m_CurrentLM=this.m_MinimaList=null,this.m_edges=[],this.PreserveCollinear=this.m_HasOpenPaths=this.m_UseFullRange=!1,this.m_ActiveEdges=this.m_PolyOuts=this.m_Scanbeam=null},P.ClipperBase.horizontal=-9007199254740992,P.ClipperBase.Skip=-2,P.ClipperBase.Unassigned=-1,P.ClipperBase.tolerance=1e-20,P.ClipperBase.loRange=47453132,P.ClipperBase.hiRange=0xfffffffffffff,P.ClipperBase.near_zero=function(t){return t>-P.ClipperBase.tolerance&&ti.X==e.Xi.Y==e.Yi.X==e.Xi.Y==e.YP.ClipperBase.hiRange||t.Y>P.ClipperBase.hiRange||-t.X>P.ClipperBase.hiRange||-t.Y>P.ClipperBase.hiRange)&&P.Error("Coordinate outside allowed range in RangeTest()."):(t.X>P.ClipperBase.loRange||t.Y>P.ClipperBase.loRange||-t.X>P.ClipperBase.loRange||-t.Y>P.ClipperBase.loRange)&&(e.Value=!0,this.RangeTest(t,e))},P.ClipperBase.prototype.InitEdge=function(t,e,i,n){t.Next=e,t.Prev=i,t.Curr.X=n.X,t.Curr.Y=n.Y,P.use_xyz&&(t.Curr.Z=n.Z),t.OutIdx=-1},P.ClipperBase.prototype.InitEdge2=function(t,e){t.Curr.Y>=t.Next.Curr.Y?(t.Bot.X=t.Curr.X,t.Bot.Y=t.Curr.Y,P.use_xyz&&(t.Bot.Z=t.Curr.Z),t.Top.X=t.Next.Curr.X,t.Top.Y=t.Next.Curr.Y,P.use_xyz&&(t.Top.Z=t.Next.Curr.Z)):(t.Top.X=t.Curr.X,t.Top.Y=t.Curr.Y,P.use_xyz&&(t.Top.Z=t.Curr.Z),t.Bot.X=t.Next.Curr.X,t.Bot.Y=t.Next.Curr.Y,P.use_xyz&&(t.Bot.Z=t.Next.Curr.Z)),this.SetDx(t),t.PolyTyp=e},P.ClipperBase.prototype.FindNextLocMin=function(t){for(var e;;){for(;P.IntPoint.op_Inequality(t.Bot,t.Prev.Bot)||P.IntPoint.op_Equality(t.Curr,t.Top);)t=t.Next;if(t.Dx!==P.ClipperBase.horizontal&&t.Prev.Dx!==P.ClipperBase.horizontal)break;for(;t.Prev.Dx===P.ClipperBase.horizontal;)t=t.Prev;for(e=t;t.Dx===P.ClipperBase.horizontal;)t=t.Next;if(t.Top.Y!==t.Prev.Bot.Y){e.Prev.Bot.Xn.Next.Top.X&&(n=i.Prev)}for(;t!==n;)t.NextInLML=t.Next,t.Dx===P.ClipperBase.horizontal&&t!==r&&t.Bot.X!==t.Prev.Top.X&&this.ReverseHorizontal(t),t=t.Next;t.Dx===P.ClipperBase.horizontal&&t!==r&&t.Bot.X!==t.Prev.Top.X&&this.ReverseHorizontal(t),n=n.Next}else{for(;n.Top.Y===n.Prev.Bot.Y&&n.Prev.OutIdx!==P.ClipperBase.Skip;)n=n.Prev;if(n.Dx===P.ClipperBase.horizontal&&n.Prev.OutIdx!==P.ClipperBase.Skip){for(i=n;i.Next.Dx===P.ClipperBase.horizontal;)i=i.Next;(i.Next.Top.X===n.Prev.Top.X||i.Next.Top.X>n.Prev.Top.X)&&(n=i.Next)}for(;t!==n;)t.NextInLML=t.Prev,t.Dx===P.ClipperBase.horizontal&&t!==r&&t.Bot.X!==t.Next.Top.X&&this.ReverseHorizontal(t),t=t.Prev;t.Dx===P.ClipperBase.horizontal&&t!==r&&t.Bot.X!==t.Next.Top.X&&this.ReverseHorizontal(t),n=n.Prev}return n},P.ClipperBase.prototype.AddPath=function(t,e,i){P.use_lines?i||e!==P.PolyType.ptClip||P.Error("AddPath: Open paths must be subject."):i||P.Error("AddPath: Open paths have been disabled.");var n=t.length-1;if(i)for(;0n||!i&&1>n)return!1;for(var r=[],o=0;o<=n;o++)r.push(new P.TEdge);var s=!0;r[1].Curr.X=t[1].X,r[1].Curr.Y=t[1].Y,P.use_xyz&&(r[1].Curr.Z=t[1].Z);var l={Value:this.m_UseFullRange};for(this.RangeTest(t[0],l),this.m_UseFullRange=l.Value,l.Value=this.m_UseFullRange,this.RangeTest(t[n],l),this.m_UseFullRange=l.Value,this.InitEdge(r[0],r[1],r[n],t[0]),this.InitEdge(r[n],r[0],r[n-1],t[n]),o=n-1;1<=o;--o)l.Value=this.m_UseFullRange,this.RangeTest(t[o],l),this.m_UseFullRange=l.Value,this.InitEdge(r[o],r[o+1],r[o-1],t[o]);for(o=t=n=r[0];;)if(t.Curr===t.Next.Curr&&(i||t.Next!==n)){if(t===t.Next)break;t===n&&(n=t.Next),o=t=this.RemoveEdge(t)}else{if(t.Prev===t.Next)break;if(i&&P.ClipperBase.SlopesEqual4(t.Prev.Curr,t.Curr,t.Next.Curr,this.m_UseFullRange)&&(!this.PreserveCollinear||!this.Pt2IsBetweenPt1AndPt3(t.Prev.Curr,t.Curr,t.Next.Curr))){t===n&&(n=t.Next),o=t=(t=this.RemoveEdge(t)).Prev;continue}if((t=t.Next)===o||!i&&t.Next===n)break}if(!i&&t===t.Next||i&&t.Prev===t.Next)return!1;i||(this.m_HasOpenPaths=!0,n.Prev.OutIdx=P.ClipperBase.Skip),t=n;do this.InitEdge2(t,e),t=t.Next,s&&t.Curr.Y!==n.Curr.Y&&(s=!1);while(t!==n)if(s){if(i)return!1;for(t.Prev.OutIdx=P.ClipperBase.Skip,(e=new P.LocalMinima).Next=null,e.Y=t.Bot.Y,e.LeftBound=null,e.RightBound=t,e.RightBound.Side=P.EdgeSide.esRight,e.RightBound.WindDelta=0;t.Bot.X!==t.Prev.Top.X&&this.ReverseHorizontal(t),t.Next.OutIdx!==P.ClipperBase.Skip;)t=t.NextInLML=t.Next;return this.InsertLocalMinima(e),this.m_edges.push(r),!0}for(this.m_edges.push(r),s=null,P.IntPoint.op_Equality(t.Prev.Bot,t.Prev.Top)&&(t=t.Next);(t=this.FindNextLocMin(t))!==s;)null===s&&(s=t),(e=new P.LocalMinima).Next=null,e.Y=t.Bot.Y,t.Dxt.X==e.Xt.Y==e.Y=this.m_MinimaList.Y)t.Next=this.m_MinimaList,this.m_MinimaList=t;else{for(var e=this.m_MinimaList;null!==e.Next&&t.Ythis.m_Scanbeam.Y){var e=new P.Scanbeam;e.Y=t,e.Next=this.m_Scanbeam,this.m_Scanbeam=e}else{for(e=this.m_Scanbeam;null!==e.Next&&t<=e.Next.Y;)e=e.Next;if(t!==e.Y){var i=new P.Scanbeam;i.Y=t,i.Next=e.Next,e.Next=i}}},P.ClipperBase.prototype.PopScanbeam=function(t){return null===this.m_Scanbeam?(t.v=0,!1):(t.v=this.m_Scanbeam.Y,this.m_Scanbeam=this.m_Scanbeam.Next,!0)},P.ClipperBase.prototype.LocalMinimaPending=function(){return null!==this.m_CurrentLM},P.ClipperBase.prototype.CreateOutRec=function(){var t=new P.OutRec;return t.Idx=P.ClipperBase.Unassigned,t.IsHole=!1,t.IsOpen=!1,t.FirstLeft=null,t.Pts=null,t.BottomPt=null,t.PolyNode=null,this.m_PolyOuts.push(t),t.Idx=this.m_PolyOuts.length-1,t},P.ClipperBase.prototype.DisposeOutRec=function(t){this.m_PolyOuts[t].Pts=null,this.m_PolyOuts[t]=null},P.ClipperBase.prototype.UpdateEdgeIntoAEL=function(t){null===t.NextInLML&&P.Error("UpdateEdgeIntoAEL: invalid call");var e=t.PrevInAEL,i=t.NextInAEL;return t.NextInLML.OutIdx=t.OutIdx,null!==e?e.NextInAEL=t.NextInLML:this.m_ActiveEdges=t.NextInLML,null!==i&&(i.PrevInAEL=t.NextInLML),t.NextInLML.Side=t.Side,t.NextInLML.WindDelta=t.WindDelta,t.NextInLML.WindCnt=t.WindCnt,t.NextInLML.WindCnt2=t.WindCnt2,(t=t.NextInLML).Curr.X=t.Bot.X,t.Curr.Y=t.Bot.Y,t.PrevInAEL=e,t.NextInAEL=i,P.ClipperBase.IsHorizontal(t)||this.InsertScanbeam(t.Top.Y),t},P.ClipperBase.prototype.SwapPositionsInAEL=function(t,e){if(t.NextInAEL!==t.PrevInAEL&&e.NextInAEL!==e.PrevInAEL){if(t.NextInAEL===e){var i=e.NextInAEL;null!==i&&(i.PrevInAEL=t);var n=t.PrevInAEL;null!==n&&(n.NextInAEL=e),e.PrevInAEL=n,e.NextInAEL=t,t.PrevInAEL=e,t.NextInAEL=i}else e.NextInAEL===t?(null!==(i=t.NextInAEL)&&(i.PrevInAEL=e),null!==(n=e.PrevInAEL)&&(n.NextInAEL=t),t.PrevInAEL=n,t.NextInAEL=e,e.PrevInAEL=t,e.NextInAEL=i):(i=t.NextInAEL,n=t.PrevInAEL,t.NextInAEL=e.NextInAEL,null!==t.NextInAEL&&(t.NextInAEL.PrevInAEL=t),t.PrevInAEL=e.PrevInAEL,null!==t.PrevInAEL&&(t.PrevInAEL.NextInAEL=t),e.NextInAEL=i,null!==e.NextInAEL&&(e.NextInAEL.PrevInAEL=e),e.PrevInAEL=n,null!==e.PrevInAEL&&(e.PrevInAEL.NextInAEL=e));null===t.PrevInAEL?this.m_ActiveEdges=t:null===e.PrevInAEL&&(this.m_ActiveEdges=e)}},P.ClipperBase.prototype.DeleteFromAEL=function(t){var e=t.PrevInAEL,i=t.NextInAEL;(null!==e||null!==i||t===this.m_ActiveEdges)&&(null!==e?e.NextInAEL=i:this.m_ActiveEdges=i,null!==i&&(i.PrevInAEL=e),t.NextInAEL=null,t.PrevInAEL=null)},P.Clipper=function(t){void 0===t&&(t=0),this.m_PolyOuts=null,this.m_ClipType=P.ClipType.ctIntersection,this.m_IntersectNodeComparer=this.m_IntersectList=this.m_SortedEdges=this.m_ActiveEdges=this.m_Maxima=this.m_Scanbeam=null,this.m_ExecuteLocked=!1,this.m_SubjFillType=this.m_ClipFillType=P.PolyFillType.pftEvenOdd,this.m_GhostJoins=this.m_Joins=null,this.StrictlySimple=this.ReverseSolution=this.m_UsingPolyTree=!1,P.ClipperBase.call(this),this.m_SortedEdges=this.m_ActiveEdges=this.m_Maxima=this.m_Scanbeam=null,this.m_IntersectList=[],this.m_IntersectNodeComparer=P.MyIntersectNodeSort.Compare,this.m_UsingPolyTree=this.m_ExecuteLocked=!1,this.m_PolyOuts=[],this.m_Joins=[],this.m_GhostJoins=[],this.ReverseSolution=0!=(1&t),this.StrictlySimple=0!=(2&t),this.PreserveCollinear=0!=(4&t),P.use_xyz&&(this.ZFillFunction=null)},P.Clipper.ioReverseSolution=1,P.Clipper.ioStrictlySimple=2,P.Clipper.ioPreserveCollinear=4,P.Clipper.prototype.Clear=function(){0!==this.m_edges.length&&(this.DisposeAllPolyPts(),P.ClipperBase.prototype.Clear.call(this))},P.Clipper.prototype.InsertMaxima=function(t){var e=new P.Maxima;if(e.X=t,null===this.m_Maxima)this.m_Maxima=e,this.m_Maxima.Next=null,this.m_Maxima.Prev=null;else if(t=i.Next.X;)i=i.Next;t!==i.X&&(e.Next=i.Next,e.Prev=i,null!==i.Next&&(i.Next.Prev=e),i.Next=e)}},P.Clipper.prototype.Execute=function(){var t,e=arguments,i=e.length,n=e[1]instanceof P.PolyTree;if(4!==i||n){if(4===i&&n){i=e[0];var r=e[1];if(n=e[2],e=e[3],this.m_ExecuteLocked)return!1;this.m_ExecuteLocked=!0,this.m_SubjFillType=n,this.m_ClipFillType=e,this.m_ClipType=i,this.m_UsingPolyTree=!0;try{(t=this.ExecuteInternal())&&this.BuildResult2(r)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return t}if(2===i&&!n||2===i&&n)return i=e[0],r=e[1],this.Execute(i,r,P.PolyFillType.pftEvenOdd,P.PolyFillType.pftEvenOdd)}else{if(i=e[0],r=e[1],n=e[2],e=e[3],this.m_ExecuteLocked)return!1;this.m_HasOpenPaths&&P.Error("Error: PolyTree struct is needed for open path clipping."),this.m_ExecuteLocked=!0,P.Clear(r),this.m_SubjFillType=n,this.m_ClipFillType=e,this.m_ClipType=i,this.m_UsingPolyTree=!1;try{(t=this.ExecuteInternal())&&this.BuildResult(r)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return t}},P.Clipper.prototype.FixHoleLinkage=function(t){if(null!==t.FirstLeft&&(t.IsHole===t.FirstLeft.IsHole||null===t.FirstLeft.Pts)){for(var e=t.FirstLeft;null!==e&&(e.IsHole===t.IsHole||null===e.Pts);)e=e.FirstLeft;t.FirstLeft=e}},P.Clipper.prototype.ExecuteInternal=function(){try{this.Reset(),this.m_Maxima=this.m_SortedEdges=null;var t,e={},i={};if(!this.PopScanbeam(e))return!1;for(this.InsertLocalMinimaIntoAEL(e.v);this.PopScanbeam(i)||this.LocalMinimaPending();){if(this.ProcessHorizontals(),this.m_GhostJoins.length=0,!this.ProcessIntersections(i.v))return!1;this.ProcessEdgesAtTopOfScanbeam(i.v),e.v=i.v,this.InsertLocalMinimaIntoAEL(e.v)}var n=0;for(t=this.m_PolyOuts.length;nt.Top.Y?e.Top.XP.Clipper.TopX(e,t.Top.Y):e.Curr.Xt.WindCnt2}case P.ClipType.ctUnion:switch(i){case P.PolyFillType.pftEvenOdd:case P.PolyFillType.pftNonZero:return 0===t.WindCnt2;case P.PolyFillType.pftPositive:return 0>=t.WindCnt2;default:return 0<=t.WindCnt2}case P.ClipType.ctDifference:if(t.PolyTyp===P.PolyType.ptSubject)switch(i){case P.PolyFillType.pftEvenOdd:case P.PolyFillType.pftNonZero:return 0===t.WindCnt2;case P.PolyFillType.pftPositive:return 0>=t.WindCnt2;default:return 0<=t.WindCnt2}else switch(i){case P.PolyFillType.pftEvenOdd:case P.PolyFillType.pftNonZero:return 0!==t.WindCnt2;case P.PolyFillType.pftPositive:return 0t.WindCnt2}case P.ClipType.ctXor:if(0===t.WindDelta)switch(i){case P.PolyFillType.pftEvenOdd:case P.PolyFillType.pftNonZero:return 0===t.WindCnt2;case P.PolyFillType.pftPositive:return 0>=t.WindCnt2;default:return 0<=t.WindCnt2}}return!0},P.Clipper.prototype.SetWindingCount=function(t){for(var e=t.PrevInAEL;null!==e&&(e.PolyTyp!==t.PolyTyp||0===e.WindDelta);)e=e.PrevInAEL;if(null===e)e=t.PolyTyp===P.PolyType.ptSubject?this.m_SubjFillType:this.m_ClipFillType,t.WindCnt=0===t.WindDelta?e===P.PolyFillType.pftNegative?-1:1:t.WindDelta,t.WindCnt2=0,e=this.m_ActiveEdges;else{if(0===t.WindDelta&&this.m_ClipType!==P.ClipType.ctUnion)t.WindCnt=1;else if(this.IsEvenOddFillType(t)){if(0===t.WindDelta){for(var i=!0,n=e.PrevInAEL;null!==n;)n.PolyTyp===e.PolyTyp&&0!==n.WindDelta&&(i=!i),n=n.PrevInAEL;t.WindCnt=i?0:1}else t.WindCnt=t.WindDelta}else t.WindCnt=0>e.WindCnt*e.WindDelta?1e.WindDelta*t.WindDelta?e.WindCnt:e.WindCnt+t.WindDelta:0===t.WindDelta?1:t.WindDelta:0===t.WindDelta?0>e.WindCnt?e.WindCnt-1:e.WindCnt+1:0>e.WindDelta*t.WindDelta?e.WindCnt:e.WindCnt+t.WindDelta;t.WindCnt2=e.WindCnt2,e=e.NextInAEL}if(this.IsEvenOddAltFillType(t))for(;e!==t;)0!==e.WindDelta&&(t.WindCnt2=0===t.WindCnt2?1:0),e=e.NextInAEL;else for(;e!==t;)t.WindCnt2+=e.WindDelta,e=e.NextInAEL},P.Clipper.prototype.AddEdgeToSEL=function(t){null===this.m_SortedEdges?(this.m_SortedEdges=t,t.PrevInSEL=null,t.NextInSEL=null):(t.NextInSEL=this.m_SortedEdges,t.PrevInSEL=null,this.m_SortedEdges=this.m_SortedEdges.PrevInSEL=t)},P.Clipper.prototype.PopEdgeFromSEL=function(t){if(t.v=this.m_SortedEdges,null===t.v)return!1;var e=t.v;return this.m_SortedEdges=t.v.NextInSEL,null!==this.m_SortedEdges&&(this.m_SortedEdges.PrevInSEL=null),e.NextInSEL=null,e.PrevInSEL=null,!0},P.Clipper.prototype.CopyAELToSEL=function(){var t=this.m_ActiveEdges;for(this.m_SortedEdges=t;null!==t;)t.PrevInSEL=t.PrevInAEL,t=t.NextInSEL=t.NextInAEL},P.Clipper.prototype.SwapPositionsInSEL=function(t,e){if((null!==t.NextInSEL||null!==t.PrevInSEL)&&(null!==e.NextInSEL||null!==e.PrevInSEL)){if(t.NextInSEL===e){var i=e.NextInSEL;null!==i&&(i.PrevInSEL=t);var n=t.PrevInSEL;null!==n&&(n.NextInSEL=e),e.PrevInSEL=n,e.NextInSEL=t,t.PrevInSEL=e,t.NextInSEL=i}else e.NextInSEL===t?(null!==(i=t.NextInSEL)&&(i.PrevInSEL=e),null!==(n=e.PrevInSEL)&&(n.NextInSEL=t),t.PrevInSEL=n,t.NextInSEL=e,e.PrevInSEL=t,e.NextInSEL=i):(i=t.NextInSEL,n=t.PrevInSEL,t.NextInSEL=e.NextInSEL,null!==t.NextInSEL&&(t.NextInSEL.PrevInSEL=t),t.PrevInSEL=e.PrevInSEL,null!==t.PrevInSEL&&(t.PrevInSEL.NextInSEL=t),e.NextInSEL=i,null!==e.NextInSEL&&(e.NextInSEL.PrevInSEL=e),e.PrevInSEL=n,null!==e.PrevInSEL&&(e.PrevInSEL.NextInSEL=e));null===t.PrevInSEL?this.m_SortedEdges=t:null===e.PrevInSEL&&(this.m_SortedEdges=e)}},P.Clipper.prototype.AddLocalMaxPoly=function(t,e,i){this.AddOutPt(t,i),0===e.WindDelta&&this.AddOutPt(e,i),t.OutIdx===e.OutIdx?(t.OutIdx=-1,e.OutIdx=-1):t.OutIdxe.Dx){var n=this.AddOutPt(t,i);e.OutIdx=t.OutIdx,t.Side=P.EdgeSide.esLeft,e.Side=P.EdgeSide.esRight;var r=t;t=r.PrevInAEL===e?e.PrevInAEL:r.PrevInAEL}else n=this.AddOutPt(e,i),t.OutIdx=e.OutIdx,t.Side=P.EdgeSide.esRight,e.Side=P.EdgeSide.esLeft,t=(r=e).PrevInAEL===t?t.PrevInAEL:r.PrevInAEL;if(null!==t&&0<=t.OutIdx&&t.Top.Yt.OutIdx){var i=this.CreateOutRec();i.IsOpen=0===t.WindDelta;var n=new P.OutPt;i.Pts=n,n.Idx=i.Idx,n.Pt.X=e.X,n.Pt.Y=e.Y,P.use_xyz&&(n.Pt.Z=e.Z),n.Next=n,n.Prev=n,i.IsOpen||this.SetHoleState(t,i),t.OutIdx=i.Idx}else{var r=(i=this.m_PolyOuts[t.OutIdx]).Pts,o=t.Side===P.EdgeSide.esLeft;if(o&&P.IntPoint.op_Equality(e,r.Pt))return r;if(!o&&P.IntPoint.op_Equality(e,r.Prev.Pt))return r.Prev;(n=new P.OutPt).Idx=i.Idx,n.Pt.X=e.X,n.Pt.Y=e.Y,P.use_xyz&&(n.Pt.Z=e.Z),n.Next=r,n.Prev=r.Prev,n.Prev.Next=n,r.Prev=n,o&&(i.Pts=n)}return n},P.Clipper.prototype.GetLastOutPt=function(t){var e=this.m_PolyOuts[t.OutIdx];return t.Side===P.EdgeSide.esLeft?e.Pts:e.Pts.Prev},P.Clipper.prototype.SwapPoints=function(t,e){var i=new P.IntPoint1(t.Value);t.Value.X=e.Value.X,t.Value.Y=e.Value.Y,P.use_xyz&&(t.Value.Z=e.Value.Z),e.Value.X=i.X,e.Value.Y=i.Y,P.use_xyz&&(e.Value.Z=i.Z)},P.Clipper.prototype.HorzSegmentsOverlap=function(t,e,i,n){if(t>e){var r=t;t=e,e=r}return i>n&&(r=i,i=n,n=r),t=o&&n>=i||r>=o&&r>=i},P.Clipper.prototype.GetBottomPt=function(t){for(var e=null,i=t.Next;i!==t;)i.Pt.Y>t.Pt.Y?(t=i,e=null):i.Pt.Y===t.Pt.Y&&i.Pt.X<=t.Pt.X&&(i.Pt.Xn.Pt.Y?t:i.Pt.Yn.Pt.X?e:i.Next===i?e:n.Next===n?t:this.FirstIsBottomPt(i,n)?t:e},P.Clipper.prototype.OutRec1RightOfOutRec2=function(t,e){do if((t=t.FirstLeft)===e)return!0;while(null!==t)return!1},P.Clipper.prototype.GetOutRec=function(t){for(t=this.m_PolyOuts[t];t!==this.m_PolyOuts[t.Idx];)t=this.m_PolyOuts[t.Idx];return t},P.Clipper.prototype.AppendPolygon=function(t,e){var i=this.m_PolyOuts[t.OutIdx],n=this.m_PolyOuts[e.OutIdx],r=this.OutRec1RightOfOutRec2(i,n)?n:this.OutRec1RightOfOutRec2(n,i)?i:this.GetLowermostRec(i,n),o=i.Pts,s=o.Prev,l=n.Pts,p=l.Prev;for(t.Side===P.EdgeSide.esLeft?e.Side===P.EdgeSide.esLeft?(this.ReversePolyPtLinks(l),l.Next=o,o.Prev=l,s.Next=p,p.Prev=s,i.Pts=p):(p.Next=o,o.Prev=p,l.Prev=s,s.Next=l,i.Pts=l):e.Side===P.EdgeSide.esRight?(this.ReversePolyPtLinks(l),s.Next=p,p.Prev=s,l.Next=o,o.Prev=l):(s.Next=l,l.Prev=s,o.Prev=p,p.Next=o),i.BottomPt=null,r===n&&(n.FirstLeft!==i&&(i.FirstLeft=n.FirstLeft),i.IsHole=n.IsHole),n.Pts=null,n.BottomPt=null,n.FirstLeft=i,r=t.OutIdx,o=e.OutIdx,t.OutIdx=-1,e.OutIdx=-1,s=this.m_ActiveEdges;null!==s;){if(s.OutIdx===o){s.OutIdx=r,s.Side=t.Side;break}s=s.NextInAEL}n.Idx=i.Idx},P.Clipper.prototype.ReversePolyPtLinks=function(t){if(null!==t){var e=t;do{var i=e.Next;e.Next=e.Prev,e=e.Prev=i}while(e!==t)}},P.Clipper.SwapSides=function(t,e){var i=t.Side;t.Side=e.Side,e.Side=i},P.Clipper.SwapPolyIndexes=function(t,e){var i=t.OutIdx;t.OutIdx=e.OutIdx,e.OutIdx=i},P.Clipper.prototype.IntersectEdges=function(t,e,i){var n=0<=t.OutIdx,r=0<=e.OutIdx;if(P.use_xyz&&this.SetZ(i,t,e),P.use_lines&&(0===t.WindDelta||0===e.WindDelta))(0!==t.WindDelta||0!==e.WindDelta)&&(t.PolyTyp===e.PolyTyp&&t.WindDelta!==e.WindDelta&&this.m_ClipType===P.ClipType.ctUnion?0===t.WindDelta?r&&(this.AddOutPt(t,i),n&&(t.OutIdx=-1)):n&&(this.AddOutPt(e,i),r&&(e.OutIdx=-1)):t.PolyTyp!==e.PolyTyp&&(0!==t.WindDelta||1!==Math.abs(e.WindCnt)||this.m_ClipType===P.ClipType.ctUnion&&0!==e.WindCnt2?0!==e.WindDelta||1!==Math.abs(t.WindCnt)||this.m_ClipType===P.ClipType.ctUnion&&0!==t.WindCnt2||(this.AddOutPt(e,i),r&&(e.OutIdx=-1)):(this.AddOutPt(t,i),n&&(t.OutIdx=-1))));else{if(t.PolyTyp===e.PolyTyp){if(this.IsEvenOddFillType(t)){var o=t.WindCnt;t.WindCnt=e.WindCnt,e.WindCnt=o}else t.WindCnt=0===t.WindCnt+e.WindDelta?-t.WindCnt:t.WindCnt+e.WindDelta,e.WindCnt=0==e.WindCnt-t.WindDelta?-e.WindCnt:e.WindCnt-t.WindDelta}else this.IsEvenOddFillType(e)?t.WindCnt2=0===t.WindCnt2?1:0:t.WindCnt2+=e.WindDelta,this.IsEvenOddFillType(t)?e.WindCnt2=0===e.WindCnt2?1:0:e.WindCnt2-=t.WindDelta;if(t.PolyTyp===P.PolyType.ptSubject)var s=this.m_SubjFillType,l=this.m_ClipFillType;else s=this.m_ClipFillType,l=this.m_SubjFillType;if(e.PolyTyp===P.PolyType.ptSubject){var p=this.m_SubjFillType;o=this.m_ClipFillType}else p=this.m_ClipFillType,o=this.m_SubjFillType;switch(s){case P.PolyFillType.pftPositive:s=t.WindCnt;break;case P.PolyFillType.pftNegative:s=-t.WindCnt;break;default:s=Math.abs(t.WindCnt)}switch(p){case P.PolyFillType.pftPositive:p=e.WindCnt;break;case P.PolyFillType.pftNegative:p=-e.WindCnt;break;default:p=Math.abs(e.WindCnt)}if(n&&r)0!==s&&1!==s||0!==p&&1!==p||t.PolyTyp!==e.PolyTyp&&this.m_ClipType!==P.ClipType.ctXor?this.AddLocalMaxPoly(t,e,i):(this.AddOutPt(t,i),this.AddOutPt(e,i),P.Clipper.SwapSides(t,e),P.Clipper.SwapPolyIndexes(t,e));else if(n)(0===p||1===p)&&(this.AddOutPt(t,i),P.Clipper.SwapSides(t,e),P.Clipper.SwapPolyIndexes(t,e));else if(r)(0===s||1===s)&&(this.AddOutPt(e,i),P.Clipper.SwapSides(t,e),P.Clipper.SwapPolyIndexes(t,e));else if(!(0!==s&&1!==s||0!==p&&1!==p)){switch(l){case P.PolyFillType.pftPositive:n=t.WindCnt2;break;case P.PolyFillType.pftNegative:n=-t.WindCnt2;break;default:n=Math.abs(t.WindCnt2)}switch(o){case P.PolyFillType.pftPositive:r=e.WindCnt2;break;case P.PolyFillType.pftNegative:r=-e.WindCnt2;break;default:r=Math.abs(e.WindCnt2)}if(t.PolyTyp!==e.PolyTyp)this.AddLocalMinPoly(t,e,i);else if(1===s&&1===p)switch(this.m_ClipType){case P.ClipType.ctIntersection:0=n&&0>=r&&this.AddLocalMinPoly(t,e,i);break;case P.ClipType.ctDifference:(t.PolyTyp===P.PolyType.ptClip&&0=n&&0>=r)&&this.AddLocalMinPoly(t,e,i);break;case P.ClipType.ctXor:this.AddLocalMinPoly(t,e,i)}else P.Clipper.SwapSides(t,e)}}},P.Clipper.prototype.DeleteFromSEL=function(t){var e=t.PrevInSEL,i=t.NextInSEL;(null!==e||null!==i||t===this.m_SortedEdges)&&(null!==e?e.NextInSEL=i:this.m_SortedEdges=i,null!==i&&(i.PrevInSEL=e),t.NextInSEL=null,t.PrevInSEL=null)},P.Clipper.prototype.ProcessHorizontals=function(){for(var t={};this.PopEdgeFromSEL(t);)this.ProcessHorizontal(t.v)},P.Clipper.prototype.GetHorzDirection=function(t,e){t.Bot.X=s.Top.X&&(p=null)}else{for(;null!==p.Next&&p.Next.Xa.Curr.X;)0<=t.OutIdx&&!o&&this.AddOutPt(t,new P.IntPoint2(p.X,t.Bot.Y)),p=p.Prev}if(n===P.Direction.dLeftToRight&&a.Curr.X>i||n===P.Direction.dRightToLeft&&a.Curr.Xn.Top.Y&&P.ClipperBase.SlopesEqual3(t,n,this.m_UseFullRange)?(f=this.AddOutPt(n,t.Bot),this.AddJoin(h,f,t.Top)):null!==f&&f.Curr.X===t.Bot.X&&f.Curr.Y===t.Bot.Y&&0!==f.WindDelta&&0<=f.OutIdx&&f.Curr.Y>f.Top.Y&&P.ClipperBase.SlopesEqual3(t,f,this.m_UseFullRange)&&(f=this.AddOutPt(f,t.Bot),this.AddJoin(h,f,t.Top)))):this.UpdateEdgeIntoAEL(t):(0<=t.OutIdx&&this.AddOutPt(t,t.Top),this.DeleteFromAEL(t))},P.Clipper.prototype.GetNextInAEL=function(t,e){return e===P.Direction.dLeftToRight?t.NextInAEL:t.PrevInAEL},P.Clipper.prototype.IsMinima=function(t){return null!==t&&t.Prev.NextInLML!==t&&t.Next.NextInLML!==t},P.Clipper.prototype.IsMaxima=function(t,e){return null!==t&&t.Top.Y===e&&null===t.NextInLML},P.Clipper.prototype.IsIntermediate=function(t,e){return t.Top.Y===e&&null!==t.NextInLML},P.Clipper.prototype.GetMaximaPair=function(t){return P.IntPoint.op_Equality(t.Next.Top,t.Top)&&null===t.Next.NextInLML?t.Next:P.IntPoint.op_Equality(t.Prev.Top,t.Top)&&null===t.Prev.NextInLML?t.Prev:null},P.Clipper.prototype.GetMaximaPairEx=function(t){return null!==(t=this.GetMaximaPair(t))&&t.OutIdx!==P.ClipperBase.Skip&&(t.NextInAEL!==t.PrevInAEL||P.ClipperBase.IsHorizontal(t))?t:null},P.Clipper.prototype.ProcessIntersections=function(t){if(null===this.m_ActiveEdges)return!0;try{if(this.BuildIntersectList(t),0===this.m_IntersectList.length)return!0;if(!(1===this.m_IntersectList.length||this.FixupIntersectionOrder()))return!1;this.ProcessIntersectList()}catch(t){this.m_SortedEdges=null,this.m_IntersectList.length=0,P.Error("ProcessIntersections error")}return this.m_SortedEdges=null,!0},P.Clipper.prototype.BuildIntersectList=function(t){if(null!==this.m_ActiveEdges){var e=this.m_ActiveEdges;for(this.m_SortedEdges=e;null!==e;)e.PrevInSEL=e.PrevInAEL,e.NextInSEL=e.NextInAEL,e.Curr.X=P.Clipper.TopX(e,t),e=e.NextInAEL;for(var i=!0;i&&null!==this.m_SortedEdges;){for(i=!1,e=this.m_SortedEdges;null!==e.NextInSEL;){var n=e.NextInSEL,r=new P.IntPoint0;e.Curr.X>n.Curr.X?(this.IntersectPoint(e,n,r),r.Yt?Math.ceil(t-.5):Math.round(t)},I=function(t){return 0>t?Math.ceil(t-.5):Math.floor(t+.5)},g=function(t){return 0>t?-Math.round(Math.abs(t)):Math.round(t)},C=function(t){return 0>t?-2147483648>(t-=.5)?Math.ceil(t):0|t:2147483647<(t+=.5)?Math.floor(t):0|t},P.Clipper.Round=y?v:c?g:x?C:I,P.Clipper.TopX=function(t,e){return e===t.Top.Y?t.Top.X:t.Bot.X+P.Clipper.Round(t.Dx*(e-t.Bot.Y))},P.Clipper.prototype.IntersectPoint=function(t,e,i){if(i.X=0,i.Y=0,t.Dx===e.Dx)i.Y=t.Curr.Y,i.X=P.Clipper.TopX(t,i.Y);else{if(0===t.Delta.X){if(i.X=t.Bot.X,P.ClipperBase.IsHorizontal(e))i.Y=e.Bot.Y;else{var n=e.Bot.Y-e.Bot.X/e.Dx;i.Y=P.Clipper.Round(i.X/e.Dx+n)}}else if(0===e.Delta.X){if(i.X=e.Bot.X,P.ClipperBase.IsHorizontal(t))i.Y=t.Bot.Y;else{var r=t.Bot.Y-t.Bot.X/t.Dx;i.Y=P.Clipper.Round(i.X/t.Dx+r)}}else{r=t.Bot.X-t.Bot.Y*t.Dx;var o=((n=e.Bot.X-e.Bot.Y*e.Dx)-r)/(t.Dx-e.Dx);i.Y=P.Clipper.Round(o),i.X=Math.abs(t.Dx)e.Top.Y)return i.Y=t.Top.Y,i.X=P.Clipper.TopX(e,t.Top.Y),i.Xt.Curr.Y&&(i.Y=t.Curr.Y,i.X=Math.abs(t.Dx)>Math.abs(e.Dx)?P.Clipper.TopX(e,i.Y):P.Clipper.TopX(t,i.Y))}},P.Clipper.prototype.ProcessEdgesAtTopOfScanbeam=function(t){for(var e,i,n=this.m_ActiveEdges;null!==n;)if((i=this.IsMaxima(n,t))&&(i=null===(i=this.GetMaximaPairEx(n))||!P.ClipperBase.IsHorizontal(i)),i)this.StrictlySimple&&this.InsertMaxima(n.Top.X),e=n.PrevInAEL,this.DoMaxima(n),n=null===e?this.m_ActiveEdges:e.NextInAEL;else{if(this.IsIntermediate(n,t)&&P.ClipperBase.IsHorizontal(n.NextInLML)?(0<=(n=this.UpdateEdgeIntoAEL(n)).OutIdx&&this.AddOutPt(n,n.Bot),this.AddEdgeToSEL(n)):(n.Curr.X=P.Clipper.TopX(n,t),n.Curr.Y=t),P.use_xyz&&(n.Curr.Z=n.Top.Y===t?n.Top.Z:n.Bot.Y===t?n.Bot.Z:0),this.StrictlySimple&&(e=n.PrevInAEL,0<=n.OutIdx&&0!==n.WindDelta&&null!==e&&0<=e.OutIdx&&e.Curr.X===n.Curr.X&&0!==e.WindDelta)){var r=new P.IntPoint1(n.Curr);P.use_xyz&&this.SetZ(r,e,n),i=this.AddOutPt(e,r),e=this.AddOutPt(n,r),this.AddJoin(i,e,r)}n=n.NextInAEL}for(this.ProcessHorizontals(),this.m_Maxima=null,n=this.m_ActiveEdges;null!==n;)this.IsIntermediate(n,t)&&(i=null,0<=n.OutIdx&&(i=this.AddOutPt(n,n.Top)),e=(n=this.UpdateEdgeIntoAEL(n)).PrevInAEL,r=n.NextInAEL,null!==e&&e.Curr.X===n.Bot.X&&e.Curr.Y===n.Bot.Y&&null!==i&&0<=e.OutIdx&&e.Curr.Y===e.Top.Y&&P.ClipperBase.SlopesEqual5(n.Curr,n.Top,e.Curr,e.Top,this.m_UseFullRange)&&0!==n.WindDelta&&0!==e.WindDelta?(e=this.AddOutPt(ePrev2,n.Bot),this.AddJoin(i,e,n.Top)):null!==r&&r.Curr.X===n.Bot.X&&r.Curr.Y===n.Bot.Y&&null!==i&&0<=r.OutIdx&&r.Curr.Y===r.Top.Y&&P.ClipperBase.SlopesEqual5(n.Curr,n.Top,r.Curr,r.Top,this.m_UseFullRange)&&0!==n.WindDelta&&0!==r.WindDelta&&(e=this.AddOutPt(r,n.Bot),this.AddJoin(i,e,n.Top))),n=n.NextInAEL},P.Clipper.prototype.DoMaxima=function(t){var e=this.GetMaximaPairEx(t);if(null===e)0<=t.OutIdx&&this.AddOutPt(t,t.Top),this.DeleteFromAEL(t);else{for(var i=t.NextInAEL;null!==i&&i!==e;)this.IntersectEdges(t,i,t.Top),this.SwapPositionsInAEL(t,i),i=t.NextInAEL;-1===t.OutIdx&&-1===e.OutIdx?(this.DeleteFromAEL(t),this.DeleteFromAEL(e)):0<=t.OutIdx&&0<=e.OutIdx?(0<=t.OutIdx&&this.AddLocalMaxPoly(t,e,t.Top),this.DeleteFromAEL(t),this.DeleteFromAEL(e)):P.use_lines&&0===t.WindDelta?(0<=t.OutIdx&&(this.AddOutPt(t,t.Top),t.OutIdx=P.ClipperBase.Unassigned),this.DeleteFromAEL(t),0<=e.OutIdx&&(this.AddOutPt(e,t.Top),e.OutIdx=P.ClipperBase.Unassigned),this.DeleteFromAEL(e)):P.Error("DoMaxima error")}},P.Clipper.ReversePaths=function(t){for(var e=0,i=t.length;er)){for(var o=Array(r),s=0;sr||!n.IsOpen&&3>r)){this.FixHoleLinkage(n);var o=new P.PolyNode;t.m_AllPolys.push(o),n.PolyNode=o,o.m_polygon.length=r,n=n.Pts.Prev;for(var s=0;se.Pt.X?P.Direction.dRightToLeft:P.Direction.dLeftToRight;if(s===(n=i.Pt.X>n.Pt.X?P.Direction.dRightToLeft:P.Direction.dLeftToRight))return!1;if(s===P.Direction.dLeftToRight){for(;t.Next.Pt.X<=r.X&&t.Next.Pt.X>=t.Pt.X&&t.Next.Pt.Y===r.Y;)t=t.Next;o&&t.Pt.X!==r.X&&(t=t.Next),e=this.DupOutPt(t,!o),P.IntPoint.op_Inequality(e.Pt,r)&&((t=e).Pt.X=r.X,t.Pt.Y=r.Y,P.use_xyz&&(t.Pt.Z=r.Z),e=this.DupOutPt(t,!o))}else{for(;t.Next.Pt.X>=r.X&&t.Next.Pt.X<=t.Pt.X&&t.Next.Pt.Y===r.Y;)t=t.Next;o||t.Pt.X===r.X||(t=t.Next),e=this.DupOutPt(t,o),P.IntPoint.op_Inequality(e.Pt,r)&&((t=e).Pt.X=r.X,t.Pt.Y=r.Y,P.use_xyz&&(t.Pt.Z=r.Z),e=this.DupOutPt(t,o))}if(n===P.Direction.dLeftToRight){for(;i.Next.Pt.X<=r.X&&i.Next.Pt.X>=i.Pt.X&&i.Next.Pt.Y===r.Y;)i=i.Next;o&&i.Pt.X!==r.X&&(i=i.Next),n=this.DupOutPt(i,!o),P.IntPoint.op_Inequality(n.Pt,r)&&((i=n).Pt.X=r.X,i.Pt.Y=r.Y,P.use_xyz&&(i.Pt.Z=r.Z),n=this.DupOutPt(i,!o))}else{for(;i.Next.Pt.X>=r.X&&i.Next.Pt.X<=i.Pt.X&&i.Next.Pt.Y===r.Y;)i=i.Next;o||i.Pt.X===r.X||(i=i.Next),n=this.DupOutPt(i,o),P.IntPoint.op_Inequality(n.Pt,r)&&((i=n).Pt.X=r.X,i.Pt.Y=r.Y,P.use_xyz&&(i.Pt.Z=r.Z),n=this.DupOutPt(i,o))}return s===P.Direction.dLeftToRight===o?(t.Prev=i,i.Next=t,e.Next=n,n.Prev=e):(t.Next=i,i.Prev=t,e.Prev=n,n.Next=e),!0},P.Clipper.prototype.JoinPoints=function(t,e,i){var n,r=t.OutPt1;new P.OutPt;var o,s=t.OutPt2;if(new P.OutPt,(o=t.OutPt1.Pt.Y===t.OffPt.Y)&&P.IntPoint.op_Equality(t.OffPt,t.OutPt1.Pt)&&P.IntPoint.op_Equality(t.OffPt,t.OutPt2.Pt)){if(e!==i)return!1;for(n=t.OutPt1.Next;n!==r&&P.IntPoint.op_Equality(n.Pt,t.OffPt);)n=n.Next;for(n=n.Pt.Y>t.OffPt.Y,o=t.OutPt2.Next;o!==s&&P.IntPoint.op_Equality(o.Pt,t.OffPt);)o=o.Next;return n!==o.Pt.Y>t.OffPt.Y&&(n?(n=this.DupOutPt(r,!1),o=this.DupOutPt(s,!0),r.Prev=s,s.Next=r,n.Next=o,o.Prev=n):(n=this.DupOutPt(r,!0),o=this.DupOutPt(s,!1),r.Next=s,s.Prev=r,n.Prev=o,o.Next=n),t.OutPt1=r,t.OutPt2=n,!0)}if(o){for(n=r;r.Prev.Pt.Y===r.Pt.Y&&r.Prev!==n&&r.Prev!==s;)r=r.Prev;for(;n.Next.Pt.Y===n.Pt.Y&&n.Next!==r&&n.Next!==s;)n=n.Next;if(n.Next===r||n.Next===s)return!1;for(o=s;s.Prev.Pt.Y===s.Pt.Y&&s.Prev!==o&&s.Prev!==n;)s=s.Prev;for(;o.Next.Pt.Y===o.Pt.Y&&o.Next!==s&&o.Next!==r;)o=o.Next;if(o.Next===s||o.Next===r||(i={Left:null,Right:null},!this.GetOverlap(r.Pt.X,n.Pt.X,s.Pt.X,o.Pt.X,i)))return!1;e=i.Left;var l=i.Right;return i=new P.IntPoint0,r.Pt.X>=e&&r.Pt.X<=l?(i.X=r.Pt.X,i.Y=r.Pt.Y,P.use_xyz&&(i.Z=r.Pt.Z),e=r.Pt.X>n.Pt.X):s.Pt.X>=e&&s.Pt.X<=l?(i.X=s.Pt.X,i.Y=s.Pt.Y,P.use_xyz&&(i.Z=s.Pt.Z),e=s.Pt.X>o.Pt.X):n.Pt.X>=e&&n.Pt.X<=l?(i.X=n.Pt.X,i.Y=n.Pt.Y,P.use_xyz&&(i.Z=n.Pt.Z),e=n.Pt.X>r.Pt.X):(i.X=o.Pt.X,i.Y=o.Pt.Y,P.use_xyz&&(i.Z=o.Pt.Z),e=o.Pt.X>s.Pt.X),t.OutPt1=r,t.OutPt2=s,this.JoinHorz(r,n,s,o,i,e)}for(n=r.Next;P.IntPoint.op_Equality(n.Pt,r.Pt)&&n!==r;)n=n.Next;if(l=n.Pt.Y>r.Pt.Y||!P.ClipperBase.SlopesEqual4(r.Pt,n.Pt,t.OffPt,this.m_UseFullRange)){for(n=r.Prev;P.IntPoint.op_Equality(n.Pt,r.Pt)&&n!==r;)n=n.Prev;if(n.Pt.Y>r.Pt.Y||!P.ClipperBase.SlopesEqual4(r.Pt,n.Pt,t.OffPt,this.m_UseFullRange))return!1}for(o=s.Next;P.IntPoint.op_Equality(o.Pt,s.Pt)&&o!==s;)o=o.Next;var p=o.Pt.Y>s.Pt.Y||!P.ClipperBase.SlopesEqual4(s.Pt,o.Pt,t.OffPt,this.m_UseFullRange);if(p){for(o=s.Prev;P.IntPoint.op_Equality(o.Pt,s.Pt)&&o!==s;)o=o.Prev;if(o.Pt.Y>s.Pt.Y||!P.ClipperBase.SlopesEqual4(s.Pt,o.Pt,t.OffPt,this.m_UseFullRange))return!1}return n!==r&&o!==s&&n!==o&&(e!==i||l!==p)&&(l?(n=this.DupOutPt(r,!1),o=this.DupOutPt(s,!0),r.Prev=s,s.Next=r,n.Next=o,o.Prev=n):(n=this.DupOutPt(r,!0),o=this.DupOutPt(s,!1),r.Next=s,s.Prev=r,n.Prev=o,o.Next=n),t.OutPt1=r,t.OutPt2=n,!0)},P.Clipper.GetBounds=function(t){for(var e=0,i=t.length;en.right&&(n.right=t[e][r].X),t[e][r].Yn.bottom&&(n.bottom=t[e][r].Y);return n},P.Clipper.prototype.GetBounds2=function(t){var e=t,i=new P.IntRect;for(i.left=t.Pt.X,i.right=t.Pt.X,i.top=t.Pt.Y,i.bottom=t.Pt.Y,t=t.Next;t!==e;)t.Pt.Xi.right&&(i.right=t.Pt.X),t.Pt.Yi.bottom&&(i.bottom=t.Pt.Y),t=t.Next;return i},P.Clipper.PointInPolygon=function(t,e){var i=0,n=e.length;if(3>n)return 0;for(var r=e[0],o=1;o<=n;++o){var s=o===n?e[0]:e[o];if(s.Y===t.Y&&(s.X===t.X||r.Y===t.Y&&s.X>t.X==r.X=t.X){if(s.X>t.X)i=1-i;else{var l=(r.X-t.X)*(s.Y-t.Y)-(s.X-t.X)*(r.Y-t.Y);if(0===l)return -1;0r.Y&&(i=1-i)}}else if(s.X>t.X){if(0==(l=(r.X-t.X)*(s.Y-t.Y)-(s.X-t.X)*(r.Y-t.Y)))return -1;0r.Y&&(i=1-i)}}r=s}return i},P.Clipper.prototype.PointInPolygon=function(t,e){var i=0,n=e,r=t.X,o=t.Y,s=e.Pt.X,l=e.Pt.Y;do{var p=(e=e.Next).Pt.X,h=e.Pt.Y;if(h===o&&(p===r||l===o&&p>r==s=r){if(p>r)i=1-i;else{if(0==(s=(s-r)*(h-o)-(p-r)*(l-o)))return -1;0l&&(i=1-i)}}else if(p>r){if(0==(s=(s-r)*(h-o)-(p-r)*(l-o)))return -1;0l&&(i=1-i)}}s=p,l=h}while(n!==e)return i},P.Clipper.prototype.Poly2ContainsPoly1=function(t,e){var i=t;do{var n=this.PointInPolygon(i.Pt,e);if(0<=n)return 0e)return 0;for(var i=0,n=0,r=e-1;nMath.abs(t.Y-e.Y)?t.X>e.X==t.Xt.X==e.Xe.Y==t.Yt.Y==e.Yi&&(i=0);var o=Array(i);for(r=0;rn)){var r=new P.PolyNode;if(r.m_jointype=e,r.m_endtype=i,i===P.EndType.etClosedLine||i===P.EndType.etClosedPolygon)for(;0r.m_polygon[e].Y||t[s].Y===r.m_polygon[e].Y&&t[s].Xo)&&(this.m_polyNodes.AddChild(r),i===P.EndType.etClosedPolygon)&&(0>this.m_lowest.X?this.m_lowest=new P.IntPoint2(this.m_polyNodes.ChildCount()-1,e):(t=this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon[this.m_lowest.Y],(r.m_polygon[e].Y>t.Y||r.m_polygon[e].Y===t.Y&&r.m_polygon[e].X=this.ArcTolerance?P.ClipperOffset.def_arc_tolerance:this.ArcTolerance>Math.abs(t)*P.ClipperOffset.def_arc_tolerance?Math.abs(t)*P.ClipperOffset.def_arc_tolerance:this.ArcTolerance)/Math.abs(t));for(this.m_sin=Math.sin(P.ClipperOffset.two_pi/r),this.m_cos=Math.cos(P.ClipperOffset.two_pi/r),this.m_StepsPerRad=r/P.ClipperOffset.two_pi,0>t&&(this.m_sin=-this.m_sin),i=0;i=t&&(3>o||n.m_endtype!==P.EndType.etClosedPolygon))){if(this.m_destPoly=[],1===o){if(n.m_jointype===P.JoinType.jtRound)for(o=1,n=0,e=1;e<=r;e++){this.m_destPoly.push(new P.IntPoint2(P.ClipperOffset.Round(this.m_srcPoly[0].X+o*t),P.ClipperOffset.Round(this.m_srcPoly[0].Y+n*t)));var s=o;o=o*this.m_cos-this.m_sin*n,n=s*this.m_sin+n*this.m_cos}else for(n=o=-1,e=0;4>e;++e)this.m_destPoly.push(new P.IntPoint2(P.ClipperOffset.Round(this.m_srcPoly[0].X+o*t),P.ClipperOffset.Round(this.m_srcPoly[0].Y+n*t))),0>o?o=1:0>n?n=1:o=-1}else{for(e=this.m_normals.length=0;eMath.abs(this.m_sinA*this.m_delta)){if(0this.m_sinA&&(this.m_sinA=-1);if(0>this.m_sinA*this.m_delta)this.m_destPoly.push(new P.IntPoint2(P.ClipperOffset.Round(this.m_srcPoly[t].X+this.m_normals[e].X*this.m_delta),P.ClipperOffset.Round(this.m_srcPoly[t].Y+this.m_normals[e].Y*this.m_delta))),this.m_destPoly.push(new P.IntPoint1(this.m_srcPoly[t])),this.m_destPoly.push(new P.IntPoint2(P.ClipperOffset.Round(this.m_srcPoly[t].X+this.m_normals[t].X*this.m_delta),P.ClipperOffset.Round(this.m_srcPoly[t].Y+this.m_normals[t].Y*this.m_delta)));else switch(i){case P.JoinType.jtMiter:(i=1+(this.m_normals[t].X*this.m_normals[e].X+this.m_normals[t].Y*this.m_normals[e].Y))>=this.m_miterLim?this.DoMiter(t,e,i):this.DoSquare(t,e);break;case P.JoinType.jtSquare:this.DoSquare(t,e);break;case P.JoinType.jtRound:this.DoRound(t,e)}return t},P.ClipperOffset.prototype.DoSquare=function(t,e){var i=Math.tan(Math.atan2(this.m_sinA,this.m_normals[e].X*this.m_normals[t].X+this.m_normals[e].Y*this.m_normals[t].Y)/4);this.m_destPoly.push(new P.IntPoint2(P.ClipperOffset.Round(this.m_srcPoly[t].X+this.m_delta*(this.m_normals[e].X-this.m_normals[e].Y*i)),P.ClipperOffset.Round(this.m_srcPoly[t].Y+this.m_delta*(this.m_normals[e].Y+this.m_normals[e].X*i)))),this.m_destPoly.push(new P.IntPoint2(P.ClipperOffset.Round(this.m_srcPoly[t].X+this.m_delta*(this.m_normals[t].X+this.m_normals[t].Y*i)),P.ClipperOffset.Round(this.m_srcPoly[t].Y+this.m_delta*(this.m_normals[t].Y-this.m_normals[t].X*i))))},P.ClipperOffset.prototype.DoMiter=function(t,e,i){i=this.m_delta/i,this.m_destPoly.push(new P.IntPoint2(P.ClipperOffset.Round(this.m_srcPoly[t].X+(this.m_normals[e].X+this.m_normals[t].X)*i),P.ClipperOffset.Round(this.m_srcPoly[t].Y+(this.m_normals[e].Y+this.m_normals[t].Y)*i)))},P.ClipperOffset.prototype.DoRound=function(t,e){for(var i,n=Math.max(P.Cast_Int32(P.ClipperOffset.Round(this.m_StepsPerRad*Math.abs(Math.atan2(this.m_sinA,this.m_normals[e].X*this.m_normals[t].X+this.m_normals[e].Y*this.m_normals[t].Y)))),1),r=this.m_normals[e].X,o=this.m_normals[e].Y,s=0;se)return t;i||(t=[t]);for(var n,r,o,s,l,p,h,u=t.length,a=[],f=0;fn)o=r,a.push(o);else{for(o=r,s=e*e,l=r[0],h=p=1;he)return P.JS.Clone(t);var i=t[0]instanceof Array;i||(t=[t]);var n,r,o,s=t.length,l=e*e,p=[];for(n=0;no;o++){var a=[];if(u=h.length,h[u-1].X!==h[0].X||h[u-1].Y!==h[0].Y){var f=1;h.push({X:h[0].X,Y:h[0].Y}),u=h.length}else f=0;var d=[];for(r=0;ro)return 0;for(e&&(t[o]=t[0],o++);--o;){var s=t[o],l=s.X;s=s.Y;var p=t[o-1],h=p.X;r+=n((l-h)*(l-h)+(s-(p=p.Y))*(s-p))}return e&&t.pop(),r/i},P.JS.PerimeterOfPaths=function(t,e,i){i||(i=1);for(var n=0,r=0;rtA(function(t,e){if(t.length!==e.length)throw new l({expectedLength:t.length,givenLength:e.length});let i=[];for(let n=0;n>1]>>4>=8&&r[t]&&(r[t]=r[t].toUpperCase()),(15&n[t>>1])>=8&&r[t+1]&&(r[t+1]=r[t+1].toUpperCase());let o=`0x${r.join("")}`;return tB.set(`${t}.${e}`,o),o}(t)===t);return tD.set(n,r),r}(i))throw new u({address:i});return d(i.toLowerCase(),{size:n?32:null})}if("string"===e)return C(i);if("bytes"===e)return i;if("bool"===e)return d(v(i),{size:n?32:1});let r=e.match(tz);if(r){let[t,e,o="256"]=r,s=Number.parseInt(o)/8;return I(i,{size:n?32:s,signed:"int"===e})}let o=e.match(tF);if(o){let[t,e]=o;if(Number.parseInt(e)!==(i.length-2)/2)throw new p({expectedSize:Number.parseInt(e),givenSize:(i.length-2)/2});return d(i,{dir:"right",size:n?32:null})}let s=e.match(tR);if(s&&Array.isArray(i)){let[e,n]=s,r=[];for(let e=0;e1)&&parseInt(tH[1]),tZ||(tZ=Math.floor(150*Math.random())+1),console.log({tokenId:tZ});let t$=tk(["uint256"],[tZ]);if(1==tZ&&"0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6"!==t$)throw Error("invalid token id should be 0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6");const tj=new class{constructor(t){this.useA=!1;let e=function(t){let e=parseInt(t.substr(0,8),16),i=parseInt(t.substr(8,8),16),n=parseInt(t.substr(16,8),16),r=parseInt(t.substr(24,8),16);return function(){e|=0,i|=0,n|=0,r|=0;let t=(e+i|0)+r|0;return r=r+1|0,e=i^i>>>9,i=n+(n<<3)|0,n=(n=n<<21|n>>>11)+t|0,(t>>>0)/4294967296}};this.prngA=new e(t.substr(2,32)),this.prngB=new e(t.substr(34,32));for(let t=0;t<1e6;t+=2)this.prngA(),this.prngB()}float(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}int(t=0,e=1){return Math.round(t+this.float()*(e-t))}bell(t=1,e){let i=0,n=0;for(;0===i;)i=this.float();for(;0===n;)n=this.float();let r=Math.sqrt(-2*Math.log(i))*Math.cos(2*Math.PI*n);return(r=r/10+.5)>1||r<0?this.bell(e):(e&&(r>=0&&r<.5?r+=.5:r-=.5),Math.round(r*t))}}(t$);let tJ=window.innerWidth,tV=window.innerHeight,tG=tJ>=tV?tJ:tV;var tK=tj.int(3,10),tQ=parseInt(tG/tK),t0=tj.int(100,500),t1=tj.int(2,300),t2=tj.int(2,300),t3=tj.int(0,360);const t4=0==tq(0,10,t$);let t5=tk(["bytes32"],[t$]);const t6=t4||0==tq(0,1,t5);t5=tk(["bytes32"],[t5]);const t8=t4||!t6||0==tq(0,1,t5),t7=0==tq(0,3,t5=tk(["bytes32"],[t5])),t9=0==tq(0,10,t5=tk(["bytes32"],[t5])),et=0==tq(0,2,t5=tk(["bytes32"],[t5])),ee=0==tq(0,1,t5=tk(["bytes32"],[t5]));let ei=tj.int(5,10),en=tj.int(1,3),er=tj.int(0,2),eo=tj.int(4,50),es={x:tj.int(tQ,tJ-2*tQ),y:tj.int(tQ,tV-2*tQ)},el=function(){let t=[];for(let e=0;e<1e3;e++){let e=new eh;t.push(e)}return t}(),ep=function(){let t=[];for(let e=0;e<1;e++){let e=new eu;e.createRn(),t.push(e)}return t}();function eh(){this.x=0,this.y=0,this.w=0,this.h=0,this.xR=tj.float(),this.yR=tj.float(),this.wR=tj.float(),this.hR=tj.float(),this.getPath=function(){return this.marginize(),[[{X:this.x,Y:this.y},{X:this.x+this.w,Y:this.y},{X:this.x+this.w,Y:this.y+this.h},{X:this.x,Y:this.y+this.h}]]},this.setValue=function(t,e){this[t]=parseInt(e)},this.marginize=function(){this.x+this.w>tJ&&(this.x=tJ-this.w),this.x<0&&(this.x=0),this.y+this.h>tV&&(this.y=tV-this.h),this.y<0&&(this.y=0)}}function eu(){this.startX=tj.int(tQ,tJ-tQ),this.startY=tj.int(tQ,tV-tQ),this.polyLength=tj.int(400,1e3),this.stepVar=tj.int(100,1e3),this.rnArray=[],this.path,this.marginVar=tj.int(1,30),this.applyMargin=0!=tj.int(0,2),this.makePolygon=function(){this.path=[[]];let t=parseInt(this.startX),e=parseInt(this.startY);this.path[0].push({X:t,Y:e});let i=0!=Math.round(this.rnArray[0]);for(let n=0;ntJ-tQ?t=tJ-tQ-this.marginVar+parseInt(this.rnArray[2*i]*this.marginVar*2):ttV-tQ&&(t=tV-tQ-this.marginVar+parseInt(this.rnArray[2*i+1]*this.marginVar*2)),t=tV?tJ:tV,e=t/ei;for(let i=0;i<=t/e;i++)for(let r=0;r<=t/e;r++)n=ef(n,[[{X:i*e,Y:r*e},{X:i+e,Y:r},{X:i+e,Y:r+e},{X:i,Y:r+e}]],"union")}if(et||t){let t=[[]];for(let e=0;e255?255:r+h,o=o+h>255?255:o+h,s=s+h>255?255:s+h):(r=r-h<0?0:r-h,o=o-h<0?0:o-h,s=s-h<0?0:s-h);let u=`rgb(${r},${o},${s})`;e=`background: linear-gradient(${i}deg, ${l} 0%, ${u} 100%)`}}else e=1==p?"background-color: white":2==p?"background-color: black":`background-image: linear-gradient(45deg, #cbcccb 25%, transparent 25%), linear-gradient(-45deg, #cbcccb 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #cbcccb 75%), linear-gradient(-45deg, transparent 75%, #cbcccb 75%); +Given length (values): ${e}`,{name:"AbiEncodingLengthMismatchError"})}}class p extends s{constructor({expectedSize:t,givenSize:e}){super(`Expected bytes${t}, got bytes${e}.`,{name:"BytesSizeMismatchError"})}}class h extends s{constructor(t){super(`Type "${t}" is not supported for packed encoding.`,{name:"UnsupportedPackedAbiType"})}}class u extends s{constructor({address:t}){super(`Address "${t}" is invalid.`,{metaMessages:["- Address must be a hex value of 20 bytes (40 hex characters).","- Address must match its checksum counterpart."],name:"InvalidAddressError"})}}class a extends Map{constructor(t){super(),Object.defineProperty(this,"maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=t}set(t,e){return super.set(t,e),this.maxSize&&this.size>this.maxSize&&this.delete(this.keys().next().value),this}}class f extends s{constructor({size:t,targetSize:e,type:i}){super(`${i.charAt(0).toUpperCase()}${i.slice(1).toLowerCase()} size (${t}) exceeds padding size (${e}).`,{name:"SizeExceedsPaddingSizeError"})}}function d(t,{dir:e,size:i=32}={}){return"string"==typeof t?function(t,{dir:e,size:i=32}={}){if(null===i)return t;let n=t.replace("0x","");if(n.length>2*i)throw new f({size:Math.ceil(n.length/2),targetSize:i,type:"hex"});return`0x${n["right"===e?"padEnd":"padStart"](2*i,"0")}`}(t,{dir:e,size:i}):function(t,{dir:e,size:i=32}={}){if(null===i)return t;if(t.length>i)throw new f({size:t.length,targetSize:i,type:"bytes"});let n=new Uint8Array(i);for(let r=0;re)throw new P({givenSize:n(t),maxSize:e})}const m=/*#__PURE__*/Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function v(t,e={}){let i=`0x${Number(t)}`;return"number"==typeof e.size?(y(i,{size:e.size}),d(i,{size:e.size})):i}function x(t,e={}){let i="";for(let e=0;ei||o=L.zero&&t<=L.nine?t-L.zero:t>=L.A&&t<=L.F?t-(L.A-10):t>=L.a&&t<=L.f?t-(L.a-10):void 0}function T(t,e={}){let i=t;e.size&&(y(i,{size:e.size}),i=d(i,{dir:"right",size:e.size}));let n=i.slice(2);n.length%2&&(n=`0${n}`);let r=n.length/2,o=new Uint8Array(r);for(let t=0,e=0;t0&&!e.includes(t.length))throw Error(`Expected Uint8Array of length ${e}, not of length=${t.length}`)}function A(t){if("function"!=typeof t||"function"!=typeof t.create)throw Error("Hash should be wrapped by utils.wrapConstructor");N(t.outputLen),N(t.blockLen)}function B(t,e=!0){if(t.destroyed)throw Error("Hash instance has been destroyed");if(e&&t.finished)throw Error("Hash#digest() has already been called")}function w(t,e){b(t);let i=e.outputLen;if(t.length>R&M)}:{h:0|Number(t>>R&M),l:0|Number(t&M)}}function z(t,e=!1){let i=new Uint32Array(t.length),n=new Uint32Array(t.length);for(let r=0;rBigInt(t>>>0)<>>0);D.toBig=W;const k=(t,e,i)=>t>>>i;D.shrSH=k;const q=(t,e,i)=>t<<32-i|e>>>i;D.shrSL=q;const H=(t,e,i)=>t>>>i|e<<32-i;D.rotrSH=H;const Z=(t,e,i)=>t<<32-i|e>>>i;D.rotrSL=Z;const U=(t,e,i)=>t<<64-i|e>>>i-32;D.rotrBH=U;const $=(t,e,i)=>t>>>i-32|e<<64-i;D.rotrBL=$;const j=(t,e)=>e;D.rotr32H=j;const J=(t,e)=>t;D.rotr32L=J;const V=(t,e,i)=>t<>>32-i;D.rotlSH=V;const G=(t,e,i)=>e<>>32-i;D.rotlSL=G;const K=(t,e,i)=>e<>>64-i;D.rotlBH=K;const Q=(t,e,i)=>t<>>64-i;function tt(t,e,i,n){let r=(e>>>0)+(n>>>0);return{h:t+i+(r/4294967296|0)|0,l:0|r}}D.rotlBL=Q,D.add=tt;const te=(t,e,i)=>(t>>>0)+(e>>>0)+(i>>>0);D.add3L=te;const ti=(t,e,i,n)=>e+i+n+(t/4294967296|0)|0;D.add3H=ti;const tn=(t,e,i,n)=>(t>>>0)+(e>>>0)+(i>>>0)+(n>>>0);D.add4L=tn;const tr=(t,e,i,n,r)=>e+i+n+r+(t/4294967296|0)|0;D.add4H=tr;const to=(t,e,i,n,r)=>(t>>>0)+(e>>>0)+(i>>>0)+(n>>>0)+(r>>>0);D.add5L=to;const ts=(t,e,i,n,r,o)=>e+i+n+r+o+(t/4294967296|0)|0;D.add5H=ts,D.default={fromBig:F,split:z,toBig:W,shrSH:k,shrSL:q,rotrSH:H,rotrSL:Z,rotrBH:U,rotrBL:$,rotr32H:j,rotr32L:J,rotlSH:V,rotlSL:G,rotlBH:K,rotlBL:Q,add:tt,add3L:te,add3H:ti,add4L:tn,add4H:tr,add5H:ts,add5L:to};var tl={};/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */Object.defineProperty(tl,"__esModule",{value:!0}),tl.randomBytes=tl.wrapXOFConstructorWithOpts=tl.wrapConstructorWithOpts=tl.wrapConstructor=tl.checkOpts=tl.Hash=tl.concatBytes=tl.toBytes=tl.utf8ToBytes=tl.asyncLoop=tl.nextTick=tl.hexToBytes=tl.bytesToHex=tl.isLE=tl.rotr=tl.createView=tl.u32=tl.u8=void 0;var tp={};Object.defineProperty(tp,"__esModule",{value:!0}),tp.crypto=void 0,tp.crypto="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0;const th=t=>t instanceof Uint8Array;if(tl.u8=t=>new Uint8Array(t.buffer,t.byteOffset,t.byteLength),tl.u32=t=>new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4)),tl.createView=t=>new DataView(t.buffer,t.byteOffset,t.byteLength),tl.rotr=(t,e)=>t<<32-e|t>>>e,tl.isLE=68===new Uint8Array(new Uint32Array([287454020]).buffer)[0],!tl.isLE)throw Error("Non little-endian hardware is not supported");const tu=/* @__PURE__ */Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));tl.bytesToHex=function(t){if(!th(t))throw Error("Uint8Array expected");let e="";for(let i=0;i{};async function tf(t,e,i){let n=Date.now();for(let r=0;r=0&&tt+e.length,0)),i=0;return t.forEach(t=>{if(!th(t))throw Error("Uint8Array expected");e.set(t,i),i+=t.length}),e},tl.Hash=class{clone(){return this._cloneInto()}};const tP={}.toString;tl.checkOpts=function(t,e){if(void 0!==e&&"[object Object]"!==tP.call(e))throw Error("Options should be object or undefined");return Object.assign(t,e)},tl.wrapConstructor=function(t){let e=e=>t().update(tc(e)).digest(),i=t();return e.outputLen=i.outputLen,e.blockLen=i.blockLen,e.create=()=>t(),e},tl.wrapConstructorWithOpts=function(t){let e=(e,i)=>t(i).update(tc(e)).digest(),i=t({});return e.outputLen=i.outputLen,e.blockLen=i.blockLen,e.create=e=>t(e),e},tl.wrapXOFConstructorWithOpts=function(t){let e=(e,i)=>t(i).update(tc(e)).digest(),i=t({});return e.outputLen=i.outputLen,e.blockLen=i.blockLen,e.create=e=>t(e),e},tl.randomBytes=function(t=32){if(tp.crypto&&"function"==typeof tp.crypto.getRandomValues)return tp.crypto.getRandomValues(new Uint8Array(t));throw Error("crypto.getRandomValues must be defined")};const[ty,tm,tv]=[[],[],[]],tx=/* @__PURE__ */BigInt(0),tI=/* @__PURE__ */BigInt(1),tg=/* @__PURE__ */BigInt(2),tC=/* @__PURE__ */BigInt(7),t_=/* @__PURE__ */BigInt(256),tL=/* @__PURE__ */BigInt(113);for(let t=0,e=tI,i=1,n=0;t<24;t++){[i,n]=[n,(2*i+3*n)%5],ty.push(2*(5*n+i)),tm.push((t+1)*(t+2)/2%64);let r=tx;for(let t=0;t<7;t++)(e=(e<>tC)*tL)%t_)&tg&&(r^=tI<<(tI<i>32?(0,D.rotlBH)(t,e,i):(0,D.rotlSH)(t,e,i),tY=(t,e,i)=>i>32?(0,D.rotlBL)(t,e,i):(0,D.rotlSL)(t,e,i);function tO(t,e=24){let i=new Uint32Array(10);for(let n=24-e;n<24;n++){for(let e=0;e<10;e++)i[e]=t[e]^t[e+10]^t[e+20]^t[e+30]^t[e+40];for(let e=0;e<10;e+=2){let n=(e+8)%10,r=(e+2)%10,o=i[r],s=i[r+1],l=tX(o,s,1)^i[n],p=tY(o,s,1)^i[n+1];for(let i=0;i<50;i+=10)t[e+i]^=l,t[e+i+1]^=p}let e=t[2],r=t[3];for(let i=0;i<24;i++){let n=tm[i],o=tX(e,r,n),s=tY(e,r,n),l=ty[i];e=t[l],r=t[l+1],t[l]=o,t[l+1]=s}for(let e=0;e<50;e+=10){for(let n=0;n<10;n++)i[n]=t[e+n];for(let n=0;n<10;n++)t[e+n]^=~i[(n+2)%10]&i[(n+4)%10]}t[0]^=tE[n],t[1]^=tT[n]}i.fill(0)}Y.keccakP=tO;class tN extends tl.Hash{constructor(t,e,i,n=!1,r=24){if(super(),this.blockLen=t,this.suffix=e,this.outputLen=i,this.enableXOF=n,this.rounds=r,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,(0,O.number)(i),0>=this.blockLen||this.blockLen>=200)throw Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=(0,tl.u32)(this.state)}keccak(){tO(this.state32,this.rounds),this.posOut=0,this.pos=0}update(t){(0,O.exists)(this);let{blockLen:e,state:i}=this,n=(t=(0,tl.toBytes)(t)).length;for(let r=0;r=i&&this.keccak();let o=Math.min(i-this.posOut,r-n);t.set(e.subarray(this.posOut,this.posOut+o),n),this.posOut+=o,n+=o}return t}xofInto(t){if(!this.enableXOF)throw Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return(0,O.number)(t),this.xofInto(new Uint8Array(t))}digestInto(t){if((0,O.output)(t,this),this.finished)throw Error("digest() was already called");return this.writeInto(t),this.destroy(),t}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(t){let{blockLen:e,suffix:i,outputLen:n,rounds:r,enableXOF:o}=this;return t||(t=new tN(e,i,n,o,r)),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=r,t.suffix=i,t.outputLen=n,t.enableXOF=o,t.destroyed=this.destroyed,t}}Y.Keccak=tN;const tS=(t,e,i)=>(0,tl.wrapConstructor)(()=>new tN(e,t,i));Y.sha3_224=tS(6,144,28),Y.sha3_256=tS(6,136,32),Y.sha3_384=tS(6,104,48),Y.sha3_512=tS(6,72,64),Y.keccak_224=tS(1,144,28),Y.keccak_256=tS(1,136,32),Y.keccak_384=tS(1,104,48),Y.keccak_512=tS(1,72,64);const tb=(t,e,i)=>(0,tl.wrapXOFConstructorWithOpts)((n={})=>new tN(e,t,void 0===n.dkLen?i:n.dkLen,!0));function tA(t,e){let n=(0,Y.keccak_256)(i(t,{strict:!1})?function(t,e={}){return"number"==typeof t||"bigint"==typeof t?T(I(t,e)):"boolean"==typeof t?function(t,e={}){let i=new Uint8Array(1);return(i[0]=Number(t),"number"==typeof e.size)?(y(i,{size:e.size}),d(i,{size:e.size})):i}(t,e):i(t)?T(t,e):X(t,e)}(t):t);return"bytes"===(e||"hex")?n:function(t,e={}){return"number"==typeof t||"bigint"==typeof t?I(t,e):"string"==typeof t?C(t,e):"boolean"==typeof t?v(t,e):x(t,e)}(n)}Y.shake128=tb(31,168,16),Y.shake256=tb(31,136,32);const tB=/*#__PURE__*/new a(8192),tw=/^0x[a-fA-F0-9]{40}$/,tD=/*#__PURE__*/new a(8192);function tM(t){return`0x${t.reduce((t,e)=>t+e.replace("0x",""),"")}`}const tR=/^(.*)\[([0-9]*)\]$/,tF=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,tz=/^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;var tW={};!function(){function t(t,e,i){c.biginteger_used=1,null!=t&&("number"==typeof t&&void 0===e?this.fromInt(t):"number"==typeof t?this.fromNumber(t,e,i):null==e&&"string"!=typeof t?this.fromString(t,256):this.fromString(t,e))}function e(){return new t(null,void 0,void 0)}function i(t,e){var i=E[t.charCodeAt(e)];return null==i?-1:i}function n(t){var i=e();return i.fromInt(t),i}function r(t){var e,i=1;return 0!=(e=t>>>16)&&(t=e,i+=16),0!=(e=t>>8)&&(t=e,i+=8),0!=(e=t>>4)&&(t=e,i+=4),0!=(e=t>>2)&&(t=e,i+=2),0!=t>>1&&(i+=1),i}function o(t){this.m=t}function s(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=15;0<=--o;){var l=32767&this[t],p=this[t++]>>15,h=e*l+p*s;r=((l=s*l+((32767&h)<<15)+i[n]+(1073741823&r))>>>30)+(h>>>15)+e*p+(r>>>30),i[n++]=1073741823&l}return r},m=30):"Netscape"!=m?(t.prototype.am=function(t,e,i,n,r,o){for(;0<=--o;){var s=e*this[t++]+i[n]+r;r=Math.floor(s/67108864),i[n++]=67108863&s}return r},m=26):(t.prototype.am=function(t,e,i,n,r,o){var s=16383&e;for(e>>=14;0<=--o;){var l=16383&this[t],p=this[t++]>>14,h=e*l+p*s;r=((l=s*l+((16383&h)<<14)+i[n]+r)>>28)+(h>>14)+e*p,i[n++]=268435455&l}return r},m=28),t.prototype.DB=m,t.prototype.DM=(1<=L;++L)E[m++]=L;for(L=10,m=97;36>L;++L)E[m++]=L;for(L=10,m=65;36>L;++L)E[m++]=L;o.prototype.convert=function(t){return 0>t.s||0<=t.compareTo(this.m)?t.mod(this.m):t},o.prototype.revert=function(t){return t},o.prototype.reduce=function(t){t.divRemTo(this.m,null,t)},o.prototype.mulTo=function(t,e,i){t.multiplyTo(e,i),this.reduce(i)},o.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},s.prototype.convert=function(i){var n=e();return i.abs().dlShiftTo(this.m.t,n),n.divRemTo(this.m,null,n),0>i.s&&0>15)*this.mpl&this.um)<<15)&t.DM;for(i=e+this.m.t,t[i]+=this.m.am(0,n,t,e,0,this.m.t);t[i]>=t.DV;)t[i]-=t.DV,t[++i]++}t.clamp(),t.drShiftTo(this.m.t,t),0<=t.compareTo(this.m)&&t.subTo(this.m,t)},s.prototype.mulTo=function(t,e,i){t.multiplyTo(e,i),this.reduce(i)},s.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},t.prototype.copyTo=function(t){for(var e=this.t-1;0<=e;--e)t[e]=this[e];t.t=this.t,t.s=this.s},t.prototype.fromInt=function(t){this.t=1,this.s=0>t?-1:0,0t?this[0]=t+this.DV:this.t=0},t.prototype.fromString=function(e,n){if(16==n)var r=4;else if(8==n)r=3;else if(256==n)r=8;else if(2==n)r=1;else if(32==n)r=5;else if(4==n)r=2;else{this.fromRadix(e,n);return}this.s=this.t=0;for(var o=e.length,s=!1,l=0;0<=--o;){var p=8==r?255&e[o]:i(e,o);0>p?"-"==e.charAt(o)&&(s=!0):(s=!1,0==l?this[this.t++]=p:l+r>this.DB?(this[this.t-1]|=(p&(1<>this.DB-l):this[this.t-1]|=p<=this.DB&&(l-=this.DB))}8==r&&0!=(128&e[0])&&(this.s=-1,0>r|l,l=(this[i]&o)<=this.t)e.t=0;else{var n=t%this.DB,r=this.DB-n,o=(1<>n;for(var s=i+1;s>n;0>=this.DB;if(t.t>=this.DB;n+=this.s}else{for(n+=this.s;i>=this.DB;n-=t.s}e.s=0>n?-1:0,-1>n?e[i++]=this.DV+n:0=e.DV&&(t[i+e.t]-=e.DV,t[i+e.t+1]=1)}0=s.t)){var l=this.abs();if(l.t>this.F2:0),f=this.FV/a;a=(1<h&&t.ZERO.subTo(o,o)}}}},t.prototype.invDigit=function(){if(1>this.t)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return 0<(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)?this.DV-e:-e},t.prototype.isEven=function(){return 0==(0i)return t.ONE;var o=e(),s=e(),l=n.convert(this),p=r(i)-1;for(l.copyTo(o);0<=--p;)if(n.sqrTo(o,s),0<(i&1<this.s)return"-"+this.negate().toString(t);if(16==t)t=4;else if(8==t)t=3;else if(2==t)t=1;else if(32==t)t=5;else{if(4!=t)return this.toRadix(t);t=2}var e,i=(1<>s)&&(n=!0,r="0123456789abcdefghijklmnopqrstuvwxyz".charAt(e));0<=o;)s>(s+=this.DB-t):(e=this[o]>>(s-=t)&i,0>=s&&(s+=this.DB,--o)),0this.s?this.negate():this},t.prototype.compareTo=function(t){var e=this.s-t.s;if(0!=e)return e;var i=this.t;if(0!=(e=i-t.t))return 0>this.s?-e:e;for(;0<=--i;)if(0!=(e=this[i]-t[i]))return e;return 0},t.prototype.bitLength=function(){return 0>=this.t?0:this.DB*(this.t-1)+r(this[this.t-1]^this.s&this.DM)},t.prototype.mod=function(i){var n=e();return this.abs().divRemTo(i,null,n),0>this.s&&0t||e.isEven()?new o(e):new s(e);return this.exp(t,i)},t.ZERO=n(0),t.ONE=n(1),a.prototype.convert=f,a.prototype.revert=f,a.prototype.mulTo=function(t,e,i){t.multiplyTo(e,i)},a.prototype.sqrTo=function(t,e){t.squareTo(e)},d.prototype.convert=function(t){if(0>t.s||t.t>2*this.m.t)return t.mod(this.m);if(0>t.compareTo(this.m))return t;var i=e();return t.copyTo(i),this.reduce(i),i},d.prototype.revert=function(t){return t},d.prototype.reduce=function(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);0>t.compareTo(this.r2);)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);0<=t.compareTo(this.m);)t.subTo(this.m,t)},d.prototype.mulTo=function(t,e,i){t.multiplyTo(e,i),this.reduce(i)},d.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)};var T=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],X=67108864/T[T.length-1];t.prototype.chunkSize=function(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},t.prototype.toRadix=function(t){if(null==t&&(t=10),0==this.signum()||2>t||36u?"-"==e.charAt(h)&&0==this.signum()&&(s=!0):(p=n*p+u,++l>=r&&(this.dMultiply(o),this.dAddOffset(p,0),p=l=0))}0e)this.fromInt(1);else for(this.fromNumber(e,n),this.testBit(e-1)||this.bitwiseTo(t.ONE.shiftLeft(e-1),p,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(i);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(t.ONE.shiftLeft(e-1),this)}else{var r=7&e;(n=[]).length=(e>>3)+1,i.nextBytes(n),n[0]=0>=this.DB;if(t.t>=this.DB;n+=this.s}else{for(n+=this.s;i>=this.DB;n+=t.s}e.s=0>n?-1:0,0n&&(e[i++]=this.DV+n),e.t=i,e.clamp()},t.prototype.dMultiply=function(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},t.prototype.dAddOffset=function(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},t.prototype.multiplyLowerTo=function(t,e,i){var n,r=Math.min(this.t+t.t,e);for(i.s=0,i.t=r;0=t)return 0;var e=this.DV%t,i=0>this.s?t-1:0;if(0=r)return!1;var o=n.shiftRight(r);(i=i+1>>1)>T.length&&(i=T.length);for(var s=e(),l=0;lthis.s){if(1==this.t)return this[0]-this.DV;if(0==this.t)return -1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<>24},t.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},t.prototype.signum=function(){return 0>this.s?-1:0>=this.t||1==this.t&&0>=this[0]?0:1},t.prototype.toByteArray=function(){var t=this.t,e=[];e[0]=this.s;var i,n=this.DB-t*this.DB%8,r=0;if(0>n)!=(this.s&this.DM)>>n&&(e[r++]=i|this.s<n?i=(this[t]&(1<>(n+=this.DB-8):(i=this[t]>>(n-=8)&255,0>=n&&(n+=this.DB,--t)),0!=(128&i)&&(i|=-256),0==r&&(128&this.s)!=(128&i)&&++r,(0this.compareTo(t)?this:t},t.prototype.max=function(t){return 0t?this.rShiftTo(-t,i):this.lShiftTo(t,i),i},t.prototype.shiftRight=function(t){var i=e();return 0>t?this.lShiftTo(-t,i):this.rShiftTo(t,i),i},t.prototype.getLowestSetBit=function(){for(var t=0;t>=16,i+=16),0==(255&t)&&(t>>=8,i+=8),0==(15&t)&&(t>>=4,i+=4),0==(3&t)&&(t>>=2,i+=2),0==(1&t)&&++i,t=i}return e+t}return 0>this.s?this.t*this.DB:-1},t.prototype.bitCount=function(){for(var t=0,e=this.s&this.DM,i=0;i=this.t?0!=this.s:0!=(this[e]&1<=l)return p;var h=18>l?1:48>l?3:144>l?4:768>l?5:6,u=8>l?new o(i):i.isEven()?new d(i):new s(i),a=[],f=3,c=h-1,P=(1<=c)var x=t[y]>>l-c&P;else x=(t[y]&(1<>this.DB+l-c);for(f=h;0==(1&x);)x>>=1,--f;if(0>(l-=f)&&(l+=this.DB,--y),m)a[x].copyTo(p),m=!1;else{for(;1--l&&(l=this.DB-1,--y)}return u.revert(p)},t.prototype.modInverse=function(e){var i=e.isEven();if(this.isEven()&&i||0==e.signum())return t.ZERO;for(var r=e.clone(),o=this.clone(),s=n(1),l=n(0),p=n(0),h=n(1);0!=r.signum();){for(;r.isEven();)r.rShiftTo(1,r),i?(s.isEven()&&l.isEven()||(s.addTo(this,s),l.subTo(e,l)),s.rShiftTo(1,s)):l.isEven()||l.subTo(e,l),l.rShiftTo(1,l);for(;o.isEven();)o.rShiftTo(1,o),i?(p.isEven()&&h.isEven()||(p.addTo(this,p),h.subTo(e,h)),p.rShiftTo(1,p)):h.isEven()||h.subTo(e,h),h.rShiftTo(1,h);0<=r.compareTo(o)?(r.subTo(o,r),i&&s.subTo(p,s),l.subTo(h,l)):(o.subTo(r,o),i&&p.subTo(s,p),h.subTo(l,h))}return 0!=o.compareTo(t.ONE)?t.ZERO:0<=h.compareTo(e)?h.subtract(e):0>h.signum()?(h.addTo(e,h),0>h.signum()?h.add(e):h):h},t.prototype.pow=function(t){return this.exp(t,new a)},t.prototype.gcd=function(t){var e=0>this.s?this.negate():this.clone();if(t=0>t.s?t.negate():t.clone(),0>e.compareTo(t)){var i=e;e=t,t=i}i=e.getLowestSetBit();var n=t.getLowestSetBit();if(0>n)return e;for(it.compareTo(e)},t.op_Addition=function(e,i){return new t(e,void 0,void 0).add(new t(i,void 0,void 0))},t.op_Subtraction=function(e,i){return new t(e,void 0,void 0).subtract(new t(i,void 0,void 0))},t.Int128Mul=function(e,i){return new t(e,void 0,void 0).multiply(new t(i,void 0,void 0))},t.op_Division=function(t,e){return t.divide(e)},t.prototype.ToDouble=function(){return parseFloat(this.toString())},m=function(t,e){var i;if(void 0===Object.getOwnPropertyNames)for(i in e.prototype)(void 0===t.prototype[i]||t.prototype[i]===Object.prototype[i])&&(t.prototype[i]=e.prototype[i]);else for(var n=Object.getOwnPropertyNames(e.prototype),r=0;rt||2147483647t?Math.ceil(t):Math.floor(t):~~t}:I&&"function"==typeof Number.toInteger?function(t){return Number.toInteger(t)}:_||C?function(t){return parseInt(t,10)}:y?function(t){return -2147483648>t||2147483647t?Math.ceil(t):Math.floor(t):0|t}:function(t){return 0>t?Math.ceil(t):Math.floor(t)},c.Clear=function(t){t.length=0},c.PI=3.141592653589793,c.PI2=6.283185307179586,c.IntPoint=function(){var t=arguments,e=t.length;this.Y=this.X=0,c.use_xyz?(this.Z=0,3===e?(this.X=t[0],this.Y=t[1],this.Z=t[2]):2===e?(this.X=t[0],this.Y=t[1],this.Z=0):1===e?t[0]instanceof c.DoublePoint?(t=t[0],this.X=c.Clipper.Round(t.X),this.Y=c.Clipper.Round(t.Y),this.Z=0):(void 0===(t=t[0]).Z&&(t.Z=0),this.X=t.X,this.Y=t.Y,this.Z=t.Z):this.Z=this.Y=this.X=0):2===e?(this.X=t[0],this.Y=t[1]):1===e?t[0]instanceof c.DoublePoint?(t=t[0],this.X=c.Clipper.Round(t.X),this.Y=c.Clipper.Round(t.Y)):(t=t[0],this.X=t.X,this.Y=t.Y):this.Y=this.X=0},c.IntPoint.op_Equality=function(t,e){return t.X===e.X&&t.Y===e.Y},c.IntPoint.op_Inequality=function(t,e){return t.X!==e.X||t.Y!==e.Y},c.IntPoint0=function(){this.Y=this.X=0,c.use_xyz&&(this.Z=0)},c.IntPoint0.prototype=c.IntPoint.prototype,c.IntPoint1=function(t){this.X=t.X,this.Y=t.Y,c.use_xyz&&(this.Z=void 0===t.Z?0:t.Z)},c.IntPoint1.prototype=c.IntPoint.prototype,c.IntPoint1dp=function(t){this.X=c.Clipper.Round(t.X),this.Y=c.Clipper.Round(t.Y),c.use_xyz&&(this.Z=0)},c.IntPoint1dp.prototype=c.IntPoint.prototype,c.IntPoint2=function(t,e,i){this.X=t,this.Y=e,c.use_xyz&&(this.Z=void 0===i?0:i)},c.IntPoint2.prototype=c.IntPoint.prototype,c.IntRect=function(){var t=arguments,e=t.length;4===e?(this.left=t[0],this.top=t[1],this.right=t[2],this.bottom=t[3]):1===e?(t=t[0],this.left=t.left,this.top=t.top,this.right=t.right,this.bottom=t.bottom):this.bottom=this.right=this.top=this.left=0},c.IntRect0=function(){this.bottom=this.right=this.top=this.left=0},c.IntRect0.prototype=c.IntRect.prototype,c.IntRect1=function(t){this.left=t.left,this.top=t.top,this.right=t.right,this.bottom=t.bottom},c.IntRect1.prototype=c.IntRect.prototype,c.IntRect4=function(t,e,i,n){this.left=t,this.top=e,this.right=i,this.bottom=n},c.IntRect4.prototype=c.IntRect.prototype,c.ClipType={ctIntersection:0,ctUnion:1,ctDifference:2,ctXor:3},c.PolyType={ptSubject:0,ptClip:1},c.PolyFillType={pftEvenOdd:0,pftNonZero:1,pftPositive:2,pftNegative:3},c.JoinType={jtSquare:0,jtRound:1,jtMiter:2},c.EndType={etOpenSquare:0,etOpenRound:1,etOpenButt:2,etClosedLine:3,etClosedPolygon:4},c.EdgeSide={esLeft:0,esRight:1},c.Direction={dRightToLeft:0,dLeftToRight:1},c.TEdge=function(){this.Bot=new c.IntPoint0,this.Curr=new c.IntPoint0,this.Top=new c.IntPoint0,this.Delta=new c.IntPoint0,this.Dx=0,this.PolyTyp=c.PolyType.ptSubject,this.Side=c.EdgeSide.esLeft,this.OutIdx=this.WindCnt2=this.WindCnt=this.WindDelta=0,this.PrevInSEL=this.NextInSEL=this.PrevInAEL=this.NextInAEL=this.NextInLML=this.Prev=this.Next=null},c.IntersectNode=function(){this.Edge2=this.Edge1=null,this.Pt=new c.IntPoint0},c.MyIntersectNodeSort=function(){},c.MyIntersectNodeSort.Compare=function(t,e){var i=e.Pt.Y-t.Pt.Y;return 0i?-1:0},c.LocalMinima=function(){this.Y=0,this.Next=this.RightBound=this.LeftBound=null},c.Scanbeam=function(){this.Y=0,this.Next=null},c.Maxima=function(){this.X=0,this.Prev=this.Next=null},c.OutRec=function(){this.Idx=0,this.IsOpen=this.IsHole=!1,this.PolyNode=this.BottomPt=this.Pts=this.FirstLeft=null},c.OutPt=function(){this.Idx=0,this.Pt=new c.IntPoint0,this.Prev=this.Next=null},c.Join=function(){this.OutPt2=this.OutPt1=null,this.OffPt=new c.IntPoint0},c.ClipperBase=function(){this.m_CurrentLM=this.m_MinimaList=null,this.m_edges=[],this.PreserveCollinear=this.m_HasOpenPaths=this.m_UseFullRange=!1,this.m_ActiveEdges=this.m_PolyOuts=this.m_Scanbeam=null},c.ClipperBase.horizontal=-9007199254740992,c.ClipperBase.Skip=-2,c.ClipperBase.Unassigned=-1,c.ClipperBase.tolerance=1e-20,c.ClipperBase.loRange=47453132,c.ClipperBase.hiRange=0xfffffffffffff,c.ClipperBase.near_zero=function(t){return t>-c.ClipperBase.tolerance&&ti.X==e.Xi.Y==e.Yi.X==e.Xi.Y==e.Yc.ClipperBase.hiRange||t.Y>c.ClipperBase.hiRange||-t.X>c.ClipperBase.hiRange||-t.Y>c.ClipperBase.hiRange)&&c.Error("Coordinate outside allowed range in RangeTest()."):(t.X>c.ClipperBase.loRange||t.Y>c.ClipperBase.loRange||-t.X>c.ClipperBase.loRange||-t.Y>c.ClipperBase.loRange)&&(e.Value=!0,this.RangeTest(t,e))},c.ClipperBase.prototype.InitEdge=function(t,e,i,n){t.Next=e,t.Prev=i,t.Curr.X=n.X,t.Curr.Y=n.Y,c.use_xyz&&(t.Curr.Z=n.Z),t.OutIdx=-1},c.ClipperBase.prototype.InitEdge2=function(t,e){t.Curr.Y>=t.Next.Curr.Y?(t.Bot.X=t.Curr.X,t.Bot.Y=t.Curr.Y,c.use_xyz&&(t.Bot.Z=t.Curr.Z),t.Top.X=t.Next.Curr.X,t.Top.Y=t.Next.Curr.Y,c.use_xyz&&(t.Top.Z=t.Next.Curr.Z)):(t.Top.X=t.Curr.X,t.Top.Y=t.Curr.Y,c.use_xyz&&(t.Top.Z=t.Curr.Z),t.Bot.X=t.Next.Curr.X,t.Bot.Y=t.Next.Curr.Y,c.use_xyz&&(t.Bot.Z=t.Next.Curr.Z)),this.SetDx(t),t.PolyTyp=e},c.ClipperBase.prototype.FindNextLocMin=function(t){for(var e;;){for(;c.IntPoint.op_Inequality(t.Bot,t.Prev.Bot)||c.IntPoint.op_Equality(t.Curr,t.Top);)t=t.Next;if(t.Dx!==c.ClipperBase.horizontal&&t.Prev.Dx!==c.ClipperBase.horizontal)break;for(;t.Prev.Dx===c.ClipperBase.horizontal;)t=t.Prev;for(e=t;t.Dx===c.ClipperBase.horizontal;)t=t.Next;if(t.Top.Y!==t.Prev.Bot.Y){e.Prev.Bot.Xn.Next.Top.X&&(n=i.Prev)}for(;t!==n;)t.NextInLML=t.Next,t.Dx===c.ClipperBase.horizontal&&t!==r&&t.Bot.X!==t.Prev.Top.X&&this.ReverseHorizontal(t),t=t.Next;t.Dx===c.ClipperBase.horizontal&&t!==r&&t.Bot.X!==t.Prev.Top.X&&this.ReverseHorizontal(t),n=n.Next}else{for(;n.Top.Y===n.Prev.Bot.Y&&n.Prev.OutIdx!==c.ClipperBase.Skip;)n=n.Prev;if(n.Dx===c.ClipperBase.horizontal&&n.Prev.OutIdx!==c.ClipperBase.Skip){for(i=n;i.Next.Dx===c.ClipperBase.horizontal;)i=i.Next;(i.Next.Top.X===n.Prev.Top.X||i.Next.Top.X>n.Prev.Top.X)&&(n=i.Next)}for(;t!==n;)t.NextInLML=t.Prev,t.Dx===c.ClipperBase.horizontal&&t!==r&&t.Bot.X!==t.Next.Top.X&&this.ReverseHorizontal(t),t=t.Prev;t.Dx===c.ClipperBase.horizontal&&t!==r&&t.Bot.X!==t.Next.Top.X&&this.ReverseHorizontal(t),n=n.Prev}return n},c.ClipperBase.prototype.AddPath=function(t,e,i){c.use_lines?i||e!==c.PolyType.ptClip||c.Error("AddPath: Open paths must be subject."):i||c.Error("AddPath: Open paths have been disabled.");var n=t.length-1;if(i)for(;0n||!i&&1>n)return!1;for(var r=[],o=0;o<=n;o++)r.push(new c.TEdge);var s=!0;r[1].Curr.X=t[1].X,r[1].Curr.Y=t[1].Y,c.use_xyz&&(r[1].Curr.Z=t[1].Z);var l={Value:this.m_UseFullRange};for(this.RangeTest(t[0],l),this.m_UseFullRange=l.Value,l.Value=this.m_UseFullRange,this.RangeTest(t[n],l),this.m_UseFullRange=l.Value,this.InitEdge(r[0],r[1],r[n],t[0]),this.InitEdge(r[n],r[0],r[n-1],t[n]),o=n-1;1<=o;--o)l.Value=this.m_UseFullRange,this.RangeTest(t[o],l),this.m_UseFullRange=l.Value,this.InitEdge(r[o],r[o+1],r[o-1],t[o]);for(o=t=n=r[0];;)if(t.Curr===t.Next.Curr&&(i||t.Next!==n)){if(t===t.Next)break;t===n&&(n=t.Next),o=t=this.RemoveEdge(t)}else{if(t.Prev===t.Next)break;if(i&&c.ClipperBase.SlopesEqual4(t.Prev.Curr,t.Curr,t.Next.Curr,this.m_UseFullRange)&&(!this.PreserveCollinear||!this.Pt2IsBetweenPt1AndPt3(t.Prev.Curr,t.Curr,t.Next.Curr))){t===n&&(n=t.Next),o=t=(t=this.RemoveEdge(t)).Prev;continue}if((t=t.Next)===o||!i&&t.Next===n)break}if(!i&&t===t.Next||i&&t.Prev===t.Next)return!1;i||(this.m_HasOpenPaths=!0,n.Prev.OutIdx=c.ClipperBase.Skip),t=n;do this.InitEdge2(t,e),t=t.Next,s&&t.Curr.Y!==n.Curr.Y&&(s=!1);while(t!==n)if(s){if(i)return!1;for(t.Prev.OutIdx=c.ClipperBase.Skip,(e=new c.LocalMinima).Next=null,e.Y=t.Bot.Y,e.LeftBound=null,e.RightBound=t,e.RightBound.Side=c.EdgeSide.esRight,e.RightBound.WindDelta=0;t.Bot.X!==t.Prev.Top.X&&this.ReverseHorizontal(t),t.Next.OutIdx!==c.ClipperBase.Skip;)t=t.NextInLML=t.Next;return this.InsertLocalMinima(e),this.m_edges.push(r),!0}for(this.m_edges.push(r),s=null,c.IntPoint.op_Equality(t.Prev.Bot,t.Prev.Top)&&(t=t.Next);(t=this.FindNextLocMin(t))!==s;)null===s&&(s=t),(e=new c.LocalMinima).Next=null,e.Y=t.Bot.Y,t.Dxt.X==e.Xt.Y==e.Y=this.m_MinimaList.Y)t.Next=this.m_MinimaList,this.m_MinimaList=t;else{for(var e=this.m_MinimaList;null!==e.Next&&t.Ythis.m_Scanbeam.Y){var e=new c.Scanbeam;e.Y=t,e.Next=this.m_Scanbeam,this.m_Scanbeam=e}else{for(e=this.m_Scanbeam;null!==e.Next&&t<=e.Next.Y;)e=e.Next;if(t!==e.Y){var i=new c.Scanbeam;i.Y=t,i.Next=e.Next,e.Next=i}}},c.ClipperBase.prototype.PopScanbeam=function(t){return null===this.m_Scanbeam?(t.v=0,!1):(t.v=this.m_Scanbeam.Y,this.m_Scanbeam=this.m_Scanbeam.Next,!0)},c.ClipperBase.prototype.LocalMinimaPending=function(){return null!==this.m_CurrentLM},c.ClipperBase.prototype.CreateOutRec=function(){var t=new c.OutRec;return t.Idx=c.ClipperBase.Unassigned,t.IsHole=!1,t.IsOpen=!1,t.FirstLeft=null,t.Pts=null,t.BottomPt=null,t.PolyNode=null,this.m_PolyOuts.push(t),t.Idx=this.m_PolyOuts.length-1,t},c.ClipperBase.prototype.DisposeOutRec=function(t){this.m_PolyOuts[t].Pts=null,this.m_PolyOuts[t]=null},c.ClipperBase.prototype.UpdateEdgeIntoAEL=function(t){null===t.NextInLML&&c.Error("UpdateEdgeIntoAEL: invalid call");var e=t.PrevInAEL,i=t.NextInAEL;return t.NextInLML.OutIdx=t.OutIdx,null!==e?e.NextInAEL=t.NextInLML:this.m_ActiveEdges=t.NextInLML,null!==i&&(i.PrevInAEL=t.NextInLML),t.NextInLML.Side=t.Side,t.NextInLML.WindDelta=t.WindDelta,t.NextInLML.WindCnt=t.WindCnt,t.NextInLML.WindCnt2=t.WindCnt2,(t=t.NextInLML).Curr.X=t.Bot.X,t.Curr.Y=t.Bot.Y,t.PrevInAEL=e,t.NextInAEL=i,c.ClipperBase.IsHorizontal(t)||this.InsertScanbeam(t.Top.Y),t},c.ClipperBase.prototype.SwapPositionsInAEL=function(t,e){if(t.NextInAEL!==t.PrevInAEL&&e.NextInAEL!==e.PrevInAEL){if(t.NextInAEL===e){var i=e.NextInAEL;null!==i&&(i.PrevInAEL=t);var n=t.PrevInAEL;null!==n&&(n.NextInAEL=e),e.PrevInAEL=n,e.NextInAEL=t,t.PrevInAEL=e,t.NextInAEL=i}else e.NextInAEL===t?(null!==(i=t.NextInAEL)&&(i.PrevInAEL=e),null!==(n=e.PrevInAEL)&&(n.NextInAEL=t),t.PrevInAEL=n,t.NextInAEL=e,e.PrevInAEL=t,e.NextInAEL=i):(i=t.NextInAEL,n=t.PrevInAEL,t.NextInAEL=e.NextInAEL,null!==t.NextInAEL&&(t.NextInAEL.PrevInAEL=t),t.PrevInAEL=e.PrevInAEL,null!==t.PrevInAEL&&(t.PrevInAEL.NextInAEL=t),e.NextInAEL=i,null!==e.NextInAEL&&(e.NextInAEL.PrevInAEL=e),e.PrevInAEL=n,null!==e.PrevInAEL&&(e.PrevInAEL.NextInAEL=e));null===t.PrevInAEL?this.m_ActiveEdges=t:null===e.PrevInAEL&&(this.m_ActiveEdges=e)}},c.ClipperBase.prototype.DeleteFromAEL=function(t){var e=t.PrevInAEL,i=t.NextInAEL;(null!==e||null!==i||t===this.m_ActiveEdges)&&(null!==e?e.NextInAEL=i:this.m_ActiveEdges=i,null!==i&&(i.PrevInAEL=e),t.NextInAEL=null,t.PrevInAEL=null)},c.Clipper=function(t){void 0===t&&(t=0),this.m_PolyOuts=null,this.m_ClipType=c.ClipType.ctIntersection,this.m_IntersectNodeComparer=this.m_IntersectList=this.m_SortedEdges=this.m_ActiveEdges=this.m_Maxima=this.m_Scanbeam=null,this.m_ExecuteLocked=!1,this.m_SubjFillType=this.m_ClipFillType=c.PolyFillType.pftEvenOdd,this.m_GhostJoins=this.m_Joins=null,this.StrictlySimple=this.ReverseSolution=this.m_UsingPolyTree=!1,c.ClipperBase.call(this),this.m_SortedEdges=this.m_ActiveEdges=this.m_Maxima=this.m_Scanbeam=null,this.m_IntersectList=[],this.m_IntersectNodeComparer=c.MyIntersectNodeSort.Compare,this.m_UsingPolyTree=this.m_ExecuteLocked=!1,this.m_PolyOuts=[],this.m_Joins=[],this.m_GhostJoins=[],this.ReverseSolution=0!=(1&t),this.StrictlySimple=0!=(2&t),this.PreserveCollinear=0!=(4&t),c.use_xyz&&(this.ZFillFunction=null)},c.Clipper.ioReverseSolution=1,c.Clipper.ioStrictlySimple=2,c.Clipper.ioPreserveCollinear=4,c.Clipper.prototype.Clear=function(){0!==this.m_edges.length&&(this.DisposeAllPolyPts(),c.ClipperBase.prototype.Clear.call(this))},c.Clipper.prototype.InsertMaxima=function(t){var e=new c.Maxima;if(e.X=t,null===this.m_Maxima)this.m_Maxima=e,this.m_Maxima.Next=null,this.m_Maxima.Prev=null;else if(t=i.Next.X;)i=i.Next;t!==i.X&&(e.Next=i.Next,e.Prev=i,null!==i.Next&&(i.Next.Prev=e),i.Next=e)}},c.Clipper.prototype.Execute=function(){var t,e=arguments,i=e.length,n=e[1]instanceof c.PolyTree;if(4!==i||n){if(4===i&&n){i=e[0];var r=e[1];if(n=e[2],e=e[3],this.m_ExecuteLocked)return!1;this.m_ExecuteLocked=!0,this.m_SubjFillType=n,this.m_ClipFillType=e,this.m_ClipType=i,this.m_UsingPolyTree=!0;try{(t=this.ExecuteInternal())&&this.BuildResult2(r)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return t}if(2===i&&!n||2===i&&n)return i=e[0],r=e[1],this.Execute(i,r,c.PolyFillType.pftEvenOdd,c.PolyFillType.pftEvenOdd)}else{if(i=e[0],r=e[1],n=e[2],e=e[3],this.m_ExecuteLocked)return!1;this.m_HasOpenPaths&&c.Error("Error: PolyTree struct is needed for open path clipping."),this.m_ExecuteLocked=!0,c.Clear(r),this.m_SubjFillType=n,this.m_ClipFillType=e,this.m_ClipType=i,this.m_UsingPolyTree=!1;try{(t=this.ExecuteInternal())&&this.BuildResult(r)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return t}},c.Clipper.prototype.FixHoleLinkage=function(t){if(null!==t.FirstLeft&&(t.IsHole===t.FirstLeft.IsHole||null===t.FirstLeft.Pts)){for(var e=t.FirstLeft;null!==e&&(e.IsHole===t.IsHole||null===e.Pts);)e=e.FirstLeft;t.FirstLeft=e}},c.Clipper.prototype.ExecuteInternal=function(){try{this.Reset(),this.m_Maxima=this.m_SortedEdges=null;var t,e={},i={};if(!this.PopScanbeam(e))return!1;for(this.InsertLocalMinimaIntoAEL(e.v);this.PopScanbeam(i)||this.LocalMinimaPending();){if(this.ProcessHorizontals(),this.m_GhostJoins.length=0,!this.ProcessIntersections(i.v))return!1;this.ProcessEdgesAtTopOfScanbeam(i.v),e.v=i.v,this.InsertLocalMinimaIntoAEL(e.v)}var n=0;for(t=this.m_PolyOuts.length;nt.Top.Y?e.Top.Xc.Clipper.TopX(e,t.Top.Y):e.Curr.Xt.WindCnt2}case c.ClipType.ctUnion:switch(i){case c.PolyFillType.pftEvenOdd:case c.PolyFillType.pftNonZero:return 0===t.WindCnt2;case c.PolyFillType.pftPositive:return 0>=t.WindCnt2;default:return 0<=t.WindCnt2}case c.ClipType.ctDifference:if(t.PolyTyp===c.PolyType.ptSubject)switch(i){case c.PolyFillType.pftEvenOdd:case c.PolyFillType.pftNonZero:return 0===t.WindCnt2;case c.PolyFillType.pftPositive:return 0>=t.WindCnt2;default:return 0<=t.WindCnt2}else switch(i){case c.PolyFillType.pftEvenOdd:case c.PolyFillType.pftNonZero:return 0!==t.WindCnt2;case c.PolyFillType.pftPositive:return 0t.WindCnt2}case c.ClipType.ctXor:if(0===t.WindDelta)switch(i){case c.PolyFillType.pftEvenOdd:case c.PolyFillType.pftNonZero:return 0===t.WindCnt2;case c.PolyFillType.pftPositive:return 0>=t.WindCnt2;default:return 0<=t.WindCnt2}}return!0},c.Clipper.prototype.SetWindingCount=function(t){for(var e=t.PrevInAEL;null!==e&&(e.PolyTyp!==t.PolyTyp||0===e.WindDelta);)e=e.PrevInAEL;if(null===e)e=t.PolyTyp===c.PolyType.ptSubject?this.m_SubjFillType:this.m_ClipFillType,t.WindCnt=0===t.WindDelta?e===c.PolyFillType.pftNegative?-1:1:t.WindDelta,t.WindCnt2=0,e=this.m_ActiveEdges;else{if(0===t.WindDelta&&this.m_ClipType!==c.ClipType.ctUnion)t.WindCnt=1;else if(this.IsEvenOddFillType(t)){if(0===t.WindDelta){for(var i=!0,n=e.PrevInAEL;null!==n;)n.PolyTyp===e.PolyTyp&&0!==n.WindDelta&&(i=!i),n=n.PrevInAEL;t.WindCnt=i?0:1}else t.WindCnt=t.WindDelta}else t.WindCnt=0>e.WindCnt*e.WindDelta?1e.WindDelta*t.WindDelta?e.WindCnt:e.WindCnt+t.WindDelta:0===t.WindDelta?1:t.WindDelta:0===t.WindDelta?0>e.WindCnt?e.WindCnt-1:e.WindCnt+1:0>e.WindDelta*t.WindDelta?e.WindCnt:e.WindCnt+t.WindDelta;t.WindCnt2=e.WindCnt2,e=e.NextInAEL}if(this.IsEvenOddAltFillType(t))for(;e!==t;)0!==e.WindDelta&&(t.WindCnt2=0===t.WindCnt2?1:0),e=e.NextInAEL;else for(;e!==t;)t.WindCnt2+=e.WindDelta,e=e.NextInAEL},c.Clipper.prototype.AddEdgeToSEL=function(t){null===this.m_SortedEdges?(this.m_SortedEdges=t,t.PrevInSEL=null,t.NextInSEL=null):(t.NextInSEL=this.m_SortedEdges,t.PrevInSEL=null,this.m_SortedEdges=this.m_SortedEdges.PrevInSEL=t)},c.Clipper.prototype.PopEdgeFromSEL=function(t){if(t.v=this.m_SortedEdges,null===t.v)return!1;var e=t.v;return this.m_SortedEdges=t.v.NextInSEL,null!==this.m_SortedEdges&&(this.m_SortedEdges.PrevInSEL=null),e.NextInSEL=null,e.PrevInSEL=null,!0},c.Clipper.prototype.CopyAELToSEL=function(){var t=this.m_ActiveEdges;for(this.m_SortedEdges=t;null!==t;)t.PrevInSEL=t.PrevInAEL,t=t.NextInSEL=t.NextInAEL},c.Clipper.prototype.SwapPositionsInSEL=function(t,e){if((null!==t.NextInSEL||null!==t.PrevInSEL)&&(null!==e.NextInSEL||null!==e.PrevInSEL)){if(t.NextInSEL===e){var i=e.NextInSEL;null!==i&&(i.PrevInSEL=t);var n=t.PrevInSEL;null!==n&&(n.NextInSEL=e),e.PrevInSEL=n,e.NextInSEL=t,t.PrevInSEL=e,t.NextInSEL=i}else e.NextInSEL===t?(null!==(i=t.NextInSEL)&&(i.PrevInSEL=e),null!==(n=e.PrevInSEL)&&(n.NextInSEL=t),t.PrevInSEL=n,t.NextInSEL=e,e.PrevInSEL=t,e.NextInSEL=i):(i=t.NextInSEL,n=t.PrevInSEL,t.NextInSEL=e.NextInSEL,null!==t.NextInSEL&&(t.NextInSEL.PrevInSEL=t),t.PrevInSEL=e.PrevInSEL,null!==t.PrevInSEL&&(t.PrevInSEL.NextInSEL=t),e.NextInSEL=i,null!==e.NextInSEL&&(e.NextInSEL.PrevInSEL=e),e.PrevInSEL=n,null!==e.PrevInSEL&&(e.PrevInSEL.NextInSEL=e));null===t.PrevInSEL?this.m_SortedEdges=t:null===e.PrevInSEL&&(this.m_SortedEdges=e)}},c.Clipper.prototype.AddLocalMaxPoly=function(t,e,i){this.AddOutPt(t,i),0===e.WindDelta&&this.AddOutPt(e,i),t.OutIdx===e.OutIdx?(t.OutIdx=-1,e.OutIdx=-1):t.OutIdxe.Dx){var n=this.AddOutPt(t,i);e.OutIdx=t.OutIdx,t.Side=c.EdgeSide.esLeft,e.Side=c.EdgeSide.esRight;var r=t;t=r.PrevInAEL===e?e.PrevInAEL:r.PrevInAEL}else n=this.AddOutPt(e,i),t.OutIdx=e.OutIdx,t.Side=c.EdgeSide.esRight,e.Side=c.EdgeSide.esLeft,t=(r=e).PrevInAEL===t?t.PrevInAEL:r.PrevInAEL;if(null!==t&&0<=t.OutIdx&&t.Top.Yt.OutIdx){var i=this.CreateOutRec();i.IsOpen=0===t.WindDelta;var n=new c.OutPt;i.Pts=n,n.Idx=i.Idx,n.Pt.X=e.X,n.Pt.Y=e.Y,c.use_xyz&&(n.Pt.Z=e.Z),n.Next=n,n.Prev=n,i.IsOpen||this.SetHoleState(t,i),t.OutIdx=i.Idx}else{var r=(i=this.m_PolyOuts[t.OutIdx]).Pts,o=t.Side===c.EdgeSide.esLeft;if(o&&c.IntPoint.op_Equality(e,r.Pt))return r;if(!o&&c.IntPoint.op_Equality(e,r.Prev.Pt))return r.Prev;(n=new c.OutPt).Idx=i.Idx,n.Pt.X=e.X,n.Pt.Y=e.Y,c.use_xyz&&(n.Pt.Z=e.Z),n.Next=r,n.Prev=r.Prev,n.Prev.Next=n,r.Prev=n,o&&(i.Pts=n)}return n},c.Clipper.prototype.GetLastOutPt=function(t){var e=this.m_PolyOuts[t.OutIdx];return t.Side===c.EdgeSide.esLeft?e.Pts:e.Pts.Prev},c.Clipper.prototype.SwapPoints=function(t,e){var i=new c.IntPoint1(t.Value);t.Value.X=e.Value.X,t.Value.Y=e.Value.Y,c.use_xyz&&(t.Value.Z=e.Value.Z),e.Value.X=i.X,e.Value.Y=i.Y,c.use_xyz&&(e.Value.Z=i.Z)},c.Clipper.prototype.HorzSegmentsOverlap=function(t,e,i,n){if(t>e){var r=t;t=e,e=r}return i>n&&(r=i,i=n,n=r),t=o&&n>=i||r>=o&&r>=i},c.Clipper.prototype.GetBottomPt=function(t){for(var e=null,i=t.Next;i!==t;)i.Pt.Y>t.Pt.Y?(t=i,e=null):i.Pt.Y===t.Pt.Y&&i.Pt.X<=t.Pt.X&&(i.Pt.Xn.Pt.Y?t:i.Pt.Yn.Pt.X?e:i.Next===i?e:n.Next===n?t:this.FirstIsBottomPt(i,n)?t:e},c.Clipper.prototype.OutRec1RightOfOutRec2=function(t,e){do if((t=t.FirstLeft)===e)return!0;while(null!==t)return!1},c.Clipper.prototype.GetOutRec=function(t){for(t=this.m_PolyOuts[t];t!==this.m_PolyOuts[t.Idx];)t=this.m_PolyOuts[t.Idx];return t},c.Clipper.prototype.AppendPolygon=function(t,e){var i=this.m_PolyOuts[t.OutIdx],n=this.m_PolyOuts[e.OutIdx],r=this.OutRec1RightOfOutRec2(i,n)?n:this.OutRec1RightOfOutRec2(n,i)?i:this.GetLowermostRec(i,n),o=i.Pts,s=o.Prev,l=n.Pts,p=l.Prev;for(t.Side===c.EdgeSide.esLeft?e.Side===c.EdgeSide.esLeft?(this.ReversePolyPtLinks(l),l.Next=o,o.Prev=l,s.Next=p,p.Prev=s,i.Pts=p):(p.Next=o,o.Prev=p,l.Prev=s,s.Next=l,i.Pts=l):e.Side===c.EdgeSide.esRight?(this.ReversePolyPtLinks(l),s.Next=p,p.Prev=s,l.Next=o,o.Prev=l):(s.Next=l,l.Prev=s,o.Prev=p,p.Next=o),i.BottomPt=null,r===n&&(n.FirstLeft!==i&&(i.FirstLeft=n.FirstLeft),i.IsHole=n.IsHole),n.Pts=null,n.BottomPt=null,n.FirstLeft=i,r=t.OutIdx,o=e.OutIdx,t.OutIdx=-1,e.OutIdx=-1,s=this.m_ActiveEdges;null!==s;){if(s.OutIdx===o){s.OutIdx=r,s.Side=t.Side;break}s=s.NextInAEL}n.Idx=i.Idx},c.Clipper.prototype.ReversePolyPtLinks=function(t){if(null!==t){var e=t;do{var i=e.Next;e.Next=e.Prev,e=e.Prev=i}while(e!==t)}},c.Clipper.SwapSides=function(t,e){var i=t.Side;t.Side=e.Side,e.Side=i},c.Clipper.SwapPolyIndexes=function(t,e){var i=t.OutIdx;t.OutIdx=e.OutIdx,e.OutIdx=i},c.Clipper.prototype.IntersectEdges=function(t,e,i){var n=0<=t.OutIdx,r=0<=e.OutIdx;if(c.use_xyz&&this.SetZ(i,t,e),c.use_lines&&(0===t.WindDelta||0===e.WindDelta))(0!==t.WindDelta||0!==e.WindDelta)&&(t.PolyTyp===e.PolyTyp&&t.WindDelta!==e.WindDelta&&this.m_ClipType===c.ClipType.ctUnion?0===t.WindDelta?r&&(this.AddOutPt(t,i),n&&(t.OutIdx=-1)):n&&(this.AddOutPt(e,i),r&&(e.OutIdx=-1)):t.PolyTyp!==e.PolyTyp&&(0!==t.WindDelta||1!==Math.abs(e.WindCnt)||this.m_ClipType===c.ClipType.ctUnion&&0!==e.WindCnt2?0!==e.WindDelta||1!==Math.abs(t.WindCnt)||this.m_ClipType===c.ClipType.ctUnion&&0!==t.WindCnt2||(this.AddOutPt(e,i),r&&(e.OutIdx=-1)):(this.AddOutPt(t,i),n&&(t.OutIdx=-1))));else{if(t.PolyTyp===e.PolyTyp){if(this.IsEvenOddFillType(t)){var o=t.WindCnt;t.WindCnt=e.WindCnt,e.WindCnt=o}else t.WindCnt=0===t.WindCnt+e.WindDelta?-t.WindCnt:t.WindCnt+e.WindDelta,e.WindCnt=0==e.WindCnt-t.WindDelta?-e.WindCnt:e.WindCnt-t.WindDelta}else this.IsEvenOddFillType(e)?t.WindCnt2=0===t.WindCnt2?1:0:t.WindCnt2+=e.WindDelta,this.IsEvenOddFillType(t)?e.WindCnt2=0===e.WindCnt2?1:0:e.WindCnt2-=t.WindDelta;if(t.PolyTyp===c.PolyType.ptSubject)var s=this.m_SubjFillType,l=this.m_ClipFillType;else s=this.m_ClipFillType,l=this.m_SubjFillType;if(e.PolyTyp===c.PolyType.ptSubject){var p=this.m_SubjFillType;o=this.m_ClipFillType}else p=this.m_ClipFillType,o=this.m_SubjFillType;switch(s){case c.PolyFillType.pftPositive:s=t.WindCnt;break;case c.PolyFillType.pftNegative:s=-t.WindCnt;break;default:s=Math.abs(t.WindCnt)}switch(p){case c.PolyFillType.pftPositive:p=e.WindCnt;break;case c.PolyFillType.pftNegative:p=-e.WindCnt;break;default:p=Math.abs(e.WindCnt)}if(n&&r)0!==s&&1!==s||0!==p&&1!==p||t.PolyTyp!==e.PolyTyp&&this.m_ClipType!==c.ClipType.ctXor?this.AddLocalMaxPoly(t,e,i):(this.AddOutPt(t,i),this.AddOutPt(e,i),c.Clipper.SwapSides(t,e),c.Clipper.SwapPolyIndexes(t,e));else if(n)(0===p||1===p)&&(this.AddOutPt(t,i),c.Clipper.SwapSides(t,e),c.Clipper.SwapPolyIndexes(t,e));else if(r)(0===s||1===s)&&(this.AddOutPt(e,i),c.Clipper.SwapSides(t,e),c.Clipper.SwapPolyIndexes(t,e));else if(!(0!==s&&1!==s||0!==p&&1!==p)){switch(l){case c.PolyFillType.pftPositive:n=t.WindCnt2;break;case c.PolyFillType.pftNegative:n=-t.WindCnt2;break;default:n=Math.abs(t.WindCnt2)}switch(o){case c.PolyFillType.pftPositive:r=e.WindCnt2;break;case c.PolyFillType.pftNegative:r=-e.WindCnt2;break;default:r=Math.abs(e.WindCnt2)}if(t.PolyTyp!==e.PolyTyp)this.AddLocalMinPoly(t,e,i);else if(1===s&&1===p)switch(this.m_ClipType){case c.ClipType.ctIntersection:0=n&&0>=r&&this.AddLocalMinPoly(t,e,i);break;case c.ClipType.ctDifference:(t.PolyTyp===c.PolyType.ptClip&&0=n&&0>=r)&&this.AddLocalMinPoly(t,e,i);break;case c.ClipType.ctXor:this.AddLocalMinPoly(t,e,i)}else c.Clipper.SwapSides(t,e)}}},c.Clipper.prototype.DeleteFromSEL=function(t){var e=t.PrevInSEL,i=t.NextInSEL;(null!==e||null!==i||t===this.m_SortedEdges)&&(null!==e?e.NextInSEL=i:this.m_SortedEdges=i,null!==i&&(i.PrevInSEL=e),t.NextInSEL=null,t.PrevInSEL=null)},c.Clipper.prototype.ProcessHorizontals=function(){for(var t={};this.PopEdgeFromSEL(t);)this.ProcessHorizontal(t.v)},c.Clipper.prototype.GetHorzDirection=function(t,e){t.Bot.X=s.Top.X&&(p=null)}else{for(;null!==p.Next&&p.Next.Xa.Curr.X;)0<=t.OutIdx&&!o&&this.AddOutPt(t,new c.IntPoint2(p.X,t.Bot.Y)),p=p.Prev}if(n===c.Direction.dLeftToRight&&a.Curr.X>i||n===c.Direction.dRightToLeft&&a.Curr.Xn.Top.Y&&c.ClipperBase.SlopesEqual3(t,n,this.m_UseFullRange)?(f=this.AddOutPt(n,t.Bot),this.AddJoin(h,f,t.Top)):null!==f&&f.Curr.X===t.Bot.X&&f.Curr.Y===t.Bot.Y&&0!==f.WindDelta&&0<=f.OutIdx&&f.Curr.Y>f.Top.Y&&c.ClipperBase.SlopesEqual3(t,f,this.m_UseFullRange)&&(f=this.AddOutPt(f,t.Bot),this.AddJoin(h,f,t.Top)))):this.UpdateEdgeIntoAEL(t):(0<=t.OutIdx&&this.AddOutPt(t,t.Top),this.DeleteFromAEL(t))},c.Clipper.prototype.GetNextInAEL=function(t,e){return e===c.Direction.dLeftToRight?t.NextInAEL:t.PrevInAEL},c.Clipper.prototype.IsMinima=function(t){return null!==t&&t.Prev.NextInLML!==t&&t.Next.NextInLML!==t},c.Clipper.prototype.IsMaxima=function(t,e){return null!==t&&t.Top.Y===e&&null===t.NextInLML},c.Clipper.prototype.IsIntermediate=function(t,e){return t.Top.Y===e&&null!==t.NextInLML},c.Clipper.prototype.GetMaximaPair=function(t){return c.IntPoint.op_Equality(t.Next.Top,t.Top)&&null===t.Next.NextInLML?t.Next:c.IntPoint.op_Equality(t.Prev.Top,t.Top)&&null===t.Prev.NextInLML?t.Prev:null},c.Clipper.prototype.GetMaximaPairEx=function(t){return null!==(t=this.GetMaximaPair(t))&&t.OutIdx!==c.ClipperBase.Skip&&(t.NextInAEL!==t.PrevInAEL||c.ClipperBase.IsHorizontal(t))?t:null},c.Clipper.prototype.ProcessIntersections=function(t){if(null===this.m_ActiveEdges)return!0;try{if(this.BuildIntersectList(t),0===this.m_IntersectList.length)return!0;if(!(1===this.m_IntersectList.length||this.FixupIntersectionOrder()))return!1;this.ProcessIntersectList()}catch(t){this.m_SortedEdges=null,this.m_IntersectList.length=0,c.Error("ProcessIntersections error")}return this.m_SortedEdges=null,!0},c.Clipper.prototype.BuildIntersectList=function(t){if(null!==this.m_ActiveEdges){var e=this.m_ActiveEdges;for(this.m_SortedEdges=e;null!==e;)e.PrevInSEL=e.PrevInAEL,e.NextInSEL=e.NextInAEL,e.Curr.X=c.Clipper.TopX(e,t),e=e.NextInAEL;for(var i=!0;i&&null!==this.m_SortedEdges;){for(i=!1,e=this.m_SortedEdges;null!==e.NextInSEL;){var n=e.NextInSEL,r=new c.IntPoint0;e.Curr.X>n.Curr.X?(this.IntersectPoint(e,n,r),r.Yt?Math.ceil(t-.5):Math.round(t)},I=function(t){return 0>t?Math.ceil(t-.5):Math.floor(t+.5)},g=function(t){return 0>t?-Math.round(Math.abs(t)):Math.round(t)},C=function(t){return 0>t?-2147483648>(t-=.5)?Math.ceil(t):0|t:2147483647<(t+=.5)?Math.floor(t):0|t},c.Clipper.Round=y?v:P?g:x?C:I,c.Clipper.TopX=function(t,e){return e===t.Top.Y?t.Top.X:t.Bot.X+c.Clipper.Round(t.Dx*(e-t.Bot.Y))},c.Clipper.prototype.IntersectPoint=function(t,e,i){if(i.X=0,i.Y=0,t.Dx===e.Dx)i.Y=t.Curr.Y,i.X=c.Clipper.TopX(t,i.Y);else{if(0===t.Delta.X){if(i.X=t.Bot.X,c.ClipperBase.IsHorizontal(e))i.Y=e.Bot.Y;else{var n=e.Bot.Y-e.Bot.X/e.Dx;i.Y=c.Clipper.Round(i.X/e.Dx+n)}}else if(0===e.Delta.X){if(i.X=e.Bot.X,c.ClipperBase.IsHorizontal(t))i.Y=t.Bot.Y;else{var r=t.Bot.Y-t.Bot.X/t.Dx;i.Y=c.Clipper.Round(i.X/t.Dx+r)}}else{r=t.Bot.X-t.Bot.Y*t.Dx;var o=((n=e.Bot.X-e.Bot.Y*e.Dx)-r)/(t.Dx-e.Dx);i.Y=c.Clipper.Round(o),i.X=Math.abs(t.Dx)e.Top.Y)return i.Y=t.Top.Y,i.X=c.Clipper.TopX(e,t.Top.Y),i.Xt.Curr.Y&&(i.Y=t.Curr.Y,i.X=Math.abs(t.Dx)>Math.abs(e.Dx)?c.Clipper.TopX(e,i.Y):c.Clipper.TopX(t,i.Y))}},c.Clipper.prototype.ProcessEdgesAtTopOfScanbeam=function(t){for(var e,i,n=this.m_ActiveEdges;null!==n;)if((i=this.IsMaxima(n,t))&&(i=null===(i=this.GetMaximaPairEx(n))||!c.ClipperBase.IsHorizontal(i)),i)this.StrictlySimple&&this.InsertMaxima(n.Top.X),e=n.PrevInAEL,this.DoMaxima(n),n=null===e?this.m_ActiveEdges:e.NextInAEL;else{if(this.IsIntermediate(n,t)&&c.ClipperBase.IsHorizontal(n.NextInLML)?(0<=(n=this.UpdateEdgeIntoAEL(n)).OutIdx&&this.AddOutPt(n,n.Bot),this.AddEdgeToSEL(n)):(n.Curr.X=c.Clipper.TopX(n,t),n.Curr.Y=t),c.use_xyz&&(n.Curr.Z=n.Top.Y===t?n.Top.Z:n.Bot.Y===t?n.Bot.Z:0),this.StrictlySimple&&(e=n.PrevInAEL,0<=n.OutIdx&&0!==n.WindDelta&&null!==e&&0<=e.OutIdx&&e.Curr.X===n.Curr.X&&0!==e.WindDelta)){var r=new c.IntPoint1(n.Curr);c.use_xyz&&this.SetZ(r,e,n),i=this.AddOutPt(e,r),e=this.AddOutPt(n,r),this.AddJoin(i,e,r)}n=n.NextInAEL}for(this.ProcessHorizontals(),this.m_Maxima=null,n=this.m_ActiveEdges;null!==n;)this.IsIntermediate(n,t)&&(i=null,0<=n.OutIdx&&(i=this.AddOutPt(n,n.Top)),e=(n=this.UpdateEdgeIntoAEL(n)).PrevInAEL,r=n.NextInAEL,null!==e&&e.Curr.X===n.Bot.X&&e.Curr.Y===n.Bot.Y&&null!==i&&0<=e.OutIdx&&e.Curr.Y===e.Top.Y&&c.ClipperBase.SlopesEqual5(n.Curr,n.Top,e.Curr,e.Top,this.m_UseFullRange)&&0!==n.WindDelta&&0!==e.WindDelta?(e=this.AddOutPt(ePrev2,n.Bot),this.AddJoin(i,e,n.Top)):null!==r&&r.Curr.X===n.Bot.X&&r.Curr.Y===n.Bot.Y&&null!==i&&0<=r.OutIdx&&r.Curr.Y===r.Top.Y&&c.ClipperBase.SlopesEqual5(n.Curr,n.Top,r.Curr,r.Top,this.m_UseFullRange)&&0!==n.WindDelta&&0!==r.WindDelta&&(e=this.AddOutPt(r,n.Bot),this.AddJoin(i,e,n.Top))),n=n.NextInAEL},c.Clipper.prototype.DoMaxima=function(t){var e=this.GetMaximaPairEx(t);if(null===e)0<=t.OutIdx&&this.AddOutPt(t,t.Top),this.DeleteFromAEL(t);else{for(var i=t.NextInAEL;null!==i&&i!==e;)this.IntersectEdges(t,i,t.Top),this.SwapPositionsInAEL(t,i),i=t.NextInAEL;-1===t.OutIdx&&-1===e.OutIdx?(this.DeleteFromAEL(t),this.DeleteFromAEL(e)):0<=t.OutIdx&&0<=e.OutIdx?(0<=t.OutIdx&&this.AddLocalMaxPoly(t,e,t.Top),this.DeleteFromAEL(t),this.DeleteFromAEL(e)):c.use_lines&&0===t.WindDelta?(0<=t.OutIdx&&(this.AddOutPt(t,t.Top),t.OutIdx=c.ClipperBase.Unassigned),this.DeleteFromAEL(t),0<=e.OutIdx&&(this.AddOutPt(e,t.Top),e.OutIdx=c.ClipperBase.Unassigned),this.DeleteFromAEL(e)):c.Error("DoMaxima error")}},c.Clipper.ReversePaths=function(t){for(var e=0,i=t.length;er)){for(var o=Array(r),s=0;sr||!n.IsOpen&&3>r)){this.FixHoleLinkage(n);var o=new c.PolyNode;t.m_AllPolys.push(o),n.PolyNode=o,o.m_polygon.length=r,n=n.Pts.Prev;for(var s=0;se.Pt.X?c.Direction.dRightToLeft:c.Direction.dLeftToRight;if(s===(n=i.Pt.X>n.Pt.X?c.Direction.dRightToLeft:c.Direction.dLeftToRight))return!1;if(s===c.Direction.dLeftToRight){for(;t.Next.Pt.X<=r.X&&t.Next.Pt.X>=t.Pt.X&&t.Next.Pt.Y===r.Y;)t=t.Next;o&&t.Pt.X!==r.X&&(t=t.Next),e=this.DupOutPt(t,!o),c.IntPoint.op_Inequality(e.Pt,r)&&((t=e).Pt.X=r.X,t.Pt.Y=r.Y,c.use_xyz&&(t.Pt.Z=r.Z),e=this.DupOutPt(t,!o))}else{for(;t.Next.Pt.X>=r.X&&t.Next.Pt.X<=t.Pt.X&&t.Next.Pt.Y===r.Y;)t=t.Next;o||t.Pt.X===r.X||(t=t.Next),e=this.DupOutPt(t,o),c.IntPoint.op_Inequality(e.Pt,r)&&((t=e).Pt.X=r.X,t.Pt.Y=r.Y,c.use_xyz&&(t.Pt.Z=r.Z),e=this.DupOutPt(t,o))}if(n===c.Direction.dLeftToRight){for(;i.Next.Pt.X<=r.X&&i.Next.Pt.X>=i.Pt.X&&i.Next.Pt.Y===r.Y;)i=i.Next;o&&i.Pt.X!==r.X&&(i=i.Next),n=this.DupOutPt(i,!o),c.IntPoint.op_Inequality(n.Pt,r)&&((i=n).Pt.X=r.X,i.Pt.Y=r.Y,c.use_xyz&&(i.Pt.Z=r.Z),n=this.DupOutPt(i,!o))}else{for(;i.Next.Pt.X>=r.X&&i.Next.Pt.X<=i.Pt.X&&i.Next.Pt.Y===r.Y;)i=i.Next;o||i.Pt.X===r.X||(i=i.Next),n=this.DupOutPt(i,o),c.IntPoint.op_Inequality(n.Pt,r)&&((i=n).Pt.X=r.X,i.Pt.Y=r.Y,c.use_xyz&&(i.Pt.Z=r.Z),n=this.DupOutPt(i,o))}return s===c.Direction.dLeftToRight===o?(t.Prev=i,i.Next=t,e.Next=n,n.Prev=e):(t.Next=i,i.Prev=t,e.Prev=n,n.Next=e),!0},c.Clipper.prototype.JoinPoints=function(t,e,i){var n,r=t.OutPt1;new c.OutPt;var o,s=t.OutPt2;if(new c.OutPt,(o=t.OutPt1.Pt.Y===t.OffPt.Y)&&c.IntPoint.op_Equality(t.OffPt,t.OutPt1.Pt)&&c.IntPoint.op_Equality(t.OffPt,t.OutPt2.Pt)){if(e!==i)return!1;for(n=t.OutPt1.Next;n!==r&&c.IntPoint.op_Equality(n.Pt,t.OffPt);)n=n.Next;for(n=n.Pt.Y>t.OffPt.Y,o=t.OutPt2.Next;o!==s&&c.IntPoint.op_Equality(o.Pt,t.OffPt);)o=o.Next;return n!==o.Pt.Y>t.OffPt.Y&&(n?(n=this.DupOutPt(r,!1),o=this.DupOutPt(s,!0),r.Prev=s,s.Next=r,n.Next=o,o.Prev=n):(n=this.DupOutPt(r,!0),o=this.DupOutPt(s,!1),r.Next=s,s.Prev=r,n.Prev=o,o.Next=n),t.OutPt1=r,t.OutPt2=n,!0)}if(o){for(n=r;r.Prev.Pt.Y===r.Pt.Y&&r.Prev!==n&&r.Prev!==s;)r=r.Prev;for(;n.Next.Pt.Y===n.Pt.Y&&n.Next!==r&&n.Next!==s;)n=n.Next;if(n.Next===r||n.Next===s)return!1;for(o=s;s.Prev.Pt.Y===s.Pt.Y&&s.Prev!==o&&s.Prev!==n;)s=s.Prev;for(;o.Next.Pt.Y===o.Pt.Y&&o.Next!==s&&o.Next!==r;)o=o.Next;if(o.Next===s||o.Next===r||(i={Left:null,Right:null},!this.GetOverlap(r.Pt.X,n.Pt.X,s.Pt.X,o.Pt.X,i)))return!1;e=i.Left;var l=i.Right;return i=new c.IntPoint0,r.Pt.X>=e&&r.Pt.X<=l?(i.X=r.Pt.X,i.Y=r.Pt.Y,c.use_xyz&&(i.Z=r.Pt.Z),e=r.Pt.X>n.Pt.X):s.Pt.X>=e&&s.Pt.X<=l?(i.X=s.Pt.X,i.Y=s.Pt.Y,c.use_xyz&&(i.Z=s.Pt.Z),e=s.Pt.X>o.Pt.X):n.Pt.X>=e&&n.Pt.X<=l?(i.X=n.Pt.X,i.Y=n.Pt.Y,c.use_xyz&&(i.Z=n.Pt.Z),e=n.Pt.X>r.Pt.X):(i.X=o.Pt.X,i.Y=o.Pt.Y,c.use_xyz&&(i.Z=o.Pt.Z),e=o.Pt.X>s.Pt.X),t.OutPt1=r,t.OutPt2=s,this.JoinHorz(r,n,s,o,i,e)}for(n=r.Next;c.IntPoint.op_Equality(n.Pt,r.Pt)&&n!==r;)n=n.Next;if(l=n.Pt.Y>r.Pt.Y||!c.ClipperBase.SlopesEqual4(r.Pt,n.Pt,t.OffPt,this.m_UseFullRange)){for(n=r.Prev;c.IntPoint.op_Equality(n.Pt,r.Pt)&&n!==r;)n=n.Prev;if(n.Pt.Y>r.Pt.Y||!c.ClipperBase.SlopesEqual4(r.Pt,n.Pt,t.OffPt,this.m_UseFullRange))return!1}for(o=s.Next;c.IntPoint.op_Equality(o.Pt,s.Pt)&&o!==s;)o=o.Next;var p=o.Pt.Y>s.Pt.Y||!c.ClipperBase.SlopesEqual4(s.Pt,o.Pt,t.OffPt,this.m_UseFullRange);if(p){for(o=s.Prev;c.IntPoint.op_Equality(o.Pt,s.Pt)&&o!==s;)o=o.Prev;if(o.Pt.Y>s.Pt.Y||!c.ClipperBase.SlopesEqual4(s.Pt,o.Pt,t.OffPt,this.m_UseFullRange))return!1}return n!==r&&o!==s&&n!==o&&(e!==i||l!==p)&&(l?(n=this.DupOutPt(r,!1),o=this.DupOutPt(s,!0),r.Prev=s,s.Next=r,n.Next=o,o.Prev=n):(n=this.DupOutPt(r,!0),o=this.DupOutPt(s,!1),r.Next=s,s.Prev=r,n.Prev=o,o.Next=n),t.OutPt1=r,t.OutPt2=n,!0)},c.Clipper.GetBounds=function(t){for(var e=0,i=t.length;en.right&&(n.right=t[e][r].X),t[e][r].Yn.bottom&&(n.bottom=t[e][r].Y);return n},c.Clipper.prototype.GetBounds2=function(t){var e=t,i=new c.IntRect;for(i.left=t.Pt.X,i.right=t.Pt.X,i.top=t.Pt.Y,i.bottom=t.Pt.Y,t=t.Next;t!==e;)t.Pt.Xi.right&&(i.right=t.Pt.X),t.Pt.Yi.bottom&&(i.bottom=t.Pt.Y),t=t.Next;return i},c.Clipper.PointInPolygon=function(t,e){var i=0,n=e.length;if(3>n)return 0;for(var r=e[0],o=1;o<=n;++o){var s=o===n?e[0]:e[o];if(s.Y===t.Y&&(s.X===t.X||r.Y===t.Y&&s.X>t.X==r.X=t.X){if(s.X>t.X)i=1-i;else{var l=(r.X-t.X)*(s.Y-t.Y)-(s.X-t.X)*(r.Y-t.Y);if(0===l)return -1;0r.Y&&(i=1-i)}}else if(s.X>t.X){if(0==(l=(r.X-t.X)*(s.Y-t.Y)-(s.X-t.X)*(r.Y-t.Y)))return -1;0r.Y&&(i=1-i)}}r=s}return i},c.Clipper.prototype.PointInPolygon=function(t,e){var i=0,n=e,r=t.X,o=t.Y,s=e.Pt.X,l=e.Pt.Y;do{var p=(e=e.Next).Pt.X,h=e.Pt.Y;if(h===o&&(p===r||l===o&&p>r==s=r){if(p>r)i=1-i;else{if(0==(s=(s-r)*(h-o)-(p-r)*(l-o)))return -1;0l&&(i=1-i)}}else if(p>r){if(0==(s=(s-r)*(h-o)-(p-r)*(l-o)))return -1;0l&&(i=1-i)}}s=p,l=h}while(n!==e)return i},c.Clipper.prototype.Poly2ContainsPoly1=function(t,e){var i=t;do{var n=this.PointInPolygon(i.Pt,e);if(0<=n)return 0e)return 0;for(var i=0,n=0,r=e-1;nMath.abs(t.Y-e.Y)?t.X>e.X==t.Xt.X==e.Xe.Y==t.Yt.Y==e.Yi&&(i=0);var o=Array(i);for(r=0;rn)){var r=new c.PolyNode;if(r.m_jointype=e,r.m_endtype=i,i===c.EndType.etClosedLine||i===c.EndType.etClosedPolygon)for(;0r.m_polygon[e].Y||t[s].Y===r.m_polygon[e].Y&&t[s].Xo)&&(this.m_polyNodes.AddChild(r),i===c.EndType.etClosedPolygon)&&(0>this.m_lowest.X?this.m_lowest=new c.IntPoint2(this.m_polyNodes.ChildCount()-1,e):(t=this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon[this.m_lowest.Y],(r.m_polygon[e].Y>t.Y||r.m_polygon[e].Y===t.Y&&r.m_polygon[e].X=this.ArcTolerance?c.ClipperOffset.def_arc_tolerance:this.ArcTolerance>Math.abs(t)*c.ClipperOffset.def_arc_tolerance?Math.abs(t)*c.ClipperOffset.def_arc_tolerance:this.ArcTolerance)/Math.abs(t));for(this.m_sin=Math.sin(c.ClipperOffset.two_pi/r),this.m_cos=Math.cos(c.ClipperOffset.two_pi/r),this.m_StepsPerRad=r/c.ClipperOffset.two_pi,0>t&&(this.m_sin=-this.m_sin),i=0;i=t&&(3>o||n.m_endtype!==c.EndType.etClosedPolygon))){if(this.m_destPoly=[],1===o){if(n.m_jointype===c.JoinType.jtRound)for(o=1,n=0,e=1;e<=r;e++){this.m_destPoly.push(new c.IntPoint2(c.ClipperOffset.Round(this.m_srcPoly[0].X+o*t),c.ClipperOffset.Round(this.m_srcPoly[0].Y+n*t)));var s=o;o=o*this.m_cos-this.m_sin*n,n=s*this.m_sin+n*this.m_cos}else for(n=o=-1,e=0;4>e;++e)this.m_destPoly.push(new c.IntPoint2(c.ClipperOffset.Round(this.m_srcPoly[0].X+o*t),c.ClipperOffset.Round(this.m_srcPoly[0].Y+n*t))),0>o?o=1:0>n?n=1:o=-1}else{for(e=this.m_normals.length=0;eMath.abs(this.m_sinA*this.m_delta)){if(0this.m_sinA&&(this.m_sinA=-1);if(0>this.m_sinA*this.m_delta)this.m_destPoly.push(new c.IntPoint2(c.ClipperOffset.Round(this.m_srcPoly[t].X+this.m_normals[e].X*this.m_delta),c.ClipperOffset.Round(this.m_srcPoly[t].Y+this.m_normals[e].Y*this.m_delta))),this.m_destPoly.push(new c.IntPoint1(this.m_srcPoly[t])),this.m_destPoly.push(new c.IntPoint2(c.ClipperOffset.Round(this.m_srcPoly[t].X+this.m_normals[t].X*this.m_delta),c.ClipperOffset.Round(this.m_srcPoly[t].Y+this.m_normals[t].Y*this.m_delta)));else switch(i){case c.JoinType.jtMiter:(i=1+(this.m_normals[t].X*this.m_normals[e].X+this.m_normals[t].Y*this.m_normals[e].Y))>=this.m_miterLim?this.DoMiter(t,e,i):this.DoSquare(t,e);break;case c.JoinType.jtSquare:this.DoSquare(t,e);break;case c.JoinType.jtRound:this.DoRound(t,e)}return t},c.ClipperOffset.prototype.DoSquare=function(t,e){var i=Math.tan(Math.atan2(this.m_sinA,this.m_normals[e].X*this.m_normals[t].X+this.m_normals[e].Y*this.m_normals[t].Y)/4);this.m_destPoly.push(new c.IntPoint2(c.ClipperOffset.Round(this.m_srcPoly[t].X+this.m_delta*(this.m_normals[e].X-this.m_normals[e].Y*i)),c.ClipperOffset.Round(this.m_srcPoly[t].Y+this.m_delta*(this.m_normals[e].Y+this.m_normals[e].X*i)))),this.m_destPoly.push(new c.IntPoint2(c.ClipperOffset.Round(this.m_srcPoly[t].X+this.m_delta*(this.m_normals[t].X+this.m_normals[t].Y*i)),c.ClipperOffset.Round(this.m_srcPoly[t].Y+this.m_delta*(this.m_normals[t].Y-this.m_normals[t].X*i))))},c.ClipperOffset.prototype.DoMiter=function(t,e,i){i=this.m_delta/i,this.m_destPoly.push(new c.IntPoint2(c.ClipperOffset.Round(this.m_srcPoly[t].X+(this.m_normals[e].X+this.m_normals[t].X)*i),c.ClipperOffset.Round(this.m_srcPoly[t].Y+(this.m_normals[e].Y+this.m_normals[t].Y)*i)))},c.ClipperOffset.prototype.DoRound=function(t,e){for(var i,n=Math.max(c.Cast_Int32(c.ClipperOffset.Round(this.m_StepsPerRad*Math.abs(Math.atan2(this.m_sinA,this.m_normals[e].X*this.m_normals[t].X+this.m_normals[e].Y*this.m_normals[t].Y)))),1),r=this.m_normals[e].X,o=this.m_normals[e].Y,s=0;se)return t;i||(t=[t]);for(var n,r,o,s,l,p,h,u=t.length,a=[],f=0;fn)o=r,a.push(o);else{for(o=r,s=e*e,l=r[0],h=p=1;he)return c.JS.Clone(t);var i=t[0]instanceof Array;i||(t=[t]);var n,r,o,s=t.length,l=e*e,p=[];for(n=0;no;o++){var a=[];if(u=h.length,h[u-1].X!==h[0].X||h[u-1].Y!==h[0].Y){var f=1;h.push({X:h[0].X,Y:h[0].Y}),u=h.length}else f=0;var d=[];for(r=0;ro)return 0;for(e&&(t[o]=t[0],o++);--o;){var s=t[o],l=s.X;s=s.Y;var p=t[o-1],h=p.X;r+=n((l-h)*(l-h)+(s-(p=p.Y))*(s-p))}return e&&t.pop(),r/i},c.JS.PerimeterOfPaths=function(t,e,i){i||(i=1);for(var n=0,r=0;rtA(function(t,e){if(t.length!==e.length)throw new l({expectedLength:t.length,givenLength:e.length});let i=[];for(let n=0;n>1]>>4>=8&&r[t]&&(r[t]=r[t].toUpperCase()),(15&n[t>>1])>=8&&r[t+1]&&(r[t+1]=r[t+1].toUpperCase());let o=`0x${r.join("")}`;return tB.set(`${t}.${e}`,o),o}(t)===t);return tD.set(n,r),r}(i))throw new u({address:i});return d(i.toLowerCase(),{size:n?32:null})}if("string"===e)return C(i);if("bytes"===e)return i;if("bool"===e)return d(v(i),{size:n?32:1});let r=e.match(tz);if(r){let[t,e,o="256"]=r,s=Number.parseInt(o)/8;return I(i,{size:n?32:s,signed:"int"===e})}let o=e.match(tF);if(o){let[t,e]=o;if(Number.parseInt(e)!==(i.length-2)/2)throw new p({expectedSize:Number.parseInt(e),givenSize:(i.length-2)/2});return d(i,{dir:"right",size:n?32:null})}let s=e.match(tR);if(s&&Array.isArray(i)){let[e,n]=s,r=[];for(let e=0;e1&&parseInt(tH[1]);t$>3&&(t$=!1),tZ||(tZ=Math.floor(150*Math.random())+1),console.log({tokenId:tZ});let tj=tk(["uint256"],[tZ]);if(1==tZ&&"0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6"!==tj)throw Error("invalid token id should be 0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6");const tJ=new class{constructor(t){this.useA=!1;let e=function(t){let e=parseInt(t.substr(0,8),16),i=parseInt(t.substr(8,8),16),n=parseInt(t.substr(16,8),16),r=parseInt(t.substr(24,8),16);return function(){e|=0,i|=0,n|=0,r|=0;let t=(e+i|0)+r|0;return r=r+1|0,e=i^i>>>9,i=n+(n<<3)|0,n=(n=n<<21|n>>>11)+t|0,(t>>>0)/4294967296}};this.prngA=new e(t.substr(2,32)),this.prngB=new e(t.substr(34,32));for(let t=0;t<1e6;t+=2)this.prngA(),this.prngB()}float(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}int(t=0,e=1){return Math.round(t+this.float()*(e-t))}bell(t=1,e){let i=0,n=0;for(;0===i;)i=this.float();for(;0===n;)n=this.float();let r=Math.sqrt(-2*Math.log(i))*Math.cos(2*Math.PI*n);return(r=r/10+.5)>1||r<0?this.bell(e):(e&&(r>=0&&r<.5?r+=.5:r-=.5),Math.round(r*t))}}(tj);let tV=window.innerWidth,tG=window.innerHeight,tK=tV>=tG?tV:tG;var tQ=tJ.int(3,10),t0=parseInt(tK/tQ),t1=tJ.int(100,500),t2=tJ.int(2,300),t3=tJ.int(2,300),t4=tJ.int(0,360);const t5=0==tq(0,10,tj);let t6=tk(["bytes32"],[tj]);const t8=t5||0==tq(0,1,t6);t6=tk(["bytes32"],[t6]);const t7=t5||!t8||0==tq(0,1,t6),t9=0==tq(0,3,t6=tk(["bytes32"],[t6])),et=0==tq(0,10,t6=tk(["bytes32"],[t6])),ee=0==tq(0,2,t6=tk(["bytes32"],[t6])),ei=0==tq(0,1,t6=tk(["bytes32"],[t6]));let en=tJ.int(5,10),er=tJ.int(1,3),eo=tJ.int(0,2),es=tJ.int(4,50),el={x:tJ.int(t0,tV-2*t0),y:tJ.int(t0,tG-2*t0)},ep=function(){let t=[];for(let e=0;e<1e3;e++){let e=new eu;t.push(e)}return t}(),eh=function(){let t=[];for(let e=0;e<1;e++){let e=new ea;e.createRn(),t.push(e)}return t}();function eu(){this.x=0,this.y=0,this.w=0,this.h=0,this.xR=tJ.float(),this.yR=tJ.float(),this.wR=tJ.float(),this.hR=tJ.float(),this.getPath=function(){return this.marginize(),[[{X:this.x,Y:this.y},{X:this.x+this.w,Y:this.y},{X:this.x+this.w,Y:this.y+this.h},{X:this.x,Y:this.y+this.h}]]},this.setValue=function(t,e){this[t]=parseInt(e)},this.marginize=function(){this.x+this.w>tV&&(this.x=tV-this.w),this.x<0&&(this.x=0),this.y+this.h>tG&&(this.y=tG-this.h),this.y<0&&(this.y=0)}}function ea(){this.startX=tJ.int(t0,tV-t0),this.startY=tJ.int(t0,tG-t0),this.polyLength=tJ.int(400,1e3),this.stepVar=tJ.int(100,1e3),this.rnArray=[],this.path,this.marginVar=tJ.int(1,30),this.applyMargin=0!=tJ.int(0,2),this.makePolygon=function(){this.path=[[]];let t=parseInt(this.startX),e=parseInt(this.startY);this.path[0].push({X:t,Y:e});let i=0!=Math.round(this.rnArray[0]);for(let n=0;ntV-t0?t=tV-t0-this.marginVar+parseInt(this.rnArray[2*i]*this.marginVar*2):ttG-t0&&(t=tG-t0-this.marginVar+parseInt(this.rnArray[2*i+1]*this.marginVar*2)),t=tG?tV:tG,e=t/en;for(let i=0;i<=t/e;i++)for(let r=0;r<=t/e;r++)n=ed(n,[[{X:i*e,Y:r*e},{X:i+e,Y:r},{X:i+e,Y:r+e},{X:i,Y:r+e}]],"union")}if(ee||t){let t=[[]];for(let e=0;e255?255:r+h,o=o+h>255?255:o+h,s=s+h>255?255:s+h):(r=r-h<0?0:r-h,o=o-h<0?0:o-h,s=s-h<0?0:s-h);let u=`rgb(${r},${o},${s})`;e=`background: linear-gradient(${i}deg, ${l} 0%, ${u} 100%)`}}else e=1==p?"background-color: white":2==p?"background-color: black":`background-image: linear-gradient(45deg, #cbcccb 25%, transparent 25%), linear-gradient(-45deg, #cbcccb 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #cbcccb 75%), linear-gradient(-45deg, transparent 75%, #cbcccb 75%); background-size: 8px 8px; - background-position: 0 0, 0 4px, 4px -4px, -4px 0px;`;document.getElementsByTagName("svg")[0].style=e}function ec(){console.log("resizeEnded"),tJ=window.innerWidth,tV=window.innerHeight,tQ=parseInt((tG=tJ>=tV?tJ:tV)/tK),ea()}window.onload=function(){console.log("init"),document.querySelector("svg").onclick=function(){tU++,eP(t$)},eP(t$),ea()},window.onresize=function(){console.log("clearTimeout",t),clearTimeout(t),t=setTimeout(ec,500)}; + background-position: 0 0, 0 4px, 4px -4px, -4px 0px;`;console.log({bgState:p,finalColor:e}),document.getElementsByTagName("svg")[0].style=e}function ey(){console.log("resizeEnded"),tV=window.innerWidth,tG=window.innerHeight,t0=parseInt((tK=tV>=tG?tV:tG)/tQ),ef()}window.onload=function(){console.log("init"),document.querySelector("svg").onclick=function(){tU++,eP(tj)},eP(tj),ef()},window.onresize=function(){console.log("clearTimeout",t),clearTimeout(t),t=setTimeout(ey,500)}; //# sourceMappingURL=selection.js.map diff --git a/docs/selection.js.map b/docs/selection.js.map index e7d9458..2b16562 100644 --- a/docs/selection.js.map +++ b/docs/selection.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["","src/selection.js","node_modules/viem/_esm/utils/abi/encodePacked.js","node_modules/viem/utils/abi/encodePacked.ts","node_modules/viem/_esm/errors/abi.js","node_modules/viem/errors/abi.ts","node_modules/viem/_esm/utils/abi/formatAbiItem.js","node_modules/viem/utils/abi/formatAbiItem.ts","node_modules/viem/_esm/utils/data/size.js","node_modules/viem/utils/data/size.ts","node_modules/viem/_esm/utils/data/isHex.js","node_modules/viem/utils/data/isHex.ts","node_modules/viem/_esm/errors/base.js","node_modules/viem/errors/base.ts","node_modules/viem/_esm/errors/version.js","node_modules/viem/errors/version.ts","node_modules/viem/_esm/errors/address.js","node_modules/viem/errors/address.ts","node_modules/viem/_esm/utils/address/isAddress.js","node_modules/viem/utils/address/isAddress.ts","node_modules/viem/_esm/utils/lru.js","node_modules/viem/utils/lru.ts","node_modules/viem/_esm/utils/address/getAddress.js","node_modules/viem/utils/address/getAddress.ts","node_modules/viem/_esm/utils/encoding/toBytes.js","node_modules/viem/utils/encoding/toBytes.ts","node_modules/viem/_esm/utils/data/pad.js","node_modules/viem/utils/data/pad.ts","node_modules/viem/_esm/errors/data.js","node_modules/viem/errors/data.ts","node_modules/viem/_esm/utils/encoding/fromHex.js","node_modules/viem/utils/encoding/fromHex.ts","node_modules/viem/_esm/errors/encoding.js","node_modules/viem/errors/encoding.ts","node_modules/viem/_esm/utils/data/trim.js","node_modules/viem/utils/data/trim.ts","node_modules/viem/_esm/utils/encoding/toHex.js","node_modules/viem/utils/encoding/toHex.ts","node_modules/viem/_esm/utils/hash/keccak256.js","node_modules/viem/utils/hash/keccak256.ts","node_modules/viem/node_modules/@noble/hashes/sha3.js","node_modules/viem/node_modules/@noble/hashes/src/sha3.ts","node_modules/viem/node_modules/@noble/hashes/_assert.js","node_modules/viem/node_modules/@noble/hashes/src/_assert.ts","node_modules/viem/node_modules/@noble/hashes/_u64.js","node_modules/viem/node_modules/@noble/hashes/src/_u64.ts","node_modules/viem/node_modules/@noble/hashes/utils.js","node_modules/viem/node_modules/@noble/hashes/src/utils.ts","node_modules/viem/node_modules/@noble/hashes/crypto.js","node_modules/viem/node_modules/@noble/hashes/src/crypto.ts","node_modules/viem/_esm/utils/data/concat.js","node_modules/viem/utils/data/concat.ts","node_modules/viem/_esm/utils/regex.js","node_modules/viem/utils/regex.ts","src/random.js","src/clipper.js"],"sourcesContent":["\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $1987e5e986c056f7$export$dc5d0ff4fc2fdee1(abiItem, { includeName: includeName = false } = {}) {\n if (abiItem.type !== \"function\" && abiItem.type !== \"event\" && abiItem.type !== \"error\") throw new (0, $5b122542bf87f4b6$export$81781a0fcfb9ed95)(abiItem.type);\n return `${abiItem.name}(${$1987e5e986c056f7$export$849e499971de75b3(abiItem.inputs, {\n includeName: includeName\n })})`;\n}\nfunction $1987e5e986c056f7$export$849e499971de75b3(params, { includeName: includeName = false } = {}) {\n if (!params) return \"\";\n return params.map((param)=>$1987e5e986c056f7$var$formatAbiParam(param, {\n includeName: includeName\n })).join(includeName ? \", \" : \",\");\n}\nfunction $1987e5e986c056f7$var$formatAbiParam(param, { includeName: includeName }) {\n if (param.type.startsWith(\"tuple\")) return `(${$1987e5e986c056f7$export$849e499971de75b3(param.components, {\n includeName: includeName\n })})${param.type.slice(5)}`;\n return param.type + (includeName && param.name ? ` ${param.name}` : \"\");\n}\n\n\nfunction $d440cba9eebbb8de$export$8a9b6341a7c96bc(value, { strict: strict = true } = {}) {\n if (!value) return false;\n if (typeof value !== \"string\") return false;\n return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith(\"0x\");\n}\n\n\nfunction $c972e44f440b9af9$export$346677f925de839c(value) {\n if ((0, $d440cba9eebbb8de$export$8a9b6341a7c96bc)(value, {\n strict: false\n })) return Math.ceil((value.length - 2) / 2);\n return value.length;\n}\n\n\nconst $266a83479ddcca51$export$83d89fbfd8236492 = \"2.21.2\";\n\n\nlet $99d887ad91c984c6$var$errorConfig = {\n getDocsUrl: ({ docsBaseUrl: docsBaseUrl, docsPath: docsPath = \"\", docsSlug: docsSlug })=>docsPath ? `${docsBaseUrl ?? \"https://viem.sh\"}${docsPath}${docsSlug ? `#${docsSlug}` : \"\"}` : undefined,\n version: $266a83479ddcca51$export$83d89fbfd8236492\n};\nfunction $99d887ad91c984c6$export$4ac109df0c5244e9(config) {\n $99d887ad91c984c6$var$errorConfig = config;\n}\nclass $99d887ad91c984c6$export$a490eb03cb7a0a5e extends Error {\n constructor(shortMessage, args = {}){\n const details = (()=>{\n if (args.cause instanceof $99d887ad91c984c6$export$a490eb03cb7a0a5e) return args.cause.details;\n if (args.cause?.message) return args.cause.message;\n return args.details;\n })();\n const docsPath = (()=>{\n if (args.cause instanceof $99d887ad91c984c6$export$a490eb03cb7a0a5e) return args.cause.docsPath || args.docsPath;\n return args.docsPath;\n })();\n const docsUrl = $99d887ad91c984c6$var$errorConfig.getDocsUrl?.({\n ...args,\n docsPath: docsPath\n });\n const message = [\n shortMessage || \"An error occurred.\",\n \"\",\n ...args.metaMessages ? [\n ...args.metaMessages,\n \"\"\n ] : [],\n ...docsUrl ? [\n `Docs: ${docsUrl}`\n ] : [],\n ...details ? [\n `Details: ${details}`\n ] : [],\n ...$99d887ad91c984c6$var$errorConfig.version ? [\n `Version: ${$99d887ad91c984c6$var$errorConfig.version}`\n ] : []\n ].join(\"\\n\");\n super(message, args.cause ? {\n cause: args.cause\n } : undefined);\n Object.defineProperty(this, \"details\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"docsPath\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"metaMessages\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"shortMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"BaseError\"\n });\n this.details = details;\n this.docsPath = docsPath;\n this.metaMessages = args.metaMessages;\n this.name = args.name ?? this.name;\n this.shortMessage = shortMessage;\n this.version = (0, $266a83479ddcca51$export$83d89fbfd8236492);\n }\n walk(fn) {\n return $99d887ad91c984c6$var$walk(this, fn);\n }\n}\nfunction $99d887ad91c984c6$var$walk(err, fn) {\n if (fn?.(err)) return err;\n if (err && typeof err === \"object\" && \"cause\" in err) return $99d887ad91c984c6$var$walk(err.cause, fn);\n return fn ? null : err;\n}\n\n\nclass $5b122542bf87f4b6$export$efa723f306cf6168 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ docsPath: docsPath }){\n super([\n \"A constructor was not found on the ABI.\",\n \"Make sure you are using the correct ABI and that the constructor exists on it.\"\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"AbiConstructorNotFoundError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$4faec14323ef9c47 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ docsPath: docsPath }){\n super([\n \"Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.\",\n \"Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists.\"\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"AbiConstructorParamsNotFoundError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$68a7b570091cba69 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ data: data, size: size }){\n super([\n `Data size of ${size} bytes is invalid.`,\n \"Size must be in increments of 32 bytes (size % 32 === 0).\"\n ].join(\"\\n\"), {\n metaMessages: [\n `Data: ${data} (${size} bytes)`\n ],\n name: \"AbiDecodingDataSizeInvalidError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$7a409e433c5f3a8c extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ data: data, params: params, size: size }){\n super([\n `Data size of ${size} bytes is too small for given parameters.`\n ].join(\"\\n\"), {\n metaMessages: [\n `Params: (${(0, $1987e5e986c056f7$export$849e499971de75b3)(params, {\n includeName: true\n })})`,\n `Data: ${data} (${size} bytes)`\n ],\n name: \"AbiDecodingDataSizeTooSmallError\"\n });\n Object.defineProperty(this, \"data\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"params\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"size\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.data = data;\n this.params = params;\n this.size = size;\n }\n}\nclass $5b122542bf87f4b6$export$a063cde4013f1935 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(){\n super('Cannot decode zero data (\"0x\") with ABI parameters.', {\n name: \"AbiDecodingZeroDataError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$a851da9bf50b557 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ expectedLength: expectedLength, givenLength: givenLength, type: type }){\n super([\n `ABI encoding array length mismatch for type ${type}.`,\n `Expected length: ${expectedLength}`,\n `Given length: ${givenLength}`\n ].join(\"\\n\"), {\n name: \"AbiEncodingArrayLengthMismatchError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$19c281dc8e23a2ea extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ expectedSize: expectedSize, value: value }){\n super(`Size of bytes \"${value}\" (bytes${(0, $c972e44f440b9af9$export$346677f925de839c)(value)}) does not match expected size (bytes${expectedSize}).`, {\n name: \"AbiEncodingBytesSizeMismatchError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$20737d495bb13c2d extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ expectedLength: expectedLength, givenLength: givenLength }){\n super([\n \"ABI encoding params/values length mismatch.\",\n `Expected length (params): ${expectedLength}`,\n `Given length (values): ${givenLength}`\n ].join(\"\\n\"), {\n name: \"AbiEncodingLengthMismatchError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$d47cf5ef47eda817 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(errorName, { docsPath: docsPath }){\n super([\n `Arguments (\\`args\\`) were provided to \"${errorName}\", but \"${errorName}\" on the ABI does not contain any parameters (\\`inputs\\`).`,\n \"Cannot encode error result without knowing what the parameter types are.\",\n \"Make sure you are using the correct ABI and that the inputs exist on it.\"\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"AbiErrorInputsNotFoundError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$86b719574b683f04 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(errorName, { docsPath: docsPath } = {}){\n super([\n `Error ${errorName ? `\"${errorName}\" ` : \"\"}not found on ABI.`,\n \"Make sure you are using the correct ABI and that the error exists on it.\"\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"AbiErrorNotFoundError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$8959cb729fefe1ea extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(signature, { docsPath: docsPath }){\n super([\n `Encoded error signature \"${signature}\" not found on ABI.`,\n \"Make sure you are using the correct ABI and that the error exists on it.\",\n `You can look up the decoded signature here: https://openchain.xyz/signatures?query=${signature}.`\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"AbiErrorSignatureNotFoundError\"\n });\n Object.defineProperty(this, \"signature\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.signature = signature;\n }\n}\nclass $5b122542bf87f4b6$export$f83210ce5f9b901f extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ docsPath: docsPath }){\n super(\"Cannot extract event signature from empty topics.\", {\n docsPath: docsPath,\n name: \"AbiEventSignatureEmptyTopicsError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$3b44baeac92e4d3a extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(signature, { docsPath: docsPath }){\n super([\n `Encoded event signature \"${signature}\" not found on ABI.`,\n \"Make sure you are using the correct ABI and that the event exists on it.\",\n `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"AbiEventSignatureNotFoundError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$c7be62baad13b157 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(eventName, { docsPath: docsPath } = {}){\n super([\n `Event ${eventName ? `\"${eventName}\" ` : \"\"}not found on ABI.`,\n \"Make sure you are using the correct ABI and that the event exists on it.\"\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"AbiEventNotFoundError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$c4faa308ea7f9b2 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(functionName, { docsPath: docsPath } = {}){\n super([\n `Function ${functionName ? `\"${functionName}\" ` : \"\"}not found on ABI.`,\n \"Make sure you are using the correct ABI and that the function exists on it.\"\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"AbiFunctionNotFoundError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$26f2edb605108b34 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(functionName, { docsPath: docsPath }){\n super([\n `Function \"${functionName}\" does not contain any \\`outputs\\` on ABI.`,\n \"Cannot decode function result without knowing what the parameter types are.\",\n \"Make sure you are using the correct ABI and that the function exists on it.\"\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"AbiFunctionOutputsNotFoundError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$14373147a0e60810 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(signature, { docsPath: docsPath }){\n super([\n `Encoded function signature \"${signature}\" not found on ABI.`,\n \"Make sure you are using the correct ABI and that the function exists on it.\",\n `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"AbiFunctionSignatureNotFoundError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$fdbba54ba15f2c2d extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(x, y){\n super(\"Found ambiguous types in overloaded ABI items.\", {\n metaMessages: [\n `\\`${x.type}\\` in \\`${(0, $1987e5e986c056f7$export$dc5d0ff4fc2fdee1)(x.abiItem)}\\`, and`,\n `\\`${y.type}\\` in \\`${(0, $1987e5e986c056f7$export$dc5d0ff4fc2fdee1)(y.abiItem)}\\``,\n \"\",\n \"These types encode differently and cannot be distinguished at runtime.\",\n \"Remove one of the ambiguous items in the ABI.\"\n ],\n name: \"AbiItemAmbiguityError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$a0eb884ede5c87eb extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ expectedSize: expectedSize, givenSize: givenSize }){\n super(`Expected bytes${expectedSize}, got bytes${givenSize}.`, {\n name: \"BytesSizeMismatchError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$3978f86c08fc8c25 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ abiItem: abiItem, data: data, params: params, size: size }){\n super([\n `Data size of ${size} bytes is too small for non-indexed event parameters.`\n ].join(\"\\n\"), {\n metaMessages: [\n `Params: (${(0, $1987e5e986c056f7$export$849e499971de75b3)(params, {\n includeName: true\n })})`,\n `Data: ${data} (${size} bytes)`\n ],\n name: \"DecodeLogDataMismatch\"\n });\n Object.defineProperty(this, \"abiItem\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"data\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"params\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"size\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.abiItem = abiItem;\n this.data = data;\n this.params = params;\n this.size = size;\n }\n}\nclass $5b122542bf87f4b6$export$6d7c6f419cf52377 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ abiItem: abiItem, param: param }){\n super([\n `Expected a topic for indexed event parameter${param.name ? ` \"${param.name}\"` : \"\"} on event \"${(0, $1987e5e986c056f7$export$dc5d0ff4fc2fdee1)(abiItem, {\n includeName: true\n })}\".`\n ].join(\"\\n\"), {\n name: \"DecodeLogTopicsMismatch\"\n });\n Object.defineProperty(this, \"abiItem\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.abiItem = abiItem;\n }\n}\nclass $5b122542bf87f4b6$export$53ed98b886965f49 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(type, { docsPath: docsPath }){\n super([\n `Type \"${type}\" is not a valid encoding type.`,\n \"Please provide a valid ABI type.\"\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"InvalidAbiEncodingType\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$cf94ccff0ff97c65 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(type, { docsPath: docsPath }){\n super([\n `Type \"${type}\" is not a valid decoding type.`,\n \"Please provide a valid ABI type.\"\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"InvalidAbiDecodingType\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$710dd6d4f78cc47e extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(value){\n super([\n `Value \"${value}\" is not a valid array.`\n ].join(\"\\n\"), {\n name: \"InvalidArrayError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$81781a0fcfb9ed95 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(type){\n super([\n `\"${type}\" is not a valid definition type.`,\n 'Valid types: \"function\", \"event\", \"error\"'\n ].join(\"\\n\"), {\n name: \"InvalidDefinitionTypeError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$a16541e2fe420ef1 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(type){\n super(`Type \"${type}\" is not supported for packed encoding.`, {\n name: \"UnsupportedPackedAbiType\"\n });\n }\n}\n\n\n\nclass $223c6c44c48560e0$export$66c44d927ffead98 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ address: address }){\n super(`Address \"${address}\" is invalid.`, {\n metaMessages: [\n \"- Address must be a hex value of 20 bytes (40 hex characters).\",\n \"- Address must match its checksum counterpart.\"\n ],\n name: \"InvalidAddressError\"\n });\n }\n}\n\n\n/**\n * Map with a LRU (Least recently used) policy.\n *\n * @link https://en.wikipedia.org/wiki/Cache_replacement_policies#LRU\n */ class $113b826c68452f61$export$fcb3b6cad79d7e3a extends Map {\n constructor(size){\n super();\n Object.defineProperty(this, \"maxSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.maxSize = size;\n }\n set(key, value) {\n super.set(key, value);\n if (this.maxSize && this.size > this.maxSize) this.delete(this.keys().next().value);\n return this;\n }\n}\n\n\n\n\n\n\nclass $22d4c2005867f2d3$export$cfcd41bba8b36dbd extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ offset: offset, position: position, size: size }){\n super(`Slice ${position === \"start\" ? \"starting\" : \"ending\"} at offset \"${offset}\" is out-of-bounds (size: ${size}).`, {\n name: \"SliceOffsetOutOfBoundsError\"\n });\n }\n}\nclass $22d4c2005867f2d3$export$70445dc308a7f3d5 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ size: size, targetSize: targetSize, type: type }){\n super(`${type.charAt(0).toUpperCase()}${type.slice(1).toLowerCase()} size (${size}) exceeds padding size (${targetSize}).`, {\n name: \"SizeExceedsPaddingSizeError\"\n });\n }\n}\nclass $22d4c2005867f2d3$export$8a5469becf223114 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ size: size, targetSize: targetSize, type: type }){\n super(`${type.charAt(0).toUpperCase()}${type.slice(1).toLowerCase()} is expected to be ${targetSize} ${type} long, but is ${size} ${type} long.`, {\n name: \"InvalidBytesLengthError\"\n });\n }\n}\n\n\nfunction $98fd51879b3ecb59$export$5d04458e2a6c373e(hexOrBytes, { dir: dir, size: size = 32 } = {}) {\n if (typeof hexOrBytes === \"string\") return $98fd51879b3ecb59$export$1bcd51c0fce8ee55(hexOrBytes, {\n dir: dir,\n size: size\n });\n return $98fd51879b3ecb59$export$4c6b868113605df3(hexOrBytes, {\n dir: dir,\n size: size\n });\n}\nfunction $98fd51879b3ecb59$export$1bcd51c0fce8ee55(hex_, { dir: dir, size: size = 32 } = {}) {\n if (size === null) return hex_;\n const hex = hex_.replace(\"0x\", \"\");\n if (hex.length > size * 2) throw new (0, $22d4c2005867f2d3$export$70445dc308a7f3d5)({\n size: Math.ceil(hex.length / 2),\n targetSize: size,\n type: \"hex\"\n });\n return `0x${hex[dir === \"right\" ? \"padEnd\" : \"padStart\"](size * 2, \"0\")}`;\n}\nfunction $98fd51879b3ecb59$export$4c6b868113605df3(bytes, { dir: dir, size: size = 32 } = {}) {\n if (size === null) return bytes;\n if (bytes.length > size) throw new (0, $22d4c2005867f2d3$export$70445dc308a7f3d5)({\n size: bytes.length,\n targetSize: size,\n type: \"bytes\"\n });\n const paddedBytes = new Uint8Array(size);\n for(let i = 0; i < size; i++){\n const padEnd = dir === \"right\";\n paddedBytes[padEnd ? i : size - i - 1] = bytes[padEnd ? i : bytes.length - i - 1];\n }\n return paddedBytes;\n}\n\n\n\nclass $6bc7cb07282b4ef9$export$47d164a8071229a9 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ max: max, min: min, signed: signed, size: size, value: value }){\n super(`Number \"${value}\" is not in safe ${size ? `${size * 8}-bit ${signed ? \"signed\" : \"unsigned\"} ` : \"\"}integer range ${max ? `(${min} to ${max})` : `(above ${min})`}`, {\n name: \"IntegerOutOfRangeError\"\n });\n }\n}\nclass $6bc7cb07282b4ef9$export$52fc62e5266c8838 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(bytes){\n super(`Bytes value \"${bytes}\" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`, {\n name: \"InvalidBytesBooleanError\"\n });\n }\n}\nclass $6bc7cb07282b4ef9$export$f574ac54e35514c extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(hex){\n super(`Hex value \"${hex}\" is not a valid boolean. The hex value must be \"0x0\" (false) or \"0x1\" (true).`, {\n name: \"InvalidHexBooleanError\"\n });\n }\n}\nclass $6bc7cb07282b4ef9$export$ef05eafd11dd4a83 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(value){\n super(`Hex value \"${value}\" is an odd length (${value.length}). It must be an even length.`, {\n name: \"InvalidHexValueError\"\n });\n }\n}\nclass $6bc7cb07282b4ef9$export$beb44ed4f8747d0e extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ givenSize: givenSize, maxSize: maxSize }){\n super(`Size cannot exceed ${maxSize} bytes. Given size: ${givenSize} bytes.`, {\n name: \"SizeOverflowError\"\n });\n }\n}\n\n\n\nfunction $9198e630706ef6a3$export$87c2784dc9fc4ab(hexOrBytes, { dir: dir = \"left\" } = {}) {\n let data = typeof hexOrBytes === \"string\" ? hexOrBytes.replace(\"0x\", \"\") : hexOrBytes;\n let sliceLength = 0;\n for(let i = 0; i < data.length - 1; i++){\n if (data[dir === \"left\" ? i : data.length - i - 1].toString() === \"0\") sliceLength++;\n else break;\n }\n data = dir === \"left\" ? data.slice(sliceLength) : data.slice(0, data.length - sliceLength);\n if (typeof hexOrBytes === \"string\") {\n if (data.length === 1 && dir === \"right\") data = `${data}0`;\n return `0x${data.length % 2 === 1 ? `0${data}` : data}`;\n }\n return data;\n}\n\n\n\nfunction $48b086097357245b$export$2af489edb7fa35fe(hexOrBytes, { size: size }) {\n if ((0, $c972e44f440b9af9$export$346677f925de839c)(hexOrBytes) > size) throw new (0, $6bc7cb07282b4ef9$export$beb44ed4f8747d0e)({\n givenSize: (0, $c972e44f440b9af9$export$346677f925de839c)(hexOrBytes),\n maxSize: size\n });\n}\nfunction $48b086097357245b$export$1a8ceedbd5845648(hex, toOrOpts) {\n const opts = typeof toOrOpts === \"string\" ? {\n to: toOrOpts\n } : toOrOpts;\n const to = opts.to;\n if (to === \"number\") return $48b086097357245b$export$d57f2bacc26b4249(hex, opts);\n if (to === \"bigint\") return $48b086097357245b$export$92a44656ec81b584(hex, opts);\n if (to === \"string\") return $48b086097357245b$export$f4bc7e46f3eb3ac3(hex, opts);\n if (to === \"boolean\") return $48b086097357245b$export$bde1d77e6fe6c41e(hex, opts);\n return (0, $551a23ba4e8afae7$export$31c96b9df38bc8d4)(hex, opts);\n}\nfunction $48b086097357245b$export$92a44656ec81b584(hex, opts = {}) {\n const { signed: signed } = opts;\n if (opts.size) $48b086097357245b$export$2af489edb7fa35fe(hex, {\n size: opts.size\n });\n const value = BigInt(hex);\n if (!signed) return value;\n const size = (hex.length - 2) / 2;\n const max = (1n << BigInt(size) * 8n - 1n) - 1n;\n if (value <= max) return value;\n return value - BigInt(`0x${\"f\".padStart(size * 2, \"f\")}`) - 1n;\n}\nfunction $48b086097357245b$export$bde1d77e6fe6c41e(hex_, opts = {}) {\n let hex = hex_;\n if (opts.size) {\n $48b086097357245b$export$2af489edb7fa35fe(hex, {\n size: opts.size\n });\n hex = (0, $9198e630706ef6a3$export$87c2784dc9fc4ab)(hex);\n }\n if ((0, $9198e630706ef6a3$export$87c2784dc9fc4ab)(hex) === \"0x00\") return false;\n if ((0, $9198e630706ef6a3$export$87c2784dc9fc4ab)(hex) === \"0x01\") return true;\n throw new (0, $6bc7cb07282b4ef9$export$f574ac54e35514c)(hex);\n}\nfunction $48b086097357245b$export$d57f2bacc26b4249(hex, opts = {}) {\n return Number($48b086097357245b$export$92a44656ec81b584(hex, opts));\n}\nfunction $48b086097357245b$export$f4bc7e46f3eb3ac3(hex, opts = {}) {\n let bytes = (0, $551a23ba4e8afae7$export$31c96b9df38bc8d4)(hex);\n if (opts.size) {\n $48b086097357245b$export$2af489edb7fa35fe(bytes, {\n size: opts.size\n });\n bytes = (0, $9198e630706ef6a3$export$87c2784dc9fc4ab)(bytes, {\n dir: \"right\"\n });\n }\n return new TextDecoder().decode(bytes);\n}\n\n\n\n\n\nconst $f004194a770c7248$var$hexes = /*#__PURE__*/ Array.from({\n length: 256\n}, (_v, i)=>i.toString(16).padStart(2, \"0\"));\nfunction $f004194a770c7248$export$7ea66e3774a60b67(value, opts = {}) {\n if (typeof value === \"number\" || typeof value === \"bigint\") return $f004194a770c7248$export$4e87185b7ecfeec4(value, opts);\n if (typeof value === \"string\") return $f004194a770c7248$export$551c48dea6f88e6d(value, opts);\n if (typeof value === \"boolean\") return $f004194a770c7248$export$b5c95dec4f62ef7a(value, opts);\n return $f004194a770c7248$export$58b867e287a802c8(value, opts);\n}\nfunction $f004194a770c7248$export$b5c95dec4f62ef7a(value, opts = {}) {\n const hex = `0x${Number(value)}`;\n if (typeof opts.size === \"number\") {\n (0, $48b086097357245b$export$2af489edb7fa35fe)(hex, {\n size: opts.size\n });\n return (0, $98fd51879b3ecb59$export$5d04458e2a6c373e)(hex, {\n size: opts.size\n });\n }\n return hex;\n}\nfunction $f004194a770c7248$export$58b867e287a802c8(value, opts = {}) {\n let string = \"\";\n for(let i = 0; i < value.length; i++)string += $f004194a770c7248$var$hexes[value[i]];\n const hex = `0x${string}`;\n if (typeof opts.size === \"number\") {\n (0, $48b086097357245b$export$2af489edb7fa35fe)(hex, {\n size: opts.size\n });\n return (0, $98fd51879b3ecb59$export$5d04458e2a6c373e)(hex, {\n dir: \"right\",\n size: opts.size\n });\n }\n return hex;\n}\nfunction $f004194a770c7248$export$4e87185b7ecfeec4(value_, opts = {}) {\n const { signed: signed, size: size } = opts;\n const value = BigInt(value_);\n let maxValue;\n if (size) {\n if (signed) maxValue = (1n << BigInt(size) * 8n - 1n) - 1n;\n else maxValue = 2n ** (BigInt(size) * 8n) - 1n;\n } else if (typeof value_ === \"number\") maxValue = BigInt(Number.MAX_SAFE_INTEGER);\n const minValue = typeof maxValue === \"bigint\" && signed ? -maxValue - 1n : 0;\n if (maxValue && value > maxValue || value < minValue) {\n const suffix = typeof value_ === \"bigint\" ? \"n\" : \"\";\n throw new (0, $6bc7cb07282b4ef9$export$47d164a8071229a9)({\n max: maxValue ? `${maxValue}${suffix}` : undefined,\n min: `${minValue}${suffix}`,\n signed: signed,\n size: size,\n value: `${value_}${suffix}`\n });\n }\n const hex = `0x${(signed && value < 0 ? (1n << BigInt(size * 8)) + BigInt(value) : value).toString(16)}`;\n if (size) return (0, $98fd51879b3ecb59$export$5d04458e2a6c373e)(hex, {\n size: size\n });\n return hex;\n}\nconst $f004194a770c7248$var$encoder = /*#__PURE__*/ new TextEncoder();\nfunction $f004194a770c7248$export$551c48dea6f88e6d(value_, opts = {}) {\n const value = $f004194a770c7248$var$encoder.encode(value_);\n return $f004194a770c7248$export$58b867e287a802c8(value, opts);\n}\n\n\nconst $551a23ba4e8afae7$var$encoder = /*#__PURE__*/ new TextEncoder();\nfunction $551a23ba4e8afae7$export$30a71edf0753ed6b(value, opts = {}) {\n if (typeof value === \"number\" || typeof value === \"bigint\") return $551a23ba4e8afae7$export$49ad9be85c347998(value, opts);\n if (typeof value === \"boolean\") return $551a23ba4e8afae7$export$771517697a68241(value, opts);\n if ((0, $d440cba9eebbb8de$export$8a9b6341a7c96bc)(value)) return $551a23ba4e8afae7$export$31c96b9df38bc8d4(value, opts);\n return $551a23ba4e8afae7$export$c8dd6bc66a63753c(value, opts);\n}\nfunction $551a23ba4e8afae7$export$771517697a68241(value, opts = {}) {\n const bytes = new Uint8Array(1);\n bytes[0] = Number(value);\n if (typeof opts.size === \"number\") {\n (0, $48b086097357245b$export$2af489edb7fa35fe)(bytes, {\n size: opts.size\n });\n return (0, $98fd51879b3ecb59$export$5d04458e2a6c373e)(bytes, {\n size: opts.size\n });\n }\n return bytes;\n}\n// We use very optimized technique to convert hex string to byte array\nconst $551a23ba4e8afae7$var$charCodeMap = {\n zero: 48,\n nine: 57,\n A: 65,\n F: 70,\n a: 97,\n f: 102\n};\nfunction $551a23ba4e8afae7$var$charCodeToBase16(char) {\n if (char >= $551a23ba4e8afae7$var$charCodeMap.zero && char <= $551a23ba4e8afae7$var$charCodeMap.nine) return char - $551a23ba4e8afae7$var$charCodeMap.zero;\n if (char >= $551a23ba4e8afae7$var$charCodeMap.A && char <= $551a23ba4e8afae7$var$charCodeMap.F) return char - ($551a23ba4e8afae7$var$charCodeMap.A - 10);\n if (char >= $551a23ba4e8afae7$var$charCodeMap.a && char <= $551a23ba4e8afae7$var$charCodeMap.f) return char - ($551a23ba4e8afae7$var$charCodeMap.a - 10);\n return undefined;\n}\nfunction $551a23ba4e8afae7$export$31c96b9df38bc8d4(hex_, opts = {}) {\n let hex = hex_;\n if (opts.size) {\n (0, $48b086097357245b$export$2af489edb7fa35fe)(hex, {\n size: opts.size\n });\n hex = (0, $98fd51879b3ecb59$export$5d04458e2a6c373e)(hex, {\n dir: \"right\",\n size: opts.size\n });\n }\n let hexString = hex.slice(2);\n if (hexString.length % 2) hexString = `0${hexString}`;\n const length = hexString.length / 2;\n const bytes = new Uint8Array(length);\n for(let index = 0, j = 0; index < length; index++){\n const nibbleLeft = $551a23ba4e8afae7$var$charCodeToBase16(hexString.charCodeAt(j++));\n const nibbleRight = $551a23ba4e8afae7$var$charCodeToBase16(hexString.charCodeAt(j++));\n if (nibbleLeft === undefined || nibbleRight === undefined) throw new (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e)(`Invalid byte sequence (\"${hexString[j - 2]}${hexString[j - 1]}\" in \"${hexString}\").`);\n bytes[index] = nibbleLeft * 16 + nibbleRight;\n }\n return bytes;\n}\nfunction $551a23ba4e8afae7$export$49ad9be85c347998(value, opts) {\n const hex = (0, $f004194a770c7248$export$4e87185b7ecfeec4)(value, opts);\n return $551a23ba4e8afae7$export$31c96b9df38bc8d4(hex);\n}\nfunction $551a23ba4e8afae7$export$c8dd6bc66a63753c(value, opts = {}) {\n const bytes = $551a23ba4e8afae7$var$encoder.encode(value);\n if (typeof opts.size === \"number\") {\n (0, $48b086097357245b$export$2af489edb7fa35fe)(bytes, {\n size: opts.size\n });\n return (0, $98fd51879b3ecb59$export$5d04458e2a6c373e)(bytes, {\n dir: \"right\",\n size: opts.size\n });\n }\n return bytes;\n}\n\n\nvar $c8edf0fd0cb8f896$exports = {};\n\"use strict\";\nObject.defineProperty($c8edf0fd0cb8f896$exports, \"__esModule\", {\n value: true\n});\n$c8edf0fd0cb8f896$exports.shake256 = $c8edf0fd0cb8f896$exports.shake128 = $c8edf0fd0cb8f896$exports.keccak_512 = $c8edf0fd0cb8f896$exports.keccak_384 = $c8edf0fd0cb8f896$exports.keccak_256 = $c8edf0fd0cb8f896$exports.keccak_224 = $c8edf0fd0cb8f896$exports.sha3_512 = $c8edf0fd0cb8f896$exports.sha3_384 = $c8edf0fd0cb8f896$exports.sha3_256 = $c8edf0fd0cb8f896$exports.sha3_224 = $c8edf0fd0cb8f896$exports.Keccak = $c8edf0fd0cb8f896$exports.keccakP = void 0;\nvar $fc6ec5653e91d6e4$exports = {};\n\"use strict\";\nObject.defineProperty($fc6ec5653e91d6e4$exports, \"__esModule\", {\n value: true\n});\n$fc6ec5653e91d6e4$exports.output = $fc6ec5653e91d6e4$exports.exists = $fc6ec5653e91d6e4$exports.hash = $fc6ec5653e91d6e4$exports.bytes = $fc6ec5653e91d6e4$exports.bool = $fc6ec5653e91d6e4$exports.number = void 0;\nfunction $fc6ec5653e91d6e4$var$number(n) {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error(`Wrong positive integer: ${n}`);\n}\n$fc6ec5653e91d6e4$exports.number = $fc6ec5653e91d6e4$var$number;\nfunction $fc6ec5653e91d6e4$var$bool(b) {\n if (typeof b !== \"boolean\") throw new Error(`Expected boolean, not ${b}`);\n}\n$fc6ec5653e91d6e4$exports.bool = $fc6ec5653e91d6e4$var$bool;\nfunction $fc6ec5653e91d6e4$var$bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array)) throw new Error(\"Expected Uint8Array\");\n if (lengths.length > 0 && !lengths.includes(b.length)) throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\n$fc6ec5653e91d6e4$exports.bytes = $fc6ec5653e91d6e4$var$bytes;\nfunction $fc6ec5653e91d6e4$var$hash(hash) {\n if (typeof hash !== \"function\" || typeof hash.create !== \"function\") throw new Error(\"Hash should be wrapped by utils.wrapConstructor\");\n $fc6ec5653e91d6e4$var$number(hash.outputLen);\n $fc6ec5653e91d6e4$var$number(hash.blockLen);\n}\n$fc6ec5653e91d6e4$exports.hash = $fc6ec5653e91d6e4$var$hash;\nfunction $fc6ec5653e91d6e4$var$exists(instance, checkFinished = true) {\n if (instance.destroyed) throw new Error(\"Hash instance has been destroyed\");\n if (checkFinished && instance.finished) throw new Error(\"Hash#digest() has already been called\");\n}\n$fc6ec5653e91d6e4$exports.exists = $fc6ec5653e91d6e4$var$exists;\nfunction $fc6ec5653e91d6e4$var$output(out, instance) {\n $fc6ec5653e91d6e4$var$bytes(out);\n const min = instance.outputLen;\n if (out.length < min) throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n}\n$fc6ec5653e91d6e4$exports.output = $fc6ec5653e91d6e4$var$output;\nconst $fc6ec5653e91d6e4$var$assert = {\n number: $fc6ec5653e91d6e4$var$number,\n bool: $fc6ec5653e91d6e4$var$bool,\n bytes: $fc6ec5653e91d6e4$var$bytes,\n hash: $fc6ec5653e91d6e4$var$hash,\n exists: $fc6ec5653e91d6e4$var$exists,\n output: $fc6ec5653e91d6e4$var$output\n};\n$fc6ec5653e91d6e4$exports.default = $fc6ec5653e91d6e4$var$assert;\n\n\nvar $15c2007833b0fa11$exports = {};\n\"use strict\";\nObject.defineProperty($15c2007833b0fa11$exports, \"__esModule\", {\n value: true\n});\n$15c2007833b0fa11$exports.add5L = $15c2007833b0fa11$exports.add5H = $15c2007833b0fa11$exports.add4H = $15c2007833b0fa11$exports.add4L = $15c2007833b0fa11$exports.add3H = $15c2007833b0fa11$exports.add3L = $15c2007833b0fa11$exports.add = $15c2007833b0fa11$exports.rotlBL = $15c2007833b0fa11$exports.rotlBH = $15c2007833b0fa11$exports.rotlSL = $15c2007833b0fa11$exports.rotlSH = $15c2007833b0fa11$exports.rotr32L = $15c2007833b0fa11$exports.rotr32H = $15c2007833b0fa11$exports.rotrBL = $15c2007833b0fa11$exports.rotrBH = $15c2007833b0fa11$exports.rotrSL = $15c2007833b0fa11$exports.rotrSH = $15c2007833b0fa11$exports.shrSL = $15c2007833b0fa11$exports.shrSH = $15c2007833b0fa11$exports.toBig = $15c2007833b0fa11$exports.split = $15c2007833b0fa11$exports.fromBig = void 0;\nconst $15c2007833b0fa11$var$U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst $15c2007833b0fa11$var$_32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction $15c2007833b0fa11$var$fromBig(n, le = false) {\n if (le) return {\n h: Number(n & $15c2007833b0fa11$var$U32_MASK64),\n l: Number(n >> $15c2007833b0fa11$var$_32n & $15c2007833b0fa11$var$U32_MASK64)\n };\n return {\n h: Number(n >> $15c2007833b0fa11$var$_32n & $15c2007833b0fa11$var$U32_MASK64) | 0,\n l: Number(n & $15c2007833b0fa11$var$U32_MASK64) | 0\n };\n}\n$15c2007833b0fa11$exports.fromBig = $15c2007833b0fa11$var$fromBig;\nfunction $15c2007833b0fa11$var$split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for(let i = 0; i < lst.length; i++){\n const { h: h, l: l } = $15c2007833b0fa11$var$fromBig(lst[i], le);\n [Ah[i], Al[i]] = [\n h,\n l\n ];\n }\n return [\n Ah,\n Al\n ];\n}\n$15c2007833b0fa11$exports.split = $15c2007833b0fa11$var$split;\nconst $15c2007833b0fa11$var$toBig = (h, l)=>BigInt(h >>> 0) << $15c2007833b0fa11$var$_32n | BigInt(l >>> 0);\n$15c2007833b0fa11$exports.toBig = $15c2007833b0fa11$var$toBig;\n// for Shift in [0, 32)\nconst $15c2007833b0fa11$var$shrSH = (h, _l, s)=>h >>> s;\n$15c2007833b0fa11$exports.shrSH = $15c2007833b0fa11$var$shrSH;\nconst $15c2007833b0fa11$var$shrSL = (h, l, s)=>h << 32 - s | l >>> s;\n$15c2007833b0fa11$exports.shrSL = $15c2007833b0fa11$var$shrSL;\n// Right rotate for Shift in [1, 32)\nconst $15c2007833b0fa11$var$rotrSH = (h, l, s)=>h >>> s | l << 32 - s;\n$15c2007833b0fa11$exports.rotrSH = $15c2007833b0fa11$var$rotrSH;\nconst $15c2007833b0fa11$var$rotrSL = (h, l, s)=>h << 32 - s | l >>> s;\n$15c2007833b0fa11$exports.rotrSL = $15c2007833b0fa11$var$rotrSL;\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst $15c2007833b0fa11$var$rotrBH = (h, l, s)=>h << 64 - s | l >>> s - 32;\n$15c2007833b0fa11$exports.rotrBH = $15c2007833b0fa11$var$rotrBH;\nconst $15c2007833b0fa11$var$rotrBL = (h, l, s)=>h >>> s - 32 | l << 64 - s;\n$15c2007833b0fa11$exports.rotrBL = $15c2007833b0fa11$var$rotrBL;\n// Right rotate for shift===32 (just swaps l&h)\nconst $15c2007833b0fa11$var$rotr32H = (_h, l)=>l;\n$15c2007833b0fa11$exports.rotr32H = $15c2007833b0fa11$var$rotr32H;\nconst $15c2007833b0fa11$var$rotr32L = (h, _l)=>h;\n$15c2007833b0fa11$exports.rotr32L = $15c2007833b0fa11$var$rotr32L;\n// Left rotate for Shift in [1, 32)\nconst $15c2007833b0fa11$var$rotlSH = (h, l, s)=>h << s | l >>> 32 - s;\n$15c2007833b0fa11$exports.rotlSH = $15c2007833b0fa11$var$rotlSH;\nconst $15c2007833b0fa11$var$rotlSL = (h, l, s)=>l << s | h >>> 32 - s;\n$15c2007833b0fa11$exports.rotlSL = $15c2007833b0fa11$var$rotlSL;\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst $15c2007833b0fa11$var$rotlBH = (h, l, s)=>l << s - 32 | h >>> 64 - s;\n$15c2007833b0fa11$exports.rotlBH = $15c2007833b0fa11$var$rotlBH;\nconst $15c2007833b0fa11$var$rotlBL = (h, l, s)=>h << s - 32 | l >>> 64 - s;\n$15c2007833b0fa11$exports.rotlBL = $15c2007833b0fa11$var$rotlBL;\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction $15c2007833b0fa11$var$add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return {\n h: Ah + Bh + (l / 2 ** 32 | 0) | 0,\n l: l | 0\n };\n}\n$15c2007833b0fa11$exports.add = $15c2007833b0fa11$var$add;\n// Addition with more than 2 elements\nconst $15c2007833b0fa11$var$add3L = (Al, Bl, Cl)=>(Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\n$15c2007833b0fa11$exports.add3L = $15c2007833b0fa11$var$add3L;\nconst $15c2007833b0fa11$var$add3H = (low, Ah, Bh, Ch)=>Ah + Bh + Ch + (low / 2 ** 32 | 0) | 0;\n$15c2007833b0fa11$exports.add3H = $15c2007833b0fa11$var$add3H;\nconst $15c2007833b0fa11$var$add4L = (Al, Bl, Cl, Dl)=>(Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\n$15c2007833b0fa11$exports.add4L = $15c2007833b0fa11$var$add4L;\nconst $15c2007833b0fa11$var$add4H = (low, Ah, Bh, Ch, Dh)=>Ah + Bh + Ch + Dh + (low / 2 ** 32 | 0) | 0;\n$15c2007833b0fa11$exports.add4H = $15c2007833b0fa11$var$add4H;\nconst $15c2007833b0fa11$var$add5L = (Al, Bl, Cl, Dl, El)=>(Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\n$15c2007833b0fa11$exports.add5L = $15c2007833b0fa11$var$add5L;\nconst $15c2007833b0fa11$var$add5H = (low, Ah, Bh, Ch, Dh, Eh)=>Ah + Bh + Ch + Dh + Eh + (low / 2 ** 32 | 0) | 0;\n$15c2007833b0fa11$exports.add5H = $15c2007833b0fa11$var$add5H;\n// prettier-ignore\nconst $15c2007833b0fa11$var$u64 = {\n fromBig: $15c2007833b0fa11$var$fromBig,\n split: $15c2007833b0fa11$var$split,\n toBig: $15c2007833b0fa11$var$toBig,\n shrSH: $15c2007833b0fa11$var$shrSH,\n shrSL: $15c2007833b0fa11$var$shrSL,\n rotrSH: $15c2007833b0fa11$var$rotrSH,\n rotrSL: $15c2007833b0fa11$var$rotrSL,\n rotrBH: $15c2007833b0fa11$var$rotrBH,\n rotrBL: $15c2007833b0fa11$var$rotrBL,\n rotr32H: $15c2007833b0fa11$var$rotr32H,\n rotr32L: $15c2007833b0fa11$var$rotr32L,\n rotlSH: $15c2007833b0fa11$var$rotlSH,\n rotlSL: $15c2007833b0fa11$var$rotlSL,\n rotlBH: $15c2007833b0fa11$var$rotlBH,\n rotlBL: $15c2007833b0fa11$var$rotlBL,\n add: $15c2007833b0fa11$var$add,\n add3L: $15c2007833b0fa11$var$add3L,\n add3H: $15c2007833b0fa11$var$add3H,\n add4L: $15c2007833b0fa11$var$add4L,\n add4H: $15c2007833b0fa11$var$add4H,\n add5H: $15c2007833b0fa11$var$add5H,\n add5L: $15c2007833b0fa11$var$add5L\n};\n$15c2007833b0fa11$exports.default = $15c2007833b0fa11$var$u64;\n\n\nvar $7a81f263a7d1b628$exports = {};\n\"use strict\";\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */ Object.defineProperty($7a81f263a7d1b628$exports, \"__esModule\", {\n value: true\n});\n$7a81f263a7d1b628$exports.randomBytes = $7a81f263a7d1b628$exports.wrapXOFConstructorWithOpts = $7a81f263a7d1b628$exports.wrapConstructorWithOpts = $7a81f263a7d1b628$exports.wrapConstructor = $7a81f263a7d1b628$exports.checkOpts = $7a81f263a7d1b628$exports.Hash = $7a81f263a7d1b628$exports.concatBytes = $7a81f263a7d1b628$exports.toBytes = $7a81f263a7d1b628$exports.utf8ToBytes = $7a81f263a7d1b628$exports.asyncLoop = $7a81f263a7d1b628$exports.nextTick = $7a81f263a7d1b628$exports.hexToBytes = $7a81f263a7d1b628$exports.bytesToHex = $7a81f263a7d1b628$exports.isLE = $7a81f263a7d1b628$exports.rotr = $7a81f263a7d1b628$exports.createView = $7a81f263a7d1b628$exports.u32 = $7a81f263a7d1b628$exports.u8 = void 0;\nvar $00e8c55746711c4b$exports = {};\n\"use strict\";\nObject.defineProperty($00e8c55746711c4b$exports, \"__esModule\", {\n value: true\n});\n$00e8c55746711c4b$exports.crypto = void 0;\n$00e8c55746711c4b$exports.crypto = typeof globalThis === \"object\" && \"crypto\" in globalThis ? globalThis.crypto : undefined;\n\n\nconst $7a81f263a7d1b628$var$u8a = (a)=>a instanceof Uint8Array;\n// Cast array to different type\nconst $7a81f263a7d1b628$var$u8 = (arr)=>new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n$7a81f263a7d1b628$exports.u8 = $7a81f263a7d1b628$var$u8;\nconst $7a81f263a7d1b628$var$u32 = (arr)=>new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n$7a81f263a7d1b628$exports.u32 = $7a81f263a7d1b628$var$u32;\n// Cast array to view\nconst $7a81f263a7d1b628$var$createView = (arr)=>new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n$7a81f263a7d1b628$exports.createView = $7a81f263a7d1b628$var$createView;\n// The rotate right (circular right shift) operation for uint32\nconst $7a81f263a7d1b628$var$rotr = (word, shift)=>word << 32 - shift | word >>> shift;\n$7a81f263a7d1b628$exports.rotr = $7a81f263a7d1b628$var$rotr;\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\n$7a81f263a7d1b628$exports.isLE = new Uint8Array(new Uint32Array([\n 0x11223344\n]).buffer)[0] === 0x44;\nif (!$7a81f263a7d1b628$exports.isLE) throw new Error(\"Non little-endian hardware is not supported\");\nconst $7a81f263a7d1b628$var$hexes = /* @__PURE__ */ Array.from({\n length: 256\n}, (_, i)=>i.toString(16).padStart(2, \"0\"));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */ function $7a81f263a7d1b628$var$bytesToHex(bytes) {\n if (!$7a81f263a7d1b628$var$u8a(bytes)) throw new Error(\"Uint8Array expected\");\n // pre-caching improves the speed 6x\n let hex = \"\";\n for(let i = 0; i < bytes.length; i++)hex += $7a81f263a7d1b628$var$hexes[bytes[i]];\n return hex;\n}\n$7a81f263a7d1b628$exports.bytesToHex = $7a81f263a7d1b628$var$bytesToHex;\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */ function $7a81f263a7d1b628$var$hexToBytes(hex) {\n if (typeof hex !== \"string\") throw new Error(\"hex string expected, got \" + typeof hex);\n const len = hex.length;\n if (len % 2) throw new Error(\"padded hex string expected, got unpadded hex of length \" + len);\n const array = new Uint8Array(len / 2);\n for(let i = 0; i < array.length; i++){\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0) throw new Error(\"Invalid byte sequence\");\n array[i] = byte;\n }\n return array;\n}\n$7a81f263a7d1b628$exports.hexToBytes = $7a81f263a7d1b628$var$hexToBytes;\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nconst $7a81f263a7d1b628$var$nextTick = async ()=>{};\n$7a81f263a7d1b628$exports.nextTick = $7a81f263a7d1b628$var$nextTick;\n// Returns control to thread each 'tick' ms to avoid blocking\nasync function $7a81f263a7d1b628$var$asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for(let i = 0; i < iters; i++){\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await (0, $7a81f263a7d1b628$exports.nextTick)();\n ts += diff;\n }\n}\n$7a81f263a7d1b628$exports.asyncLoop = $7a81f263a7d1b628$var$asyncLoop;\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */ function $7a81f263a7d1b628$var$utf8ToBytes(str) {\n if (typeof str !== \"string\") throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n$7a81f263a7d1b628$exports.utf8ToBytes = $7a81f263a7d1b628$var$utf8ToBytes;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */ function $7a81f263a7d1b628$var$toBytes(data) {\n if (typeof data === \"string\") data = $7a81f263a7d1b628$var$utf8ToBytes(data);\n if (!$7a81f263a7d1b628$var$u8a(data)) throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n$7a81f263a7d1b628$exports.toBytes = $7a81f263a7d1b628$var$toBytes;\n/**\n * Copies several Uint8Arrays into one.\n */ function $7a81f263a7d1b628$var$concatBytes(...arrays) {\n const r = new Uint8Array(arrays.reduce((sum, a)=>sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a)=>{\n if (!$7a81f263a7d1b628$var$u8a(a)) throw new Error(\"Uint8Array expected\");\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n$7a81f263a7d1b628$exports.concatBytes = $7a81f263a7d1b628$var$concatBytes;\n// For runtime check if class implements interface\nclass $7a81f263a7d1b628$var$Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\n$7a81f263a7d1b628$exports.Hash = $7a81f263a7d1b628$var$Hash;\nconst $7a81f263a7d1b628$var$toStr = {}.toString;\nfunction $7a81f263a7d1b628$var$checkOpts(defaults, opts) {\n if (opts !== undefined && $7a81f263a7d1b628$var$toStr.call(opts) !== \"[object Object]\") throw new Error(\"Options should be object or undefined\");\n const merged = Object.assign(defaults, opts);\n return merged;\n}\n$7a81f263a7d1b628$exports.checkOpts = $7a81f263a7d1b628$var$checkOpts;\nfunction $7a81f263a7d1b628$var$wrapConstructor(hashCons) {\n const hashC = (msg)=>hashCons().update($7a81f263a7d1b628$var$toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = ()=>hashCons();\n return hashC;\n}\n$7a81f263a7d1b628$exports.wrapConstructor = $7a81f263a7d1b628$var$wrapConstructor;\nfunction $7a81f263a7d1b628$var$wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts)=>hashCons(opts).update($7a81f263a7d1b628$var$toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts)=>hashCons(opts);\n return hashC;\n}\n$7a81f263a7d1b628$exports.wrapConstructorWithOpts = $7a81f263a7d1b628$var$wrapConstructorWithOpts;\nfunction $7a81f263a7d1b628$var$wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts)=>hashCons(opts).update($7a81f263a7d1b628$var$toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts)=>hashCons(opts);\n return hashC;\n}\n$7a81f263a7d1b628$exports.wrapXOFConstructorWithOpts = $7a81f263a7d1b628$var$wrapXOFConstructorWithOpts;\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */ function $7a81f263a7d1b628$var$randomBytes(bytesLength = 32) {\n if ($00e8c55746711c4b$exports.crypto && typeof $00e8c55746711c4b$exports.crypto.getRandomValues === \"function\") return $00e8c55746711c4b$exports.crypto.getRandomValues(new Uint8Array(bytesLength));\n throw new Error(\"crypto.getRandomValues must be defined\");\n}\n$7a81f263a7d1b628$exports.randomBytes = $7a81f263a7d1b628$var$randomBytes;\n\n\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n// Various per round constants calculations\nconst [$c8edf0fd0cb8f896$var$SHA3_PI, $c8edf0fd0cb8f896$var$SHA3_ROTL, $c8edf0fd0cb8f896$var$_SHA3_IOTA] = [\n [],\n [],\n []\n];\nconst $c8edf0fd0cb8f896$var$_0n = /* @__PURE__ */ BigInt(0);\nconst $c8edf0fd0cb8f896$var$_1n = /* @__PURE__ */ BigInt(1);\nconst $c8edf0fd0cb8f896$var$_2n = /* @__PURE__ */ BigInt(2);\nconst $c8edf0fd0cb8f896$var$_7n = /* @__PURE__ */ BigInt(7);\nconst $c8edf0fd0cb8f896$var$_256n = /* @__PURE__ */ BigInt(256);\nconst $c8edf0fd0cb8f896$var$_0x71n = /* @__PURE__ */ BigInt(0x71);\nfor(let round = 0, R = $c8edf0fd0cb8f896$var$_1n, x = 1, y = 0; round < 24; round++){\n // Pi\n [x, y] = [\n y,\n (2 * x + 3 * y) % 5\n ];\n $c8edf0fd0cb8f896$var$SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n $c8edf0fd0cb8f896$var$SHA3_ROTL.push((round + 1) * (round + 2) / 2 % 64);\n // Iota\n let t = $c8edf0fd0cb8f896$var$_0n;\n for(let j = 0; j < 7; j++){\n R = (R << $c8edf0fd0cb8f896$var$_1n ^ (R >> $c8edf0fd0cb8f896$var$_7n) * $c8edf0fd0cb8f896$var$_0x71n) % $c8edf0fd0cb8f896$var$_256n;\n if (R & $c8edf0fd0cb8f896$var$_2n) t ^= $c8edf0fd0cb8f896$var$_1n << ($c8edf0fd0cb8f896$var$_1n << /* @__PURE__ */ BigInt(j)) - $c8edf0fd0cb8f896$var$_1n;\n }\n $c8edf0fd0cb8f896$var$_SHA3_IOTA.push(t);\n}\nconst [$c8edf0fd0cb8f896$var$SHA3_IOTA_H, $c8edf0fd0cb8f896$var$SHA3_IOTA_L] = /* @__PURE__ */ (0, $15c2007833b0fa11$exports.split)($c8edf0fd0cb8f896$var$_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst $c8edf0fd0cb8f896$var$rotlH = (h, l, s)=>s > 32 ? (0, $15c2007833b0fa11$exports.rotlBH)(h, l, s) : (0, $15c2007833b0fa11$exports.rotlSH)(h, l, s);\nconst $c8edf0fd0cb8f896$var$rotlL = (h, l, s)=>s > 32 ? (0, $15c2007833b0fa11$exports.rotlBL)(h, l, s) : (0, $15c2007833b0fa11$exports.rotlSL)(h, l, s);\n// Same as keccakf1600, but allows to skip some rounds\nfunction $c8edf0fd0cb8f896$var$keccakP(s, rounds = 24) {\n const B = new Uint32Array(10);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for(let round = 24 - rounds; round < 24; round++){\n // Theta θ\n for(let x = 0; x < 10; x++)B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for(let x = 0; x < 10; x += 2){\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = $c8edf0fd0cb8f896$var$rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = $c8edf0fd0cb8f896$var$rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for(let y = 0; y < 50; y += 10){\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for(let t = 0; t < 24; t++){\n const shift = $c8edf0fd0cb8f896$var$SHA3_ROTL[t];\n const Th = $c8edf0fd0cb8f896$var$rotlH(curH, curL, shift);\n const Tl = $c8edf0fd0cb8f896$var$rotlL(curH, curL, shift);\n const PI = $c8edf0fd0cb8f896$var$SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for(let y = 0; y < 50; y += 10){\n for(let x = 0; x < 10; x++)B[x] = s[y + x];\n for(let x = 0; x < 10; x++)s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= $c8edf0fd0cb8f896$var$SHA3_IOTA_H[round];\n s[1] ^= $c8edf0fd0cb8f896$var$SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\n$c8edf0fd0cb8f896$exports.keccakP = $c8edf0fd0cb8f896$var$keccakP;\nclass $c8edf0fd0cb8f896$var$Keccak extends $7a81f263a7d1b628$exports.Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24){\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n (0, $fc6ec5653e91d6e4$exports.number)(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200) throw new Error(\"Sha3 supports only keccak-f1600 function\");\n this.state = new Uint8Array(200);\n this.state32 = (0, $7a81f263a7d1b628$exports.u32)(this.state);\n }\n keccak() {\n $c8edf0fd0cb8f896$var$keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n (0, $fc6ec5653e91d6e4$exports.exists)(this);\n const { blockLen: blockLen, state: state } = this;\n data = (0, $7a81f263a7d1b628$exports.toBytes)(data);\n const len = data.length;\n for(let pos = 0; pos < len;){\n const take = Math.min(blockLen - this.pos, len - pos);\n for(let i = 0; i < take; i++)state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen) this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished) return;\n this.finished = true;\n const { state: state, suffix: suffix, pos: pos, blockLen: blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1) this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n (0, $fc6ec5653e91d6e4$exports.exists)(this, false);\n (0, $fc6ec5653e91d6e4$exports.bytes)(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen: blockLen } = this;\n for(let pos = 0, len = out.length; pos < len;){\n if (this.posOut >= blockLen) this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF) throw new Error(\"XOF is not possible for this instance\");\n return this.writeInto(out);\n }\n xof(bytes) {\n (0, $fc6ec5653e91d6e4$exports.number)(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n (0, $fc6ec5653e91d6e4$exports.output)(out, this);\n if (this.finished) throw new Error(\"digest() was already called\");\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to) {\n const { blockLen: blockLen, suffix: suffix, outputLen: outputLen, rounds: rounds, enableXOF: enableXOF } = this;\n to || (to = new $c8edf0fd0cb8f896$var$Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\n$c8edf0fd0cb8f896$exports.Keccak = $c8edf0fd0cb8f896$var$Keccak;\nconst $c8edf0fd0cb8f896$var$gen = (suffix, blockLen, outputLen)=>(0, $7a81f263a7d1b628$exports.wrapConstructor)(()=>new $c8edf0fd0cb8f896$var$Keccak(blockLen, suffix, outputLen));\n$c8edf0fd0cb8f896$exports.sha3_224 = $c8edf0fd0cb8f896$var$gen(0x06, 144, 28);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */ $c8edf0fd0cb8f896$exports.sha3_256 = $c8edf0fd0cb8f896$var$gen(0x06, 136, 32);\n$c8edf0fd0cb8f896$exports.sha3_384 = $c8edf0fd0cb8f896$var$gen(0x06, 104, 48);\n$c8edf0fd0cb8f896$exports.sha3_512 = $c8edf0fd0cb8f896$var$gen(0x06, 72, 64);\n$c8edf0fd0cb8f896$exports.keccak_224 = $c8edf0fd0cb8f896$var$gen(0x01, 144, 28);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */ $c8edf0fd0cb8f896$exports.keccak_256 = $c8edf0fd0cb8f896$var$gen(0x01, 136, 32);\n$c8edf0fd0cb8f896$exports.keccak_384 = $c8edf0fd0cb8f896$var$gen(0x01, 104, 48);\n$c8edf0fd0cb8f896$exports.keccak_512 = $c8edf0fd0cb8f896$var$gen(0x01, 72, 64);\nconst $c8edf0fd0cb8f896$var$genShake = (suffix, blockLen, outputLen)=>(0, $7a81f263a7d1b628$exports.wrapXOFConstructorWithOpts)((opts = {})=>new $c8edf0fd0cb8f896$var$Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\n$c8edf0fd0cb8f896$exports.shake128 = $c8edf0fd0cb8f896$var$genShake(0x1f, 168, 16);\n$c8edf0fd0cb8f896$exports.shake256 = $c8edf0fd0cb8f896$var$genShake(0x1f, 136, 32);\n\n\n\n\n\nfunction $70d1698339832295$export$f8151fce47ad1c35(value, to_) {\n const to = to_ || \"hex\";\n const bytes = (0, $c8edf0fd0cb8f896$exports.keccak_256)((0, $d440cba9eebbb8de$export$8a9b6341a7c96bc)(value, {\n strict: false\n }) ? (0, $551a23ba4e8afae7$export$30a71edf0753ed6b)(value) : value);\n if (to === \"bytes\") return bytes;\n return (0, $f004194a770c7248$export$7ea66e3774a60b67)(bytes);\n}\n\n\n\n\nconst $74c3746ba4e98114$var$checksumAddressCache = /*#__PURE__*/ new (0, $113b826c68452f61$export$fcb3b6cad79d7e3a)(8192);\nfunction $74c3746ba4e98114$export$9ff46e8f6df13548(address_, /**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */ chainId) {\n if ($74c3746ba4e98114$var$checksumAddressCache.has(`${address_}.${chainId}`)) return $74c3746ba4e98114$var$checksumAddressCache.get(`${address_}.${chainId}`);\n const hexAddress = chainId ? `${chainId}${address_.toLowerCase()}` : address_.substring(2).toLowerCase();\n const hash = (0, $70d1698339832295$export$f8151fce47ad1c35)((0, $551a23ba4e8afae7$export$c8dd6bc66a63753c)(hexAddress), \"bytes\");\n const address = (chainId ? hexAddress.substring(`${chainId}0x`.length) : hexAddress).split(\"\");\n for(let i = 0; i < 40; i += 2){\n if (hash[i >> 1] >> 4 >= 8 && address[i]) address[i] = address[i].toUpperCase();\n if ((hash[i >> 1] & 0x0f) >= 8 && address[i + 1]) address[i + 1] = address[i + 1].toUpperCase();\n }\n const result = `0x${address.join(\"\")}`;\n $74c3746ba4e98114$var$checksumAddressCache.set(`${address_}.${chainId}`, result);\n return result;\n}\nfunction $74c3746ba4e98114$export$88411125f012957a(address, /**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */ chainId) {\n if (!(0, $0220c738ddd72734$export$977e255126d763d6)(address, {\n strict: false\n })) throw new (0, $223c6c44c48560e0$export$66c44d927ffead98)({\n address: address\n });\n return $74c3746ba4e98114$export$9ff46e8f6df13548(address, chainId);\n}\n\n\nconst $0220c738ddd72734$var$addressRegex = /^0x[a-fA-F0-9]{40}$/;\nconst $0220c738ddd72734$export$ef83598cc5072ce = /*#__PURE__*/ new (0, $113b826c68452f61$export$fcb3b6cad79d7e3a)(8192);\nfunction $0220c738ddd72734$export$977e255126d763d6(address, options) {\n const { strict: strict = true } = options ?? {};\n const cacheKey = `${address}.${strict}`;\n if ($0220c738ddd72734$export$ef83598cc5072ce.has(cacheKey)) return $0220c738ddd72734$export$ef83598cc5072ce.get(cacheKey);\n const result = (()=>{\n if (!$0220c738ddd72734$var$addressRegex.test(address)) return false;\n if (address.toLowerCase() === address) return true;\n if (strict) return (0, $74c3746ba4e98114$export$9ff46e8f6df13548)(address) === address;\n return true;\n })();\n $0220c738ddd72734$export$ef83598cc5072ce.set(cacheKey, result);\n return result;\n}\n\n\nfunction $f97a6a403efe1d42$export$ee1b3e54f0441b22(values) {\n if (typeof values[0] === \"string\") return $f97a6a403efe1d42$export$f6cc0b64b5a999af(values);\n return $f97a6a403efe1d42$export$287dd7971339c972(values);\n}\nfunction $f97a6a403efe1d42$export$287dd7971339c972(values) {\n let length = 0;\n for (const arr of values)length += arr.length;\n const result = new Uint8Array(length);\n let offset = 0;\n for (const arr of values){\n result.set(arr, offset);\n offset += arr.length;\n }\n return result;\n}\nfunction $f97a6a403efe1d42$export$f6cc0b64b5a999af(values) {\n return `0x${values.reduce((acc, x)=>acc + x.replace(\"0x\", \"\"), \"\")}`;\n}\n\n\n\n\nconst $ac26bfea216b911d$export$6cd562aaf6380f0e = /^(.*)\\[([0-9]*)\\]$/;\nconst $ac26bfea216b911d$export$94d7303c0d9f263a = /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/;\nconst $ac26bfea216b911d$export$45902cc189596eef = /^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;\n\n\nfunction $c35d3b9dae26c1f3$export$92dace262a9f3722(types, values) {\n if (types.length !== values.length) throw new (0, $5b122542bf87f4b6$export$20737d495bb13c2d)({\n expectedLength: types.length,\n givenLength: values.length\n });\n const data = [];\n for(let i = 0; i < types.length; i++){\n const type = types[i];\n const value = values[i];\n data.push($c35d3b9dae26c1f3$var$encode(type, value));\n }\n return (0, $f97a6a403efe1d42$export$f6cc0b64b5a999af)(data);\n}\nfunction $c35d3b9dae26c1f3$var$encode(type, value, isArray = false) {\n if (type === \"address\") {\n const address = value;\n if (!(0, $0220c738ddd72734$export$977e255126d763d6)(address)) throw new (0, $223c6c44c48560e0$export$66c44d927ffead98)({\n address: address\n });\n return (0, $98fd51879b3ecb59$export$5d04458e2a6c373e)(address.toLowerCase(), {\n size: isArray ? 32 : null\n });\n }\n if (type === \"string\") return (0, $f004194a770c7248$export$551c48dea6f88e6d)(value);\n if (type === \"bytes\") return value;\n if (type === \"bool\") return (0, $98fd51879b3ecb59$export$5d04458e2a6c373e)((0, $f004194a770c7248$export$b5c95dec4f62ef7a)(value), {\n size: isArray ? 32 : 1\n });\n const intMatch = type.match((0, $ac26bfea216b911d$export$45902cc189596eef));\n if (intMatch) {\n const [_type, baseType, bits = \"256\"] = intMatch;\n const size = Number.parseInt(bits) / 8;\n return (0, $f004194a770c7248$export$4e87185b7ecfeec4)(value, {\n size: isArray ? 32 : size,\n signed: baseType === \"int\"\n });\n }\n const bytesMatch = type.match((0, $ac26bfea216b911d$export$94d7303c0d9f263a));\n if (bytesMatch) {\n const [_type, size] = bytesMatch;\n if (Number.parseInt(size) !== (value.length - 2) / 2) throw new (0, $5b122542bf87f4b6$export$a0eb884ede5c87eb)({\n expectedSize: Number.parseInt(size),\n givenSize: (value.length - 2) / 2\n });\n return (0, $98fd51879b3ecb59$export$5d04458e2a6c373e)(value, {\n dir: \"right\",\n size: isArray ? 32 : null\n });\n }\n const arrayMatch = type.match((0, $ac26bfea216b911d$export$6cd562aaf6380f0e));\n if (arrayMatch && Array.isArray(value)) {\n const [_type, childType] = arrayMatch;\n const data = [];\n for(let i = 0; i < value.length; i++)data.push($c35d3b9dae26c1f3$var$encode(childType, value[i], true));\n if (data.length === 0) return \"0x\";\n return (0, $f97a6a403efe1d42$export$f6cc0b64b5a999af)(data);\n }\n throw new (0, $5b122542bf87f4b6$export$a16541e2fe420ef1)(type);\n}\n\n\nclass $b8d51e053fccc1ae$export$a92776769f460054 {\n constructor(hash){\n this.useA = false;\n let sfc32 = function(uint128Hex) {\n let a = parseInt(uint128Hex.substr(0, 8), 16);\n let b = parseInt(uint128Hex.substr(8, 8), 16);\n let c = parseInt(uint128Hex.substr(16, 8), 16);\n let d = parseInt(uint128Hex.substr(24, 8), 16);\n return function() {\n a |= 0;\n b |= 0;\n c |= 0;\n d |= 0;\n let t = (a + b | 0) + d | 0;\n d = d + 1 | 0;\n a = b ^ b >>> 9;\n b = c + (c << 3) | 0;\n c = c << 21 | c >>> 11;\n c = c + t | 0;\n return (t >>> 0) / 4294967296;\n };\n };\n this.prngA = new sfc32(hash.substr(2, 32));\n this.prngB = new sfc32(hash.substr(34, 32));\n for(let i = 0; i < 1e6; i += 2){\n this.prngA();\n this.prngB();\n }\n }\n float() {\n this.useA = !this.useA;\n return this.useA ? this.prngA() : this.prngB();\n }\n int(a = 0, b = 1) {\n return Math.round(a + this.float() * (b - a));\n }\n bell(b = 1, inv) {\n let u = 0, v = 0;\n while(u === 0)u = this.float(); //Converting [0,1) to (0,1)\n while(v === 0)v = this.float();\n let num = Math.sqrt(-2 * Math.log(u)) * Math.cos(2.0 * Math.PI * v);\n num = num / 10.0 + 0.5; // Translate to 0 -> 1\n if (num > 1 || num < 0) return this.bell(inv); // resample between 0 and 1\n if (inv) {\n if (num >= 0 && num < 0.5) num += 0.5;\n else num -= 0.5;\n }\n return Math.round(num * b);\n }\n}\n\n\nvar $a0fa327a4f07121a$exports = {};\n(function() {\n function k(a, b, c) {\n d.biginteger_used = 1;\n null != a && (\"number\" == typeof a && \"undefined\" == typeof b ? this.fromInt(a) : \"number\" == typeof a ? this.fromNumber(a, b, c) : null == b && \"string\" != typeof a ? this.fromString(a, 256) : this.fromString(a, b));\n }\n function q() {\n return new k(null, void 0, void 0);\n }\n function R(a, b, c, e, d, g) {\n for(; 0 <= --g;){\n var f = b * this[a++] + c[e] + d;\n d = Math.floor(f / 67108864);\n c[e++] = f & 67108863;\n }\n return d;\n }\n function S(a, b, c, e, d, g) {\n var f = b & 32767;\n for(b >>= 15; 0 <= --g;){\n var m = this[a] & 32767, k = this[a++] >> 15, n = b * m + k * f;\n m = f * m + ((n & 32767) << 15) + c[e] + (d & 1073741823);\n d = (m >>> 30) + (n >>> 15) + b * k + (d >>> 30);\n c[e++] = m & 1073741823;\n }\n return d;\n }\n function T(a, b, c, e, d, g) {\n var f = b & 16383;\n for(b >>= 14; 0 <= --g;){\n var m = this[a] & 16383, k = this[a++] >> 14, n = b * m + k * f;\n m = f * m + ((n & 16383) << 14) + c[e] + d;\n d = (m >> 28) + (n >> 14) + b * k;\n c[e++] = m & 268435455;\n }\n return d;\n }\n function M(a, b) {\n var c = E[a.charCodeAt(b)];\n return null == c ? -1 : c;\n }\n function y(a) {\n var b = q();\n b.fromInt(a);\n return b;\n }\n function F(a) {\n var b = 1, c;\n 0 != (c = a >>> 16) && (a = c, b += 16);\n 0 != (c = a >> 8) && (a = c, b += 8);\n 0 != (c = a >> 4) && (a = c, b += 4);\n 0 != (c = a >> 2) && (a = c, b += 2);\n 0 != a >> 1 && (b += 1);\n return b;\n }\n function z(a) {\n this.m = a;\n }\n function B(a) {\n this.m = a;\n this.mp = a.invDigit();\n this.mpl = this.mp & 32767;\n this.mph = this.mp >> 15;\n this.um = (1 << a.DB - 15) - 1;\n this.mt2 = 2 * a.t;\n }\n function U(a, b) {\n return a & b;\n }\n function H(a, b) {\n return a | b;\n }\n function N(a, b) {\n return a ^ b;\n }\n function O(a, b) {\n return a & ~b;\n }\n function D() {}\n function P(a) {\n return a;\n }\n function C(a) {\n this.r2 = q();\n this.q3 = q();\n k.ONE.dlShiftTo(2 * a.t, this.r2);\n this.mu = this.r2.divide(a);\n this.m = a;\n }\n var d = {\n version: \"6.4.2.2\",\n use_lines: !0,\n use_xyz: !1\n }, G = !1;\n (0, $a0fa327a4f07121a$exports) ? ($a0fa327a4f07121a$exports = d, G = !0) : \"undefined\" !== typeof document ? window.ClipperLib = d : self.ClipperLib = d;\n if (G) {\n var u = \"chrome\";\n var v = \"Netscape\";\n } else u = navigator.userAgent.toString().toLowerCase(), v = navigator.appName;\n var I = -1 != u.indexOf(\"chrome\") && -1 == u.indexOf(\"chromium\") ? 1 : 0;\n G = -1 != u.indexOf(\"chromium\") ? 1 : 0;\n var Q = -1 != u.indexOf(\"safari\") && -1 == u.indexOf(\"chrome\") && -1 == u.indexOf(\"chromium\") ? 1 : 0;\n var J = -1 != u.indexOf(\"firefox\") ? 1 : 0;\n u.indexOf(\"firefox/17\");\n u.indexOf(\"firefox/15\");\n u.indexOf(\"firefox/3\");\n var K = -1 != u.indexOf(\"opera\") ? 1 : 0;\n u.indexOf(\"msie 10\");\n u.indexOf(\"msie 9\");\n var L = -1 != u.indexOf(\"msie 8\") ? 1 : 0;\n var V = -1 != u.indexOf(\"msie 7\") ? 1 : 0;\n u = -1 != u.indexOf(\"msie \") ? 1 : 0;\n d.biginteger_used = null;\n \"Microsoft Internet Explorer\" == v ? (k.prototype.am = S, v = 30) : \"Netscape\" != v ? (k.prototype.am = R, v = 26) : (k.prototype.am = T, v = 28);\n k.prototype.DB = v;\n k.prototype.DM = (1 << v) - 1;\n k.prototype.DV = 1 << v;\n k.prototype.FV = Math.pow(2, 52);\n k.prototype.F1 = 52 - v;\n k.prototype.F2 = 2 * v - 52;\n var E = [], x;\n v = 48;\n for(x = 0; 9 >= x; ++x)E[v++] = x;\n v = 97;\n for(x = 10; 36 > x; ++x)E[v++] = x;\n v = 65;\n for(x = 10; 36 > x; ++x)E[v++] = x;\n z.prototype.convert = function(a) {\n return 0 > a.s || 0 <= a.compareTo(this.m) ? a.mod(this.m) : a;\n };\n z.prototype.revert = function(a) {\n return a;\n };\n z.prototype.reduce = function(a) {\n a.divRemTo(this.m, null, a);\n };\n z.prototype.mulTo = function(a, b, c) {\n a.multiplyTo(b, c);\n this.reduce(c);\n };\n z.prototype.sqrTo = function(a, b) {\n a.squareTo(b);\n this.reduce(b);\n };\n B.prototype.convert = function(a) {\n var b = q();\n a.abs().dlShiftTo(this.m.t, b);\n b.divRemTo(this.m, null, b);\n 0 > a.s && 0 < b.compareTo(k.ZERO) && this.m.subTo(b, b);\n return b;\n };\n B.prototype.revert = function(a) {\n var b = q();\n a.copyTo(b);\n this.reduce(b);\n return b;\n };\n B.prototype.reduce = function(a) {\n for(; a.t <= this.mt2;)a[a.t++] = 0;\n for(var b = 0; b < this.m.t; ++b){\n var c = a[b] & 32767, e = c * this.mpl + ((c * this.mph + (a[b] >> 15) * this.mpl & this.um) << 15) & a.DM;\n c = b + this.m.t;\n for(a[c] += this.m.am(0, e, a, b, 0, this.m.t); a[c] >= a.DV;)a[c] -= a.DV, a[++c]++;\n }\n a.clamp();\n a.drShiftTo(this.m.t, a);\n 0 <= a.compareTo(this.m) && a.subTo(this.m, a);\n };\n B.prototype.mulTo = function(a, b, c) {\n a.multiplyTo(b, c);\n this.reduce(c);\n };\n B.prototype.sqrTo = function(a, b) {\n a.squareTo(b);\n this.reduce(b);\n };\n k.prototype.copyTo = function(a) {\n for(var b = this.t - 1; 0 <= b; --b)a[b] = this[b];\n a.t = this.t;\n a.s = this.s;\n };\n k.prototype.fromInt = function(a) {\n this.t = 1;\n this.s = 0 > a ? -1 : 0;\n 0 < a ? this[0] = a : -1 > a ? this[0] = a + this.DV : this.t = 0;\n };\n k.prototype.fromString = function(a, b) {\n if (16 == b) var c = 4;\n else if (8 == b) c = 3;\n else if (256 == b) c = 8;\n else if (2 == b) c = 1;\n else if (32 == b) c = 5;\n else if (4 == b) c = 2;\n else {\n this.fromRadix(a, b);\n return;\n }\n this.s = this.t = 0;\n for(var e = a.length, d = !1, g = 0; 0 <= --e;){\n var h = 8 == c ? a[e] & 255 : M(a, e);\n 0 > h ? \"-\" == a.charAt(e) && (d = !0) : (d = !1, 0 == g ? this[this.t++] = h : g + c > this.DB ? (this[this.t - 1] |= (h & (1 << this.DB - g) - 1) << g, this[this.t++] = h >> this.DB - g) : this[this.t - 1] |= h << g, g += c, g >= this.DB && (g -= this.DB));\n }\n 8 == c && 0 != (a[0] & 128) && (this.s = -1, 0 < g && (this[this.t - 1] |= (1 << this.DB - g) - 1 << g));\n this.clamp();\n d && k.ZERO.subTo(this, this);\n };\n k.prototype.clamp = function() {\n for(var a = this.s & this.DM; 0 < this.t && this[this.t - 1] == a;)--this.t;\n };\n k.prototype.dlShiftTo = function(a, b) {\n var c;\n for(c = this.t - 1; 0 <= c; --c)b[c + a] = this[c];\n for(c = a - 1; 0 <= c; --c)b[c] = 0;\n b.t = this.t + a;\n b.s = this.s;\n };\n k.prototype.drShiftTo = function(a, b) {\n for(var c = a; c < this.t; ++c)b[c - a] = this[c];\n b.t = Math.max(this.t - a, 0);\n b.s = this.s;\n };\n k.prototype.lShiftTo = function(a, b) {\n var c = a % this.DB, e = this.DB - c, d = (1 << e) - 1, g = Math.floor(a / this.DB), h = this.s << c & this.DM, m;\n for(m = this.t - 1; 0 <= m; --m)b[m + g + 1] = this[m] >> e | h, h = (this[m] & d) << c;\n for(m = g - 1; 0 <= m; --m)b[m] = 0;\n b[g] = h;\n b.t = this.t + g + 1;\n b.s = this.s;\n b.clamp();\n };\n k.prototype.rShiftTo = function(a, b) {\n b.s = this.s;\n var c = Math.floor(a / this.DB);\n if (c >= this.t) b.t = 0;\n else {\n var e = a % this.DB, d = this.DB - e, g = (1 << e) - 1;\n b[0] = this[c] >> e;\n for(var h = c + 1; h < this.t; ++h)b[h - c - 1] |= (this[h] & g) << d, b[h - c] = this[h] >> e;\n 0 < e && (b[this.t - c - 1] |= (this.s & g) << d);\n b.t = this.t - c;\n b.clamp();\n }\n };\n k.prototype.subTo = function(a, b) {\n for(var c = 0, e = 0, d = Math.min(a.t, this.t); c < d;)e += this[c] - a[c], b[c++] = e & this.DM, e >>= this.DB;\n if (a.t < this.t) {\n for(e -= a.s; c < this.t;)e += this[c], b[c++] = e & this.DM, e >>= this.DB;\n e += this.s;\n } else {\n for(e += this.s; c < a.t;)e -= a[c], b[c++] = e & this.DM, e >>= this.DB;\n e -= a.s;\n }\n b.s = 0 > e ? -1 : 0;\n -1 > e ? b[c++] = this.DV + e : 0 < e && (b[c++] = e);\n b.t = c;\n b.clamp();\n };\n k.prototype.multiplyTo = function(a, b) {\n var c = this.abs(), e = a.abs(), d = c.t;\n for(b.t = d + e.t; 0 <= --d;)b[d] = 0;\n for(d = 0; d < e.t; ++d)b[d + c.t] = c.am(0, e[d], b, d, 0, c.t);\n b.s = 0;\n b.clamp();\n this.s != a.s && k.ZERO.subTo(b, b);\n };\n k.prototype.squareTo = function(a) {\n for(var b = this.abs(), c = a.t = 2 * b.t; 0 <= --c;)a[c] = 0;\n for(c = 0; c < b.t - 1; ++c){\n var e = b.am(c, b[c], a, 2 * c, 0, 1);\n (a[c + b.t] += b.am(c + 1, 2 * b[c], a, 2 * c + 1, e, b.t - c - 1)) >= b.DV && (a[c + b.t] -= b.DV, a[c + b.t + 1] = 1);\n }\n 0 < a.t && (a[a.t - 1] += b.am(c, b[c], a, 2 * c, 0, 1));\n a.s = 0;\n a.clamp();\n };\n k.prototype.divRemTo = function(a, b, c) {\n var e = a.abs();\n if (!(0 >= e.t)) {\n var d = this.abs();\n if (d.t < e.t) null != b && b.fromInt(0), null != c && this.copyTo(c);\n else {\n null == c && (c = q());\n var g = q(), h = this.s;\n a = a.s;\n var m = this.DB - F(e[e.t - 1]);\n 0 < m ? (e.lShiftTo(m, g), d.lShiftTo(m, c)) : (e.copyTo(g), d.copyTo(c));\n e = g.t;\n d = g[e - 1];\n if (0 != d) {\n var l = d * (1 << this.F1) + (1 < e ? g[e - 2] >> this.F2 : 0), n = this.FV / l;\n l = (1 << this.F1) / l;\n var r = 1 << this.F2, p = c.t, t = p - e, u = null == b ? q() : b;\n g.dlShiftTo(t, u);\n 0 <= c.compareTo(u) && (c[c.t++] = 1, c.subTo(u, c));\n k.ONE.dlShiftTo(e, u);\n for(u.subTo(g, g); g.t < e;)g[g.t++] = 0;\n for(; 0 <= --t;){\n var v = c[--p] == d ? this.DM : Math.floor(c[p] * n + (c[p - 1] + r) * l);\n if ((c[p] += g.am(0, v, c, t, 0, e)) < v) for(g.dlShiftTo(t, u), c.subTo(u, c); c[p] < --v;)c.subTo(u, c);\n }\n null != b && (c.drShiftTo(e, b), h != a && k.ZERO.subTo(b, b));\n c.t = e;\n c.clamp();\n 0 < m && c.rShiftTo(m, c);\n 0 > h && k.ZERO.subTo(c, c);\n }\n }\n }\n };\n k.prototype.invDigit = function() {\n if (1 > this.t) return 0;\n var a = this[0];\n if (0 == (a & 1)) return 0;\n var b = a & 3;\n b = b * (2 - (a & 15) * b) & 15;\n b = b * (2 - (a & 255) * b) & 255;\n b = b * (2 - ((a & 65535) * b & 65535)) & 65535;\n b = b * (2 - a * b % this.DV) % this.DV;\n return 0 < b ? this.DV - b : -b;\n };\n k.prototype.isEven = function() {\n return 0 == (0 < this.t ? this[0] & 1 : this.s);\n };\n k.prototype.exp = function(a, b) {\n if (4294967295 < a || 1 > a) return k.ONE;\n var c = q(), e = q(), d = b.convert(this), g = F(a) - 1;\n for(d.copyTo(c); 0 <= --g;)if (b.sqrTo(c, e), 0 < (a & 1 << g)) b.mulTo(e, d, c);\n else {\n var h = c;\n c = e;\n e = h;\n }\n return b.revert(c);\n };\n k.prototype.toString = function(a) {\n if (0 > this.s) return \"-\" + this.negate().toString(a);\n if (16 == a) a = 4;\n else if (8 == a) a = 3;\n else if (2 == a) a = 1;\n else if (32 == a) a = 5;\n else if (4 == a) a = 2;\n else return this.toRadix(a);\n var b = (1 << a) - 1, c, e = !1, d = \"\", g = this.t, h = this.DB - g * this.DB % a;\n if (0 < g--) for(h < this.DB && 0 < (c = this[g] >> h) && (e = !0, d = \"0123456789abcdefghijklmnopqrstuvwxyz\".charAt(c)); 0 <= g;)h < a ? (c = (this[g] & (1 << h) - 1) << a - h, c |= this[--g] >> (h += this.DB - a)) : (c = this[g] >> (h -= a) & b, 0 >= h && (h += this.DB, --g)), 0 < c && (e = !0), e && (d += \"0123456789abcdefghijklmnopqrstuvwxyz\".charAt(c));\n return e ? d : \"0\";\n };\n k.prototype.negate = function() {\n var a = q();\n k.ZERO.subTo(this, a);\n return a;\n };\n k.prototype.abs = function() {\n return 0 > this.s ? this.negate() : this;\n };\n k.prototype.compareTo = function(a) {\n var b = this.s - a.s;\n if (0 != b) return b;\n var c = this.t;\n b = c - a.t;\n if (0 != b) return 0 > this.s ? -b : b;\n for(; 0 <= --c;)if (0 != (b = this[c] - a[c])) return b;\n return 0;\n };\n k.prototype.bitLength = function() {\n return 0 >= this.t ? 0 : this.DB * (this.t - 1) + F(this[this.t - 1] ^ this.s & this.DM);\n };\n k.prototype.mod = function(a) {\n var b = q();\n this.abs().divRemTo(a, null, b);\n 0 > this.s && 0 < b.compareTo(k.ZERO) && a.subTo(b, b);\n return b;\n };\n k.prototype.modPowInt = function(a, b) {\n var c = 256 > a || b.isEven() ? new z(b) : new B(b);\n return this.exp(a, c);\n };\n k.ZERO = y(0);\n k.ONE = y(1);\n D.prototype.convert = P;\n D.prototype.revert = P;\n D.prototype.mulTo = function(a, b, c) {\n a.multiplyTo(b, c);\n };\n D.prototype.sqrTo = function(a, b) {\n a.squareTo(b);\n };\n C.prototype.convert = function(a) {\n if (0 > a.s || a.t > 2 * this.m.t) return a.mod(this.m);\n if (0 > a.compareTo(this.m)) return a;\n var b = q();\n a.copyTo(b);\n this.reduce(b);\n return b;\n };\n C.prototype.revert = function(a) {\n return a;\n };\n C.prototype.reduce = function(a) {\n a.drShiftTo(this.m.t - 1, this.r2);\n a.t > this.m.t + 1 && (a.t = this.m.t + 1, a.clamp());\n this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3);\n for(this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2); 0 > a.compareTo(this.r2);)a.dAddOffset(1, this.m.t + 1);\n for(a.subTo(this.r2, a); 0 <= a.compareTo(this.m);)a.subTo(this.m, a);\n };\n C.prototype.mulTo = function(a, b, c) {\n a.multiplyTo(b, c);\n this.reduce(c);\n };\n C.prototype.sqrTo = function(a, b) {\n a.squareTo(b);\n this.reduce(b);\n };\n var w = [\n 2,\n 3,\n 5,\n 7,\n 11,\n 13,\n 17,\n 19,\n 23,\n 29,\n 31,\n 37,\n 41,\n 43,\n 47,\n 53,\n 59,\n 61,\n 67,\n 71,\n 73,\n 79,\n 83,\n 89,\n 97,\n 101,\n 103,\n 107,\n 109,\n 113,\n 127,\n 131,\n 137,\n 139,\n 149,\n 151,\n 157,\n 163,\n 167,\n 173,\n 179,\n 181,\n 191,\n 193,\n 197,\n 199,\n 211,\n 223,\n 227,\n 229,\n 233,\n 239,\n 241,\n 251,\n 257,\n 263,\n 269,\n 271,\n 277,\n 281,\n 283,\n 293,\n 307,\n 311,\n 313,\n 317,\n 331,\n 337,\n 347,\n 349,\n 353,\n 359,\n 367,\n 373,\n 379,\n 383,\n 389,\n 397,\n 401,\n 409,\n 419,\n 421,\n 431,\n 433,\n 439,\n 443,\n 449,\n 457,\n 461,\n 463,\n 467,\n 479,\n 487,\n 491,\n 499,\n 503,\n 509,\n 521,\n 523,\n 541,\n 547,\n 557,\n 563,\n 569,\n 571,\n 577,\n 587,\n 593,\n 599,\n 601,\n 607,\n 613,\n 617,\n 619,\n 631,\n 641,\n 643,\n 647,\n 653,\n 659,\n 661,\n 673,\n 677,\n 683,\n 691,\n 701,\n 709,\n 719,\n 727,\n 733,\n 739,\n 743,\n 751,\n 757,\n 761,\n 769,\n 773,\n 787,\n 797,\n 809,\n 811,\n 821,\n 823,\n 827,\n 829,\n 839,\n 853,\n 857,\n 859,\n 863,\n 877,\n 881,\n 883,\n 887,\n 907,\n 911,\n 919,\n 929,\n 937,\n 941,\n 947,\n 953,\n 967,\n 971,\n 977,\n 983,\n 991,\n 997\n ], W = 67108864 / w[w.length - 1];\n k.prototype.chunkSize = function(a) {\n return Math.floor(Math.LN2 * this.DB / Math.log(a));\n };\n k.prototype.toRadix = function(a) {\n null == a && (a = 10);\n if (0 == this.signum() || 2 > a || 36 < a) return \"0\";\n var b = this.chunkSize(a);\n b = Math.pow(a, b);\n var c = y(b), e = q(), d = q(), g = \"\";\n for(this.divRemTo(c, e, d); 0 < e.signum();)g = (b + d.intValue()).toString(a).substr(1) + g, e.divRemTo(c, e, d);\n return d.intValue().toString(a) + g;\n };\n k.prototype.fromRadix = function(a, b) {\n this.fromInt(0);\n null == b && (b = 10);\n for(var c = this.chunkSize(b), e = Math.pow(b, c), d = !1, g = 0, h = 0, m = 0; m < a.length; ++m){\n var l = M(a, m);\n 0 > l ? \"-\" == a.charAt(m) && 0 == this.signum() && (d = !0) : (h = b * h + l, ++g >= c && (this.dMultiply(e), this.dAddOffset(h, 0), h = g = 0));\n }\n 0 < g && (this.dMultiply(Math.pow(b, g)), this.dAddOffset(h, 0));\n d && k.ZERO.subTo(this, this);\n };\n k.prototype.fromNumber = function(a, b, c) {\n if (\"number\" == typeof b) {\n if (2 > a) this.fromInt(1);\n else for(this.fromNumber(a, c), this.testBit(a - 1) || this.bitwiseTo(k.ONE.shiftLeft(a - 1), H, this), this.isEven() && this.dAddOffset(1, 0); !this.isProbablePrime(b);)this.dAddOffset(2, 0), this.bitLength() > a && this.subTo(k.ONE.shiftLeft(a - 1), this);\n } else {\n c = [];\n var e = a & 7;\n c.length = (a >> 3) + 1;\n b.nextBytes(c);\n c[0] = 0 < e ? c[0] & (1 << e) - 1 : 0;\n this.fromString(c, 256);\n }\n };\n k.prototype.bitwiseTo = function(a, b, c) {\n var e, d = Math.min(a.t, this.t);\n for(e = 0; e < d; ++e)c[e] = b(this[e], a[e]);\n if (a.t < this.t) {\n var g = a.s & this.DM;\n for(e = d; e < this.t; ++e)c[e] = b(this[e], g);\n c.t = this.t;\n } else {\n g = this.s & this.DM;\n for(e = d; e < a.t; ++e)c[e] = b(g, a[e]);\n c.t = a.t;\n }\n c.s = b(this.s, a.s);\n c.clamp();\n };\n k.prototype.changeBit = function(a, b) {\n var c = k.ONE.shiftLeft(a);\n this.bitwiseTo(c, b, c);\n return c;\n };\n k.prototype.addTo = function(a, b) {\n for(var c = 0, e = 0, d = Math.min(a.t, this.t); c < d;)e += this[c] + a[c], b[c++] = e & this.DM, e >>= this.DB;\n if (a.t < this.t) {\n for(e += a.s; c < this.t;)e += this[c], b[c++] = e & this.DM, e >>= this.DB;\n e += this.s;\n } else {\n for(e += this.s; c < a.t;)e += a[c], b[c++] = e & this.DM, e >>= this.DB;\n e += a.s;\n }\n b.s = 0 > e ? -1 : 0;\n 0 < e ? b[c++] = e : -1 > e && (b[c++] = this.DV + e);\n b.t = c;\n b.clamp();\n };\n k.prototype.dMultiply = function(a) {\n this[this.t] = this.am(0, a - 1, this, 0, 0, this.t);\n ++this.t;\n this.clamp();\n };\n k.prototype.dAddOffset = function(a, b) {\n if (0 != a) {\n for(; this.t <= b;)this[this.t++] = 0;\n for(this[b] += a; this[b] >= this.DV;)this[b] -= this.DV, ++b >= this.t && (this[this.t++] = 0), ++this[b];\n }\n };\n k.prototype.multiplyLowerTo = function(a, b, c) {\n var e = Math.min(this.t + a.t, b);\n c.s = 0;\n for(c.t = e; 0 < e;)c[--e] = 0;\n var d;\n for(d = c.t - this.t; e < d; ++e)c[e + this.t] = this.am(0, a[e], c, e, 0, this.t);\n for(d = Math.min(a.t, b); e < d; ++e)this.am(0, a[e], c, e, 0, b - e);\n c.clamp();\n };\n k.prototype.multiplyUpperTo = function(a, b, c) {\n --b;\n var e = c.t = this.t + a.t - b;\n for(c.s = 0; 0 <= --e;)c[e] = 0;\n for(e = Math.max(b - this.t, 0); e < a.t; ++e)c[this.t + e - b] = this.am(b - e, a[e], c, 0, 0, this.t + e - b);\n c.clamp();\n c.drShiftTo(1, c);\n };\n k.prototype.modInt = function(a) {\n if (0 >= a) return 0;\n var b = this.DV % a, c = 0 > this.s ? a - 1 : 0;\n if (0 < this.t) {\n if (0 == b) c = this[0] % a;\n else for(var e = this.t - 1; 0 <= e; --e)c = (b * c + this[e]) % a;\n }\n return c;\n };\n k.prototype.millerRabin = function(a) {\n var b = this.subtract(k.ONE), c = b.getLowestSetBit();\n if (0 >= c) return !1;\n var e = b.shiftRight(c);\n a = a + 1 >> 1;\n a > w.length && (a = w.length);\n for(var d = q(), g = 0; g < a; ++g){\n d.fromInt(w[Math.floor(Math.random() * w.length)]);\n var h = d.modPow(e, this);\n if (0 != h.compareTo(k.ONE) && 0 != h.compareTo(b)) {\n for(var m = 1; m++ < c && 0 != h.compareTo(b);)if (h = h.modPowInt(2, this), 0 == h.compareTo(k.ONE)) return !1;\n if (0 != h.compareTo(b)) return !1;\n }\n }\n return !0;\n };\n k.prototype.clone = function() {\n var a = q();\n this.copyTo(a);\n return a;\n };\n k.prototype.intValue = function() {\n if (0 > this.s) {\n if (1 == this.t) return this[0] - this.DV;\n if (0 == this.t) return -1;\n } else {\n if (1 == this.t) return this[0];\n if (0 == this.t) return 0;\n }\n return (this[1] & (1 << 32 - this.DB) - 1) << this.DB | this[0];\n };\n k.prototype.byteValue = function() {\n return 0 == this.t ? this.s : this[0] << 24 >> 24;\n };\n k.prototype.shortValue = function() {\n return 0 == this.t ? this.s : this[0] << 16 >> 16;\n };\n k.prototype.signum = function() {\n return 0 > this.s ? -1 : 0 >= this.t || 1 == this.t && 0 >= this[0] ? 0 : 1;\n };\n k.prototype.toByteArray = function() {\n var a = this.t, b = [];\n b[0] = this.s;\n var c = this.DB - a * this.DB % 8, e, d = 0;\n if (0 < a--) {\n for(c < this.DB && (e = this[a] >> c) != (this.s & this.DM) >> c && (b[d++] = e | this.s << this.DB - c); 0 <= a;)if (8 > c ? (e = (this[a] & (1 << c) - 1) << 8 - c, e |= this[--a] >> (c += this.DB - 8)) : (e = this[a] >> (c -= 8) & 255, 0 >= c && (c += this.DB, --a)), 0 != (e & 128) && (e |= -256), 0 == d && (this.s & 128) != (e & 128) && ++d, 0 < d || e != this.s) b[d++] = e;\n }\n return b;\n };\n k.prototype.equals = function(a) {\n return 0 == this.compareTo(a);\n };\n k.prototype.min = function(a) {\n return 0 > this.compareTo(a) ? this : a;\n };\n k.prototype.max = function(a) {\n return 0 < this.compareTo(a) ? this : a;\n };\n k.prototype.and = function(a) {\n var b = q();\n this.bitwiseTo(a, U, b);\n return b;\n };\n k.prototype.or = function(a) {\n var b = q();\n this.bitwiseTo(a, H, b);\n return b;\n };\n k.prototype.xor = function(a) {\n var b = q();\n this.bitwiseTo(a, N, b);\n return b;\n };\n k.prototype.andNot = function(a) {\n var b = q();\n this.bitwiseTo(a, O, b);\n return b;\n };\n k.prototype.not = function() {\n for(var a = q(), b = 0; b < this.t; ++b)a[b] = this.DM & ~this[b];\n a.t = this.t;\n a.s = ~this.s;\n return a;\n };\n k.prototype.shiftLeft = function(a) {\n var b = q();\n 0 > a ? this.rShiftTo(-a, b) : this.lShiftTo(a, b);\n return b;\n };\n k.prototype.shiftRight = function(a) {\n var b = q();\n 0 > a ? this.lShiftTo(-a, b) : this.rShiftTo(a, b);\n return b;\n };\n k.prototype.getLowestSetBit = function() {\n for(var a = 0; a < this.t; ++a)if (0 != this[a]) {\n var b = a * this.DB;\n a = this[a];\n if (0 == a) a = -1;\n else {\n var c = 0;\n 0 == (a & 65535) && (a >>= 16, c += 16);\n 0 == (a & 255) && (a >>= 8, c += 8);\n 0 == (a & 15) && (a >>= 4, c += 4);\n 0 == (a & 3) && (a >>= 2, c += 2);\n 0 == (a & 1) && ++c;\n a = c;\n }\n return b + a;\n }\n return 0 > this.s ? this.t * this.DB : -1;\n };\n k.prototype.bitCount = function() {\n for(var a = 0, b = this.s & this.DM, c = 0; c < this.t; ++c){\n for(var e = this[c] ^ b, d = 0; 0 != e;)e &= e - 1, ++d;\n a += d;\n }\n return a;\n };\n k.prototype.testBit = function(a) {\n var b = Math.floor(a / this.DB);\n return b >= this.t ? 0 != this.s : 0 != (this[b] & 1 << a % this.DB);\n };\n k.prototype.setBit = function(a) {\n return this.changeBit(a, H);\n };\n k.prototype.clearBit = function(a) {\n return this.changeBit(a, O);\n };\n k.prototype.flipBit = function(a) {\n return this.changeBit(a, N);\n };\n k.prototype.add = function(a) {\n var b = q();\n this.addTo(a, b);\n return b;\n };\n k.prototype.subtract = function(a) {\n var b = q();\n this.subTo(a, b);\n return b;\n };\n k.prototype.multiply = function(a) {\n var b = q();\n this.multiplyTo(a, b);\n return b;\n };\n k.prototype.divide = function(a) {\n var b = q();\n this.divRemTo(a, b, null);\n return b;\n };\n k.prototype.remainder = function(a) {\n var b = q();\n this.divRemTo(a, null, b);\n return b;\n };\n k.prototype.divideAndRemainder = function(a) {\n var b = q(), c = q();\n this.divRemTo(a, b, c);\n return [\n b,\n c\n ];\n };\n k.prototype.modPow = function(a, b) {\n var c = a.bitLength(), e = y(1);\n if (0 >= c) return e;\n var d = 18 > c ? 1 : 48 > c ? 3 : 144 > c ? 4 : 768 > c ? 5 : 6;\n var g = 8 > c ? new z(b) : b.isEven() ? new C(b) : new B(b);\n var h = [], m = 3, k = d - 1, n = (1 << d) - 1;\n h[1] = g.convert(this);\n if (1 < d) for(c = q(), g.sqrTo(h[1], c); m <= n;)h[m] = q(), g.mulTo(c, h[m - 2], h[m]), m += 2;\n var r = a.t - 1, p = !0, t = q();\n for(c = F(a[r]) - 1; 0 <= r;){\n if (c >= k) var u = a[r] >> c - k & n;\n else u = (a[r] & (1 << c + 1) - 1) << k - c, 0 < r && (u |= a[r - 1] >> this.DB + c - k);\n for(m = d; 0 == (u & 1);)u >>= 1, --m;\n 0 > (c -= m) && (c += this.DB, --r);\n if (p) h[u].copyTo(e), p = !1;\n else {\n for(; 1 < m;)g.sqrTo(e, t), g.sqrTo(t, e), m -= 2;\n 0 < m ? g.sqrTo(e, t) : (m = e, e = t, t = m);\n g.mulTo(t, h[u], e);\n }\n for(; 0 <= r && 0 == (a[r] & 1 << c);)g.sqrTo(e, t), m = e, e = t, t = m, 0 > --c && (c = this.DB - 1, --r);\n }\n return g.revert(e);\n };\n k.prototype.modInverse = function(a) {\n var b = a.isEven();\n if (this.isEven() && b || 0 == a.signum()) return k.ZERO;\n for(var c = a.clone(), e = this.clone(), d = y(1), g = y(0), h = y(0), m = y(1); 0 != c.signum();){\n for(; c.isEven();)c.rShiftTo(1, c), b ? (d.isEven() && g.isEven() || (d.addTo(this, d), g.subTo(a, g)), d.rShiftTo(1, d)) : g.isEven() || g.subTo(a, g), g.rShiftTo(1, g);\n for(; e.isEven();)e.rShiftTo(1, e), b ? (h.isEven() && m.isEven() || (h.addTo(this, h), m.subTo(a, m)), h.rShiftTo(1, h)) : m.isEven() || m.subTo(a, m), m.rShiftTo(1, m);\n 0 <= c.compareTo(e) ? (c.subTo(e, c), b && d.subTo(h, d), g.subTo(m, g)) : (e.subTo(c, e), b && h.subTo(d, h), m.subTo(g, m));\n }\n if (0 != e.compareTo(k.ONE)) return k.ZERO;\n if (0 <= m.compareTo(a)) return m.subtract(a);\n if (0 > m.signum()) m.addTo(a, m);\n else return m;\n return 0 > m.signum() ? m.add(a) : m;\n };\n k.prototype.pow = function(a) {\n return this.exp(a, new D());\n };\n k.prototype.gcd = function(a) {\n var b = 0 > this.s ? this.negate() : this.clone();\n a = 0 > a.s ? a.negate() : a.clone();\n if (0 > b.compareTo(a)) {\n var c = b;\n b = a;\n a = c;\n }\n c = b.getLowestSetBit();\n var e = a.getLowestSetBit();\n if (0 > e) return b;\n c < e && (e = c);\n 0 < e && (b.rShiftTo(e, b), a.rShiftTo(e, a));\n for(; 0 < b.signum();)0 < (c = b.getLowestSetBit()) && b.rShiftTo(c, b), 0 < (c = a.getLowestSetBit()) && a.rShiftTo(c, a), 0 <= b.compareTo(a) ? (b.subTo(a, b), b.rShiftTo(1, b)) : (a.subTo(b, a), a.rShiftTo(1, a));\n 0 < e && a.lShiftTo(e, a);\n return a;\n };\n k.prototype.isProbablePrime = function(a) {\n var b, c = this.abs();\n if (1 == c.t && c[0] <= w[w.length - 1]) {\n for(b = 0; b < w.length; ++b)if (c[0] == w[b]) return !0;\n return !1;\n }\n if (c.isEven()) return !1;\n for(b = 1; b < w.length;){\n for(var e = w[b], d = b + 1; d < w.length && e < W;)e *= w[d++];\n for(e = c.modInt(e); b < d;)if (0 == e % w[b++]) return !1;\n }\n return c.millerRabin(a);\n };\n k.prototype.square = function() {\n var a = q();\n this.squareTo(a);\n return a;\n };\n k.prototype.IsNegative = function() {\n return -1 == this.compareTo(k.ZERO) ? !0 : !1;\n };\n k.op_Equality = function(a, b) {\n return 0 == a.compareTo(b) ? !0 : !1;\n };\n k.op_Inequality = function(a, b) {\n return 0 != a.compareTo(b) ? !0 : !1;\n };\n k.op_GreaterThan = function(a, b) {\n return 0 < a.compareTo(b) ? !0 : !1;\n };\n k.op_LessThan = function(a, b) {\n return 0 > a.compareTo(b) ? !0 : !1;\n };\n k.op_Addition = function(a, b) {\n return new k(a, void 0, void 0).add(new k(b, void 0, void 0));\n };\n k.op_Subtraction = function(a, b) {\n return new k(a, void 0, void 0).subtract(new k(b, void 0, void 0));\n };\n k.Int128Mul = function(a, b) {\n return new k(a, void 0, void 0).multiply(new k(b, void 0, void 0));\n };\n k.op_Division = function(a, b) {\n return a.divide(b);\n };\n k.prototype.ToDouble = function() {\n return parseFloat(this.toString());\n };\n v = function(a, b) {\n var c;\n if (\"undefined\" === typeof Object.getOwnPropertyNames) {\n for(c in b.prototype)if (\"undefined\" === typeof a.prototype[c] || a.prototype[c] === Object.prototype[c]) a.prototype[c] = b.prototype[c];\n } else for(var e = Object.getOwnPropertyNames(b.prototype), d = 0; d < e.length; d++)\"undefined\" === typeof Object.getOwnPropertyDescriptor(a.prototype, e[d]) && Object.defineProperty(a.prototype, e[d], Object.getOwnPropertyDescriptor(b.prototype, e[d]));\n for(c in b)\"undefined\" === typeof a[c] && (a[c] = b[c]);\n a.$baseCtor = b;\n };\n d.Path = function() {\n return [];\n };\n d.Path.prototype.push = Array.prototype.push;\n d.Paths = function() {\n return [];\n };\n d.Paths.prototype.push = Array.prototype.push;\n d.DoublePoint = function() {\n var a = arguments;\n this.Y = this.X = 0;\n 1 === a.length ? (this.X = a[0].X, this.Y = a[0].Y) : 2 === a.length && (this.X = a[0], this.Y = a[1]);\n };\n d.DoublePoint0 = function() {\n this.Y = this.X = 0;\n };\n d.DoublePoint0.prototype = d.DoublePoint.prototype;\n d.DoublePoint1 = function(a) {\n this.X = a.X;\n this.Y = a.Y;\n };\n d.DoublePoint1.prototype = d.DoublePoint.prototype;\n d.DoublePoint2 = function(a, b) {\n this.X = a;\n this.Y = b;\n };\n d.DoublePoint2.prototype = d.DoublePoint.prototype;\n d.PolyNode = function() {\n this.m_Parent = null;\n this.m_polygon = new d.Path();\n this.m_endtype = this.m_jointype = this.m_Index = 0;\n this.m_Childs = [];\n this.IsOpen = !1;\n };\n d.PolyNode.prototype.IsHoleNode = function() {\n for(var a = !0, b = this.m_Parent; null !== b;)a = !a, b = b.m_Parent;\n return a;\n };\n d.PolyNode.prototype.ChildCount = function() {\n return this.m_Childs.length;\n };\n d.PolyNode.prototype.Contour = function() {\n return this.m_polygon;\n };\n d.PolyNode.prototype.AddChild = function(a) {\n var b = this.m_Childs.length;\n this.m_Childs.push(a);\n a.m_Parent = this;\n a.m_Index = b;\n };\n d.PolyNode.prototype.GetNext = function() {\n return 0 < this.m_Childs.length ? this.m_Childs[0] : this.GetNextSiblingUp();\n };\n d.PolyNode.prototype.GetNextSiblingUp = function() {\n return null === this.m_Parent ? null : this.m_Index === this.m_Parent.m_Childs.length - 1 ? this.m_Parent.GetNextSiblingUp() : this.m_Parent.m_Childs[this.m_Index + 1];\n };\n d.PolyNode.prototype.Childs = function() {\n return this.m_Childs;\n };\n d.PolyNode.prototype.Parent = function() {\n return this.m_Parent;\n };\n d.PolyNode.prototype.IsHole = function() {\n return this.IsHoleNode();\n };\n d.PolyTree = function() {\n this.m_AllPolys = [];\n d.PolyNode.call(this);\n };\n d.PolyTree.prototype.Clear = function() {\n for(var a = 0, b = this.m_AllPolys.length; a < b; a++)this.m_AllPolys[a] = null;\n this.m_AllPolys.length = 0;\n this.m_Childs.length = 0;\n };\n d.PolyTree.prototype.GetFirst = function() {\n return 0 < this.m_Childs.length ? this.m_Childs[0] : null;\n };\n d.PolyTree.prototype.Total = function() {\n var a = this.m_AllPolys.length;\n 0 < a && this.m_Childs[0] !== this.m_AllPolys[0] && a--;\n return a;\n };\n v(d.PolyTree, d.PolyNode);\n d.Math_Abs_Int64 = d.Math_Abs_Int32 = d.Math_Abs_Double = function(a) {\n return Math.abs(a);\n };\n d.Math_Max_Int32_Int32 = function(a, b) {\n return Math.max(a, b);\n };\n d.Cast_Int32 = u || K || Q ? function(a) {\n return a | 0;\n } : function(a) {\n return ~~a;\n };\n \"undefined\" === typeof Number.toInteger && (Number.toInteger = null);\n d.Cast_Int64 = I ? function(a) {\n return -2147483648 > a || 2147483647 < a ? 0 > a ? Math.ceil(a) : Math.floor(a) : ~~a;\n } : J && \"function\" === typeof Number.toInteger ? function(a) {\n return Number.toInteger(a);\n } : V || L ? function(a) {\n return parseInt(a, 10);\n } : u ? function(a) {\n return -2147483648 > a || 2147483647 < a ? 0 > a ? Math.ceil(a) : Math.floor(a) : a | 0;\n } : function(a) {\n return 0 > a ? Math.ceil(a) : Math.floor(a);\n };\n d.Clear = function(a) {\n a.length = 0;\n };\n d.PI = 3.141592653589793;\n d.PI2 = 6.283185307179586;\n d.IntPoint = function() {\n var a = arguments;\n var b = a.length;\n this.Y = this.X = 0;\n d.use_xyz ? (this.Z = 0, 3 === b ? (this.X = a[0], this.Y = a[1], this.Z = a[2]) : 2 === b ? (this.X = a[0], this.Y = a[1], this.Z = 0) : 1 === b ? a[0] instanceof d.DoublePoint ? (a = a[0], this.X = d.Clipper.Round(a.X), this.Y = d.Clipper.Round(a.Y), this.Z = 0) : (a = a[0], \"undefined\" === typeof a.Z && (a.Z = 0), this.X = a.X, this.Y = a.Y, this.Z = a.Z) : this.Z = this.Y = this.X = 0) : 2 === b ? (this.X = a[0], this.Y = a[1]) : 1 === b ? a[0] instanceof d.DoublePoint ? (a = a[0], this.X = d.Clipper.Round(a.X), this.Y = d.Clipper.Round(a.Y)) : (a = a[0], this.X = a.X, this.Y = a.Y) : this.Y = this.X = 0;\n };\n d.IntPoint.op_Equality = function(a, b) {\n return a.X === b.X && a.Y === b.Y;\n };\n d.IntPoint.op_Inequality = function(a, b) {\n return a.X !== b.X || a.Y !== b.Y;\n };\n d.IntPoint0 = function() {\n this.Y = this.X = 0;\n d.use_xyz && (this.Z = 0);\n };\n d.IntPoint0.prototype = d.IntPoint.prototype;\n d.IntPoint1 = function(a) {\n this.X = a.X;\n this.Y = a.Y;\n d.use_xyz && (this.Z = \"undefined\" === typeof a.Z ? 0 : a.Z);\n };\n d.IntPoint1.prototype = d.IntPoint.prototype;\n d.IntPoint1dp = function(a) {\n this.X = d.Clipper.Round(a.X);\n this.Y = d.Clipper.Round(a.Y);\n d.use_xyz && (this.Z = 0);\n };\n d.IntPoint1dp.prototype = d.IntPoint.prototype;\n d.IntPoint2 = function(a, b, c) {\n this.X = a;\n this.Y = b;\n d.use_xyz && (this.Z = \"undefined\" === typeof c ? 0 : c);\n };\n d.IntPoint2.prototype = d.IntPoint.prototype;\n d.IntRect = function() {\n var a = arguments, b = a.length;\n 4 === b ? (this.left = a[0], this.top = a[1], this.right = a[2], this.bottom = a[3]) : 1 === b ? (a = a[0], this.left = a.left, this.top = a.top, this.right = a.right, this.bottom = a.bottom) : this.bottom = this.right = this.top = this.left = 0;\n };\n d.IntRect0 = function() {\n this.bottom = this.right = this.top = this.left = 0;\n };\n d.IntRect0.prototype = d.IntRect.prototype;\n d.IntRect1 = function(a) {\n this.left = a.left;\n this.top = a.top;\n this.right = a.right;\n this.bottom = a.bottom;\n };\n d.IntRect1.prototype = d.IntRect.prototype;\n d.IntRect4 = function(a, b, c, e) {\n this.left = a;\n this.top = b;\n this.right = c;\n this.bottom = e;\n };\n d.IntRect4.prototype = d.IntRect.prototype;\n d.ClipType = {\n ctIntersection: 0,\n ctUnion: 1,\n ctDifference: 2,\n ctXor: 3\n };\n d.PolyType = {\n ptSubject: 0,\n ptClip: 1\n };\n d.PolyFillType = {\n pftEvenOdd: 0,\n pftNonZero: 1,\n pftPositive: 2,\n pftNegative: 3\n };\n d.JoinType = {\n jtSquare: 0,\n jtRound: 1,\n jtMiter: 2\n };\n d.EndType = {\n etOpenSquare: 0,\n etOpenRound: 1,\n etOpenButt: 2,\n etClosedLine: 3,\n etClosedPolygon: 4\n };\n d.EdgeSide = {\n esLeft: 0,\n esRight: 1\n };\n d.Direction = {\n dRightToLeft: 0,\n dLeftToRight: 1\n };\n d.TEdge = function() {\n this.Bot = new d.IntPoint0();\n this.Curr = new d.IntPoint0();\n this.Top = new d.IntPoint0();\n this.Delta = new d.IntPoint0();\n this.Dx = 0;\n this.PolyTyp = d.PolyType.ptSubject;\n this.Side = d.EdgeSide.esLeft;\n this.OutIdx = this.WindCnt2 = this.WindCnt = this.WindDelta = 0;\n this.PrevInSEL = this.NextInSEL = this.PrevInAEL = this.NextInAEL = this.NextInLML = this.Prev = this.Next = null;\n };\n d.IntersectNode = function() {\n this.Edge2 = this.Edge1 = null;\n this.Pt = new d.IntPoint0();\n };\n d.MyIntersectNodeSort = function() {};\n d.MyIntersectNodeSort.Compare = function(a, b) {\n var c = b.Pt.Y - a.Pt.Y;\n return 0 < c ? 1 : 0 > c ? -1 : 0;\n };\n d.LocalMinima = function() {\n this.Y = 0;\n this.Next = this.RightBound = this.LeftBound = null;\n };\n d.Scanbeam = function() {\n this.Y = 0;\n this.Next = null;\n };\n d.Maxima = function() {\n this.X = 0;\n this.Prev = this.Next = null;\n };\n d.OutRec = function() {\n this.Idx = 0;\n this.IsOpen = this.IsHole = !1;\n this.PolyNode = this.BottomPt = this.Pts = this.FirstLeft = null;\n };\n d.OutPt = function() {\n this.Idx = 0;\n this.Pt = new d.IntPoint0();\n this.Prev = this.Next = null;\n };\n d.Join = function() {\n this.OutPt2 = this.OutPt1 = null;\n this.OffPt = new d.IntPoint0();\n };\n d.ClipperBase = function() {\n this.m_CurrentLM = this.m_MinimaList = null;\n this.m_edges = [];\n this.PreserveCollinear = this.m_HasOpenPaths = this.m_UseFullRange = !1;\n this.m_ActiveEdges = this.m_PolyOuts = this.m_Scanbeam = null;\n };\n d.ClipperBase.horizontal = -9007199254740992;\n d.ClipperBase.Skip = -2;\n d.ClipperBase.Unassigned = -1;\n d.ClipperBase.tolerance = 1e-20;\n d.ClipperBase.loRange = 47453132;\n d.ClipperBase.hiRange = 0xfffffffffffff;\n d.ClipperBase.near_zero = function(a) {\n return a > -d.ClipperBase.tolerance && a < d.ClipperBase.tolerance;\n };\n d.ClipperBase.IsHorizontal = function(a) {\n return 0 === a.Delta.Y;\n };\n d.ClipperBase.prototype.PointIsVertex = function(a, b) {\n var c = b;\n do {\n if (d.IntPoint.op_Equality(c.Pt, a)) return !0;\n c = c.Next;\n }while (c !== b);\n return !1;\n };\n d.ClipperBase.prototype.PointOnLineSegment = function(a, b, c, e) {\n return e ? a.X === b.X && a.Y === b.Y || a.X === c.X && a.Y === c.Y || a.X > b.X === a.X < c.X && a.Y > b.Y === a.Y < c.Y && k.op_Equality(k.Int128Mul(a.X - b.X, c.Y - b.Y), k.Int128Mul(c.X - b.X, a.Y - b.Y)) : a.X === b.X && a.Y === b.Y || a.X === c.X && a.Y === c.Y || a.X > b.X === a.X < c.X && a.Y > b.Y === a.Y < c.Y && (a.X - b.X) * (c.Y - b.Y) === (c.X - b.X) * (a.Y - b.Y);\n };\n d.ClipperBase.prototype.PointOnPolygon = function(a, b, c) {\n for(var e = b;;){\n if (this.PointOnLineSegment(a, e.Pt, e.Next.Pt, c)) return !0;\n e = e.Next;\n if (e === b) break;\n }\n return !1;\n };\n d.ClipperBase.prototype.SlopesEqual = d.ClipperBase.SlopesEqual = function() {\n var a = arguments, b = a.length;\n if (3 === b) {\n b = a[0];\n var c = a[1];\n return (a = a[2]) ? k.op_Equality(k.Int128Mul(b.Delta.Y, c.Delta.X), k.Int128Mul(b.Delta.X, c.Delta.Y)) : d.Cast_Int64(b.Delta.Y * c.Delta.X) === d.Cast_Int64(b.Delta.X * c.Delta.Y);\n }\n if (4 === b) {\n b = a[0];\n c = a[1];\n var e = a[2];\n return (a = a[3]) ? k.op_Equality(k.Int128Mul(b.Y - c.Y, c.X - e.X), k.Int128Mul(b.X - c.X, c.Y - e.Y)) : 0 === d.Cast_Int64((b.Y - c.Y) * (c.X - e.X)) - d.Cast_Int64((b.X - c.X) * (c.Y - e.Y));\n }\n b = a[0];\n c = a[1];\n e = a[2];\n var f = a[3];\n return (a = a[4]) ? k.op_Equality(k.Int128Mul(b.Y - c.Y, e.X - f.X), k.Int128Mul(b.X - c.X, e.Y - f.Y)) : 0 === d.Cast_Int64((b.Y - c.Y) * (e.X - f.X)) - d.Cast_Int64((b.X - c.X) * (e.Y - f.Y));\n };\n d.ClipperBase.SlopesEqual3 = function(a, b, c) {\n return c ? k.op_Equality(k.Int128Mul(a.Delta.Y, b.Delta.X), k.Int128Mul(a.Delta.X, b.Delta.Y)) : d.Cast_Int64(a.Delta.Y * b.Delta.X) === d.Cast_Int64(a.Delta.X * b.Delta.Y);\n };\n d.ClipperBase.SlopesEqual4 = function(a, b, c, e) {\n return e ? k.op_Equality(k.Int128Mul(a.Y - b.Y, b.X - c.X), k.Int128Mul(a.X - b.X, b.Y - c.Y)) : 0 === d.Cast_Int64((a.Y - b.Y) * (b.X - c.X)) - d.Cast_Int64((a.X - b.X) * (b.Y - c.Y));\n };\n d.ClipperBase.SlopesEqual5 = function(a, b, c, e, f) {\n return f ? k.op_Equality(k.Int128Mul(a.Y - b.Y, c.X - e.X), k.Int128Mul(a.X - b.X, c.Y - e.Y)) : 0 === d.Cast_Int64((a.Y - b.Y) * (c.X - e.X)) - d.Cast_Int64((a.X - b.X) * (c.Y - e.Y));\n };\n d.ClipperBase.prototype.Clear = function() {\n this.DisposeLocalMinimaList();\n for(var a = 0, b = this.m_edges.length; a < b; ++a){\n for(var c = 0, e = this.m_edges[a].length; c < e; ++c)this.m_edges[a][c] = null;\n d.Clear(this.m_edges[a]);\n }\n d.Clear(this.m_edges);\n this.m_HasOpenPaths = this.m_UseFullRange = !1;\n };\n d.ClipperBase.prototype.DisposeLocalMinimaList = function() {\n for(; null !== this.m_MinimaList;){\n var a = this.m_MinimaList.Next;\n this.m_MinimaList = null;\n this.m_MinimaList = a;\n }\n this.m_CurrentLM = null;\n };\n d.ClipperBase.prototype.RangeTest = function(a, b) {\n if (b.Value) (a.X > d.ClipperBase.hiRange || a.Y > d.ClipperBase.hiRange || -a.X > d.ClipperBase.hiRange || -a.Y > d.ClipperBase.hiRange) && d.Error(\"Coordinate outside allowed range in RangeTest().\");\n else if (a.X > d.ClipperBase.loRange || a.Y > d.ClipperBase.loRange || -a.X > d.ClipperBase.loRange || -a.Y > d.ClipperBase.loRange) b.Value = !0, this.RangeTest(a, b);\n };\n d.ClipperBase.prototype.InitEdge = function(a, b, c, e) {\n a.Next = b;\n a.Prev = c;\n a.Curr.X = e.X;\n a.Curr.Y = e.Y;\n d.use_xyz && (a.Curr.Z = e.Z);\n a.OutIdx = -1;\n };\n d.ClipperBase.prototype.InitEdge2 = function(a, b) {\n a.Curr.Y >= a.Next.Curr.Y ? (a.Bot.X = a.Curr.X, a.Bot.Y = a.Curr.Y, d.use_xyz && (a.Bot.Z = a.Curr.Z), a.Top.X = a.Next.Curr.X, a.Top.Y = a.Next.Curr.Y, d.use_xyz && (a.Top.Z = a.Next.Curr.Z)) : (a.Top.X = a.Curr.X, a.Top.Y = a.Curr.Y, d.use_xyz && (a.Top.Z = a.Curr.Z), a.Bot.X = a.Next.Curr.X, a.Bot.Y = a.Next.Curr.Y, d.use_xyz && (a.Bot.Z = a.Next.Curr.Z));\n this.SetDx(a);\n a.PolyTyp = b;\n };\n d.ClipperBase.prototype.FindNextLocMin = function(a) {\n for(var b;;){\n for(; d.IntPoint.op_Inequality(a.Bot, a.Prev.Bot) || d.IntPoint.op_Equality(a.Curr, a.Top);)a = a.Next;\n if (a.Dx !== d.ClipperBase.horizontal && a.Prev.Dx !== d.ClipperBase.horizontal) break;\n for(; a.Prev.Dx === d.ClipperBase.horizontal;)a = a.Prev;\n for(b = a; a.Dx === d.ClipperBase.horizontal;)a = a.Next;\n if (a.Top.Y !== a.Prev.Bot.Y) {\n b.Prev.Bot.X < a.Bot.X && (a = b);\n break;\n }\n }\n return a;\n };\n d.ClipperBase.prototype.ProcessBound = function(a, b) {\n var c = a, e;\n if (c.OutIdx === d.ClipperBase.Skip) {\n a = c;\n if (b) {\n for(; a.Top.Y === a.Next.Bot.Y;)a = a.Next;\n for(; a !== c && a.Dx === d.ClipperBase.horizontal;)a = a.Prev;\n } else {\n for(; a.Top.Y === a.Prev.Bot.Y;)a = a.Prev;\n for(; a !== c && a.Dx === d.ClipperBase.horizontal;)a = a.Next;\n }\n if (a === c) c = b ? a.Next : a.Prev;\n else {\n a = b ? c.Next : c.Prev;\n var f = new d.LocalMinima();\n f.Next = null;\n f.Y = a.Bot.Y;\n f.LeftBound = null;\n f.RightBound = a;\n a.WindDelta = 0;\n c = this.ProcessBound(a, b);\n this.InsertLocalMinima(f);\n }\n return c;\n }\n a.Dx === d.ClipperBase.horizontal && (f = b ? a.Prev : a.Next, f.Dx === d.ClipperBase.horizontal ? f.Bot.X !== a.Bot.X && f.Top.X !== a.Bot.X && this.ReverseHorizontal(a) : f.Bot.X !== a.Bot.X && this.ReverseHorizontal(a));\n f = a;\n if (b) {\n for(; c.Top.Y === c.Next.Bot.Y && c.Next.OutIdx !== d.ClipperBase.Skip;)c = c.Next;\n if (c.Dx === d.ClipperBase.horizontal && c.Next.OutIdx !== d.ClipperBase.Skip) {\n for(e = c; e.Prev.Dx === d.ClipperBase.horizontal;)e = e.Prev;\n e.Prev.Top.X > c.Next.Top.X && (c = e.Prev);\n }\n for(; a !== c;)a.NextInLML = a.Next, a.Dx === d.ClipperBase.horizontal && a !== f && a.Bot.X !== a.Prev.Top.X && this.ReverseHorizontal(a), a = a.Next;\n a.Dx === d.ClipperBase.horizontal && a !== f && a.Bot.X !== a.Prev.Top.X && this.ReverseHorizontal(a);\n c = c.Next;\n } else {\n for(; c.Top.Y === c.Prev.Bot.Y && c.Prev.OutIdx !== d.ClipperBase.Skip;)c = c.Prev;\n if (c.Dx === d.ClipperBase.horizontal && c.Prev.OutIdx !== d.ClipperBase.Skip) {\n for(e = c; e.Next.Dx === d.ClipperBase.horizontal;)e = e.Next;\n if (e.Next.Top.X === c.Prev.Top.X || e.Next.Top.X > c.Prev.Top.X) c = e.Next;\n }\n for(; a !== c;)a.NextInLML = a.Prev, a.Dx === d.ClipperBase.horizontal && a !== f && a.Bot.X !== a.Next.Top.X && this.ReverseHorizontal(a), a = a.Prev;\n a.Dx === d.ClipperBase.horizontal && a !== f && a.Bot.X !== a.Next.Top.X && this.ReverseHorizontal(a);\n c = c.Prev;\n }\n return c;\n };\n d.ClipperBase.prototype.AddPath = function(a, b, c) {\n d.use_lines ? c || b !== d.PolyType.ptClip || d.Error(\"AddPath: Open paths must be subject.\") : c || d.Error(\"AddPath: Open paths have been disabled.\");\n var e = a.length - 1;\n if (c) for(; 0 < e && d.IntPoint.op_Equality(a[e], a[0]);)--e;\n for(; 0 < e && d.IntPoint.op_Equality(a[e], a[e - 1]);)--e;\n if (c && 2 > e || !c && 1 > e) return !1;\n for(var f = [], g = 0; g <= e; g++)f.push(new d.TEdge());\n var h = !0;\n f[1].Curr.X = a[1].X;\n f[1].Curr.Y = a[1].Y;\n d.use_xyz && (f[1].Curr.Z = a[1].Z);\n var m = {\n Value: this.m_UseFullRange\n };\n this.RangeTest(a[0], m);\n this.m_UseFullRange = m.Value;\n m.Value = this.m_UseFullRange;\n this.RangeTest(a[e], m);\n this.m_UseFullRange = m.Value;\n this.InitEdge(f[0], f[1], f[e], a[0]);\n this.InitEdge(f[e], f[0], f[e - 1], a[e]);\n for(g = e - 1; 1 <= g; --g)m.Value = this.m_UseFullRange, this.RangeTest(a[g], m), this.m_UseFullRange = m.Value, this.InitEdge(f[g], f[g + 1], f[g - 1], a[g]);\n for(g = a = e = f[0];;)if (a.Curr !== a.Next.Curr || !c && a.Next === e) {\n if (a.Prev === a.Next) break;\n else if (c && d.ClipperBase.SlopesEqual4(a.Prev.Curr, a.Curr, a.Next.Curr, this.m_UseFullRange) && (!this.PreserveCollinear || !this.Pt2IsBetweenPt1AndPt3(a.Prev.Curr, a.Curr, a.Next.Curr))) {\n a === e && (e = a.Next);\n a = this.RemoveEdge(a);\n g = a = a.Prev;\n continue;\n }\n a = a.Next;\n if (a === g || !c && a.Next === e) break;\n } else {\n if (a === a.Next) break;\n a === e && (e = a.Next);\n g = a = this.RemoveEdge(a);\n }\n if (!c && a === a.Next || c && a.Prev === a.Next) return !1;\n c || (this.m_HasOpenPaths = !0, e.Prev.OutIdx = d.ClipperBase.Skip);\n a = e;\n do this.InitEdge2(a, b), a = a.Next, h && a.Curr.Y !== e.Curr.Y && (h = !1);\n while (a !== e);\n if (h) {\n if (c) return !1;\n a.Prev.OutIdx = d.ClipperBase.Skip;\n b = new d.LocalMinima();\n b.Next = null;\n b.Y = a.Bot.Y;\n b.LeftBound = null;\n b.RightBound = a;\n b.RightBound.Side = d.EdgeSide.esRight;\n for(b.RightBound.WindDelta = 0;;){\n a.Bot.X !== a.Prev.Top.X && this.ReverseHorizontal(a);\n if (a.Next.OutIdx === d.ClipperBase.Skip) break;\n a = a.NextInLML = a.Next;\n }\n this.InsertLocalMinima(b);\n this.m_edges.push(f);\n return !0;\n }\n this.m_edges.push(f);\n h = null;\n d.IntPoint.op_Equality(a.Prev.Bot, a.Prev.Top) && (a = a.Next);\n for(;;){\n a = this.FindNextLocMin(a);\n if (a === h) break;\n else null === h && (h = a);\n b = new d.LocalMinima();\n b.Next = null;\n b.Y = a.Bot.Y;\n a.Dx < a.Prev.Dx ? (b.LeftBound = a.Prev, b.RightBound = a, f = !1) : (b.LeftBound = a, b.RightBound = a.Prev, f = !0);\n b.LeftBound.Side = d.EdgeSide.esLeft;\n b.RightBound.Side = d.EdgeSide.esRight;\n b.LeftBound.WindDelta = c ? b.LeftBound.Next === b.RightBound ? -1 : 1 : 0;\n b.RightBound.WindDelta = -b.LeftBound.WindDelta;\n a = this.ProcessBound(b.LeftBound, f);\n a.OutIdx === d.ClipperBase.Skip && (a = this.ProcessBound(a, f));\n e = this.ProcessBound(b.RightBound, !f);\n e.OutIdx === d.ClipperBase.Skip && (e = this.ProcessBound(e, !f));\n b.LeftBound.OutIdx === d.ClipperBase.Skip ? b.LeftBound = null : b.RightBound.OutIdx === d.ClipperBase.Skip && (b.RightBound = null);\n this.InsertLocalMinima(b);\n f || (a = e);\n }\n return !0;\n };\n d.ClipperBase.prototype.AddPaths = function(a, b, c) {\n for(var e = !1, d = 0, g = a.length; d < g; ++d)this.AddPath(a[d], b, c) && (e = !0);\n return e;\n };\n d.ClipperBase.prototype.Pt2IsBetweenPt1AndPt3 = function(a, b, c) {\n return d.IntPoint.op_Equality(a, c) || d.IntPoint.op_Equality(a, b) || d.IntPoint.op_Equality(c, b) ? !1 : a.X !== c.X ? b.X > a.X === b.X < c.X : b.Y > a.Y === b.Y < c.Y;\n };\n d.ClipperBase.prototype.RemoveEdge = function(a) {\n a.Prev.Next = a.Next;\n a.Next.Prev = a.Prev;\n var b = a.Next;\n a.Prev = null;\n return b;\n };\n d.ClipperBase.prototype.SetDx = function(a) {\n a.Delta.X = a.Top.X - a.Bot.X;\n a.Delta.Y = a.Top.Y - a.Bot.Y;\n a.Dx = 0 === a.Delta.Y ? d.ClipperBase.horizontal : a.Delta.X / a.Delta.Y;\n };\n d.ClipperBase.prototype.InsertLocalMinima = function(a) {\n if (null === this.m_MinimaList) this.m_MinimaList = a;\n else if (a.Y >= this.m_MinimaList.Y) a.Next = this.m_MinimaList, this.m_MinimaList = a;\n else {\n for(var b = this.m_MinimaList; null !== b.Next && a.Y < b.Next.Y;)b = b.Next;\n a.Next = b.Next;\n b.Next = a;\n }\n };\n d.ClipperBase.prototype.PopLocalMinima = function(a, b) {\n b.v = this.m_CurrentLM;\n return null !== this.m_CurrentLM && this.m_CurrentLM.Y === a ? (this.m_CurrentLM = this.m_CurrentLM.Next, !0) : !1;\n };\n d.ClipperBase.prototype.ReverseHorizontal = function(a) {\n var b = a.Top.X;\n a.Top.X = a.Bot.X;\n a.Bot.X = b;\n d.use_xyz && (b = a.Top.Z, a.Top.Z = a.Bot.Z, a.Bot.Z = b);\n };\n d.ClipperBase.prototype.Reset = function() {\n this.m_CurrentLM = this.m_MinimaList;\n if (null !== this.m_CurrentLM) {\n this.m_Scanbeam = null;\n for(var a = this.m_MinimaList; null !== a;){\n this.InsertScanbeam(a.Y);\n var b = a.LeftBound;\n null !== b && (b.Curr.X = b.Bot.X, b.Curr.Y = b.Bot.Y, d.use_xyz && (b.Curr.Z = b.Bot.Z), b.OutIdx = d.ClipperBase.Unassigned);\n b = a.RightBound;\n null !== b && (b.Curr.X = b.Bot.X, b.Curr.Y = b.Bot.Y, d.use_xyz && (b.Curr.Z = b.Bot.Z), b.OutIdx = d.ClipperBase.Unassigned);\n a = a.Next;\n }\n this.m_ActiveEdges = null;\n }\n };\n d.ClipperBase.prototype.InsertScanbeam = function(a) {\n if (null === this.m_Scanbeam) this.m_Scanbeam = new d.Scanbeam(), this.m_Scanbeam.Next = null, this.m_Scanbeam.Y = a;\n else if (a > this.m_Scanbeam.Y) {\n var b = new d.Scanbeam();\n b.Y = a;\n b.Next = this.m_Scanbeam;\n this.m_Scanbeam = b;\n } else {\n for(b = this.m_Scanbeam; null !== b.Next && a <= b.Next.Y;)b = b.Next;\n if (a !== b.Y) {\n var c = new d.Scanbeam();\n c.Y = a;\n c.Next = b.Next;\n b.Next = c;\n }\n }\n };\n d.ClipperBase.prototype.PopScanbeam = function(a) {\n if (null === this.m_Scanbeam) return a.v = 0, !1;\n a.v = this.m_Scanbeam.Y;\n this.m_Scanbeam = this.m_Scanbeam.Next;\n return !0;\n };\n d.ClipperBase.prototype.LocalMinimaPending = function() {\n return null !== this.m_CurrentLM;\n };\n d.ClipperBase.prototype.CreateOutRec = function() {\n var a = new d.OutRec();\n a.Idx = d.ClipperBase.Unassigned;\n a.IsHole = !1;\n a.IsOpen = !1;\n a.FirstLeft = null;\n a.Pts = null;\n a.BottomPt = null;\n a.PolyNode = null;\n this.m_PolyOuts.push(a);\n a.Idx = this.m_PolyOuts.length - 1;\n return a;\n };\n d.ClipperBase.prototype.DisposeOutRec = function(a) {\n this.m_PolyOuts[a].Pts = null;\n this.m_PolyOuts[a] = null;\n };\n d.ClipperBase.prototype.UpdateEdgeIntoAEL = function(a) {\n null === a.NextInLML && d.Error(\"UpdateEdgeIntoAEL: invalid call\");\n var b = a.PrevInAEL, c = a.NextInAEL;\n a.NextInLML.OutIdx = a.OutIdx;\n null !== b ? b.NextInAEL = a.NextInLML : this.m_ActiveEdges = a.NextInLML;\n null !== c && (c.PrevInAEL = a.NextInLML);\n a.NextInLML.Side = a.Side;\n a.NextInLML.WindDelta = a.WindDelta;\n a.NextInLML.WindCnt = a.WindCnt;\n a.NextInLML.WindCnt2 = a.WindCnt2;\n a = a.NextInLML;\n a.Curr.X = a.Bot.X;\n a.Curr.Y = a.Bot.Y;\n a.PrevInAEL = b;\n a.NextInAEL = c;\n d.ClipperBase.IsHorizontal(a) || this.InsertScanbeam(a.Top.Y);\n return a;\n };\n d.ClipperBase.prototype.SwapPositionsInAEL = function(a, b) {\n if (a.NextInAEL !== a.PrevInAEL && b.NextInAEL !== b.PrevInAEL) {\n if (a.NextInAEL === b) {\n var c = b.NextInAEL;\n null !== c && (c.PrevInAEL = a);\n var e = a.PrevInAEL;\n null !== e && (e.NextInAEL = b);\n b.PrevInAEL = e;\n b.NextInAEL = a;\n a.PrevInAEL = b;\n a.NextInAEL = c;\n } else b.NextInAEL === a ? (c = a.NextInAEL, null !== c && (c.PrevInAEL = b), e = b.PrevInAEL, null !== e && (e.NextInAEL = a), a.PrevInAEL = e, a.NextInAEL = b, b.PrevInAEL = a, b.NextInAEL = c) : (c = a.NextInAEL, e = a.PrevInAEL, a.NextInAEL = b.NextInAEL, null !== a.NextInAEL && (a.NextInAEL.PrevInAEL = a), a.PrevInAEL = b.PrevInAEL, null !== a.PrevInAEL && (a.PrevInAEL.NextInAEL = a), b.NextInAEL = c, null !== b.NextInAEL && (b.NextInAEL.PrevInAEL = b), b.PrevInAEL = e, null !== b.PrevInAEL && (b.PrevInAEL.NextInAEL = b));\n null === a.PrevInAEL ? this.m_ActiveEdges = a : null === b.PrevInAEL && (this.m_ActiveEdges = b);\n }\n };\n d.ClipperBase.prototype.DeleteFromAEL = function(a) {\n var b = a.PrevInAEL, c = a.NextInAEL;\n if (null !== b || null !== c || a === this.m_ActiveEdges) null !== b ? b.NextInAEL = c : this.m_ActiveEdges = c, null !== c && (c.PrevInAEL = b), a.NextInAEL = null, a.PrevInAEL = null;\n };\n d.Clipper = function(a) {\n \"undefined\" === typeof a && (a = 0);\n this.m_PolyOuts = null;\n this.m_ClipType = d.ClipType.ctIntersection;\n this.m_IntersectNodeComparer = this.m_IntersectList = this.m_SortedEdges = this.m_ActiveEdges = this.m_Maxima = this.m_Scanbeam = null;\n this.m_ExecuteLocked = !1;\n this.m_SubjFillType = this.m_ClipFillType = d.PolyFillType.pftEvenOdd;\n this.m_GhostJoins = this.m_Joins = null;\n this.StrictlySimple = this.ReverseSolution = this.m_UsingPolyTree = !1;\n d.ClipperBase.call(this);\n this.m_SortedEdges = this.m_ActiveEdges = this.m_Maxima = this.m_Scanbeam = null;\n this.m_IntersectList = [];\n this.m_IntersectNodeComparer = d.MyIntersectNodeSort.Compare;\n this.m_UsingPolyTree = this.m_ExecuteLocked = !1;\n this.m_PolyOuts = [];\n this.m_Joins = [];\n this.m_GhostJoins = [];\n this.ReverseSolution = 0 !== (1 & a);\n this.StrictlySimple = 0 !== (2 & a);\n this.PreserveCollinear = 0 !== (4 & a);\n d.use_xyz && (this.ZFillFunction = null);\n };\n d.Clipper.ioReverseSolution = 1;\n d.Clipper.ioStrictlySimple = 2;\n d.Clipper.ioPreserveCollinear = 4;\n d.Clipper.prototype.Clear = function() {\n 0 !== this.m_edges.length && (this.DisposeAllPolyPts(), d.ClipperBase.prototype.Clear.call(this));\n };\n d.Clipper.prototype.InsertMaxima = function(a) {\n var b = new d.Maxima();\n b.X = a;\n if (null === this.m_Maxima) this.m_Maxima = b, this.m_Maxima.Next = null, this.m_Maxima.Prev = null;\n else if (a < this.m_Maxima.X) b.Next = this.m_Maxima, b.Prev = null, this.m_Maxima = b;\n else {\n for(var c = this.m_Maxima; null !== c.Next && a >= c.Next.X;)c = c.Next;\n a !== c.X && (b.Next = c.Next, b.Prev = c, null !== c.Next && (c.Next.Prev = b), c.Next = b);\n }\n };\n d.Clipper.prototype.Execute = function() {\n var a;\n var b = arguments;\n var c = b.length;\n var e = b[1] instanceof d.PolyTree;\n if (4 !== c || e) {\n if (4 === c && e) {\n c = b[0];\n var f = b[1];\n e = b[2];\n b = b[3];\n if (this.m_ExecuteLocked) return !1;\n this.m_ExecuteLocked = !0;\n this.m_SubjFillType = e;\n this.m_ClipFillType = b;\n this.m_ClipType = c;\n this.m_UsingPolyTree = !0;\n try {\n (a = this.ExecuteInternal()) && this.BuildResult2(f);\n } finally{\n this.DisposeAllPolyPts(), this.m_ExecuteLocked = !1;\n }\n return a;\n }\n if (2 === c && !e || 2 === c && e) return c = b[0], f = b[1], this.Execute(c, f, d.PolyFillType.pftEvenOdd, d.PolyFillType.pftEvenOdd);\n } else {\n c = b[0];\n f = b[1];\n e = b[2];\n b = b[3];\n if (this.m_ExecuteLocked) return !1;\n this.m_HasOpenPaths && d.Error(\"Error: PolyTree struct is needed for open path clipping.\");\n this.m_ExecuteLocked = !0;\n d.Clear(f);\n this.m_SubjFillType = e;\n this.m_ClipFillType = b;\n this.m_ClipType = c;\n this.m_UsingPolyTree = !1;\n try {\n (a = this.ExecuteInternal()) && this.BuildResult(f);\n } finally{\n this.DisposeAllPolyPts(), this.m_ExecuteLocked = !1;\n }\n return a;\n }\n };\n d.Clipper.prototype.FixHoleLinkage = function(a) {\n if (null !== a.FirstLeft && (a.IsHole === a.FirstLeft.IsHole || null === a.FirstLeft.Pts)) {\n for(var b = a.FirstLeft; null !== b && (b.IsHole === a.IsHole || null === b.Pts);)b = b.FirstLeft;\n a.FirstLeft = b;\n }\n };\n d.Clipper.prototype.ExecuteInternal = function() {\n try {\n this.Reset();\n this.m_Maxima = this.m_SortedEdges = null;\n var a = {}, b = {};\n if (!this.PopScanbeam(a)) return !1;\n for(this.InsertLocalMinimaIntoAEL(a.v); this.PopScanbeam(b) || this.LocalMinimaPending();){\n this.ProcessHorizontals();\n this.m_GhostJoins.length = 0;\n if (!this.ProcessIntersections(b.v)) return !1;\n this.ProcessEdgesAtTopOfScanbeam(b.v);\n a.v = b.v;\n this.InsertLocalMinimaIntoAEL(a.v);\n }\n var c;\n var e = 0;\n for(c = this.m_PolyOuts.length; e < c; e++){\n var d = this.m_PolyOuts[e];\n null === d.Pts || d.IsOpen || (d.IsHole ^ this.ReverseSolution) == 0 < this.Area$1(d) && this.ReversePolyPtLinks(d.Pts);\n }\n this.JoinCommonEdges();\n e = 0;\n for(c = this.m_PolyOuts.length; e < c; e++)d = this.m_PolyOuts[e], null !== d.Pts && (d.IsOpen ? this.FixupOutPolyline(d) : this.FixupOutPolygon(d));\n this.StrictlySimple && this.DoSimplePolygons();\n return !0;\n } finally{\n this.m_Joins.length = 0, this.m_GhostJoins.length = 0;\n }\n };\n d.Clipper.prototype.DisposeAllPolyPts = function() {\n for(var a = 0, b = this.m_PolyOuts.length; a < b; ++a)this.DisposeOutRec(a);\n d.Clear(this.m_PolyOuts);\n };\n d.Clipper.prototype.AddJoin = function(a, b, c) {\n var e = new d.Join();\n e.OutPt1 = a;\n e.OutPt2 = b;\n e.OffPt.X = c.X;\n e.OffPt.Y = c.Y;\n d.use_xyz && (e.OffPt.Z = c.Z);\n this.m_Joins.push(e);\n };\n d.Clipper.prototype.AddGhostJoin = function(a, b) {\n var c = new d.Join();\n c.OutPt1 = a;\n c.OffPt.X = b.X;\n c.OffPt.Y = b.Y;\n d.use_xyz && (c.OffPt.Z = b.Z);\n this.m_GhostJoins.push(c);\n };\n d.Clipper.prototype.SetZ = function(a, b, c) {\n null !== this.ZFillFunction && 0 === a.Z && null !== this.ZFillFunction && (d.IntPoint.op_Equality(a, b.Bot) ? a.Z = b.Bot.Z : d.IntPoint.op_Equality(a, b.Top) ? a.Z = b.Top.Z : d.IntPoint.op_Equality(a, c.Bot) ? a.Z = c.Bot.Z : d.IntPoint.op_Equality(a, c.Top) ? a.Z = c.Top.Z : this.ZFillFunction(b.Bot, b.Top, c.Bot, c.Top, a));\n };\n d.Clipper.prototype.InsertLocalMinimaIntoAEL = function(a) {\n for(var b, c = {}, e, f; this.PopLocalMinima(a, c);){\n e = c.v.LeftBound;\n f = c.v.RightBound;\n var g = null;\n null === e ? (this.InsertEdgeIntoAEL(f, null), this.SetWindingCount(f), this.IsContributing(f) && (g = this.AddOutPt(f, f.Bot))) : (null === f ? (this.InsertEdgeIntoAEL(e, null), this.SetWindingCount(e), this.IsContributing(e) && (g = this.AddOutPt(e, e.Bot))) : (this.InsertEdgeIntoAEL(e, null), this.InsertEdgeIntoAEL(f, e), this.SetWindingCount(e), f.WindCnt = e.WindCnt, f.WindCnt2 = e.WindCnt2, this.IsContributing(e) && (g = this.AddLocalMinPoly(e, f, e.Bot))), this.InsertScanbeam(e.Top.Y));\n null !== f && (d.ClipperBase.IsHorizontal(f) ? (null !== f.NextInLML && this.InsertScanbeam(f.NextInLML.Top.Y), this.AddEdgeToSEL(f)) : this.InsertScanbeam(f.Top.Y));\n if (null !== e && null !== f) {\n if (null !== g && d.ClipperBase.IsHorizontal(f) && 0 < this.m_GhostJoins.length && 0 !== f.WindDelta) {\n b = 0;\n for(var h = this.m_GhostJoins.length; b < h; b++){\n var m = this.m_GhostJoins[b];\n this.HorzSegmentsOverlap(m.OutPt1.Pt.X, m.OffPt.X, f.Bot.X, f.Top.X) && this.AddJoin(m.OutPt1, g, m.OffPt);\n }\n }\n 0 <= e.OutIdx && null !== e.PrevInAEL && e.PrevInAEL.Curr.X === e.Bot.X && 0 <= e.PrevInAEL.OutIdx && d.ClipperBase.SlopesEqual5(e.PrevInAEL.Curr, e.PrevInAEL.Top, e.Curr, e.Top, this.m_UseFullRange) && 0 !== e.WindDelta && 0 !== e.PrevInAEL.WindDelta && (b = this.AddOutPt(e.PrevInAEL, e.Bot), this.AddJoin(g, b, e.Top));\n if (e.NextInAEL !== f && (0 <= f.OutIdx && 0 <= f.PrevInAEL.OutIdx && d.ClipperBase.SlopesEqual5(f.PrevInAEL.Curr, f.PrevInAEL.Top, f.Curr, f.Top, this.m_UseFullRange) && 0 !== f.WindDelta && 0 !== f.PrevInAEL.WindDelta && (b = this.AddOutPt(f.PrevInAEL, f.Bot), this.AddJoin(g, b, f.Top)), g = e.NextInAEL, null !== g)) for(; g !== f;)this.IntersectEdges(f, g, e.Curr), g = g.NextInAEL;\n }\n }\n };\n d.Clipper.prototype.InsertEdgeIntoAEL = function(a, b) {\n if (null === this.m_ActiveEdges) a.PrevInAEL = null, a.NextInAEL = null, this.m_ActiveEdges = a;\n else if (null === b && this.E2InsertsBeforeE1(this.m_ActiveEdges, a)) a.PrevInAEL = null, a.NextInAEL = this.m_ActiveEdges, this.m_ActiveEdges = this.m_ActiveEdges.PrevInAEL = a;\n else {\n null === b && (b = this.m_ActiveEdges);\n for(; null !== b.NextInAEL && !this.E2InsertsBeforeE1(b.NextInAEL, a);)b = b.NextInAEL;\n a.NextInAEL = b.NextInAEL;\n null !== b.NextInAEL && (b.NextInAEL.PrevInAEL = a);\n a.PrevInAEL = b;\n b.NextInAEL = a;\n }\n };\n d.Clipper.prototype.E2InsertsBeforeE1 = function(a, b) {\n return b.Curr.X === a.Curr.X ? b.Top.Y > a.Top.Y ? b.Top.X < d.Clipper.TopX(a, b.Top.Y) : a.Top.X > d.Clipper.TopX(b, a.Top.Y) : b.Curr.X < a.Curr.X;\n };\n d.Clipper.prototype.IsEvenOddFillType = function(a) {\n return a.PolyTyp === d.PolyType.ptSubject ? this.m_SubjFillType === d.PolyFillType.pftEvenOdd : this.m_ClipFillType === d.PolyFillType.pftEvenOdd;\n };\n d.Clipper.prototype.IsEvenOddAltFillType = function(a) {\n return a.PolyTyp === d.PolyType.ptSubject ? this.m_ClipFillType === d.PolyFillType.pftEvenOdd : this.m_SubjFillType === d.PolyFillType.pftEvenOdd;\n };\n d.Clipper.prototype.IsContributing = function(a) {\n if (a.PolyTyp === d.PolyType.ptSubject) {\n var b = this.m_SubjFillType;\n var c = this.m_ClipFillType;\n } else b = this.m_ClipFillType, c = this.m_SubjFillType;\n switch(b){\n case d.PolyFillType.pftEvenOdd:\n if (0 === a.WindDelta && 1 !== a.WindCnt) return !1;\n break;\n case d.PolyFillType.pftNonZero:\n if (1 !== Math.abs(a.WindCnt)) return !1;\n break;\n case d.PolyFillType.pftPositive:\n if (1 !== a.WindCnt) return !1;\n break;\n default:\n if (-1 !== a.WindCnt) return !1;\n }\n switch(this.m_ClipType){\n case d.ClipType.ctIntersection:\n switch(c){\n case d.PolyFillType.pftEvenOdd:\n case d.PolyFillType.pftNonZero:\n return 0 !== a.WindCnt2;\n case d.PolyFillType.pftPositive:\n return 0 < a.WindCnt2;\n default:\n return 0 > a.WindCnt2;\n }\n case d.ClipType.ctUnion:\n switch(c){\n case d.PolyFillType.pftEvenOdd:\n case d.PolyFillType.pftNonZero:\n return 0 === a.WindCnt2;\n case d.PolyFillType.pftPositive:\n return 0 >= a.WindCnt2;\n default:\n return 0 <= a.WindCnt2;\n }\n case d.ClipType.ctDifference:\n if (a.PolyTyp === d.PolyType.ptSubject) switch(c){\n case d.PolyFillType.pftEvenOdd:\n case d.PolyFillType.pftNonZero:\n return 0 === a.WindCnt2;\n case d.PolyFillType.pftPositive:\n return 0 >= a.WindCnt2;\n default:\n return 0 <= a.WindCnt2;\n }\n else switch(c){\n case d.PolyFillType.pftEvenOdd:\n case d.PolyFillType.pftNonZero:\n return 0 !== a.WindCnt2;\n case d.PolyFillType.pftPositive:\n return 0 < a.WindCnt2;\n default:\n return 0 > a.WindCnt2;\n }\n case d.ClipType.ctXor:\n if (0 === a.WindDelta) switch(c){\n case d.PolyFillType.pftEvenOdd:\n case d.PolyFillType.pftNonZero:\n return 0 === a.WindCnt2;\n case d.PolyFillType.pftPositive:\n return 0 >= a.WindCnt2;\n default:\n return 0 <= a.WindCnt2;\n }\n }\n return !0;\n };\n d.Clipper.prototype.SetWindingCount = function(a) {\n for(var b = a.PrevInAEL; null !== b && (b.PolyTyp !== a.PolyTyp || 0 === b.WindDelta);)b = b.PrevInAEL;\n if (null === b) b = a.PolyTyp === d.PolyType.ptSubject ? this.m_SubjFillType : this.m_ClipFillType, a.WindCnt = 0 === a.WindDelta ? b === d.PolyFillType.pftNegative ? -1 : 1 : a.WindDelta, a.WindCnt2 = 0, b = this.m_ActiveEdges;\n else {\n if (0 === a.WindDelta && this.m_ClipType !== d.ClipType.ctUnion) a.WindCnt = 1;\n else if (this.IsEvenOddFillType(a)) {\n if (0 === a.WindDelta) {\n for(var c = !0, e = b.PrevInAEL; null !== e;)e.PolyTyp === b.PolyTyp && 0 !== e.WindDelta && (c = !c), e = e.PrevInAEL;\n a.WindCnt = c ? 0 : 1;\n } else a.WindCnt = a.WindDelta;\n } else a.WindCnt = 0 > b.WindCnt * b.WindDelta ? 1 < Math.abs(b.WindCnt) ? 0 > b.WindDelta * a.WindDelta ? b.WindCnt : b.WindCnt + a.WindDelta : 0 === a.WindDelta ? 1 : a.WindDelta : 0 === a.WindDelta ? 0 > b.WindCnt ? b.WindCnt - 1 : b.WindCnt + 1 : 0 > b.WindDelta * a.WindDelta ? b.WindCnt : b.WindCnt + a.WindDelta;\n a.WindCnt2 = b.WindCnt2;\n b = b.NextInAEL;\n }\n if (this.IsEvenOddAltFillType(a)) for(; b !== a;)0 !== b.WindDelta && (a.WindCnt2 = 0 === a.WindCnt2 ? 1 : 0), b = b.NextInAEL;\n else for(; b !== a;)a.WindCnt2 += b.WindDelta, b = b.NextInAEL;\n };\n d.Clipper.prototype.AddEdgeToSEL = function(a) {\n null === this.m_SortedEdges ? (this.m_SortedEdges = a, a.PrevInSEL = null, a.NextInSEL = null) : (a.NextInSEL = this.m_SortedEdges, a.PrevInSEL = null, this.m_SortedEdges = this.m_SortedEdges.PrevInSEL = a);\n };\n d.Clipper.prototype.PopEdgeFromSEL = function(a) {\n a.v = this.m_SortedEdges;\n if (null === a.v) return !1;\n var b = a.v;\n this.m_SortedEdges = a.v.NextInSEL;\n null !== this.m_SortedEdges && (this.m_SortedEdges.PrevInSEL = null);\n b.NextInSEL = null;\n b.PrevInSEL = null;\n return !0;\n };\n d.Clipper.prototype.CopyAELToSEL = function() {\n var a = this.m_ActiveEdges;\n for(this.m_SortedEdges = a; null !== a;)a.PrevInSEL = a.PrevInAEL, a = a.NextInSEL = a.NextInAEL;\n };\n d.Clipper.prototype.SwapPositionsInSEL = function(a, b) {\n if (null !== a.NextInSEL || null !== a.PrevInSEL) {\n if (null !== b.NextInSEL || null !== b.PrevInSEL) {\n if (a.NextInSEL === b) {\n var c = b.NextInSEL;\n null !== c && (c.PrevInSEL = a);\n var e = a.PrevInSEL;\n null !== e && (e.NextInSEL = b);\n b.PrevInSEL = e;\n b.NextInSEL = a;\n a.PrevInSEL = b;\n a.NextInSEL = c;\n } else b.NextInSEL === a ? (c = a.NextInSEL, null !== c && (c.PrevInSEL = b), e = b.PrevInSEL, null !== e && (e.NextInSEL = a), a.PrevInSEL = e, a.NextInSEL = b, b.PrevInSEL = a, b.NextInSEL = c) : (c = a.NextInSEL, e = a.PrevInSEL, a.NextInSEL = b.NextInSEL, null !== a.NextInSEL && (a.NextInSEL.PrevInSEL = a), a.PrevInSEL = b.PrevInSEL, null !== a.PrevInSEL && (a.PrevInSEL.NextInSEL = a), b.NextInSEL = c, null !== b.NextInSEL && (b.NextInSEL.PrevInSEL = b), b.PrevInSEL = e, null !== b.PrevInSEL && (b.PrevInSEL.NextInSEL = b));\n null === a.PrevInSEL ? this.m_SortedEdges = a : null === b.PrevInSEL && (this.m_SortedEdges = b);\n }\n }\n };\n d.Clipper.prototype.AddLocalMaxPoly = function(a, b, c) {\n this.AddOutPt(a, c);\n 0 === b.WindDelta && this.AddOutPt(b, c);\n a.OutIdx === b.OutIdx ? (a.OutIdx = -1, b.OutIdx = -1) : a.OutIdx < b.OutIdx ? this.AppendPolygon(a, b) : this.AppendPolygon(b, a);\n };\n d.Clipper.prototype.AddLocalMinPoly = function(a, b, c) {\n if (d.ClipperBase.IsHorizontal(b) || a.Dx > b.Dx) {\n var e = this.AddOutPt(a, c);\n b.OutIdx = a.OutIdx;\n a.Side = d.EdgeSide.esLeft;\n b.Side = d.EdgeSide.esRight;\n var f = a;\n a = f.PrevInAEL === b ? b.PrevInAEL : f.PrevInAEL;\n } else e = this.AddOutPt(b, c), a.OutIdx = b.OutIdx, a.Side = d.EdgeSide.esRight, b.Side = d.EdgeSide.esLeft, f = b, a = f.PrevInAEL === a ? a.PrevInAEL : f.PrevInAEL;\n if (null !== a && 0 <= a.OutIdx && a.Top.Y < c.Y && f.Top.Y < c.Y) {\n b = d.Clipper.TopX(a, c.Y);\n var g = d.Clipper.TopX(f, c.Y);\n b === g && 0 !== f.WindDelta && 0 !== a.WindDelta && d.ClipperBase.SlopesEqual5(new d.IntPoint2(b, c.Y), a.Top, new d.IntPoint2(g, c.Y), f.Top, this.m_UseFullRange) && (c = this.AddOutPt(a, c), this.AddJoin(e, c, f.Top));\n }\n return e;\n };\n d.Clipper.prototype.AddOutPt = function(a, b) {\n if (0 > a.OutIdx) {\n var c = this.CreateOutRec();\n c.IsOpen = 0 === a.WindDelta;\n var e = new d.OutPt();\n c.Pts = e;\n e.Idx = c.Idx;\n e.Pt.X = b.X;\n e.Pt.Y = b.Y;\n d.use_xyz && (e.Pt.Z = b.Z);\n e.Next = e;\n e.Prev = e;\n c.IsOpen || this.SetHoleState(a, c);\n a.OutIdx = c.Idx;\n } else {\n c = this.m_PolyOuts[a.OutIdx];\n var f = c.Pts, g = a.Side === d.EdgeSide.esLeft;\n if (g && d.IntPoint.op_Equality(b, f.Pt)) return f;\n if (!g && d.IntPoint.op_Equality(b, f.Prev.Pt)) return f.Prev;\n e = new d.OutPt();\n e.Idx = c.Idx;\n e.Pt.X = b.X;\n e.Pt.Y = b.Y;\n d.use_xyz && (e.Pt.Z = b.Z);\n e.Next = f;\n e.Prev = f.Prev;\n e.Prev.Next = e;\n f.Prev = e;\n g && (c.Pts = e);\n }\n return e;\n };\n d.Clipper.prototype.GetLastOutPt = function(a) {\n var b = this.m_PolyOuts[a.OutIdx];\n return a.Side === d.EdgeSide.esLeft ? b.Pts : b.Pts.Prev;\n };\n d.Clipper.prototype.SwapPoints = function(a, b) {\n var c = new d.IntPoint1(a.Value);\n a.Value.X = b.Value.X;\n a.Value.Y = b.Value.Y;\n d.use_xyz && (a.Value.Z = b.Value.Z);\n b.Value.X = c.X;\n b.Value.Y = c.Y;\n d.use_xyz && (b.Value.Z = c.Z);\n };\n d.Clipper.prototype.HorzSegmentsOverlap = function(a, b, c, e) {\n if (a > b) {\n var d = a;\n a = b;\n b = d;\n }\n c > e && (d = c, c = e, e = d);\n return a < e && c < b;\n };\n d.Clipper.prototype.SetHoleState = function(a, b) {\n for(var c = a.PrevInAEL, e = null; null !== c;)0 <= c.OutIdx && 0 !== c.WindDelta && (null === e ? e = c : e.OutIdx === c.OutIdx && (e = null)), c = c.PrevInAEL;\n null === e ? (b.FirstLeft = null, b.IsHole = !1) : (b.FirstLeft = this.m_PolyOuts[e.OutIdx], b.IsHole = !b.FirstLeft.IsHole);\n };\n d.Clipper.prototype.GetDx = function(a, b) {\n return a.Y === b.Y ? d.ClipperBase.horizontal : (b.X - a.X) / (b.Y - a.Y);\n };\n d.Clipper.prototype.FirstIsBottomPt = function(a, b) {\n for(var c = a.Prev; d.IntPoint.op_Equality(c.Pt, a.Pt) && c !== a;)c = c.Prev;\n var e = Math.abs(this.GetDx(a.Pt, c.Pt));\n for(c = a.Next; d.IntPoint.op_Equality(c.Pt, a.Pt) && c !== a;)c = c.Next;\n var f = Math.abs(this.GetDx(a.Pt, c.Pt));\n for(c = b.Prev; d.IntPoint.op_Equality(c.Pt, b.Pt) && c !== b;)c = c.Prev;\n var g = Math.abs(this.GetDx(b.Pt, c.Pt));\n for(c = b.Next; d.IntPoint.op_Equality(c.Pt, b.Pt) && c !== b;)c = c.Next;\n c = Math.abs(this.GetDx(b.Pt, c.Pt));\n return Math.max(e, f) === Math.max(g, c) && Math.min(e, f) === Math.min(g, c) ? 0 < this.Area(a) : e >= g && e >= c || f >= g && f >= c;\n };\n d.Clipper.prototype.GetBottomPt = function(a) {\n for(var b = null, c = a.Next; c !== a;)c.Pt.Y > a.Pt.Y ? (a = c, b = null) : c.Pt.Y === a.Pt.Y && c.Pt.X <= a.Pt.X && (c.Pt.X < a.Pt.X ? (b = null, a = c) : c.Next !== a && c.Prev !== a && (b = c)), c = c.Next;\n if (null !== b) for(; b !== c;)for(this.FirstIsBottomPt(c, b) || (a = b), b = b.Next; d.IntPoint.op_Inequality(b.Pt, a.Pt);)b = b.Next;\n return a;\n };\n d.Clipper.prototype.GetLowermostRec = function(a, b) {\n null === a.BottomPt && (a.BottomPt = this.GetBottomPt(a.Pts));\n null === b.BottomPt && (b.BottomPt = this.GetBottomPt(b.Pts));\n var c = a.BottomPt, e = b.BottomPt;\n return c.Pt.Y > e.Pt.Y ? a : c.Pt.Y < e.Pt.Y ? b : c.Pt.X < e.Pt.X ? a : c.Pt.X > e.Pt.X ? b : c.Next === c ? b : e.Next === e ? a : this.FirstIsBottomPt(c, e) ? a : b;\n };\n d.Clipper.prototype.OutRec1RightOfOutRec2 = function(a, b) {\n do if (a = a.FirstLeft, a === b) return !0;\n while (null !== a);\n return !1;\n };\n d.Clipper.prototype.GetOutRec = function(a) {\n for(a = this.m_PolyOuts[a]; a !== this.m_PolyOuts[a.Idx];)a = this.m_PolyOuts[a.Idx];\n return a;\n };\n d.Clipper.prototype.AppendPolygon = function(a, b) {\n var c = this.m_PolyOuts[a.OutIdx], e = this.m_PolyOuts[b.OutIdx];\n var f = this.OutRec1RightOfOutRec2(c, e) ? e : this.OutRec1RightOfOutRec2(e, c) ? c : this.GetLowermostRec(c, e);\n var g = c.Pts, h = g.Prev, m = e.Pts, k = m.Prev;\n a.Side === d.EdgeSide.esLeft ? b.Side === d.EdgeSide.esLeft ? (this.ReversePolyPtLinks(m), m.Next = g, g.Prev = m, h.Next = k, k.Prev = h, c.Pts = k) : (k.Next = g, g.Prev = k, m.Prev = h, h.Next = m, c.Pts = m) : b.Side === d.EdgeSide.esRight ? (this.ReversePolyPtLinks(m), h.Next = k, k.Prev = h, m.Next = g, g.Prev = m) : (h.Next = m, m.Prev = h, g.Prev = k, k.Next = g);\n c.BottomPt = null;\n f === e && (e.FirstLeft !== c && (c.FirstLeft = e.FirstLeft), c.IsHole = e.IsHole);\n e.Pts = null;\n e.BottomPt = null;\n e.FirstLeft = c;\n f = a.OutIdx;\n g = b.OutIdx;\n a.OutIdx = -1;\n b.OutIdx = -1;\n for(h = this.m_ActiveEdges; null !== h;){\n if (h.OutIdx === g) {\n h.OutIdx = f;\n h.Side = a.Side;\n break;\n }\n h = h.NextInAEL;\n }\n e.Idx = c.Idx;\n };\n d.Clipper.prototype.ReversePolyPtLinks = function(a) {\n if (null !== a) {\n var b = a;\n do {\n var c = b.Next;\n b.Next = b.Prev;\n b = b.Prev = c;\n }while (b !== a);\n }\n };\n d.Clipper.SwapSides = function(a, b) {\n var c = a.Side;\n a.Side = b.Side;\n b.Side = c;\n };\n d.Clipper.SwapPolyIndexes = function(a, b) {\n var c = a.OutIdx;\n a.OutIdx = b.OutIdx;\n b.OutIdx = c;\n };\n d.Clipper.prototype.IntersectEdges = function(a, b, c) {\n var e = 0 <= a.OutIdx, f = 0 <= b.OutIdx;\n d.use_xyz && this.SetZ(c, a, b);\n if (!d.use_lines || 0 !== a.WindDelta && 0 !== b.WindDelta) {\n if (a.PolyTyp === b.PolyTyp) {\n if (this.IsEvenOddFillType(a)) {\n var g = a.WindCnt;\n a.WindCnt = b.WindCnt;\n b.WindCnt = g;\n } else a.WindCnt = 0 === a.WindCnt + b.WindDelta ? -a.WindCnt : a.WindCnt + b.WindDelta, b.WindCnt = 0 === b.WindCnt - a.WindDelta ? -b.WindCnt : b.WindCnt - a.WindDelta;\n } else this.IsEvenOddFillType(b) ? a.WindCnt2 = 0 === a.WindCnt2 ? 1 : 0 : a.WindCnt2 += b.WindDelta, this.IsEvenOddFillType(a) ? b.WindCnt2 = 0 === b.WindCnt2 ? 1 : 0 : b.WindCnt2 -= a.WindDelta;\n if (a.PolyTyp === d.PolyType.ptSubject) {\n var h = this.m_SubjFillType;\n var k = this.m_ClipFillType;\n } else h = this.m_ClipFillType, k = this.m_SubjFillType;\n if (b.PolyTyp === d.PolyType.ptSubject) {\n var l = this.m_SubjFillType;\n g = this.m_ClipFillType;\n } else l = this.m_ClipFillType, g = this.m_SubjFillType;\n switch(h){\n case d.PolyFillType.pftPositive:\n h = a.WindCnt;\n break;\n case d.PolyFillType.pftNegative:\n h = -a.WindCnt;\n break;\n default:\n h = Math.abs(a.WindCnt);\n }\n switch(l){\n case d.PolyFillType.pftPositive:\n l = b.WindCnt;\n break;\n case d.PolyFillType.pftNegative:\n l = -b.WindCnt;\n break;\n default:\n l = Math.abs(b.WindCnt);\n }\n if (e && f) 0 !== h && 1 !== h || 0 !== l && 1 !== l || a.PolyTyp !== b.PolyTyp && this.m_ClipType !== d.ClipType.ctXor ? this.AddLocalMaxPoly(a, b, c) : (this.AddOutPt(a, c), this.AddOutPt(b, c), d.Clipper.SwapSides(a, b), d.Clipper.SwapPolyIndexes(a, b));\n else if (e) {\n if (0 === l || 1 === l) this.AddOutPt(a, c), d.Clipper.SwapSides(a, b), d.Clipper.SwapPolyIndexes(a, b);\n } else if (f) {\n if (0 === h || 1 === h) this.AddOutPt(b, c), d.Clipper.SwapSides(a, b), d.Clipper.SwapPolyIndexes(a, b);\n } else if (!(0 !== h && 1 !== h || 0 !== l && 1 !== l)) {\n switch(k){\n case d.PolyFillType.pftPositive:\n e = a.WindCnt2;\n break;\n case d.PolyFillType.pftNegative:\n e = -a.WindCnt2;\n break;\n default:\n e = Math.abs(a.WindCnt2);\n }\n switch(g){\n case d.PolyFillType.pftPositive:\n f = b.WindCnt2;\n break;\n case d.PolyFillType.pftNegative:\n f = -b.WindCnt2;\n break;\n default:\n f = Math.abs(b.WindCnt2);\n }\n if (a.PolyTyp !== b.PolyTyp) this.AddLocalMinPoly(a, b, c);\n else if (1 === h && 1 === l) switch(this.m_ClipType){\n case d.ClipType.ctIntersection:\n 0 < e && 0 < f && this.AddLocalMinPoly(a, b, c);\n break;\n case d.ClipType.ctUnion:\n 0 >= e && 0 >= f && this.AddLocalMinPoly(a, b, c);\n break;\n case d.ClipType.ctDifference:\n (a.PolyTyp === d.PolyType.ptClip && 0 < e && 0 < f || a.PolyTyp === d.PolyType.ptSubject && 0 >= e && 0 >= f) && this.AddLocalMinPoly(a, b, c);\n break;\n case d.ClipType.ctXor:\n this.AddLocalMinPoly(a, b, c);\n }\n else d.Clipper.SwapSides(a, b);\n }\n } else if (0 !== a.WindDelta || 0 !== b.WindDelta) a.PolyTyp === b.PolyTyp && a.WindDelta !== b.WindDelta && this.m_ClipType === d.ClipType.ctUnion ? 0 === a.WindDelta ? f && (this.AddOutPt(a, c), e && (a.OutIdx = -1)) : e && (this.AddOutPt(b, c), f && (b.OutIdx = -1)) : a.PolyTyp !== b.PolyTyp && (0 !== a.WindDelta || 1 !== Math.abs(b.WindCnt) || this.m_ClipType === d.ClipType.ctUnion && 0 !== b.WindCnt2 ? 0 !== b.WindDelta || 1 !== Math.abs(a.WindCnt) || this.m_ClipType === d.ClipType.ctUnion && 0 !== a.WindCnt2 || (this.AddOutPt(b, c), f && (b.OutIdx = -1)) : (this.AddOutPt(a, c), e && (a.OutIdx = -1)));\n };\n d.Clipper.prototype.DeleteFromSEL = function(a) {\n var b = a.PrevInSEL, c = a.NextInSEL;\n if (null !== b || null !== c || a === this.m_SortedEdges) null !== b ? b.NextInSEL = c : this.m_SortedEdges = c, null !== c && (c.PrevInSEL = b), a.NextInSEL = null, a.PrevInSEL = null;\n };\n d.Clipper.prototype.ProcessHorizontals = function() {\n for(var a = {}; this.PopEdgeFromSEL(a);)this.ProcessHorizontal(a.v);\n };\n d.Clipper.prototype.GetHorzDirection = function(a, b) {\n a.Bot.X < a.Top.X ? (b.Left = a.Bot.X, b.Right = a.Top.X, b.Dir = d.Direction.dLeftToRight) : (b.Left = a.Top.X, b.Right = a.Bot.X, b.Dir = d.Direction.dRightToLeft);\n };\n d.Clipper.prototype.ProcessHorizontal = function(a) {\n var b, c = {\n Dir: null,\n Left: null,\n Right: null\n };\n this.GetHorzDirection(a, c);\n var e = c.Dir, f = c.Left;\n c = c.Right;\n for(var g = 0 === a.WindDelta, h = a, k = null; null !== h.NextInLML && d.ClipperBase.IsHorizontal(h.NextInLML);)h = h.NextInLML;\n null === h.NextInLML && (k = this.GetMaximaPair(h));\n var l = this.m_Maxima;\n if (null !== l) {\n if (e === d.Direction.dLeftToRight) {\n for(; null !== l && l.X <= a.Bot.X;)l = l.Next;\n null !== l && l.X >= h.Top.X && (l = null);\n } else {\n for(; null !== l.Next && l.Next.X < a.Bot.X;)l = l.Next;\n l.X <= h.Top.X && (l = null);\n }\n }\n for(var n = null;;){\n for(var r = a === h, p = this.GetNextInAEL(a, e); null !== p;){\n if (null !== l) {\n if (e === d.Direction.dLeftToRight) for(; null !== l && l.X < p.Curr.X;)0 <= a.OutIdx && !g && this.AddOutPt(a, new d.IntPoint2(l.X, a.Bot.Y)), l = l.Next;\n else for(; null !== l && l.X > p.Curr.X;)0 <= a.OutIdx && !g && this.AddOutPt(a, new d.IntPoint2(l.X, a.Bot.Y)), l = l.Prev;\n }\n if (e === d.Direction.dLeftToRight && p.Curr.X > c || e === d.Direction.dRightToLeft && p.Curr.X < f) break;\n if (p.Curr.X === a.Top.X && null !== a.NextInLML && p.Dx < a.NextInLML.Dx) break;\n if (0 <= a.OutIdx && !g) {\n d.use_xyz && (e === d.Direction.dLeftToRight ? this.SetZ(p.Curr, a, p) : this.SetZ(p.Curr, p, a));\n n = this.AddOutPt(a, p.Curr);\n for(b = this.m_SortedEdges; null !== b;){\n if (0 <= b.OutIdx && this.HorzSegmentsOverlap(a.Bot.X, a.Top.X, b.Bot.X, b.Top.X)) {\n var t = this.GetLastOutPt(b);\n this.AddJoin(t, n, b.Top);\n }\n b = b.NextInSEL;\n }\n this.AddGhostJoin(n, a.Bot);\n }\n if (p === k && r) {\n 0 <= a.OutIdx && this.AddLocalMaxPoly(a, k, a.Top);\n this.DeleteFromAEL(a);\n this.DeleteFromAEL(k);\n return;\n }\n e === d.Direction.dLeftToRight ? (t = new d.IntPoint2(p.Curr.X, a.Curr.Y), this.IntersectEdges(a, p, t)) : (t = new d.IntPoint2(p.Curr.X, a.Curr.Y), this.IntersectEdges(p, a, t));\n t = this.GetNextInAEL(p, e);\n this.SwapPositionsInAEL(a, p);\n p = t;\n }\n if (null === a.NextInLML || !d.ClipperBase.IsHorizontal(a.NextInLML)) break;\n a = this.UpdateEdgeIntoAEL(a);\n 0 <= a.OutIdx && this.AddOutPt(a, a.Bot);\n c = {\n Dir: e,\n Left: f,\n Right: c\n };\n this.GetHorzDirection(a, c);\n e = c.Dir;\n f = c.Left;\n c = c.Right;\n }\n if (0 <= a.OutIdx && null === n) {\n n = this.GetLastOutPt(a);\n for(b = this.m_SortedEdges; null !== b;)0 <= b.OutIdx && this.HorzSegmentsOverlap(a.Bot.X, a.Top.X, b.Bot.X, b.Top.X) && (t = this.GetLastOutPt(b), this.AddJoin(t, n, b.Top)), b = b.NextInSEL;\n this.AddGhostJoin(n, a.Top);\n }\n null !== a.NextInLML ? 0 <= a.OutIdx ? (n = this.AddOutPt(a, a.Top), a = this.UpdateEdgeIntoAEL(a), 0 !== a.WindDelta && (e = a.PrevInAEL, t = a.NextInAEL, null !== e && e.Curr.X === a.Bot.X && e.Curr.Y === a.Bot.Y && 0 === e.WindDelta && 0 <= e.OutIdx && e.Curr.Y > e.Top.Y && d.ClipperBase.SlopesEqual3(a, e, this.m_UseFullRange) ? (t = this.AddOutPt(e, a.Bot), this.AddJoin(n, t, a.Top)) : null !== t && t.Curr.X === a.Bot.X && t.Curr.Y === a.Bot.Y && 0 !== t.WindDelta && 0 <= t.OutIdx && t.Curr.Y > t.Top.Y && d.ClipperBase.SlopesEqual3(a, t, this.m_UseFullRange) && (t = this.AddOutPt(t, a.Bot), this.AddJoin(n, t, a.Top)))) : this.UpdateEdgeIntoAEL(a) : (0 <= a.OutIdx && this.AddOutPt(a, a.Top), this.DeleteFromAEL(a));\n };\n d.Clipper.prototype.GetNextInAEL = function(a, b) {\n return b === d.Direction.dLeftToRight ? a.NextInAEL : a.PrevInAEL;\n };\n d.Clipper.prototype.IsMinima = function(a) {\n return null !== a && a.Prev.NextInLML !== a && a.Next.NextInLML !== a;\n };\n d.Clipper.prototype.IsMaxima = function(a, b) {\n return null !== a && a.Top.Y === b && null === a.NextInLML;\n };\n d.Clipper.prototype.IsIntermediate = function(a, b) {\n return a.Top.Y === b && null !== a.NextInLML;\n };\n d.Clipper.prototype.GetMaximaPair = function(a) {\n return d.IntPoint.op_Equality(a.Next.Top, a.Top) && null === a.Next.NextInLML ? a.Next : d.IntPoint.op_Equality(a.Prev.Top, a.Top) && null === a.Prev.NextInLML ? a.Prev : null;\n };\n d.Clipper.prototype.GetMaximaPairEx = function(a) {\n a = this.GetMaximaPair(a);\n return null === a || a.OutIdx === d.ClipperBase.Skip || a.NextInAEL === a.PrevInAEL && !d.ClipperBase.IsHorizontal(a) ? null : a;\n };\n d.Clipper.prototype.ProcessIntersections = function(a) {\n if (null === this.m_ActiveEdges) return !0;\n try {\n this.BuildIntersectList(a);\n if (0 === this.m_IntersectList.length) return !0;\n if (1 === this.m_IntersectList.length || this.FixupIntersectionOrder()) this.ProcessIntersectList();\n else return !1;\n } catch (b) {\n this.m_SortedEdges = null, this.m_IntersectList.length = 0, d.Error(\"ProcessIntersections error\");\n }\n this.m_SortedEdges = null;\n return !0;\n };\n d.Clipper.prototype.BuildIntersectList = function(a) {\n if (null !== this.m_ActiveEdges) {\n var b = this.m_ActiveEdges;\n for(this.m_SortedEdges = b; null !== b;)b.PrevInSEL = b.PrevInAEL, b.NextInSEL = b.NextInAEL, b.Curr.X = d.Clipper.TopX(b, a), b = b.NextInAEL;\n for(var c = !0; c && null !== this.m_SortedEdges;){\n c = !1;\n for(b = this.m_SortedEdges; null !== b.NextInSEL;){\n var e = b.NextInSEL, f = new d.IntPoint0();\n b.Curr.X > e.Curr.X ? (this.IntersectPoint(b, e, f), f.Y < a && (f = new d.IntPoint2(d.Clipper.TopX(b, a), a)), c = new d.IntersectNode(), c.Edge1 = b, c.Edge2 = e, c.Pt.X = f.X, c.Pt.Y = f.Y, d.use_xyz && (c.Pt.Z = f.Z), this.m_IntersectList.push(c), this.SwapPositionsInSEL(b, e), c = !0) : b = e;\n }\n if (null !== b.PrevInSEL) b.PrevInSEL.NextInSEL = null;\n else break;\n }\n this.m_SortedEdges = null;\n }\n };\n d.Clipper.prototype.EdgesAdjacent = function(a) {\n return a.Edge1.NextInSEL === a.Edge2 || a.Edge1.PrevInSEL === a.Edge2;\n };\n d.Clipper.IntersectNodeSort = function(a, b) {\n return b.Pt.Y - a.Pt.Y;\n };\n d.Clipper.prototype.FixupIntersectionOrder = function() {\n this.m_IntersectList.sort(this.m_IntersectNodeComparer);\n this.CopyAELToSEL();\n for(var a = this.m_IntersectList.length, b = 0; b < a; b++){\n if (!this.EdgesAdjacent(this.m_IntersectList[b])) {\n for(var c = b + 1; c < a && !this.EdgesAdjacent(this.m_IntersectList[c]);)c++;\n if (c === a) return !1;\n var e = this.m_IntersectList[b];\n this.m_IntersectList[b] = this.m_IntersectList[c];\n this.m_IntersectList[c] = e;\n }\n this.SwapPositionsInSEL(this.m_IntersectList[b].Edge1, this.m_IntersectList[b].Edge2);\n }\n return !0;\n };\n d.Clipper.prototype.ProcessIntersectList = function() {\n for(var a = 0, b = this.m_IntersectList.length; a < b; a++){\n var c = this.m_IntersectList[a];\n this.IntersectEdges(c.Edge1, c.Edge2, c.Pt);\n this.SwapPositionsInAEL(c.Edge1, c.Edge2);\n }\n this.m_IntersectList.length = 0;\n };\n I = function(a) {\n return 0 > a ? Math.ceil(a - 0.5) : Math.round(a);\n };\n J = function(a) {\n return 0 > a ? Math.ceil(a - 0.5) : Math.floor(a + 0.5);\n };\n K = function(a) {\n return 0 > a ? -Math.round(Math.abs(a)) : Math.round(a);\n };\n L = function(a) {\n if (0 > a) return a -= 0.5, -2147483648 > a ? Math.ceil(a) : a | 0;\n a += 0.5;\n return 2147483647 < a ? Math.floor(a) : a | 0;\n };\n d.Clipper.Round = u ? I : G ? K : Q ? L : J;\n d.Clipper.TopX = function(a, b) {\n return b === a.Top.Y ? a.Top.X : a.Bot.X + d.Clipper.Round(a.Dx * (b - a.Bot.Y));\n };\n d.Clipper.prototype.IntersectPoint = function(a, b, c) {\n c.X = 0;\n c.Y = 0;\n if (a.Dx === b.Dx) c.Y = a.Curr.Y, c.X = d.Clipper.TopX(a, c.Y);\n else {\n if (0 === a.Delta.X) {\n if (c.X = a.Bot.X, d.ClipperBase.IsHorizontal(b)) c.Y = b.Bot.Y;\n else {\n var e = b.Bot.Y - b.Bot.X / b.Dx;\n c.Y = d.Clipper.Round(c.X / b.Dx + e);\n }\n } else if (0 === b.Delta.X) {\n if (c.X = b.Bot.X, d.ClipperBase.IsHorizontal(a)) c.Y = a.Bot.Y;\n else {\n var f = a.Bot.Y - a.Bot.X / a.Dx;\n c.Y = d.Clipper.Round(c.X / a.Dx + f);\n }\n } else {\n f = a.Bot.X - a.Bot.Y * a.Dx;\n e = b.Bot.X - b.Bot.Y * b.Dx;\n var g = (e - f) / (a.Dx - b.Dx);\n c.Y = d.Clipper.Round(g);\n c.X = Math.abs(a.Dx) < Math.abs(b.Dx) ? d.Clipper.Round(a.Dx * g + f) : d.Clipper.Round(b.Dx * g + e);\n }\n if (c.Y < a.Top.Y || c.Y < b.Top.Y) {\n if (a.Top.Y > b.Top.Y) return c.Y = a.Top.Y, c.X = d.Clipper.TopX(b, a.Top.Y), c.X < a.Top.X;\n c.Y = b.Top.Y;\n c.X = Math.abs(a.Dx) < Math.abs(b.Dx) ? d.Clipper.TopX(a, c.Y) : d.Clipper.TopX(b, c.Y);\n }\n c.Y > a.Curr.Y && (c.Y = a.Curr.Y, c.X = Math.abs(a.Dx) > Math.abs(b.Dx) ? d.Clipper.TopX(b, c.Y) : d.Clipper.TopX(a, c.Y));\n }\n };\n d.Clipper.prototype.ProcessEdgesAtTopOfScanbeam = function(a) {\n for(var b, c, e = this.m_ActiveEdges; null !== e;){\n if (c = this.IsMaxima(e, a)) c = this.GetMaximaPairEx(e), c = null === c || !d.ClipperBase.IsHorizontal(c);\n if (c) this.StrictlySimple && this.InsertMaxima(e.Top.X), b = e.PrevInAEL, this.DoMaxima(e), e = null === b ? this.m_ActiveEdges : b.NextInAEL;\n else {\n this.IsIntermediate(e, a) && d.ClipperBase.IsHorizontal(e.NextInLML) ? (e = this.UpdateEdgeIntoAEL(e), 0 <= e.OutIdx && this.AddOutPt(e, e.Bot), this.AddEdgeToSEL(e)) : (e.Curr.X = d.Clipper.TopX(e, a), e.Curr.Y = a);\n d.use_xyz && (e.Curr.Z = e.Top.Y === a ? e.Top.Z : e.Bot.Y === a ? e.Bot.Z : 0);\n if (this.StrictlySimple && (b = e.PrevInAEL, 0 <= e.OutIdx && 0 !== e.WindDelta && null !== b && 0 <= b.OutIdx && b.Curr.X === e.Curr.X && 0 !== b.WindDelta)) {\n var f = new d.IntPoint1(e.Curr);\n d.use_xyz && this.SetZ(f, b, e);\n c = this.AddOutPt(b, f);\n b = this.AddOutPt(e, f);\n this.AddJoin(c, b, f);\n }\n e = e.NextInAEL;\n }\n }\n this.ProcessHorizontals();\n this.m_Maxima = null;\n for(e = this.m_ActiveEdges; null !== e;)this.IsIntermediate(e, a) && (c = null, 0 <= e.OutIdx && (c = this.AddOutPt(e, e.Top)), e = this.UpdateEdgeIntoAEL(e), b = e.PrevInAEL, f = e.NextInAEL, null !== b && b.Curr.X === e.Bot.X && b.Curr.Y === e.Bot.Y && null !== c && 0 <= b.OutIdx && b.Curr.Y === b.Top.Y && d.ClipperBase.SlopesEqual5(e.Curr, e.Top, b.Curr, b.Top, this.m_UseFullRange) && 0 !== e.WindDelta && 0 !== b.WindDelta ? (b = this.AddOutPt(ePrev2, e.Bot), this.AddJoin(c, b, e.Top)) : null !== f && f.Curr.X === e.Bot.X && f.Curr.Y === e.Bot.Y && null !== c && 0 <= f.OutIdx && f.Curr.Y === f.Top.Y && d.ClipperBase.SlopesEqual5(e.Curr, e.Top, f.Curr, f.Top, this.m_UseFullRange) && 0 !== e.WindDelta && 0 !== f.WindDelta && (b = this.AddOutPt(f, e.Bot), this.AddJoin(c, b, e.Top))), e = e.NextInAEL;\n };\n d.Clipper.prototype.DoMaxima = function(a) {\n var b = this.GetMaximaPairEx(a);\n if (null === b) 0 <= a.OutIdx && this.AddOutPt(a, a.Top), this.DeleteFromAEL(a);\n else {\n for(var c = a.NextInAEL; null !== c && c !== b;)this.IntersectEdges(a, c, a.Top), this.SwapPositionsInAEL(a, c), c = a.NextInAEL;\n -1 === a.OutIdx && -1 === b.OutIdx ? (this.DeleteFromAEL(a), this.DeleteFromAEL(b)) : 0 <= a.OutIdx && 0 <= b.OutIdx ? (0 <= a.OutIdx && this.AddLocalMaxPoly(a, b, a.Top), this.DeleteFromAEL(a), this.DeleteFromAEL(b)) : d.use_lines && 0 === a.WindDelta ? (0 <= a.OutIdx && (this.AddOutPt(a, a.Top), a.OutIdx = d.ClipperBase.Unassigned), this.DeleteFromAEL(a), 0 <= b.OutIdx && (this.AddOutPt(b, a.Top), b.OutIdx = d.ClipperBase.Unassigned), this.DeleteFromAEL(b)) : d.Error(\"DoMaxima error\");\n }\n };\n d.Clipper.ReversePaths = function(a) {\n for(var b = 0, c = a.length; b < c; b++)a[b].reverse();\n };\n d.Clipper.Orientation = function(a) {\n return 0 <= d.Clipper.Area(a);\n };\n d.Clipper.prototype.PointCount = function(a) {\n if (null === a) return 0;\n var b = 0, c = a;\n do b++, c = c.Next;\n while (c !== a);\n return b;\n };\n d.Clipper.prototype.BuildResult = function(a) {\n d.Clear(a);\n for(var b = 0, c = this.m_PolyOuts.length; b < c; b++){\n var e = this.m_PolyOuts[b];\n if (null !== e.Pts) {\n e = e.Pts.Prev;\n var f = this.PointCount(e);\n if (!(2 > f)) {\n for(var g = Array(f), h = 0; h < f; h++)g[h] = e.Pt, e = e.Prev;\n a.push(g);\n }\n }\n }\n };\n d.Clipper.prototype.BuildResult2 = function(a) {\n a.Clear();\n for(var b = 0, c = this.m_PolyOuts.length; b < c; b++){\n var e = this.m_PolyOuts[b];\n var f = this.PointCount(e.Pts);\n if (!(e.IsOpen && 2 > f || !e.IsOpen && 3 > f)) {\n this.FixHoleLinkage(e);\n var g = new d.PolyNode();\n a.m_AllPolys.push(g);\n e.PolyNode = g;\n g.m_polygon.length = f;\n e = e.Pts.Prev;\n for(var h = 0; h < f; h++)g.m_polygon[h] = e.Pt, e = e.Prev;\n }\n }\n b = 0;\n for(c = this.m_PolyOuts.length; b < c; b++)e = this.m_PolyOuts[b], null !== e.PolyNode && (e.IsOpen ? (e.PolyNode.IsOpen = !0, a.AddChild(e.PolyNode)) : null !== e.FirstLeft && null !== e.FirstLeft.PolyNode ? e.FirstLeft.PolyNode.AddChild(e.PolyNode) : a.AddChild(e.PolyNode));\n };\n d.Clipper.prototype.FixupOutPolyline = function(a) {\n for(var b = a.Pts, c = b.Prev; b !== c;)if (b = b.Next, d.IntPoint.op_Equality(b.Pt, b.Prev.Pt)) {\n b === c && (c = b.Prev);\n var e = b.Prev;\n e.Next = b.Next;\n b = b.Next.Prev = e;\n }\n b === b.Prev && (a.Pts = null);\n };\n d.Clipper.prototype.FixupOutPolygon = function(a) {\n var b = null;\n a.BottomPt = null;\n for(var c = a.Pts, e = this.PreserveCollinear || this.StrictlySimple;;){\n if (c.Prev === c || c.Prev === c.Next) {\n a.Pts = null;\n return;\n }\n if (d.IntPoint.op_Equality(c.Pt, c.Next.Pt) || d.IntPoint.op_Equality(c.Pt, c.Prev.Pt) || d.ClipperBase.SlopesEqual4(c.Prev.Pt, c.Pt, c.Next.Pt, this.m_UseFullRange) && (!e || !this.Pt2IsBetweenPt1AndPt3(c.Prev.Pt, c.Pt, c.Next.Pt))) b = null, c.Prev.Next = c.Next, c = c.Next.Prev = c.Prev;\n else if (c === b) break;\n else null === b && (b = c), c = c.Next;\n }\n a.Pts = c;\n };\n d.Clipper.prototype.DupOutPt = function(a, b) {\n var c = new d.OutPt();\n c.Pt.X = a.Pt.X;\n c.Pt.Y = a.Pt.Y;\n d.use_xyz && (c.Pt.Z = a.Pt.Z);\n c.Idx = a.Idx;\n b ? (c.Next = a.Next, c.Prev = a, a.Next.Prev = c, a.Next = c) : (c.Prev = a.Prev, c.Next = a, a.Prev.Next = c, a.Prev = c);\n return c;\n };\n d.Clipper.prototype.GetOverlap = function(a, b, c, e, d) {\n a < b ? c < e ? (d.Left = Math.max(a, c), d.Right = Math.min(b, e)) : (d.Left = Math.max(a, e), d.Right = Math.min(b, c)) : c < e ? (d.Left = Math.max(b, c), d.Right = Math.min(a, e)) : (d.Left = Math.max(b, e), d.Right = Math.min(a, c));\n return d.Left < d.Right;\n };\n d.Clipper.prototype.JoinHorz = function(a, b, c, e, f, g) {\n var h = a.Pt.X > b.Pt.X ? d.Direction.dRightToLeft : d.Direction.dLeftToRight;\n e = c.Pt.X > e.Pt.X ? d.Direction.dRightToLeft : d.Direction.dLeftToRight;\n if (h === e) return !1;\n if (h === d.Direction.dLeftToRight) {\n for(; a.Next.Pt.X <= f.X && a.Next.Pt.X >= a.Pt.X && a.Next.Pt.Y === f.Y;)a = a.Next;\n g && a.Pt.X !== f.X && (a = a.Next);\n b = this.DupOutPt(a, !g);\n d.IntPoint.op_Inequality(b.Pt, f) && (a = b, a.Pt.X = f.X, a.Pt.Y = f.Y, d.use_xyz && (a.Pt.Z = f.Z), b = this.DupOutPt(a, !g));\n } else {\n for(; a.Next.Pt.X >= f.X && a.Next.Pt.X <= a.Pt.X && a.Next.Pt.Y === f.Y;)a = a.Next;\n g || a.Pt.X === f.X || (a = a.Next);\n b = this.DupOutPt(a, g);\n d.IntPoint.op_Inequality(b.Pt, f) && (a = b, a.Pt.X = f.X, a.Pt.Y = f.Y, d.use_xyz && (a.Pt.Z = f.Z), b = this.DupOutPt(a, g));\n }\n if (e === d.Direction.dLeftToRight) {\n for(; c.Next.Pt.X <= f.X && c.Next.Pt.X >= c.Pt.X && c.Next.Pt.Y === f.Y;)c = c.Next;\n g && c.Pt.X !== f.X && (c = c.Next);\n e = this.DupOutPt(c, !g);\n d.IntPoint.op_Inequality(e.Pt, f) && (c = e, c.Pt.X = f.X, c.Pt.Y = f.Y, d.use_xyz && (c.Pt.Z = f.Z), e = this.DupOutPt(c, !g));\n } else {\n for(; c.Next.Pt.X >= f.X && c.Next.Pt.X <= c.Pt.X && c.Next.Pt.Y === f.Y;)c = c.Next;\n g || c.Pt.X === f.X || (c = c.Next);\n e = this.DupOutPt(c, g);\n d.IntPoint.op_Inequality(e.Pt, f) && (c = e, c.Pt.X = f.X, c.Pt.Y = f.Y, d.use_xyz && (c.Pt.Z = f.Z), e = this.DupOutPt(c, g));\n }\n h === d.Direction.dLeftToRight === g ? (a.Prev = c, c.Next = a, b.Next = e, e.Prev = b) : (a.Next = c, c.Prev = a, b.Prev = e, e.Next = b);\n return !0;\n };\n d.Clipper.prototype.JoinPoints = function(a, b, c) {\n var e = a.OutPt1, f;\n new d.OutPt();\n var g = a.OutPt2, h;\n new d.OutPt();\n if ((h = a.OutPt1.Pt.Y === a.OffPt.Y) && d.IntPoint.op_Equality(a.OffPt, a.OutPt1.Pt) && d.IntPoint.op_Equality(a.OffPt, a.OutPt2.Pt)) {\n if (b !== c) return !1;\n for(f = a.OutPt1.Next; f !== e && d.IntPoint.op_Equality(f.Pt, a.OffPt);)f = f.Next;\n f = f.Pt.Y > a.OffPt.Y;\n for(h = a.OutPt2.Next; h !== g && d.IntPoint.op_Equality(h.Pt, a.OffPt);)h = h.Next;\n if (f === h.Pt.Y > a.OffPt.Y) return !1;\n f ? (f = this.DupOutPt(e, !1), h = this.DupOutPt(g, !0), e.Prev = g, g.Next = e, f.Next = h, h.Prev = f) : (f = this.DupOutPt(e, !0), h = this.DupOutPt(g, !1), e.Next = g, g.Prev = e, f.Prev = h, h.Next = f);\n a.OutPt1 = e;\n a.OutPt2 = f;\n return !0;\n }\n if (h) {\n for(f = e; e.Prev.Pt.Y === e.Pt.Y && e.Prev !== f && e.Prev !== g;)e = e.Prev;\n for(; f.Next.Pt.Y === f.Pt.Y && f.Next !== e && f.Next !== g;)f = f.Next;\n if (f.Next === e || f.Next === g) return !1;\n for(h = g; g.Prev.Pt.Y === g.Pt.Y && g.Prev !== h && g.Prev !== f;)g = g.Prev;\n for(; h.Next.Pt.Y === h.Pt.Y && h.Next !== g && h.Next !== e;)h = h.Next;\n if (h.Next === g || h.Next === e) return !1;\n c = {\n Left: null,\n Right: null\n };\n if (!this.GetOverlap(e.Pt.X, f.Pt.X, g.Pt.X, h.Pt.X, c)) return !1;\n b = c.Left;\n var k = c.Right;\n c = new d.IntPoint0();\n e.Pt.X >= b && e.Pt.X <= k ? (c.X = e.Pt.X, c.Y = e.Pt.Y, d.use_xyz && (c.Z = e.Pt.Z), b = e.Pt.X > f.Pt.X) : g.Pt.X >= b && g.Pt.X <= k ? (c.X = g.Pt.X, c.Y = g.Pt.Y, d.use_xyz && (c.Z = g.Pt.Z), b = g.Pt.X > h.Pt.X) : f.Pt.X >= b && f.Pt.X <= k ? (c.X = f.Pt.X, c.Y = f.Pt.Y, d.use_xyz && (c.Z = f.Pt.Z), b = f.Pt.X > e.Pt.X) : (c.X = h.Pt.X, c.Y = h.Pt.Y, d.use_xyz && (c.Z = h.Pt.Z), b = h.Pt.X > g.Pt.X);\n a.OutPt1 = e;\n a.OutPt2 = g;\n return this.JoinHorz(e, f, g, h, c, b);\n }\n for(f = e.Next; d.IntPoint.op_Equality(f.Pt, e.Pt) && f !== e;)f = f.Next;\n if (k = f.Pt.Y > e.Pt.Y || !d.ClipperBase.SlopesEqual4(e.Pt, f.Pt, a.OffPt, this.m_UseFullRange)) {\n for(f = e.Prev; d.IntPoint.op_Equality(f.Pt, e.Pt) && f !== e;)f = f.Prev;\n if (f.Pt.Y > e.Pt.Y || !d.ClipperBase.SlopesEqual4(e.Pt, f.Pt, a.OffPt, this.m_UseFullRange)) return !1;\n }\n for(h = g.Next; d.IntPoint.op_Equality(h.Pt, g.Pt) && h !== g;)h = h.Next;\n var l = h.Pt.Y > g.Pt.Y || !d.ClipperBase.SlopesEqual4(g.Pt, h.Pt, a.OffPt, this.m_UseFullRange);\n if (l) {\n for(h = g.Prev; d.IntPoint.op_Equality(h.Pt, g.Pt) && h !== g;)h = h.Prev;\n if (h.Pt.Y > g.Pt.Y || !d.ClipperBase.SlopesEqual4(g.Pt, h.Pt, a.OffPt, this.m_UseFullRange)) return !1;\n }\n if (f === e || h === g || f === h || b === c && k === l) return !1;\n k ? (f = this.DupOutPt(e, !1), h = this.DupOutPt(g, !0), e.Prev = g, g.Next = e, f.Next = h, h.Prev = f) : (f = this.DupOutPt(e, !0), h = this.DupOutPt(g, !1), e.Next = g, g.Prev = e, f.Prev = h, h.Next = f);\n a.OutPt1 = e;\n a.OutPt2 = f;\n return !0;\n };\n d.Clipper.GetBounds = function(a) {\n for(var b = 0, c = a.length; b < c && 0 === a[b].length;)b++;\n if (b === c) return new d.IntRect(0, 0, 0, 0);\n var e = new d.IntRect();\n e.left = a[b][0].X;\n e.right = e.left;\n e.top = a[b][0].Y;\n for(e.bottom = e.top; b < c; b++)for(var f = 0, g = a[b].length; f < g; f++)a[b][f].X < e.left ? e.left = a[b][f].X : a[b][f].X > e.right && (e.right = a[b][f].X), a[b][f].Y < e.top ? e.top = a[b][f].Y : a[b][f].Y > e.bottom && (e.bottom = a[b][f].Y);\n return e;\n };\n d.Clipper.prototype.GetBounds2 = function(a) {\n var b = a, c = new d.IntRect();\n c.left = a.Pt.X;\n c.right = a.Pt.X;\n c.top = a.Pt.Y;\n c.bottom = a.Pt.Y;\n for(a = a.Next; a !== b;)a.Pt.X < c.left && (c.left = a.Pt.X), a.Pt.X > c.right && (c.right = a.Pt.X), a.Pt.Y < c.top && (c.top = a.Pt.Y), a.Pt.Y > c.bottom && (c.bottom = a.Pt.Y), a = a.Next;\n return c;\n };\n d.Clipper.PointInPolygon = function(a, b) {\n var c = 0, e = b.length;\n if (3 > e) return 0;\n for(var d = b[0], g = 1; g <= e; ++g){\n var h = g === e ? b[0] : b[g];\n if (h.Y === a.Y && (h.X === a.X || d.Y === a.Y && h.X > a.X === d.X < a.X)) return -1;\n if (d.Y < a.Y !== h.Y < a.Y) {\n if (d.X >= a.X) {\n if (h.X > a.X) c = 1 - c;\n else {\n var k = (d.X - a.X) * (h.Y - a.Y) - (h.X - a.X) * (d.Y - a.Y);\n if (0 === k) return -1;\n 0 < k === h.Y > d.Y && (c = 1 - c);\n }\n } else if (h.X > a.X) {\n k = (d.X - a.X) * (h.Y - a.Y) - (h.X - a.X) * (d.Y - a.Y);\n if (0 === k) return -1;\n 0 < k === h.Y > d.Y && (c = 1 - c);\n }\n }\n d = h;\n }\n return c;\n };\n d.Clipper.prototype.PointInPolygon = function(a, b) {\n var c = 0, d = b, f = a.X, g = a.Y;\n var h = b.Pt.X;\n var k = b.Pt.Y;\n do {\n b = b.Next;\n var l = b.Pt.X, n = b.Pt.Y;\n if (n === g && (l === f || k === g && l > f === h < f)) return -1;\n if (k < g !== n < g) {\n if (h >= f) {\n if (l > f) c = 1 - c;\n else {\n h = (h - f) * (n - g) - (l - f) * (k - g);\n if (0 === h) return -1;\n 0 < h === n > k && (c = 1 - c);\n }\n } else if (l > f) {\n h = (h - f) * (n - g) - (l - f) * (k - g);\n if (0 === h) return -1;\n 0 < h === n > k && (c = 1 - c);\n }\n }\n h = l;\n k = n;\n }while (d !== b);\n return c;\n };\n d.Clipper.prototype.Poly2ContainsPoly1 = function(a, b) {\n var c = a;\n do {\n var d = this.PointInPolygon(c.Pt, b);\n if (0 <= d) return 0 < d;\n c = c.Next;\n }while (c !== a);\n return !0;\n };\n d.Clipper.prototype.FixupFirstLefts1 = function(a, b) {\n for(var c, e, f = 0, g = this.m_PolyOuts.length; f < g; f++)c = this.m_PolyOuts[f], e = d.Clipper.ParseFirstLeft(c.FirstLeft), null !== c.Pts && e === a && this.Poly2ContainsPoly1(c.Pts, b.Pts) && (c.FirstLeft = b);\n };\n d.Clipper.prototype.FixupFirstLefts2 = function(a, b) {\n for(var c = b.FirstLeft, e, f, g = 0, h = this.m_PolyOuts.length; g < h; g++)if (e = this.m_PolyOuts[g], null !== e.Pts && e !== b && e !== a && (f = d.Clipper.ParseFirstLeft(e.FirstLeft), f === c || f === a || f === b)) {\n if (this.Poly2ContainsPoly1(e.Pts, a.Pts)) e.FirstLeft = a;\n else if (this.Poly2ContainsPoly1(e.Pts, b.Pts)) e.FirstLeft = b;\n else if (e.FirstLeft === a || e.FirstLeft === b) e.FirstLeft = c;\n }\n };\n d.Clipper.prototype.FixupFirstLefts3 = function(a, b) {\n for(var c, e, f = 0, g = this.m_PolyOuts.length; f < g; f++)c = this.m_PolyOuts[f], e = d.Clipper.ParseFirstLeft(c.FirstLeft), null !== c.Pts && e === a && (c.FirstLeft = b);\n };\n d.Clipper.ParseFirstLeft = function(a) {\n for(; null !== a && null === a.Pts;)a = a.FirstLeft;\n return a;\n };\n d.Clipper.prototype.JoinCommonEdges = function() {\n for(var a = 0, b = this.m_Joins.length; a < b; a++){\n var c = this.m_Joins[a], d = this.GetOutRec(c.OutPt1.Idx), f = this.GetOutRec(c.OutPt2.Idx);\n if (null !== d.Pts && null !== f.Pts && !d.IsOpen && !f.IsOpen) {\n var g = d === f ? d : this.OutRec1RightOfOutRec2(d, f) ? f : this.OutRec1RightOfOutRec2(f, d) ? d : this.GetLowermostRec(d, f);\n this.JoinPoints(c, d, f) && (d === f ? (d.Pts = c.OutPt1, d.BottomPt = null, f = this.CreateOutRec(), f.Pts = c.OutPt2, this.UpdateOutPtIdxs(f), this.Poly2ContainsPoly1(f.Pts, d.Pts) ? (f.IsHole = !d.IsHole, f.FirstLeft = d, this.m_UsingPolyTree && this.FixupFirstLefts2(f, d), (f.IsHole ^ this.ReverseSolution) == 0 < this.Area$1(f) && this.ReversePolyPtLinks(f.Pts)) : this.Poly2ContainsPoly1(d.Pts, f.Pts) ? (f.IsHole = d.IsHole, d.IsHole = !f.IsHole, f.FirstLeft = d.FirstLeft, d.FirstLeft = f, this.m_UsingPolyTree && this.FixupFirstLefts2(d, f), (d.IsHole ^ this.ReverseSolution) == 0 < this.Area$1(d) && this.ReversePolyPtLinks(d.Pts)) : (f.IsHole = d.IsHole, f.FirstLeft = d.FirstLeft, this.m_UsingPolyTree && this.FixupFirstLefts1(d, f))) : (f.Pts = null, f.BottomPt = null, f.Idx = d.Idx, d.IsHole = g.IsHole, g === f && (d.FirstLeft = f.FirstLeft), f.FirstLeft = d, this.m_UsingPolyTree && this.FixupFirstLefts3(f, d)));\n }\n }\n };\n d.Clipper.prototype.UpdateOutPtIdxs = function(a) {\n var b = a.Pts;\n do b.Idx = a.Idx, b = b.Prev;\n while (b !== a.Pts);\n };\n d.Clipper.prototype.DoSimplePolygons = function() {\n for(var a = 0; a < this.m_PolyOuts.length;){\n var b = this.m_PolyOuts[a++], c = b.Pts;\n if (null !== c && !b.IsOpen) do {\n for(var e = c.Next; e !== b.Pts;){\n if (d.IntPoint.op_Equality(c.Pt, e.Pt) && e.Next !== c && e.Prev !== c) {\n var f = c.Prev, g = e.Prev;\n c.Prev = g;\n g.Next = c;\n e.Prev = f;\n f.Next = e;\n b.Pts = c;\n f = this.CreateOutRec();\n f.Pts = e;\n this.UpdateOutPtIdxs(f);\n this.Poly2ContainsPoly1(f.Pts, b.Pts) ? (f.IsHole = !b.IsHole, f.FirstLeft = b, this.m_UsingPolyTree && this.FixupFirstLefts2(f, b)) : this.Poly2ContainsPoly1(b.Pts, f.Pts) ? (f.IsHole = b.IsHole, b.IsHole = !f.IsHole, f.FirstLeft = b.FirstLeft, b.FirstLeft = f, this.m_UsingPolyTree && this.FixupFirstLefts2(b, f)) : (f.IsHole = b.IsHole, f.FirstLeft = b.FirstLeft, this.m_UsingPolyTree && this.FixupFirstLefts1(b, f));\n e = c;\n }\n e = e.Next;\n }\n c = c.Next;\n }while (c !== b.Pts);\n }\n };\n d.Clipper.Area = function(a) {\n if (!Array.isArray(a)) return 0;\n var b = a.length;\n if (3 > b) return 0;\n for(var c = 0, d = 0, f = b - 1; d < b; ++d)c += (a[f].X + a[d].X) * (a[f].Y - a[d].Y), f = d;\n return 0.5 * -c;\n };\n d.Clipper.prototype.Area = function(a) {\n var b = a;\n if (null === a) return 0;\n var c = 0;\n do c += (a.Prev.Pt.X + a.Pt.X) * (a.Prev.Pt.Y - a.Pt.Y), a = a.Next;\n while (a !== b);\n return 0.5 * c;\n };\n d.Clipper.prototype.Area$1 = function(a) {\n return this.Area(a.Pts);\n };\n d.Clipper.SimplifyPolygon = function(a, b) {\n var c = [], e = new d.Clipper(0);\n e.StrictlySimple = !0;\n e.AddPath(a, d.PolyType.ptSubject, !0);\n e.Execute(d.ClipType.ctUnion, c, b, b);\n return c;\n };\n d.Clipper.SimplifyPolygons = function(a, b) {\n \"undefined\" === typeof b && (b = d.PolyFillType.pftEvenOdd);\n var c = [], e = new d.Clipper(0);\n e.StrictlySimple = !0;\n e.AddPaths(a, d.PolyType.ptSubject, !0);\n e.Execute(d.ClipType.ctUnion, c, b, b);\n return c;\n };\n d.Clipper.DistanceSqrd = function(a, b) {\n var c = a.X - b.X, d = a.Y - b.Y;\n return c * c + d * d;\n };\n d.Clipper.DistanceFromLineSqrd = function(a, b, c) {\n var d = b.Y - c.Y;\n c = c.X - b.X;\n b = d * b.X + c * b.Y;\n b = d * a.X + c * a.Y - b;\n return b * b / (d * d + c * c);\n };\n d.Clipper.SlopesNearCollinear = function(a, b, c, e) {\n return Math.abs(a.X - b.X) > Math.abs(a.Y - b.Y) ? a.X > b.X === a.X < c.X ? d.Clipper.DistanceFromLineSqrd(a, b, c) < e : b.X > a.X === b.X < c.X ? d.Clipper.DistanceFromLineSqrd(b, a, c) < e : d.Clipper.DistanceFromLineSqrd(c, a, b) < e : a.Y > b.Y === a.Y < c.Y ? d.Clipper.DistanceFromLineSqrd(a, b, c) < e : b.Y > a.Y === b.Y < c.Y ? d.Clipper.DistanceFromLineSqrd(b, a, c) < e : d.Clipper.DistanceFromLineSqrd(c, a, b) < e;\n };\n d.Clipper.PointsAreClose = function(a, b, c) {\n var d = a.X - b.X;\n a = a.Y - b.Y;\n return d * d + a * a <= c;\n };\n d.Clipper.ExcludeOp = function(a) {\n var b = a.Prev;\n b.Next = a.Next;\n a.Next.Prev = b;\n b.Idx = 0;\n return b;\n };\n d.Clipper.CleanPolygon = function(a, b) {\n \"undefined\" === typeof b && (b = 1.415);\n var c = a.length;\n if (0 === c) return [];\n for(var e = Array(c), f = 0; f < c; ++f)e[f] = new d.OutPt();\n for(f = 0; f < c; ++f)e[f].Pt = a[f], e[f].Next = e[(f + 1) % c], e[f].Next.Prev = e[f], e[f].Idx = 0;\n f = b * b;\n for(e = e[0]; 0 === e.Idx && e.Next !== e.Prev;)d.Clipper.PointsAreClose(e.Pt, e.Prev.Pt, f) ? (e = d.Clipper.ExcludeOp(e), c--) : d.Clipper.PointsAreClose(e.Prev.Pt, e.Next.Pt, f) ? (d.Clipper.ExcludeOp(e.Next), e = d.Clipper.ExcludeOp(e), c -= 2) : d.Clipper.SlopesNearCollinear(e.Prev.Pt, e.Pt, e.Next.Pt, f) ? (e = d.Clipper.ExcludeOp(e), c--) : (e.Idx = 1, e = e.Next);\n 3 > c && (c = 0);\n var g = Array(c);\n for(f = 0; f < c; ++f)g[f] = new d.IntPoint1(e.Pt), e = e.Next;\n return g;\n };\n d.Clipper.CleanPolygons = function(a, b) {\n for(var c = Array(a.length), e = 0, f = a.length; e < f; e++)c[e] = d.Clipper.CleanPolygon(a[e], b);\n return c;\n };\n d.Clipper.Minkowski = function(a, b, c, e) {\n e = e ? 1 : 0;\n var f = a.length, g = b.length, h = [];\n if (c) for(c = 0; c < g; c++){\n var k = Array(f);\n for(var l = 0, n = a.length, r = a[l]; l < n; l++, r = a[l])k[l] = new d.IntPoint2(b[c].X + r.X, b[c].Y + r.Y);\n h.push(k);\n }\n else for(c = 0; c < g; c++){\n k = Array(f);\n l = 0;\n n = a.length;\n for(r = a[l]; l < n; l++, r = a[l])k[l] = new d.IntPoint2(b[c].X - r.X, b[c].Y - r.Y);\n h.push(k);\n }\n a = [];\n for(c = 0; c < g - 1 + e; c++)for(l = 0; l < f; l++)b = [], b.push(h[c % g][l % f]), b.push(h[(c + 1) % g][l % f]), b.push(h[(c + 1) % g][(l + 1) % f]), b.push(h[c % g][(l + 1) % f]), d.Clipper.Orientation(b) || b.reverse(), a.push(b);\n return a;\n };\n d.Clipper.MinkowskiSum = function(a, b, c) {\n if (b[0] instanceof Array) {\n var e = b;\n var f = new d.Paths();\n b = new d.Clipper();\n for(var g = 0; g < e.length; ++g){\n var h = d.Clipper.Minkowski(a, e[g], !0, c);\n b.AddPaths(h, d.PolyType.ptSubject, !0);\n c && (h = d.Clipper.TranslatePath(e[g], a[0]), b.AddPath(h, d.PolyType.ptClip, !0));\n }\n b.Execute(d.ClipType.ctUnion, f, d.PolyFillType.pftNonZero, d.PolyFillType.pftNonZero);\n return f;\n }\n e = d.Clipper.Minkowski(a, b, !0, c);\n b = new d.Clipper();\n b.AddPaths(e, d.PolyType.ptSubject, !0);\n b.Execute(d.ClipType.ctUnion, e, d.PolyFillType.pftNonZero, d.PolyFillType.pftNonZero);\n return e;\n };\n d.Clipper.TranslatePath = function(a, b) {\n for(var c = new d.Path(), e = 0; e < a.length; e++)c.push(new d.IntPoint2(a[e].X + b.X, a[e].Y + b.Y));\n return c;\n };\n d.Clipper.MinkowskiDiff = function(a, b) {\n var c = d.Clipper.Minkowski(a, b, !1, !0), e = new d.Clipper();\n e.AddPaths(c, d.PolyType.ptSubject, !0);\n e.Execute(d.ClipType.ctUnion, c, d.PolyFillType.pftNonZero, d.PolyFillType.pftNonZero);\n return c;\n };\n d.Clipper.PolyTreeToPaths = function(a) {\n var b = [];\n d.Clipper.AddPolyNodeToPaths(a, d.Clipper.NodeType.ntAny, b);\n return b;\n };\n d.Clipper.AddPolyNodeToPaths = function(a, b, c) {\n var e = !0;\n switch(b){\n case d.Clipper.NodeType.ntOpen:\n return;\n case d.Clipper.NodeType.ntClosed:\n e = !a.IsOpen;\n }\n 0 < a.m_polygon.length && e && c.push(a.m_polygon);\n e = 0;\n a = a.Childs();\n for(var f = a.length, g = a[e]; e < f; e++, g = a[e])d.Clipper.AddPolyNodeToPaths(g, b, c);\n };\n d.Clipper.OpenPathsFromPolyTree = function(a) {\n for(var b = new d.Paths(), c = 0, e = a.ChildCount(); c < e; c++)a.Childs()[c].IsOpen && b.push(a.Childs()[c].m_polygon);\n return b;\n };\n d.Clipper.ClosedPathsFromPolyTree = function(a) {\n var b = new d.Paths();\n d.Clipper.AddPolyNodeToPaths(a, d.Clipper.NodeType.ntClosed, b);\n return b;\n };\n v(d.Clipper, d.ClipperBase);\n d.Clipper.NodeType = {\n ntAny: 0,\n ntOpen: 1,\n ntClosed: 2\n };\n d.ClipperOffset = function(a, b) {\n \"undefined\" === typeof a && (a = 2);\n \"undefined\" === typeof b && (b = d.ClipperOffset.def_arc_tolerance);\n this.m_destPolys = new d.Paths();\n this.m_srcPoly = new d.Path();\n this.m_destPoly = new d.Path();\n this.m_normals = [];\n this.m_StepsPerRad = this.m_miterLim = this.m_cos = this.m_sin = this.m_sinA = this.m_delta = 0;\n this.m_lowest = new d.IntPoint0();\n this.m_polyNodes = new d.PolyNode();\n this.MiterLimit = a;\n this.ArcTolerance = b;\n this.m_lowest.X = -1;\n };\n d.ClipperOffset.two_pi = 6.28318530717959;\n d.ClipperOffset.def_arc_tolerance = 0.25;\n d.ClipperOffset.prototype.Clear = function() {\n d.Clear(this.m_polyNodes.Childs());\n this.m_lowest.X = -1;\n };\n d.ClipperOffset.Round = d.Clipper.Round;\n d.ClipperOffset.prototype.AddPath = function(a, b, c) {\n var e = a.length - 1;\n if (!(0 > e)) {\n var f = new d.PolyNode();\n f.m_jointype = b;\n f.m_endtype = c;\n if (c === d.EndType.etClosedLine || c === d.EndType.etClosedPolygon) for(; 0 < e && d.IntPoint.op_Equality(a[0], a[e]);)e--;\n f.m_polygon.push(a[0]);\n var g = 0;\n b = 0;\n for(var h = 1; h <= e; h++)d.IntPoint.op_Inequality(f.m_polygon[g], a[h]) && (g++, f.m_polygon.push(a[h]), a[h].Y > f.m_polygon[b].Y || a[h].Y === f.m_polygon[b].Y && a[h].X < f.m_polygon[b].X) && (b = g);\n if (!(c === d.EndType.etClosedPolygon && 2 > g) && (this.m_polyNodes.AddChild(f), c === d.EndType.etClosedPolygon)) {\n if (0 > this.m_lowest.X) this.m_lowest = new d.IntPoint2(this.m_polyNodes.ChildCount() - 1, b);\n else if (a = this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon[this.m_lowest.Y], f.m_polygon[b].Y > a.Y || f.m_polygon[b].Y === a.Y && f.m_polygon[b].X < a.X) this.m_lowest = new d.IntPoint2(this.m_polyNodes.ChildCount() - 1, b);\n }\n }\n };\n d.ClipperOffset.prototype.AddPaths = function(a, b, c) {\n for(var d = 0, f = a.length; d < f; d++)this.AddPath(a[d], b, c);\n };\n d.ClipperOffset.prototype.FixOrientations = function() {\n if (0 <= this.m_lowest.X && !d.Clipper.Orientation(this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon)) for(var a = 0; a < this.m_polyNodes.ChildCount(); a++){\n var b = this.m_polyNodes.Childs()[a];\n (b.m_endtype === d.EndType.etClosedPolygon || b.m_endtype === d.EndType.etClosedLine && d.Clipper.Orientation(b.m_polygon)) && b.m_polygon.reverse();\n }\n else for(a = 0; a < this.m_polyNodes.ChildCount(); a++)b = this.m_polyNodes.Childs()[a], b.m_endtype !== d.EndType.etClosedLine || d.Clipper.Orientation(b.m_polygon) || b.m_polygon.reverse();\n };\n d.ClipperOffset.GetUnitNormal = function(a, b) {\n var c = b.X - a.X, e = b.Y - a.Y;\n if (0 === c && 0 === e) return new d.DoublePoint2(0, 0);\n var f = 1 / Math.sqrt(c * c + e * e);\n return new d.DoublePoint2(e * f, -(c * f));\n };\n d.ClipperOffset.prototype.DoOffset = function(a) {\n var b;\n this.m_destPolys = [];\n this.m_delta = a;\n if (d.ClipperBase.near_zero(a)) for(var c = 0; c < this.m_polyNodes.ChildCount(); c++){\n var e = this.m_polyNodes.Childs()[c];\n e.m_endtype === d.EndType.etClosedPolygon && this.m_destPolys.push(e.m_polygon);\n }\n else {\n this.m_miterLim = 2 < this.MiterLimit ? 2 / (this.MiterLimit * this.MiterLimit) : 0.5;\n var f = 3.14159265358979 / Math.acos(1 - (0 >= this.ArcTolerance ? d.ClipperOffset.def_arc_tolerance : this.ArcTolerance > Math.abs(a) * d.ClipperOffset.def_arc_tolerance ? Math.abs(a) * d.ClipperOffset.def_arc_tolerance : this.ArcTolerance) / Math.abs(a));\n this.m_sin = Math.sin(d.ClipperOffset.two_pi / f);\n this.m_cos = Math.cos(d.ClipperOffset.two_pi / f);\n this.m_StepsPerRad = f / d.ClipperOffset.two_pi;\n 0 > a && (this.m_sin = -this.m_sin);\n for(c = 0; c < this.m_polyNodes.ChildCount(); c++){\n e = this.m_polyNodes.Childs()[c];\n this.m_srcPoly = e.m_polygon;\n var g = this.m_srcPoly.length;\n if (!(0 === g || 0 >= a && (3 > g || e.m_endtype !== d.EndType.etClosedPolygon))) {\n this.m_destPoly = [];\n if (1 === g) {\n if (e.m_jointype === d.JoinType.jtRound) for(g = 1, e = 0, b = 1; b <= f; b++){\n this.m_destPoly.push(new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[0].X + g * a), d.ClipperOffset.Round(this.m_srcPoly[0].Y + e * a)));\n var h = g;\n g = g * this.m_cos - this.m_sin * e;\n e = h * this.m_sin + e * this.m_cos;\n }\n else for(e = g = -1, b = 0; 4 > b; ++b)this.m_destPoly.push(new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[0].X + g * a), d.ClipperOffset.Round(this.m_srcPoly[0].Y + e * a))), 0 > g ? g = 1 : 0 > e ? e = 1 : g = -1;\n } else {\n for(b = this.m_normals.length = 0; b < g - 1; b++)this.m_normals.push(d.ClipperOffset.GetUnitNormal(this.m_srcPoly[b], this.m_srcPoly[b + 1]));\n e.m_endtype === d.EndType.etClosedLine || e.m_endtype === d.EndType.etClosedPolygon ? this.m_normals.push(d.ClipperOffset.GetUnitNormal(this.m_srcPoly[g - 1], this.m_srcPoly[0])) : this.m_normals.push(new d.DoublePoint1(this.m_normals[g - 2]));\n if (e.m_endtype === d.EndType.etClosedPolygon) for(h = g - 1, b = 0; b < g; b++)h = this.OffsetPoint(b, h, e.m_jointype);\n else if (e.m_endtype === d.EndType.etClosedLine) {\n h = g - 1;\n for(b = 0; b < g; b++)h = this.OffsetPoint(b, h, e.m_jointype);\n this.m_destPolys.push(this.m_destPoly);\n this.m_destPoly = [];\n h = this.m_normals[g - 1];\n for(b = g - 1; 0 < b; b--)this.m_normals[b] = new d.DoublePoint2(-this.m_normals[b - 1].X, -this.m_normals[b - 1].Y);\n this.m_normals[0] = new d.DoublePoint2(-h.X, -h.Y);\n h = 0;\n for(b = g - 1; 0 <= b; b--)h = this.OffsetPoint(b, h, e.m_jointype);\n } else {\n h = 0;\n for(b = 1; b < g - 1; ++b)h = this.OffsetPoint(b, h, e.m_jointype);\n e.m_endtype === d.EndType.etOpenButt ? (b = g - 1, h = new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[b].X + this.m_normals[b].X * a), d.ClipperOffset.Round(this.m_srcPoly[b].Y + this.m_normals[b].Y * a)), this.m_destPoly.push(h), h = new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[b].X - this.m_normals[b].X * a), d.ClipperOffset.Round(this.m_srcPoly[b].Y - this.m_normals[b].Y * a)), this.m_destPoly.push(h)) : (b = g - 1, h = g - 2, this.m_sinA = 0, this.m_normals[b] = new d.DoublePoint2(-this.m_normals[b].X, -this.m_normals[b].Y), e.m_endtype === d.EndType.etOpenSquare ? this.DoSquare(b, h) : this.DoRound(b, h));\n for(b = g - 1; 0 < b; b--)this.m_normals[b] = new d.DoublePoint2(-this.m_normals[b - 1].X, -this.m_normals[b - 1].Y);\n this.m_normals[0] = new d.DoublePoint2(-this.m_normals[1].X, -this.m_normals[1].Y);\n h = g - 1;\n for(b = h - 1; 0 < b; --b)h = this.OffsetPoint(b, h, e.m_jointype);\n e.m_endtype === d.EndType.etOpenButt ? (h = new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[0].X - this.m_normals[0].X * a), d.ClipperOffset.Round(this.m_srcPoly[0].Y - this.m_normals[0].Y * a)), this.m_destPoly.push(h), h = new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[0].X + this.m_normals[0].X * a), d.ClipperOffset.Round(this.m_srcPoly[0].Y + this.m_normals[0].Y * a)), this.m_destPoly.push(h)) : (this.m_sinA = 0, e.m_endtype === d.EndType.etOpenSquare ? this.DoSquare(0, 1) : this.DoRound(0, 1));\n }\n }\n this.m_destPolys.push(this.m_destPoly);\n }\n }\n }\n };\n d.ClipperOffset.prototype.Execute = function() {\n var a = arguments;\n if (a[0] instanceof d.PolyTree) {\n var b = a[0];\n var c = a[1];\n b.Clear();\n this.FixOrientations();\n this.DoOffset(c);\n a = new d.Clipper(0);\n a.AddPaths(this.m_destPolys, d.PolyType.ptSubject, !0);\n if (0 < c) a.Execute(d.ClipType.ctUnion, b, d.PolyFillType.pftPositive, d.PolyFillType.pftPositive);\n else {\n var e = d.Clipper.GetBounds(this.m_destPolys);\n c = new d.Path();\n c.push(new d.IntPoint2(e.left - 10, e.bottom + 10));\n c.push(new d.IntPoint2(e.right + 10, e.bottom + 10));\n c.push(new d.IntPoint2(e.right + 10, e.top - 10));\n c.push(new d.IntPoint2(e.left - 10, e.top - 10));\n a.AddPath(c, d.PolyType.ptSubject, !0);\n a.ReverseSolution = !0;\n a.Execute(d.ClipType.ctUnion, b, d.PolyFillType.pftNegative, d.PolyFillType.pftNegative);\n if (1 === b.ChildCount() && 0 < b.Childs()[0].ChildCount()) for(a = b.Childs()[0], b.Childs()[0] = a.Childs()[0], b.Childs()[0].m_Parent = b, c = 1; c < a.ChildCount(); c++)b.AddChild(a.Childs()[c]);\n else b.Clear();\n }\n } else b = a[0], c = a[1], d.Clear(b), this.FixOrientations(), this.DoOffset(c), a = new d.Clipper(0), a.AddPaths(this.m_destPolys, d.PolyType.ptSubject, !0), 0 < c ? a.Execute(d.ClipType.ctUnion, b, d.PolyFillType.pftPositive, d.PolyFillType.pftPositive) : (e = d.Clipper.GetBounds(this.m_destPolys), c = new d.Path(), c.push(new d.IntPoint2(e.left - 10, e.bottom + 10)), c.push(new d.IntPoint2(e.right + 10, e.bottom + 10)), c.push(new d.IntPoint2(e.right + 10, e.top - 10)), c.push(new d.IntPoint2(e.left - 10, e.top - 10)), a.AddPath(c, d.PolyType.ptSubject, !0), a.ReverseSolution = !0, a.Execute(d.ClipType.ctUnion, b, d.PolyFillType.pftNegative, d.PolyFillType.pftNegative), 0 < b.length && b.splice(0, 1));\n };\n d.ClipperOffset.prototype.OffsetPoint = function(a, b, c) {\n this.m_sinA = this.m_normals[b].X * this.m_normals[a].Y - this.m_normals[a].X * this.m_normals[b].Y;\n if (1 > Math.abs(this.m_sinA * this.m_delta)) {\n if (0 < this.m_normals[b].X * this.m_normals[a].X + this.m_normals[a].Y * this.m_normals[b].Y) return this.m_destPoly.push(new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[a].X + this.m_normals[b].X * this.m_delta), d.ClipperOffset.Round(this.m_srcPoly[a].Y + this.m_normals[b].Y * this.m_delta))), b;\n } else 1 < this.m_sinA ? this.m_sinA = 1 : -1 > this.m_sinA && (this.m_sinA = -1);\n if (0 > this.m_sinA * this.m_delta) this.m_destPoly.push(new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[a].X + this.m_normals[b].X * this.m_delta), d.ClipperOffset.Round(this.m_srcPoly[a].Y + this.m_normals[b].Y * this.m_delta))), this.m_destPoly.push(new d.IntPoint1(this.m_srcPoly[a])), this.m_destPoly.push(new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[a].X + this.m_normals[a].X * this.m_delta), d.ClipperOffset.Round(this.m_srcPoly[a].Y + this.m_normals[a].Y * this.m_delta)));\n else switch(c){\n case d.JoinType.jtMiter:\n c = 1 + (this.m_normals[a].X * this.m_normals[b].X + this.m_normals[a].Y * this.m_normals[b].Y);\n c >= this.m_miterLim ? this.DoMiter(a, b, c) : this.DoSquare(a, b);\n break;\n case d.JoinType.jtSquare:\n this.DoSquare(a, b);\n break;\n case d.JoinType.jtRound:\n this.DoRound(a, b);\n }\n return a;\n };\n d.ClipperOffset.prototype.DoSquare = function(a, b) {\n var c = Math.tan(Math.atan2(this.m_sinA, this.m_normals[b].X * this.m_normals[a].X + this.m_normals[b].Y * this.m_normals[a].Y) / 4);\n this.m_destPoly.push(new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[a].X + this.m_delta * (this.m_normals[b].X - this.m_normals[b].Y * c)), d.ClipperOffset.Round(this.m_srcPoly[a].Y + this.m_delta * (this.m_normals[b].Y + this.m_normals[b].X * c))));\n this.m_destPoly.push(new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[a].X + this.m_delta * (this.m_normals[a].X + this.m_normals[a].Y * c)), d.ClipperOffset.Round(this.m_srcPoly[a].Y + this.m_delta * (this.m_normals[a].Y - this.m_normals[a].X * c))));\n };\n d.ClipperOffset.prototype.DoMiter = function(a, b, c) {\n c = this.m_delta / c;\n this.m_destPoly.push(new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[a].X + (this.m_normals[b].X + this.m_normals[a].X) * c), d.ClipperOffset.Round(this.m_srcPoly[a].Y + (this.m_normals[b].Y + this.m_normals[a].Y) * c)));\n };\n d.ClipperOffset.prototype.DoRound = function(a, b) {\n for(var c = Math.max(d.Cast_Int32(d.ClipperOffset.Round(this.m_StepsPerRad * Math.abs(Math.atan2(this.m_sinA, this.m_normals[b].X * this.m_normals[a].X + this.m_normals[b].Y * this.m_normals[a].Y)))), 1), e = this.m_normals[b].X, f = this.m_normals[b].Y, g, h = 0; h < c; ++h)this.m_destPoly.push(new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[a].X + e * this.m_delta), d.ClipperOffset.Round(this.m_srcPoly[a].Y + f * this.m_delta))), g = e, e = e * this.m_cos - this.m_sin * f, f = g * this.m_sin + f * this.m_cos;\n this.m_destPoly.push(new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[a].X + this.m_normals[a].X * this.m_delta), d.ClipperOffset.Round(this.m_srcPoly[a].Y + this.m_normals[a].Y * this.m_delta)));\n };\n d.Error = function(a) {\n try {\n throw Error(a);\n } catch (b) {\n alert(b.message);\n }\n };\n d.JS = {};\n d.JS.AreaOfPolygon = function(a, b) {\n b || (b = 1);\n return d.Clipper.Area(a) / (b * b);\n };\n d.JS.AreaOfPolygons = function(a, b) {\n b || (b = 1);\n for(var c = 0, e = 0; e < a.length; e++)c += d.Clipper.Area(a[e]);\n return c / (b * b);\n };\n d.JS.BoundsOfPath = function(a, b) {\n return d.JS.BoundsOfPaths([\n a\n ], b);\n };\n d.JS.BoundsOfPaths = function(a, b) {\n b || (b = 1);\n var c = d.Clipper.GetBounds(a);\n c.left /= b;\n c.bottom /= b;\n c.right /= b;\n c.top /= b;\n return c;\n };\n d.JS.Clean = function(a, b) {\n if (!(a instanceof Array)) return [];\n var c = a[0] instanceof Array;\n a = d.JS.Clone(a);\n if (\"number\" !== typeof b || null === b) return d.Error(\"Delta is not a number in Clean().\"), a;\n if (0 === a.length || 1 === a.length && 0 === a[0].length || 0 > b) return a;\n c || (a = [\n a\n ]);\n for(var e = a.length, f, g, h, k, l, n, r, p = [], t = 0; t < e; t++)if (g = a[t], f = g.length, 0 !== f) {\n if (3 > f) h = g, p.push(h);\n else {\n h = g;\n k = b * b;\n l = g[0];\n for(r = n = 1; r < f; r++)(g[r].X - l.X) * (g[r].X - l.X) + (g[r].Y - l.Y) * (g[r].Y - l.Y) <= k || (h[n] = g[r], l = g[r], n++);\n l = g[n - 1];\n (g[0].X - l.X) * (g[0].X - l.X) + (g[0].Y - l.Y) * (g[0].Y - l.Y) <= k && n--;\n n < f && h.splice(n, f - n);\n h.length && p.push(h);\n }\n }\n !c && p.length ? p = p[0] : c || 0 !== p.length ? c && 0 === p.length && (p = [\n []\n ]) : p = [];\n return p;\n };\n d.JS.Clone = function(a) {\n if (!(a instanceof Array) || 0 === a.length) return [];\n if (1 === a.length && 0 === a[0].length) return [\n []\n ];\n var b = a[0] instanceof Array;\n b || (a = [\n a\n ]);\n var c = a.length, d, f, g = Array(c);\n for(d = 0; d < c; d++){\n var h = a[d].length;\n var k = Array(h);\n for(f = 0; f < h; f++)k[f] = {\n X: a[d][f].X,\n Y: a[d][f].Y\n };\n g[d] = k;\n }\n b || (g = g[0]);\n return g;\n };\n d.JS.Lighten = function(a, b) {\n if (!(a instanceof Array)) return [];\n if (\"number\" !== typeof b || null === b) return d.Error(\"Tolerance is not a number in Lighten().\"), d.JS.Clone(a);\n if (0 === a.length || 1 === a.length && 0 === a[0].length || 0 > b) return d.JS.Clone(a);\n var c = a[0] instanceof Array;\n c || (a = [\n a\n ]);\n var e, f, g, h = a.length, k = b * b, l = [];\n for(e = 0; e < h; e++){\n var n = a[e];\n var r = n.length;\n if (0 !== r) {\n for(g = 0; 1e6 > g; g++){\n var p = [];\n r = n.length;\n if (n[r - 1].X !== n[0].X || n[r - 1].Y !== n[0].Y) {\n var t = 1;\n n.push({\n X: n[0].X,\n Y: n[0].Y\n });\n r = n.length;\n } else t = 0;\n var u = [];\n for(f = 0; f < r - 2; f++){\n var q = n[f];\n var v = n[f + 1];\n var w = n[f + 2];\n var x = q.X;\n var y = q.Y;\n q = w.X - x;\n var A = w.Y - y;\n if (0 !== q || 0 !== A) {\n var z = ((v.X - x) * q + (v.Y - y) * A) / (q * q + A * A);\n 1 < z ? (x = w.X, y = w.Y) : 0 < z && (x += q * z, y += A * z);\n }\n q = v.X - x;\n A = v.Y - y;\n w = q * q + A * A;\n w <= k && (u[f + 1] = 1, f++);\n }\n p.push({\n X: n[0].X,\n Y: n[0].Y\n });\n for(f = 1; f < r - 1; f++)u[f] || p.push({\n X: n[f].X,\n Y: n[f].Y\n });\n p.push({\n X: n[r - 1].X,\n Y: n[r - 1].Y\n });\n t && n.pop();\n if (u.length) n = p;\n else break;\n }\n r = p.length;\n p[r - 1].X === p[0].X && p[r - 1].Y === p[0].Y && p.pop();\n 2 < p.length && l.push(p);\n }\n }\n c || (l = l[0]);\n \"undefined\" === typeof l && (l = []);\n return l;\n };\n d.JS.PerimeterOfPath = function(a, b, c) {\n if (\"undefined\" === typeof a) return 0;\n var d = Math.sqrt, f = 0, g = a.length;\n if (2 > g) return 0;\n b && (a[g] = a[0], g++);\n for(; --g;){\n var h = a[g];\n var k = h.X;\n h = h.Y;\n var l = a[g - 1];\n var n = l.X;\n l = l.Y;\n f += d((k - n) * (k - n) + (h - l) * (h - l));\n }\n b && a.pop();\n return f / c;\n };\n d.JS.PerimeterOfPaths = function(a, b, c) {\n c || (c = 1);\n for(var e = 0, f = 0; f < a.length; f++)e += d.JS.PerimeterOfPath(a[f], b, c);\n return e;\n };\n d.JS.ScaleDownPath = function(a, b) {\n var c;\n b || (b = 1);\n for(c = a.length; c--;){\n var d = a[c];\n d.X /= b;\n d.Y /= b;\n }\n };\n d.JS.ScaleDownPaths = function(a, b) {\n var c, d;\n b || (b = 1);\n for(c = a.length; c--;)for(d = a[c].length; d--;){\n var f = a[c][d];\n f.X /= b;\n f.Y /= b;\n }\n };\n d.JS.ScaleUpPath = function(a, b) {\n var c, d = Math.round;\n b || (b = 1);\n for(c = a.length; c--;){\n var f = a[c];\n f.X = d(f.X * b);\n f.Y = d(f.Y * b);\n }\n };\n d.JS.ScaleUpPaths = function(a, b) {\n var c, d, f = Math.round;\n b || (b = 1);\n for(c = a.length; c--;)for(d = a[c].length; d--;){\n var g = a[c][d];\n g.X = f(g.X * b);\n g.Y = f(g.Y * b);\n }\n };\n d.ExPolygons = function() {\n return [];\n };\n d.ExPolygon = function() {\n this.holes = this.outer = null;\n };\n d.JS.AddOuterPolyNodeToExPolygons = function(a, b) {\n var c = new d.ExPolygon();\n c.outer = a.Contour();\n var e = a.Childs(), f = e.length;\n c.holes = Array(f);\n var g, h;\n for(g = 0; g < f; g++){\n var k = e[g];\n c.holes[g] = k.Contour();\n var l = 0;\n var n = k.Childs();\n for(h = n.length; l < h; l++)k = n[l], d.JS.AddOuterPolyNodeToExPolygons(k, b);\n }\n b.push(c);\n };\n d.JS.ExPolygonsToPaths = function(a) {\n var b, c, e = new d.Paths();\n var f = 0;\n for(b = a.length; f < b; f++){\n e.push(a[f].outer);\n var g = 0;\n for(c = a[f].holes.length; g < c; g++)e.push(a[f].holes[g]);\n }\n return e;\n };\n d.JS.PolyTreeToExPolygons = function(a) {\n var b = new d.ExPolygons(), c;\n var e = 0;\n var f = a.Childs();\n for(c = f.length; e < c; e++)a = f[e], d.JS.AddOuterPolyNodeToExPolygons(a, b);\n return b;\n };\n})();\n\n\nconst $a8b194ee5ee2de37$var$solidityKeccak256 = (stringTypes, values)=>{\n return (0, $70d1698339832295$export$f8151fce47ad1c35)((0, $c35d3b9dae26c1f3$export$92dace262a9f3722)(stringTypes, values));\n};\nfunction $a8b194ee5ee2de37$var$randomRange(min, max, seed) {\n return parseInt(BigInt(seed) % (BigInt(max) - BigInt(min) + 1n) + BigInt(min));\n}\nconst $a8b194ee5ee2de37$var$urlInfo = window.location.hash.substr(1).split(\"-\");\nlet $a8b194ee5ee2de37$var$tokenId = parseInt($a8b194ee5ee2de37$var$urlInfo[0]);\nlet $a8b194ee5ee2de37$var$backgroundOffset = 0;\nlet $a8b194ee5ee2de37$var$backgroundOverride = window.backgroundOverride || $a8b194ee5ee2de37$var$urlInfo.length > 1 ? parseInt($a8b194ee5ee2de37$var$urlInfo[1]) : false;\nif (!$a8b194ee5ee2de37$var$tokenId) $a8b194ee5ee2de37$var$tokenId = Math.floor(Math.random() * 150) + 1;\nconsole.log({\n tokenId: $a8b194ee5ee2de37$var$tokenId\n});\nlet $a8b194ee5ee2de37$var$seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"uint256\"\n], [\n $a8b194ee5ee2de37$var$tokenId\n]);\nif ($a8b194ee5ee2de37$var$tokenId == 1 && $a8b194ee5ee2de37$var$seed !== \"0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6\") throw new Error(\"invalid token id should be 0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6\");\nconst $a8b194ee5ee2de37$var$R = new (0, $b8d51e053fccc1ae$export$a92776769f460054)($a8b194ee5ee2de37$var$seed);\nlet $a8b194ee5ee2de37$var$svg;\nlet $a8b194ee5ee2de37$var$win_w = window.innerWidth;\nlet $a8b194ee5ee2de37$var$win_h = window.innerHeight;\nlet $a8b194ee5ee2de37$var$largestSide = $a8b194ee5ee2de37$var$win_w >= $a8b194ee5ee2de37$var$win_h ? $a8b194ee5ee2de37$var$win_w : $a8b194ee5ee2de37$var$win_h;\nvar $a8b194ee5ee2de37$var$marginFactor = $a8b194ee5ee2de37$var$R.int(3, 10);\nvar $a8b194ee5ee2de37$var$margin = parseInt($a8b194ee5ee2de37$var$largestSide / $a8b194ee5ee2de37$var$marginFactor);\nvar $a8b194ee5ee2de37$var$amount = $a8b194ee5ee2de37$var$R.int(100, 500);\nvar $a8b194ee5ee2de37$var$elWidth = $a8b194ee5ee2de37$var$R.int(2, 300);\nvar $a8b194ee5ee2de37$var$elHeight = $a8b194ee5ee2de37$var$R.int(2, 300);\nvar $a8b194ee5ee2de37$var$angle = $a8b194ee5ee2de37$var$R.int(0, 360);\nconst $a8b194ee5ee2de37$var$showHole = $a8b194ee5ee2de37$var$randomRange(0, 10, $a8b194ee5ee2de37$var$seed) == 0;\nlet $a8b194ee5ee2de37$var$configSeed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n], [\n $a8b194ee5ee2de37$var$seed\n]);\nconst $a8b194ee5ee2de37$var$showRectangles = $a8b194ee5ee2de37$var$showHole || $a8b194ee5ee2de37$var$randomRange(0, 1, $a8b194ee5ee2de37$var$configSeed) == 0;\n$a8b194ee5ee2de37$var$configSeed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n], [\n $a8b194ee5ee2de37$var$configSeed\n]);\nconst $a8b194ee5ee2de37$var$showPolygons = $a8b194ee5ee2de37$var$showHole || !$a8b194ee5ee2de37$var$showRectangles || $a8b194ee5ee2de37$var$randomRange(0, 1, $a8b194ee5ee2de37$var$configSeed) == 0;\n$a8b194ee5ee2de37$var$configSeed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n], [\n $a8b194ee5ee2de37$var$configSeed\n]);\nconst $a8b194ee5ee2de37$var$showGrid = $a8b194ee5ee2de37$var$randomRange(0, 3, $a8b194ee5ee2de37$var$configSeed) == 0;\n$a8b194ee5ee2de37$var$configSeed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n], [\n $a8b194ee5ee2de37$var$configSeed\n]);\nconst $a8b194ee5ee2de37$var$showStar = $a8b194ee5ee2de37$var$randomRange(0, 10, $a8b194ee5ee2de37$var$configSeed) == 0;\n$a8b194ee5ee2de37$var$configSeed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n], [\n $a8b194ee5ee2de37$var$configSeed\n]);\nconst $a8b194ee5ee2de37$var$showFrame = $a8b194ee5ee2de37$var$randomRange(0, 2, $a8b194ee5ee2de37$var$configSeed) == 0;\n$a8b194ee5ee2de37$var$configSeed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n], [\n $a8b194ee5ee2de37$var$configSeed\n]);\nconst $a8b194ee5ee2de37$var$rotateAllRectangles = $a8b194ee5ee2de37$var$randomRange(0, 1, $a8b194ee5ee2de37$var$configSeed) == 0;\nlet $a8b194ee5ee2de37$var$gridVal = $a8b194ee5ee2de37$var$R.int(5, 10);\nlet $a8b194ee5ee2de37$var$gridMargin = $a8b194ee5ee2de37$var$R.int(1, 3);\nlet $a8b194ee5ee2de37$var$gridCLipType = $a8b194ee5ee2de37$var$R.int(0, 2);\nlet $a8b194ee5ee2de37$var$frameAmount = $a8b194ee5ee2de37$var$R.int(4, 50);\n// if (showHole) {\n// showRectangles = true;\n// showPolygons = true;\n// }\nlet $a8b194ee5ee2de37$var$selectionObjectsOrigin = {\n x: $a8b194ee5ee2de37$var$R.int($a8b194ee5ee2de37$var$margin, $a8b194ee5ee2de37$var$win_w - $a8b194ee5ee2de37$var$margin * 2),\n y: $a8b194ee5ee2de37$var$R.int($a8b194ee5ee2de37$var$margin, $a8b194ee5ee2de37$var$win_h - $a8b194ee5ee2de37$var$margin * 2)\n};\nlet $a8b194ee5ee2de37$var$selectionObjects = $a8b194ee5ee2de37$var$generateEmptySelectionObjects();\nlet $a8b194ee5ee2de37$var$polygonObjects = $a8b194ee5ee2de37$var$generatePolygonObjects();\n// window.removeEventListener(\"load\", init); // TODO: try this if init is called many times\nwindow.onload = $a8b194ee5ee2de37$var$init;\nfunction $a8b194ee5ee2de37$var$init() {\n console.log(\"init\"); // TODO: remove before mainnet\n $a8b194ee5ee2de37$var$svg = document.querySelector(\"svg\");\n $a8b194ee5ee2de37$var$svg.onclick = function() {\n $a8b194ee5ee2de37$var$backgroundOffset++;\n $a8b194ee5ee2de37$var$setBg($a8b194ee5ee2de37$var$seed);\n };\n $a8b194ee5ee2de37$var$setBg($a8b194ee5ee2de37$var$seed);\n $a8b194ee5ee2de37$var$renderSelections();\n}\nfunction $a8b194ee5ee2de37$var$generateEmptySelectionObjects() {\n let sa = [];\n for(let i = 0; i < 1000; i++){\n let s = new $a8b194ee5ee2de37$var$SelectionObject();\n sa.push(s);\n }\n return sa;\n}\nfunction $a8b194ee5ee2de37$var$SelectionObject() {\n this.x = 0;\n this.y = 0;\n this.w = 0;\n this.h = 0;\n this.xR = $a8b194ee5ee2de37$var$R.float();\n this.yR = $a8b194ee5ee2de37$var$R.float();\n this.wR = $a8b194ee5ee2de37$var$R.float();\n this.hR = $a8b194ee5ee2de37$var$R.float();\n this.getPath = function() {\n this.marginize();\n let p = [\n [\n {\n X: this.x,\n Y: this.y\n },\n {\n X: this.x + this.w,\n Y: this.y\n },\n {\n X: this.x + this.w,\n Y: this.y + this.h\n },\n {\n X: this.x,\n Y: this.y + this.h\n }\n ]\n ];\n return p;\n };\n this.setValue = function(p, v) {\n this[p] = parseInt(v);\n };\n this.marginize = function() {\n if (this.x + this.w > $a8b194ee5ee2de37$var$win_w) this.x = $a8b194ee5ee2de37$var$win_w - this.w;\n if (this.x < 0) this.x = 0;\n if (this.y + this.h > $a8b194ee5ee2de37$var$win_h) this.y = $a8b194ee5ee2de37$var$win_h - this.h;\n if (this.y < 0) this.y = 0;\n };\n}\nfunction $a8b194ee5ee2de37$var$generatePolygonObjects() {\n let pa = [];\n for(let i = 0; i < 1; i++){\n let p = new $a8b194ee5ee2de37$var$PolygonObject();\n p.createRn();\n pa.push(p);\n }\n return pa;\n}\nfunction $a8b194ee5ee2de37$var$PolygonObject() {\n this.startX = $a8b194ee5ee2de37$var$R.int($a8b194ee5ee2de37$var$margin, $a8b194ee5ee2de37$var$win_w - $a8b194ee5ee2de37$var$margin);\n this.startY = $a8b194ee5ee2de37$var$R.int($a8b194ee5ee2de37$var$margin, $a8b194ee5ee2de37$var$win_h - $a8b194ee5ee2de37$var$margin);\n this.polyLength = $a8b194ee5ee2de37$var$R.int(400, 1000);\n this.stepVar = $a8b194ee5ee2de37$var$R.int(100, 1000);\n this.rnArray = [];\n this.path;\n this.marginVar = $a8b194ee5ee2de37$var$R.int(1, 30);\n this.applyMargin = $a8b194ee5ee2de37$var$R.int(0, 2) == 0 ? false : true;\n this.makePolygon = function() {\n this.path = [\n []\n ];\n let polX = parseInt(this.startX);\n let polY = parseInt(this.startY);\n this.path[0].push({\n X: polX,\n Y: polY\n });\n let expon = Math.round(this.rnArray[0]) == 0 ? false : true;\n for(let i = 0; i < this.polyLength; i++){\n if (expon) {\n polX += -1 * i + parseInt(this.rnArray[i * 2] * 2 * i);\n polY += -1 * i + parseInt(this.rnArray[i * 2 + 1] * 2 * i);\n } else {\n polX += -1 * this.stepVar + this.rnArray[i * 2] * this.stepVar * 2;\n polY += -1 * this.stepVar + this.rnArray[i * 2 + 1] * this.stepVar * 2;\n // -1000 + 0.4 * 1000 * 2 - 1000 + 0.3 * 1000 * 2; // TODO: add this back?\n }\n if (this.applyMargin) {\n polX = this.marginize(polX, \"w\", i);\n polY = this.marginize(polY, \"h\", i);\n }\n this.path[0].push({\n X: polX,\n Y: polY\n });\n }\n this.path[0].push({\n X: parseInt(this.startX),\n Y: parseInt(this.startY)\n });\n };\n this.createRn = function() {\n for(let i = 0; i < this.polyLength * 2; i++)this.rnArray.push($a8b194ee5ee2de37$var$R.float());\n };\n this.marginize = function(pos, dim, i) {\n if (dim == \"w\") {\n if (pos > $a8b194ee5ee2de37$var$win_w - $a8b194ee5ee2de37$var$margin) pos = $a8b194ee5ee2de37$var$win_w - $a8b194ee5ee2de37$var$margin - this.marginVar + parseInt(this.rnArray[i * 2] * this.marginVar * 2);\n else if (pos < $a8b194ee5ee2de37$var$margin) pos = $a8b194ee5ee2de37$var$margin - this.marginVar + parseInt(this.rnArray[i * 2] * this.marginVar * 2);\n } else if (dim == \"h\") {\n if (pos > $a8b194ee5ee2de37$var$win_h - $a8b194ee5ee2de37$var$margin) pos = $a8b194ee5ee2de37$var$win_h - $a8b194ee5ee2de37$var$margin - this.marginVar + parseInt(this.rnArray[i * 2 + 1] * this.marginVar * 2);\n if (pos < $a8b194ee5ee2de37$var$margin) pos = $a8b194ee5ee2de37$var$margin - this.marginVar + parseInt(this.rnArray[i * 2 + 1] * this.marginVar * 2);\n }\n return pos;\n };\n this.getPath = function() {\n return this.path;\n };\n}\nfunction $a8b194ee5ee2de37$var$renderSelections(treatAllAsTrue = false) {\n console.log(\"renderSelections\");\n // let solution_paths;\n let clip_paths;\n let subj_paths = [\n [\n {\n X: $a8b194ee5ee2de37$var$win_w / 2 * -1,\n Y: $a8b194ee5ee2de37$var$win_h / 2\n },\n {\n X: $a8b194ee5ee2de37$var$win_w / 2 * -1 + 1,\n Y: $a8b194ee5ee2de37$var$win_h / 2\n },\n {\n X: $a8b194ee5ee2de37$var$win_w / 2 * -1 + 1,\n Y: $a8b194ee5ee2de37$var$win_h / 2 + 1\n },\n {\n X: $a8b194ee5ee2de37$var$win_w / 2 * -1,\n Y: $a8b194ee5ee2de37$var$win_h / 2 + 1\n }\n ]\n ];\n // rectangles\n if ($a8b194ee5ee2de37$var$showRectangles || treatAllAsTrue) {\n let sx = $a8b194ee5ee2de37$var$selectionObjectsOrigin.x;\n let sy = $a8b194ee5ee2de37$var$selectionObjectsOrigin.y;\n for(let i = 0; i < $a8b194ee5ee2de37$var$amount; i++){\n $a8b194ee5ee2de37$var$selectionObjects[i].setValue(\"w\", 1 + $a8b194ee5ee2de37$var$elWidth * $a8b194ee5ee2de37$var$selectionObjects[i].wR);\n $a8b194ee5ee2de37$var$selectionObjects[i].setValue(\"h\", 1 + $a8b194ee5ee2de37$var$elHeight * $a8b194ee5ee2de37$var$selectionObjects[i].hR);\n $a8b194ee5ee2de37$var$selectionObjects[i].setValue(\"x\", sx);\n $a8b194ee5ee2de37$var$selectionObjects[i].setValue(\"y\", sy);\n sx += 100 - parseInt($a8b194ee5ee2de37$var$selectionObjects[i].xR * 200);\n sy += 100 - parseInt($a8b194ee5ee2de37$var$selectionObjects[i].yR * 200);\n clip_paths = $a8b194ee5ee2de37$var$selectionObjects[i].getPath();\n let angles = $a8b194ee5ee2de37$var$rotateAllRectangles ? $a8b194ee5ee2de37$var$angle : parseInt(360 * $a8b194ee5ee2de37$var$selectionObjects[i].wR);\n clip_paths = $a8b194ee5ee2de37$var$rotatePath(angles, clip_paths);\n subj_paths = $a8b194ee5ee2de37$var$clipPathToAll(subj_paths, clip_paths, \"union\");\n }\n }\n // polygons\n if ($a8b194ee5ee2de37$var$showPolygons || treatAllAsTrue) {\n let poly = $a8b194ee5ee2de37$var$polygonObjects[0];\n poly.makePolygon();\n clip_paths = poly.getPath();\n let fillTypes = [\n (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).PolyFillType.pftNegative,\n (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).PolyFillType.pftPositive\n ];\n const clip_paths_simp = (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).Clipper.SimplifyPolygons(clip_paths, fillTypes[0]);\n subj_paths = $a8b194ee5ee2de37$var$clipPathToAll(subj_paths, clip_paths_simp, \"union\");\n }\n // grid\n if ($a8b194ee5ee2de37$var$showGrid || treatAllAsTrue) {\n let gridSize = $a8b194ee5ee2de37$var$largestSide / $a8b194ee5ee2de37$var$gridVal;\n let clip_paths = [\n []\n ];\n for(let i = 0; i <= $a8b194ee5ee2de37$var$largestSide / gridSize; i++)for(let j = 0; j <= $a8b194ee5ee2de37$var$largestSide / gridSize; j++)clip_paths.push([\n {\n X: i * gridSize + $a8b194ee5ee2de37$var$gridMargin,\n Y: j * gridSize + $a8b194ee5ee2de37$var$gridMargin\n },\n {\n X: i * gridSize + gridSize - $a8b194ee5ee2de37$var$gridMargin,\n Y: j * gridSize + $a8b194ee5ee2de37$var$gridMargin\n },\n {\n X: i * gridSize + gridSize - $a8b194ee5ee2de37$var$gridMargin,\n Y: j * gridSize + gridSize - $a8b194ee5ee2de37$var$gridMargin\n },\n {\n X: i * gridSize + $a8b194ee5ee2de37$var$gridMargin,\n Y: j * gridSize + gridSize - $a8b194ee5ee2de37$var$gridMargin\n }\n ]);\n let clipTypes = [\n \"difference\",\n \"intersection\",\n \"union\"\n ];\n subj_paths = $a8b194ee5ee2de37$var$clipPathToAll(subj_paths, clip_paths, clipTypes[$a8b194ee5ee2de37$var$gridCLipType]);\n }\n // star\n if ($a8b194ee5ee2de37$var$showStar || treatAllAsTrue) {\n let largestSide = $a8b194ee5ee2de37$var$win_w >= $a8b194ee5ee2de37$var$win_h ? $a8b194ee5ee2de37$var$win_w : $a8b194ee5ee2de37$var$win_h;\n let gridSize = largestSide / $a8b194ee5ee2de37$var$gridVal;\n let clip_paths = [\n []\n ];\n for(let i = 0; i <= largestSide / gridSize; i++)for(let j = 0; j <= largestSide / gridSize; j++){\n clip_paths = [\n [\n {\n X: i * gridSize,\n Y: j * gridSize\n },\n {\n X: i + gridSize,\n Y: j\n },\n {\n X: i + gridSize,\n Y: j + gridSize\n },\n {\n X: i,\n Y: j + gridSize\n }\n ]\n ]; //star\n subj_paths = $a8b194ee5ee2de37$var$clipPathToAll(subj_paths, clip_paths, \"union\");\n }\n }\n // frames\n if ($a8b194ee5ee2de37$var$showFrame || treatAllAsTrue) {\n let clip_paths = [\n []\n ];\n for(let i = 0; i < $a8b194ee5ee2de37$var$frameAmount; i += 2){\n let v = i * $a8b194ee5ee2de37$var$R.int(2, 20);\n const clip_path1 = [\n [\n {\n X: v + 10,\n Y: v + 10\n },\n {\n X: $a8b194ee5ee2de37$var$win_w - v - 10,\n Y: v + 10\n },\n {\n X: $a8b194ee5ee2de37$var$win_w - v - 10,\n Y: $a8b194ee5ee2de37$var$win_h - v - 10\n },\n {\n X: v + 10,\n Y: $a8b194ee5ee2de37$var$win_h - v - 10\n }\n ],\n [\n {\n X: v * 2 + 10,\n Y: v * 2 + 10\n },\n {\n X: v + 10,\n Y: v + 10\n }\n ]\n ];\n const clip_path2 = [\n [\n {\n X: v + 20,\n Y: v + 20\n },\n {\n X: $a8b194ee5ee2de37$var$win_w - v - 20,\n Y: v + 20\n },\n {\n X: $a8b194ee5ee2de37$var$win_w - v - 20,\n Y: $a8b194ee5ee2de37$var$win_h - v - 20\n },\n {\n X: v + 20,\n Y: $a8b194ee5ee2de37$var$win_h - v - 20\n },\n {\n X: v + 20,\n Y: v + 20\n }\n ]\n ];\n clip_paths = $a8b194ee5ee2de37$var$clipPathToAll(clip_path1, clip_path2, \"difference\");\n subj_paths = $a8b194ee5ee2de37$var$clipPathToAll(subj_paths, clip_paths, \"union\");\n }\n }\n //viewport clipping\n clip_paths = [\n [\n {\n X: 0,\n Y: 0\n },\n {\n X: $a8b194ee5ee2de37$var$win_w,\n Y: 0\n },\n {\n X: $a8b194ee5ee2de37$var$win_w,\n Y: $a8b194ee5ee2de37$var$win_h\n },\n {\n X: 0,\n Y: $a8b194ee5ee2de37$var$win_h\n }\n ]\n ];\n subj_paths = $a8b194ee5ee2de37$var$clipPathToAll(subj_paths, clip_paths, \"intersection\");\n //center hole\n if ($a8b194ee5ee2de37$var$showHole || treatAllAsTrue) {\n let ch_w = $a8b194ee5ee2de37$var$win_w / 2 + $a8b194ee5ee2de37$var$selectionObjects[0].wR * $a8b194ee5ee2de37$var$margin;\n let ch_h = $a8b194ee5ee2de37$var$win_h / 2 + $a8b194ee5ee2de37$var$selectionObjects[0].hR * $a8b194ee5ee2de37$var$margin;\n let ch_x = ($a8b194ee5ee2de37$var$win_w - ch_w) / 2;\n let ch_y = ($a8b194ee5ee2de37$var$win_h - ch_h) / 2;\n clip_paths = [\n [\n {\n X: ch_x,\n Y: ch_y\n },\n {\n X: ch_x + ch_w,\n Y: ch_y\n },\n {\n X: ch_x + ch_w,\n Y: ch_y + ch_h\n },\n {\n X: ch_x,\n Y: ch_y + ch_h\n }\n ]\n ];\n subj_paths = $a8b194ee5ee2de37$var$clipPathToAll(subj_paths, clip_paths, \"difference\");\n }\n let svgPath = $a8b194ee5ee2de37$var$paths2string(subj_paths);\n // if path empty show all styles\n if (svgPath == \"M0,0\" && !treatAllAsTrue) $a8b194ee5ee2de37$var$renderSelections(true);\n else if (svgPath == \"M0,0\") console.error(`empty path on token ID after setting treatAllAsTrue ${$a8b194ee5ee2de37$var$tokenId}`);\n else document.querySelector(\"#selectionPath\").setAttribute(\"d\", svgPath);\n}\nfunction $a8b194ee5ee2de37$var$clipPathToAll(subj_paths, clip_paths, type) {\n // type: 'intersection', 'union' or 'difference';\n let cpr = new (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).Clipper();\n (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).JS.ScaleUpPaths(subj_paths, 1);\n (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).JS.ScaleUpPaths(clip_paths, 1);\n cpr.AddPaths(subj_paths, (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).PolyType.ptSubject, true);\n cpr.AddPaths(clip_paths, (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).PolyType.ptClip, true);\n let subject_fillType = (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).PolyFillType.pftNonZero;\n let clip_fillType = (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).PolyFillType.pftNonZero;\n const solution_paths = new (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).Paths();\n type = type.charAt(0).toUpperCase() + type.slice(1);\n cpr.Execute((0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).ClipType[\"ct\" + type], solution_paths, subject_fillType, clip_fillType);\n return solution_paths;\n}\nfunction $a8b194ee5ee2de37$var$paths2string(paths) {\n let svgpath = \"\", i, j;\n let scale = 1;\n for(i = 0; i < paths.length; i++){\n for(j = 0; j < paths[i].length; j++){\n if (!j) svgpath += \"M\";\n else svgpath += \"L\";\n svgpath += paths[i][j].X / scale + \", \" + paths[i][j].Y / scale;\n }\n svgpath += \"Z\";\n }\n if (svgpath == \"\") svgpath = \"M0,0\";\n return svgpath;\n}\nfunction $a8b194ee5ee2de37$var$rotatePath(angle, path) {\n const pA = [\n path[0][0].X,\n path[0][0].Y\n ];\n const pB = $a8b194ee5ee2de37$var$rotateCoordinate(path[0][0].X, path[0][0].Y, path[0][1].X, path[0][1].Y, angle);\n const pC = $a8b194ee5ee2de37$var$rotateCoordinate(path[0][0].X, path[0][0].Y, path[0][2].X, path[0][2].Y, angle);\n const pD = $a8b194ee5ee2de37$var$rotateCoordinate(path[0][0].X, path[0][0].Y, path[0][3].X, path[0][3].Y, angle);\n let rotatedPath = [\n [\n {\n X: pA[0],\n Y: pA[1]\n },\n {\n X: pB[0],\n Y: pB[1]\n },\n {\n X: pC[0],\n Y: pC[1]\n },\n {\n X: pD[0],\n Y: pD[1]\n }\n ]\n ];\n return rotatedPath;\n}\nfunction $a8b194ee5ee2de37$var$rotateCoordinate(cx, cy, x, y, angle) {\n var radians = Math.PI / 180 * angle, cos = Math.cos(radians), sin = Math.sin(radians), nx = cos * (x - cx) + sin * (y - cy) + cx, ny = cos * (y - cy) - sin * (x - cx) + cy;\n return [\n nx,\n ny\n ];\n}\nfunction $a8b194ee5ee2de37$var$setBg(seed) {\n let solidsArray = [\n \"rgb(123,50,50)\",\n \"rgb(50,123,50)\",\n \"rgb(50,50,123)\"\n ];\n const solidColor = $a8b194ee5ee2de37$var$randomRange(0, 2, seed);\n const solidColorString = solidsArray[solidColor];\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n const solidOverGrad = $a8b194ee5ee2de37$var$randomRange(0, 10, seed) == 0 ? true : false;\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n const grayOverColor = $a8b194ee5ee2de37$var$randomRange(0, 5, seed) == 0 ? true : false;\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n const bgStyleRand = $a8b194ee5ee2de37$var$randomRange(1, 10, seed);\n const totalStyles = 4;\n let bgState = ((bgStyleRand <= 7 ? 0 : bgStyleRand <= 8 ? 1 : bgStyleRand <= 9 ? 2 : 3) + $a8b194ee5ee2de37$var$backgroundOffset) % totalStyles;\n let finalColor, gradAngle, dark;\n if (bgState == 0) {\n if (solidOverGrad) finalColor = \"background-color: \" + solidColorString;\n else if (grayOverColor) {\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n gradAngle = $a8b194ee5ee2de37$var$randomRange(0, 90, seed);\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n const gray1Val = $a8b194ee5ee2de37$var$randomRange(0, 150, seed);\n const gray1 = `rgb(${gray1Val},${gray1Val},${gray1Val})`;\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n const gray2Val = $a8b194ee5ee2de37$var$randomRange(150, 255, seed);\n const gray2 = `rgb(${gray2Val},${gray2Val},${gray2Val})`;\n finalColor = `background: linear-gradient(${gradAngle}deg, ${gray1} 0%, ${gray2} 100%)`;\n } else {\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n gradAngle = $a8b194ee5ee2de37$var$randomRange(0, 90, seed);\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n dark = $a8b194ee5ee2de37$var$randomRange(100, 150, seed);\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n let color1R = $a8b194ee5ee2de37$var$randomRange(50, dark, seed);\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n let color1G = $a8b194ee5ee2de37$var$randomRange(50, dark, seed);\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n let color1B = $a8b194ee5ee2de37$var$randomRange(50, dark, seed);\n const color1 = `rgb(${color1R},${color1G},${color1B})`;\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n const addOrSubtract = $a8b194ee5ee2de37$var$randomRange(0, 1, seed) == 0 ? true : false;\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n const colorOffset = $a8b194ee5ee2de37$var$randomRange(0, 100, seed);\n if (addOrSubtract) {\n color1R = color1R + colorOffset > 255 ? 255 : color1R + colorOffset;\n color1G = color1G + colorOffset > 255 ? 255 : color1G + colorOffset;\n color1B = color1B + colorOffset > 255 ? 255 : color1B + colorOffset;\n } else {\n color1R = color1R - colorOffset < 0 ? 0 : color1R - colorOffset;\n color1G = color1G - colorOffset < 0 ? 0 : color1G - colorOffset;\n color1B = color1B - colorOffset < 0 ? 0 : color1B - colorOffset;\n }\n const color2 = `rgb(${color1R},${color1G},${color1B})`;\n finalColor = `background: linear-gradient(${gradAngle}deg, ${color1} 0%, ${color2} 100%)`;\n }\n } else if (bgState == 1) finalColor = \"background-color: white\";\n else if (bgState == 2) finalColor = \"background-color: black\";\n else finalColor = `background-image: linear-gradient(45deg, #cbcccb 25%, transparent 25%), linear-gradient(-45deg, #cbcccb 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #cbcccb 75%), linear-gradient(-45deg, transparent 75%, #cbcccb 75%);\n background-size: 8px 8px;\n background-position: 0 0, 0 4px, 4px -4px, -4px 0px;`;\n document.getElementsByTagName(\"svg\")[0].style = finalColor;\n}\nlet $a8b194ee5ee2de37$var$resizeTimer;\nwindow.onresize = function() {\n console.log(\"clearTimeout\", $a8b194ee5ee2de37$var$resizeTimer); // TODO: remove before mainnet\n clearTimeout($a8b194ee5ee2de37$var$resizeTimer);\n $a8b194ee5ee2de37$var$resizeTimer = setTimeout($a8b194ee5ee2de37$var$resizeEnded, 500);\n};\nfunction $a8b194ee5ee2de37$var$resizeEnded() {\n console.log(\"resizeEnded\"); // TODO: remove before mainnet\n $a8b194ee5ee2de37$var$win_w = window.innerWidth; // tool width added\n $a8b194ee5ee2de37$var$win_h = window.innerHeight;\n $a8b194ee5ee2de37$var$largestSide = $a8b194ee5ee2de37$var$win_w >= $a8b194ee5ee2de37$var$win_h ? $a8b194ee5ee2de37$var$win_w : $a8b194ee5ee2de37$var$win_h;\n $a8b194ee5ee2de37$var$margin = parseInt($a8b194ee5ee2de37$var$largestSide / $a8b194ee5ee2de37$var$marginFactor);\n $a8b194ee5ee2de37$var$renderSelections();\n}\n\n\n//# sourceMappingURL=selection.js.map\n","import { encodePacked, keccak256 } from \"viem\";\n\nconst solidityKeccak256 = (stringTypes, values) => {\n return keccak256(encodePacked(stringTypes, values));\n};\n\nfunction randomRange(min, max, seed) {\n return parseInt(\n (BigInt(seed) % (BigInt(max) - BigInt(min) + 1n)) + BigInt(min)\n );\n}\n\nconst urlInfo = window.location.hash.substr(1).split(\"-\");\nlet tokenId = parseInt(urlInfo[0]);\nlet backgroundOffset = 0;\nlet backgroundOverride =\n window.backgroundOverride || urlInfo.length > 1\n ? parseInt(urlInfo[1])\n : false;\nif (!tokenId) {\n tokenId = Math.floor(Math.random() * 150) + 1;\n // if (!tokenId) {\n // throw new Error(\n // \"no token id, please add to url like https://website.domain#tokenId\"\n // );\n // }\n}\nconsole.log({ tokenId });\n\nlet seed = solidityKeccak256([\"uint256\"], [tokenId]);\nif (\n tokenId == 1 &&\n seed !== \"0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6\"\n) {\n throw new Error(\n \"invalid token id should be \" +\n \"0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6\"\n );\n}\n\nimport { Random } from \"./random.js\";\nconst R = new Random(seed);\n\nimport ClipperLib from \"./clipper.js\";\n\nlet svg;\n\nlet win_w = window.innerWidth;\nlet win_h = window.innerHeight;\n\nlet largestSide = win_w >= win_h ? win_w : win_h;\n\nvar marginFactor = R.int(3, 10);\nvar margin = parseInt(largestSide / marginFactor);\nvar amount = R.int(100, 500);\nvar elWidth = R.int(2, 300);\nvar elHeight = R.int(2, 300);\nvar angle = R.int(0, 360);\n\nconst showHole = randomRange(0, 10, seed) == 0;\n\nlet configSeed = solidityKeccak256([\"bytes32\"], [seed]);\nconst showRectangles = showHole || randomRange(0, 1, configSeed) == 0;\n\nconfigSeed = solidityKeccak256([\"bytes32\"], [configSeed]);\nconst showPolygons =\n showHole || !showRectangles || randomRange(0, 1, configSeed) == 0;\n\nconfigSeed = solidityKeccak256([\"bytes32\"], [configSeed]);\nconst showGrid = randomRange(0, 3, configSeed) == 0;\n\nconfigSeed = solidityKeccak256([\"bytes32\"], [configSeed]);\nconst showStar = randomRange(0, 10, configSeed) == 0;\n\nconfigSeed = solidityKeccak256([\"bytes32\"], [configSeed]);\nconst showFrame = randomRange(0, 2, configSeed) == 0;\n\nconfigSeed = solidityKeccak256([\"bytes32\"], [configSeed]);\nconst rotateAllRectangles = randomRange(0, 1, configSeed) == 0;\n\nlet gridVal = R.int(5, 10);\nlet gridMargin = R.int(1, 3);\nlet gridCLipType = R.int(0, 2);\nlet frameAmount = R.int(4, 50);\n// if (showHole) {\n// showRectangles = true;\n// showPolygons = true;\n// }\n\nlet selectionObjectsOrigin = {\n x: R.int(margin, win_w - margin * 2),\n y: R.int(margin, win_h - margin * 2),\n};\nlet selectionObjects = generateEmptySelectionObjects();\nlet polygonObjects = generatePolygonObjects();\n\n// window.removeEventListener(\"load\", init); // TODO: try this if init is called many times\nwindow.onload = init;\nfunction init() {\n console.log(\"init\"); // TODO: remove before mainnet\n svg = document.querySelector(\"svg\");\n\n svg.onclick = function () {\n backgroundOffset++;\n setBg(seed);\n };\n setBg(seed);\n renderSelections();\n}\n\nfunction generateEmptySelectionObjects() {\n let sa = [];\n for (let i = 0; i < 1000; i++) {\n let s = new SelectionObject();\n sa.push(s);\n }\n return sa;\n}\n\nfunction SelectionObject() {\n this.x = 0;\n this.y = 0;\n this.w = 0;\n this.h = 0;\n this.xR = R.float();\n this.yR = R.float();\n this.wR = R.float();\n this.hR = R.float();\n\n this.getPath = function () {\n this.marginize();\n let p = [\n [\n { X: this.x, Y: this.y },\n { X: this.x + this.w, Y: this.y },\n { X: this.x + this.w, Y: this.y + this.h },\n { X: this.x, Y: this.y + this.h },\n ],\n ];\n return p;\n };\n\n this.setValue = function (p, v) {\n this[p] = parseInt(v);\n };\n\n this.marginize = function () {\n if (this.x + this.w > win_w) {\n this.x = win_w - this.w;\n }\n if (this.x < 0) {\n this.x = 0;\n }\n if (this.y + this.h > win_h) {\n this.y = win_h - this.h;\n }\n if (this.y < 0) {\n this.y = 0;\n }\n };\n}\n\nfunction generatePolygonObjects() {\n let pa = [];\n for (let i = 0; i < 1; i++) {\n let p = new PolygonObject();\n p.createRn();\n pa.push(p);\n }\n return pa;\n}\n\nfunction PolygonObject() {\n this.startX = R.int(margin, win_w - margin);\n this.startY = R.int(margin, win_h - margin);\n this.polyLength = R.int(400, 1000);\n this.stepVar = R.int(100, 1000);\n this.rnArray = [];\n this.path;\n this.marginVar = R.int(1, 30);\n this.applyMargin = R.int(0, 2) == 0 ? false : true;\n\n this.makePolygon = function () {\n this.path = [[]];\n let polX = parseInt(this.startX);\n let polY = parseInt(this.startY);\n this.path[0].push({ X: polX, Y: polY });\n let expon = Math.round(this.rnArray[0]) == 0 ? false : true;\n\n for (let i = 0; i < this.polyLength; i++) {\n if (expon) {\n polX += -1 * i + parseInt(this.rnArray[i * 2] * 2 * i);\n polY += -1 * i + parseInt(this.rnArray[i * 2 + 1] * 2 * i);\n } else {\n polX += -1 * this.stepVar + this.rnArray[i * 2] * this.stepVar * 2;\n polY += -1 * this.stepVar + this.rnArray[i * 2 + 1] * this.stepVar * 2;\n // -1000 + 0.4 * 1000 * 2 - 1000 + 0.3 * 1000 * 2; // TODO: add this back?\n }\n\n if (this.applyMargin) {\n polX = this.marginize(polX, \"w\", i);\n polY = this.marginize(polY, \"h\", i);\n }\n this.path[0].push({ X: polX, Y: polY });\n }\n this.path[0].push({ X: parseInt(this.startX), Y: parseInt(this.startY) });\n };\n\n this.createRn = function () {\n for (let i = 0; i < this.polyLength * 2; i++) {\n this.rnArray.push(R.float());\n }\n };\n\n this.marginize = function (pos, dim, i) {\n if (dim == \"w\") {\n if (pos > win_w - margin) {\n pos =\n win_w -\n margin -\n this.marginVar +\n parseInt(this.rnArray[i * 2] * this.marginVar * 2);\n } else if (pos < margin) {\n pos =\n margin -\n this.marginVar +\n parseInt(this.rnArray[i * 2] * this.marginVar * 2);\n }\n } else if (dim == \"h\") {\n if (pos > win_h - margin) {\n pos =\n win_h -\n margin -\n this.marginVar +\n parseInt(this.rnArray[i * 2 + 1] * this.marginVar * 2);\n }\n if (pos < margin) {\n pos =\n margin -\n this.marginVar +\n parseInt(this.rnArray[i * 2 + 1] * this.marginVar * 2);\n }\n }\n return pos;\n };\n\n this.getPath = function () {\n return this.path;\n };\n}\n\nfunction renderSelections(treatAllAsTrue = false) {\n console.log(\"renderSelections\");\n // let solution_paths;\n let clip_paths;\n let subj_paths = [\n [\n { X: (win_w / 2) * -1, Y: win_h / 2 },\n { X: (win_w / 2) * -1 + 1, Y: win_h / 2 },\n { X: (win_w / 2) * -1 + 1, Y: win_h / 2 + 1 },\n { X: (win_w / 2) * -1, Y: win_h / 2 + 1 },\n ],\n ];\n\n // rectangles\n if (showRectangles || treatAllAsTrue) {\n let sx = selectionObjectsOrigin.x;\n let sy = selectionObjectsOrigin.y;\n\n for (let i = 0; i < amount; i++) {\n selectionObjects[i].setValue(\"w\", 1 + elWidth * selectionObjects[i].wR);\n selectionObjects[i].setValue(\"h\", 1 + elHeight * selectionObjects[i].hR);\n selectionObjects[i].setValue(\"x\", sx);\n selectionObjects[i].setValue(\"y\", sy);\n\n sx += 100 - parseInt(selectionObjects[i].xR * 200);\n sy += 100 - parseInt(selectionObjects[i].yR * 200);\n\n clip_paths = selectionObjects[i].getPath();\n\n let angles = rotateAllRectangles\n ? angle\n : parseInt(360 * selectionObjects[i].wR);\n clip_paths = rotatePath(angles, clip_paths);\n\n subj_paths = clipPathToAll(subj_paths, clip_paths, \"union\");\n }\n }\n\n // polygons\n if (showPolygons || treatAllAsTrue) {\n let poly = polygonObjects[0];\n poly.makePolygon();\n\n clip_paths = poly.getPath();\n let fillTypes = [\n ClipperLib.PolyFillType.pftNegative,\n ClipperLib.PolyFillType.pftPositive,\n ];\n const clip_paths_simp = ClipperLib.Clipper.SimplifyPolygons(\n clip_paths,\n fillTypes[0]\n );\n subj_paths = clipPathToAll(subj_paths, clip_paths_simp, \"union\");\n }\n\n // grid\n if (showGrid || treatAllAsTrue) {\n let gridSize = largestSide / gridVal;\n let clip_paths = [[]];\n for (let i = 0; i <= largestSide / gridSize; i++) {\n for (let j = 0; j <= largestSide / gridSize; j++) {\n clip_paths.push([\n { X: i * gridSize + gridMargin, Y: j * gridSize + gridMargin },\n {\n X: i * gridSize + gridSize - gridMargin,\n Y: j * gridSize + gridMargin,\n },\n {\n X: i * gridSize + gridSize - gridMargin,\n Y: j * gridSize + gridSize - gridMargin,\n },\n {\n X: i * gridSize + gridMargin,\n Y: j * gridSize + gridSize - gridMargin,\n },\n ]);\n\n //clip_paths = [[{X:i*gridSize,Y:j*gridSize},{X:i+gridSize,Y:j},{X:i+gridSize,Y:j+gridSize},{X:i,Y:j+gridSize}]]; //star\n }\n }\n\n let clipTypes = [\"difference\", \"intersection\", \"union\"];\n subj_paths = clipPathToAll(subj_paths, clip_paths, clipTypes[gridCLipType]);\n }\n\n // star\n if (showStar || treatAllAsTrue) {\n let largestSide = win_w >= win_h ? win_w : win_h;\n let gridSize = largestSide / gridVal;\n let clip_paths = [[]];\n for (let i = 0; i <= largestSide / gridSize; i++) {\n for (let j = 0; j <= largestSide / gridSize; j++) {\n clip_paths = [\n [\n { X: i * gridSize, Y: j * gridSize },\n { X: i + gridSize, Y: j },\n { X: i + gridSize, Y: j + gridSize },\n { X: i, Y: j + gridSize },\n ],\n ]; //star\n subj_paths = clipPathToAll(subj_paths, clip_paths, \"union\");\n }\n }\n }\n\n // frames\n if (showFrame || treatAllAsTrue) {\n let clip_paths = [[]];\n for (let i = 0; i < frameAmount; i += 2) {\n let v = i * R.int(2, 20);\n\n const clip_path1 = [\n [\n { X: v + 10, Y: v + 10 },\n { X: win_w - v - 10, Y: v + 10 },\n { X: win_w - v - 10, Y: win_h - v - 10 },\n { X: v + 10, Y: win_h - v - 10 },\n ],\n [\n { X: v * 2 + 10, Y: v * 2 + 10 },\n { X: v + 10, Y: v + 10 },\n ],\n ];\n const clip_path2 = [\n [\n { X: v + 20, Y: v + 20 },\n { X: win_w - v - 20, Y: v + 20 },\n { X: win_w - v - 20, Y: win_h - v - 20 },\n { X: v + 20, Y: win_h - v - 20 },\n { X: v + 20, Y: v + 20 },\n ],\n ];\n clip_paths = clipPathToAll(clip_path1, clip_path2, \"difference\");\n subj_paths = clipPathToAll(subj_paths, clip_paths, \"union\");\n }\n }\n\n //viewport clipping\n clip_paths = [\n [\n { X: 0, Y: 0 },\n { X: win_w, Y: 0 },\n { X: win_w, Y: win_h },\n { X: 0, Y: win_h },\n ],\n ];\n subj_paths = clipPathToAll(subj_paths, clip_paths, \"intersection\");\n\n //center hole\n if (showHole || treatAllAsTrue) {\n let ch_w = win_w / 2 + selectionObjects[0].wR * margin;\n let ch_h = win_h / 2 + selectionObjects[0].hR * margin;\n let ch_x = (win_w - ch_w) / 2;\n let ch_y = (win_h - ch_h) / 2;\n clip_paths = [\n [\n { X: ch_x, Y: ch_y },\n { X: ch_x + ch_w, Y: ch_y },\n { X: ch_x + ch_w, Y: ch_y + ch_h },\n { X: ch_x, Y: ch_y + ch_h },\n ],\n ];\n subj_paths = clipPathToAll(subj_paths, clip_paths, \"difference\");\n }\n\n let svgPath = paths2string(subj_paths);\n\n // if path empty show all styles\n if (svgPath == \"M0,0\" && !treatAllAsTrue) {\n renderSelections(true);\n } else if (svgPath == \"M0,0\") {\n console.error(\n `empty path on token ID after setting treatAllAsTrue ${tokenId}`\n );\n } else {\n document.querySelector(\"#selectionPath\").setAttribute(\"d\", svgPath);\n }\n}\n\nfunction clipPathToAll(subj_paths, clip_paths, type) {\n // type: 'intersection', 'union' or 'difference';\n let cpr = new ClipperLib.Clipper();\n ClipperLib.JS.ScaleUpPaths(subj_paths, 1);\n ClipperLib.JS.ScaleUpPaths(clip_paths, 1);\n cpr.AddPaths(subj_paths, ClipperLib.PolyType.ptSubject, true);\n cpr.AddPaths(clip_paths, ClipperLib.PolyType.ptClip, true);\n\n let subject_fillType = ClipperLib.PolyFillType.pftNonZero;\n let clip_fillType = ClipperLib.PolyFillType.pftNonZero;\n const solution_paths = new ClipperLib.Paths();\n type = type.charAt(0).toUpperCase() + type.slice(1);\n cpr.Execute(\n ClipperLib.ClipType[\"ct\" + type],\n solution_paths,\n subject_fillType,\n clip_fillType\n );\n\n return solution_paths;\n}\n\nfunction paths2string(paths) {\n let svgpath = \"\",\n i,\n j;\n let scale = 1;\n for (i = 0; i < paths.length; i++) {\n for (j = 0; j < paths[i].length; j++) {\n if (!j) svgpath += \"M\";\n else svgpath += \"L\";\n svgpath += paths[i][j].X / scale + \", \" + paths[i][j].Y / scale;\n }\n svgpath += \"Z\";\n }\n if (svgpath == \"\") svgpath = \"M0,0\";\n return svgpath;\n}\n\nfunction rotatePath(angle, path) {\n const pA = [path[0][0].X, path[0][0].Y];\n const pB = rotateCoordinate(\n path[0][0].X,\n path[0][0].Y,\n path[0][1].X,\n path[0][1].Y,\n angle\n );\n const pC = rotateCoordinate(\n path[0][0].X,\n path[0][0].Y,\n path[0][2].X,\n path[0][2].Y,\n angle\n );\n const pD = rotateCoordinate(\n path[0][0].X,\n path[0][0].Y,\n path[0][3].X,\n path[0][3].Y,\n angle\n );\n let rotatedPath = [\n [\n { X: pA[0], Y: pA[1] },\n { X: pB[0], Y: pB[1] },\n { X: pC[0], Y: pC[1] },\n { X: pD[0], Y: pD[1] },\n ],\n ];\n return rotatedPath;\n}\n\nfunction rotateCoordinate(cx, cy, x, y, angle) {\n var radians = (Math.PI / 180) * angle,\n cos = Math.cos(radians),\n sin = Math.sin(radians),\n nx = cos * (x - cx) + sin * (y - cy) + cx,\n ny = cos * (y - cy) - sin * (x - cx) + cy;\n return [nx, ny];\n}\n\nfunction setBg(seed) {\n let solidsArray = [\"rgb(123,50,50)\", \"rgb(50,123,50)\", \"rgb(50,50,123)\"];\n const solidColor = randomRange(0, 2, seed);\n const solidColorString = solidsArray[solidColor];\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n const solidOverGrad = randomRange(0, 10, seed) == 0 ? true : false;\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n const grayOverColor = randomRange(0, 5, seed) == 0 ? true : false;\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n const bgStyleRand = randomRange(1, 10, seed);\n\n const totalStyles = 4;\n let bgState =\n ((bgStyleRand <= 7 ? 0 : bgStyleRand <= 8 ? 1 : bgStyleRand <= 9 ? 2 : 3) +\n backgroundOffset) %\n totalStyles;\n let finalColor, gradAngle, dark;\n if (bgState == 0) {\n if (solidOverGrad) {\n finalColor = \"background-color: \" + solidColorString;\n } else if (grayOverColor) {\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n gradAngle = randomRange(0, 90, seed);\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n const gray1Val = randomRange(0, 150, seed);\n const gray1 = `rgb(${gray1Val},${gray1Val},${gray1Val})`;\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n const gray2Val = randomRange(150, 255, seed);\n const gray2 = `rgb(${gray2Val},${gray2Val},${gray2Val})`;\n finalColor = `background: linear-gradient(${gradAngle}deg, ${gray1} 0%, ${gray2} 100%)`;\n } else {\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n gradAngle = randomRange(0, 90, seed);\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n dark = randomRange(100, 150, seed);\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n let color1R = randomRange(50, dark, seed);\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n let color1G = randomRange(50, dark, seed);\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n let color1B = randomRange(50, dark, seed);\n const color1 = `rgb(${color1R},${color1G},${color1B})`;\n\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n const addOrSubtract = randomRange(0, 1, seed) == 0 ? true : false;\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n const colorOffset = randomRange(0, 100, seed);\n if (addOrSubtract) {\n color1R = color1R + colorOffset > 255 ? 255 : color1R + colorOffset;\n color1G = color1G + colorOffset > 255 ? 255 : color1G + colorOffset;\n color1B = color1B + colorOffset > 255 ? 255 : color1B + colorOffset;\n } else {\n color1R = color1R - colorOffset < 0 ? 0 : color1R - colorOffset;\n color1G = color1G - colorOffset < 0 ? 0 : color1G - colorOffset;\n color1B = color1B - colorOffset < 0 ? 0 : color1B - colorOffset;\n }\n\n const color2 = `rgb(${color1R},${color1G},${color1B})`;\n finalColor = `background: linear-gradient(${gradAngle}deg, ${color1} 0%, ${color2} 100%)`;\n }\n } else if (bgState == 1) {\n finalColor = \"background-color: white\";\n } else if (bgState == 2) {\n finalColor = \"background-color: black\";\n } else {\n finalColor = `background-image: linear-gradient(45deg, #cbcccb 25%, transparent 25%), linear-gradient(-45deg, #cbcccb 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #cbcccb 75%), linear-gradient(-45deg, transparent 75%, #cbcccb 75%);\n background-size: 8px 8px;\n background-position: 0 0, 0 4px, 4px -4px, -4px 0px;`;\n }\n document.getElementsByTagName(\"svg\")[0].style = finalColor;\n}\n\nlet resizeTimer;\nwindow.onresize = function () {\n console.log(\"clearTimeout\", resizeTimer); // TODO: remove before mainnet\n clearTimeout(resizeTimer);\n resizeTimer = setTimeout(resizeEnded, 500);\n};\n\nfunction resizeEnded() {\n console.log(\"resizeEnded\"); // TODO: remove before mainnet\n win_w = window.innerWidth; // tool width added\n win_h = window.innerHeight;\n largestSide = win_w >= win_h ? win_w : win_h;\n margin = parseInt(largestSide / marginFactor);\n renderSelections();\n}\n","import { AbiEncodingLengthMismatchError, BytesSizeMismatchError, UnsupportedPackedAbiType, } from '../../errors/abi.js';\nimport { InvalidAddressError, } from '../../errors/address.js';\nimport { isAddress } from '../address/isAddress.js';\nimport { concatHex } from '../data/concat.js';\nimport { pad } from '../data/pad.js';\nimport { boolToHex, numberToHex, stringToHex, } from '../encoding/toHex.js';\nimport { arrayRegex, bytesRegex, integerRegex } from '../regex.js';\nexport function encodePacked(types, values) {\n if (types.length !== values.length)\n throw new AbiEncodingLengthMismatchError({\n expectedLength: types.length,\n givenLength: values.length,\n });\n const data = [];\n for (let i = 0; i < types.length; i++) {\n const type = types[i];\n const value = values[i];\n data.push(encode(type, value));\n }\n return concatHex(data);\n}\nfunction encode(type, value, isArray = false) {\n if (type === 'address') {\n const address = value;\n if (!isAddress(address))\n throw new InvalidAddressError({ address });\n return pad(address.toLowerCase(), {\n size: isArray ? 32 : null,\n });\n }\n if (type === 'string')\n return stringToHex(value);\n if (type === 'bytes')\n return value;\n if (type === 'bool')\n return pad(boolToHex(value), { size: isArray ? 32 : 1 });\n const intMatch = type.match(integerRegex);\n if (intMatch) {\n const [_type, baseType, bits = '256'] = intMatch;\n const size = Number.parseInt(bits) / 8;\n return numberToHex(value, {\n size: isArray ? 32 : size,\n signed: baseType === 'int',\n });\n }\n const bytesMatch = type.match(bytesRegex);\n if (bytesMatch) {\n const [_type, size] = bytesMatch;\n if (Number.parseInt(size) !== (value.length - 2) / 2)\n throw new BytesSizeMismatchError({\n expectedSize: Number.parseInt(size),\n givenSize: (value.length - 2) / 2,\n });\n return pad(value, { dir: 'right', size: isArray ? 32 : null });\n }\n const arrayMatch = type.match(arrayRegex);\n if (arrayMatch && Array.isArray(value)) {\n const [_type, childType] = arrayMatch;\n const data = [];\n for (let i = 0; i < value.length; i++) {\n data.push(encode(childType, value[i], true));\n }\n if (data.length === 0)\n return '0x';\n return concatHex(data);\n }\n throw new UnsupportedPackedAbiType(type);\n}\n//# sourceMappingURL=encodePacked.js.map","import type {\n AbiParameterToPrimitiveType,\n AbiType,\n Address,\n SolidityAddress,\n SolidityArrayWithoutTuple,\n SolidityBool,\n SolidityBytes,\n SolidityInt,\n SolidityString,\n} from 'abitype'\n\nimport {\n AbiEncodingLengthMismatchError,\n type AbiEncodingLengthMismatchErrorType,\n BytesSizeMismatchError,\n type BytesSizeMismatchErrorType,\n UnsupportedPackedAbiType,\n} from '../../errors/abi.js'\nimport {\n InvalidAddressError,\n type InvalidAddressErrorType,\n} from '../../errors/address.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport { type IsAddressErrorType, isAddress } from '../address/isAddress.js'\nimport { type ConcatHexErrorType, concatHex } from '../data/concat.js'\nimport { type PadErrorType, pad } from '../data/pad.js'\nimport {\n type BoolToHexErrorType,\n type NumberToHexErrorType,\n type StringToHexErrorType,\n boolToHex,\n numberToHex,\n stringToHex,\n} from '../encoding/toHex.js'\nimport { arrayRegex, bytesRegex, integerRegex } from '../regex.js'\n\ntype PackedAbiType =\n | SolidityAddress\n | SolidityBool\n | SolidityBytes\n | SolidityInt\n | SolidityString\n | SolidityArrayWithoutTuple\n\ntype EncodePackedValues<\n packedAbiTypes extends readonly PackedAbiType[] | readonly unknown[],\n> = {\n [K in keyof packedAbiTypes]: packedAbiTypes[K] extends AbiType\n ? AbiParameterToPrimitiveType<{ type: packedAbiTypes[K] }>\n : unknown\n}\n\nexport type EncodePackedErrorType =\n | AbiEncodingLengthMismatchErrorType\n | ConcatHexErrorType\n | EncodeErrorType\n | ErrorType\n\nexport function encodePacked<\n const packedAbiTypes extends readonly PackedAbiType[] | readonly unknown[],\n>(types: packedAbiTypes, values: EncodePackedValues): Hex {\n if (types.length !== values.length)\n throw new AbiEncodingLengthMismatchError({\n expectedLength: types.length as number,\n givenLength: values.length as number,\n })\n\n const data: Hex[] = []\n for (let i = 0; i < (types as unknown[]).length; i++) {\n const type = types[i]\n const value = values[i]\n data.push(encode(type, value))\n }\n return concatHex(data)\n}\n\ntype EncodeErrorType =\n | BoolToHexErrorType\n | BytesSizeMismatchErrorType\n | InvalidAddressErrorType\n | IsAddressErrorType\n | NumberToHexErrorType\n | PadErrorType\n | StringToHexErrorType\n | UnsupportedPackedAbiType\n | ErrorType\n\nfunction encode(\n type: packedAbiType,\n value: EncodePackedValues<[packedAbiType]>[0],\n isArray = false,\n): Hex {\n if (type === 'address') {\n const address = value as Address\n if (!isAddress(address)) throw new InvalidAddressError({ address })\n return pad(address.toLowerCase() as Hex, {\n size: isArray ? 32 : null,\n }) as Address\n }\n if (type === 'string') return stringToHex(value as string)\n if (type === 'bytes') return value as Hex\n if (type === 'bool')\n return pad(boolToHex(value as boolean), { size: isArray ? 32 : 1 })\n\n const intMatch = (type as string).match(integerRegex)\n if (intMatch) {\n const [_type, baseType, bits = '256'] = intMatch\n const size = Number.parseInt(bits) / 8\n return numberToHex(value as number, {\n size: isArray ? 32 : size,\n signed: baseType === 'int',\n })\n }\n\n const bytesMatch = (type as string).match(bytesRegex)\n if (bytesMatch) {\n const [_type, size] = bytesMatch\n if (Number.parseInt(size) !== ((value as Hex).length - 2) / 2)\n throw new BytesSizeMismatchError({\n expectedSize: Number.parseInt(size),\n givenSize: ((value as Hex).length - 2) / 2,\n })\n return pad(value as Hex, { dir: 'right', size: isArray ? 32 : null }) as Hex\n }\n\n const arrayMatch = (type as string).match(arrayRegex)\n if (arrayMatch && Array.isArray(value)) {\n const [_type, childType] = arrayMatch\n const data: Hex[] = []\n for (let i = 0; i < value.length; i++) {\n data.push(encode(childType, value[i], true))\n }\n if (data.length === 0) return '0x'\n return concatHex(data)\n }\n\n throw new UnsupportedPackedAbiType(type)\n}\n","import { formatAbiItem, formatAbiParams } from '../utils/abi/formatAbiItem.js';\nimport { size } from '../utils/data/size.js';\nimport { BaseError } from './base.js';\nexport class AbiConstructorNotFoundError extends BaseError {\n constructor({ docsPath }) {\n super([\n 'A constructor was not found on the ABI.',\n 'Make sure you are using the correct ABI and that the constructor exists on it.',\n ].join('\\n'), {\n docsPath,\n name: 'AbiConstructorNotFoundError',\n });\n }\n}\nexport class AbiConstructorParamsNotFoundError extends BaseError {\n constructor({ docsPath }) {\n super([\n 'Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.',\n 'Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists.',\n ].join('\\n'), {\n docsPath,\n name: 'AbiConstructorParamsNotFoundError',\n });\n }\n}\nexport class AbiDecodingDataSizeInvalidError extends BaseError {\n constructor({ data, size }) {\n super([\n `Data size of ${size} bytes is invalid.`,\n 'Size must be in increments of 32 bytes (size % 32 === 0).',\n ].join('\\n'), {\n metaMessages: [`Data: ${data} (${size} bytes)`],\n name: 'AbiDecodingDataSizeInvalidError',\n });\n }\n}\nexport class AbiDecodingDataSizeTooSmallError extends BaseError {\n constructor({ data, params, size, }) {\n super([`Data size of ${size} bytes is too small for given parameters.`].join('\\n'), {\n metaMessages: [\n `Params: (${formatAbiParams(params, { includeName: true })})`,\n `Data: ${data} (${size} bytes)`,\n ],\n name: 'AbiDecodingDataSizeTooSmallError',\n });\n Object.defineProperty(this, \"data\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"params\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"size\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.data = data;\n this.params = params;\n this.size = size;\n }\n}\nexport class AbiDecodingZeroDataError extends BaseError {\n constructor() {\n super('Cannot decode zero data (\"0x\") with ABI parameters.', {\n name: 'AbiDecodingZeroDataError',\n });\n }\n}\nexport class AbiEncodingArrayLengthMismatchError extends BaseError {\n constructor({ expectedLength, givenLength, type, }) {\n super([\n `ABI encoding array length mismatch for type ${type}.`,\n `Expected length: ${expectedLength}`,\n `Given length: ${givenLength}`,\n ].join('\\n'), { name: 'AbiEncodingArrayLengthMismatchError' });\n }\n}\nexport class AbiEncodingBytesSizeMismatchError extends BaseError {\n constructor({ expectedSize, value }) {\n super(`Size of bytes \"${value}\" (bytes${size(value)}) does not match expected size (bytes${expectedSize}).`, { name: 'AbiEncodingBytesSizeMismatchError' });\n }\n}\nexport class AbiEncodingLengthMismatchError extends BaseError {\n constructor({ expectedLength, givenLength, }) {\n super([\n 'ABI encoding params/values length mismatch.',\n `Expected length (params): ${expectedLength}`,\n `Given length (values): ${givenLength}`,\n ].join('\\n'), { name: 'AbiEncodingLengthMismatchError' });\n }\n}\nexport class AbiErrorInputsNotFoundError extends BaseError {\n constructor(errorName, { docsPath }) {\n super([\n `Arguments (\\`args\\`) were provided to \"${errorName}\", but \"${errorName}\" on the ABI does not contain any parameters (\\`inputs\\`).`,\n 'Cannot encode error result without knowing what the parameter types are.',\n 'Make sure you are using the correct ABI and that the inputs exist on it.',\n ].join('\\n'), {\n docsPath,\n name: 'AbiErrorInputsNotFoundError',\n });\n }\n}\nexport class AbiErrorNotFoundError extends BaseError {\n constructor(errorName, { docsPath } = {}) {\n super([\n `Error ${errorName ? `\"${errorName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the error exists on it.',\n ].join('\\n'), {\n docsPath,\n name: 'AbiErrorNotFoundError',\n });\n }\n}\nexport class AbiErrorSignatureNotFoundError extends BaseError {\n constructor(signature, { docsPath }) {\n super([\n `Encoded error signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the error exists on it.',\n `You can look up the decoded signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'), {\n docsPath,\n name: 'AbiErrorSignatureNotFoundError',\n });\n Object.defineProperty(this, \"signature\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.signature = signature;\n }\n}\nexport class AbiEventSignatureEmptyTopicsError extends BaseError {\n constructor({ docsPath }) {\n super('Cannot extract event signature from empty topics.', {\n docsPath,\n name: 'AbiEventSignatureEmptyTopicsError',\n });\n }\n}\nexport class AbiEventSignatureNotFoundError extends BaseError {\n constructor(signature, { docsPath }) {\n super([\n `Encoded event signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the event exists on it.',\n `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'), {\n docsPath,\n name: 'AbiEventSignatureNotFoundError',\n });\n }\n}\nexport class AbiEventNotFoundError extends BaseError {\n constructor(eventName, { docsPath } = {}) {\n super([\n `Event ${eventName ? `\"${eventName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the event exists on it.',\n ].join('\\n'), {\n docsPath,\n name: 'AbiEventNotFoundError',\n });\n }\n}\nexport class AbiFunctionNotFoundError extends BaseError {\n constructor(functionName, { docsPath } = {}) {\n super([\n `Function ${functionName ? `\"${functionName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the function exists on it.',\n ].join('\\n'), {\n docsPath,\n name: 'AbiFunctionNotFoundError',\n });\n }\n}\nexport class AbiFunctionOutputsNotFoundError extends BaseError {\n constructor(functionName, { docsPath }) {\n super([\n `Function \"${functionName}\" does not contain any \\`outputs\\` on ABI.`,\n 'Cannot decode function result without knowing what the parameter types are.',\n 'Make sure you are using the correct ABI and that the function exists on it.',\n ].join('\\n'), {\n docsPath,\n name: 'AbiFunctionOutputsNotFoundError',\n });\n }\n}\nexport class AbiFunctionSignatureNotFoundError extends BaseError {\n constructor(signature, { docsPath }) {\n super([\n `Encoded function signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the function exists on it.',\n `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'), {\n docsPath,\n name: 'AbiFunctionSignatureNotFoundError',\n });\n }\n}\nexport class AbiItemAmbiguityError extends BaseError {\n constructor(x, y) {\n super('Found ambiguous types in overloaded ABI items.', {\n metaMessages: [\n `\\`${x.type}\\` in \\`${formatAbiItem(x.abiItem)}\\`, and`,\n `\\`${y.type}\\` in \\`${formatAbiItem(y.abiItem)}\\``,\n '',\n 'These types encode differently and cannot be distinguished at runtime.',\n 'Remove one of the ambiguous items in the ABI.',\n ],\n name: 'AbiItemAmbiguityError',\n });\n }\n}\nexport class BytesSizeMismatchError extends BaseError {\n constructor({ expectedSize, givenSize, }) {\n super(`Expected bytes${expectedSize}, got bytes${givenSize}.`, {\n name: 'BytesSizeMismatchError',\n });\n }\n}\nexport class DecodeLogDataMismatch extends BaseError {\n constructor({ abiItem, data, params, size, }) {\n super([\n `Data size of ${size} bytes is too small for non-indexed event parameters.`,\n ].join('\\n'), {\n metaMessages: [\n `Params: (${formatAbiParams(params, { includeName: true })})`,\n `Data: ${data} (${size} bytes)`,\n ],\n name: 'DecodeLogDataMismatch',\n });\n Object.defineProperty(this, \"abiItem\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"data\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"params\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"size\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.abiItem = abiItem;\n this.data = data;\n this.params = params;\n this.size = size;\n }\n}\nexport class DecodeLogTopicsMismatch extends BaseError {\n constructor({ abiItem, param, }) {\n super([\n `Expected a topic for indexed event parameter${param.name ? ` \"${param.name}\"` : ''} on event \"${formatAbiItem(abiItem, { includeName: true })}\".`,\n ].join('\\n'), { name: 'DecodeLogTopicsMismatch' });\n Object.defineProperty(this, \"abiItem\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.abiItem = abiItem;\n }\n}\nexport class InvalidAbiEncodingTypeError extends BaseError {\n constructor(type, { docsPath }) {\n super([\n `Type \"${type}\" is not a valid encoding type.`,\n 'Please provide a valid ABI type.',\n ].join('\\n'), { docsPath, name: 'InvalidAbiEncodingType' });\n }\n}\nexport class InvalidAbiDecodingTypeError extends BaseError {\n constructor(type, { docsPath }) {\n super([\n `Type \"${type}\" is not a valid decoding type.`,\n 'Please provide a valid ABI type.',\n ].join('\\n'), { docsPath, name: 'InvalidAbiDecodingType' });\n }\n}\nexport class InvalidArrayError extends BaseError {\n constructor(value) {\n super([`Value \"${value}\" is not a valid array.`].join('\\n'), {\n name: 'InvalidArrayError',\n });\n }\n}\nexport class InvalidDefinitionTypeError extends BaseError {\n constructor(type) {\n super([\n `\"${type}\" is not a valid definition type.`,\n 'Valid types: \"function\", \"event\", \"error\"',\n ].join('\\n'), { name: 'InvalidDefinitionTypeError' });\n }\n}\nexport class UnsupportedPackedAbiType extends BaseError {\n constructor(type) {\n super(`Type \"${type}\" is not supported for packed encoding.`, {\n name: 'UnsupportedPackedAbiType',\n });\n }\n}\n//# sourceMappingURL=abi.js.map","import type { Abi, AbiEvent, AbiParameter } from 'abitype'\n\nimport type { Hex } from '../types/misc.js'\nimport { formatAbiItem, formatAbiParams } from '../utils/abi/formatAbiItem.js'\nimport { size } from '../utils/data/size.js'\n\nimport { BaseError } from './base.js'\n\nexport type AbiConstructorNotFoundErrorType = AbiConstructorNotFoundError & {\n name: 'AbiConstructorNotFoundError'\n}\nexport class AbiConstructorNotFoundError extends BaseError {\n constructor({ docsPath }: { docsPath: string }) {\n super(\n [\n 'A constructor was not found on the ABI.',\n 'Make sure you are using the correct ABI and that the constructor exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiConstructorNotFoundError',\n },\n )\n }\n}\n\nexport type AbiConstructorParamsNotFoundErrorType =\n AbiConstructorParamsNotFoundError & {\n name: 'AbiConstructorParamsNotFoundError'\n }\n\nexport class AbiConstructorParamsNotFoundError extends BaseError {\n constructor({ docsPath }: { docsPath: string }) {\n super(\n [\n 'Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.',\n 'Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiConstructorParamsNotFoundError',\n },\n )\n }\n}\n\nexport type AbiDecodingDataSizeInvalidErrorType =\n AbiDecodingDataSizeInvalidError & {\n name: 'AbiDecodingDataSizeInvalidError'\n }\nexport class AbiDecodingDataSizeInvalidError extends BaseError {\n constructor({ data, size }: { data: Hex; size: number }) {\n super(\n [\n `Data size of ${size} bytes is invalid.`,\n 'Size must be in increments of 32 bytes (size % 32 === 0).',\n ].join('\\n'),\n {\n metaMessages: [`Data: ${data} (${size} bytes)`],\n name: 'AbiDecodingDataSizeInvalidError',\n },\n )\n }\n}\n\nexport type AbiDecodingDataSizeTooSmallErrorType =\n AbiDecodingDataSizeTooSmallError & {\n name: 'AbiDecodingDataSizeTooSmallError'\n }\nexport class AbiDecodingDataSizeTooSmallError extends BaseError {\n data: Hex\n params: readonly AbiParameter[]\n size: number\n\n constructor({\n data,\n params,\n size,\n }: { data: Hex; params: readonly AbiParameter[]; size: number }) {\n super(\n [`Data size of ${size} bytes is too small for given parameters.`].join(\n '\\n',\n ),\n {\n metaMessages: [\n `Params: (${formatAbiParams(params, { includeName: true })})`,\n `Data: ${data} (${size} bytes)`,\n ],\n name: 'AbiDecodingDataSizeTooSmallError',\n },\n )\n\n this.data = data\n this.params = params\n this.size = size\n }\n}\n\nexport type AbiDecodingZeroDataErrorType = AbiDecodingZeroDataError & {\n name: 'AbiDecodingZeroDataError'\n}\nexport class AbiDecodingZeroDataError extends BaseError {\n constructor() {\n super('Cannot decode zero data (\"0x\") with ABI parameters.', {\n name: 'AbiDecodingZeroDataError',\n })\n }\n}\n\nexport type AbiEncodingArrayLengthMismatchErrorType =\n AbiEncodingArrayLengthMismatchError & {\n name: 'AbiEncodingArrayLengthMismatchError'\n }\nexport class AbiEncodingArrayLengthMismatchError extends BaseError {\n constructor({\n expectedLength,\n givenLength,\n type,\n }: { expectedLength: number; givenLength: number; type: string }) {\n super(\n [\n `ABI encoding array length mismatch for type ${type}.`,\n `Expected length: ${expectedLength}`,\n `Given length: ${givenLength}`,\n ].join('\\n'),\n { name: 'AbiEncodingArrayLengthMismatchError' },\n )\n }\n}\n\nexport type AbiEncodingBytesSizeMismatchErrorType =\n AbiEncodingBytesSizeMismatchError & {\n name: 'AbiEncodingBytesSizeMismatchError'\n }\nexport class AbiEncodingBytesSizeMismatchError extends BaseError {\n constructor({ expectedSize, value }: { expectedSize: number; value: Hex }) {\n super(\n `Size of bytes \"${value}\" (bytes${size(\n value,\n )}) does not match expected size (bytes${expectedSize}).`,\n { name: 'AbiEncodingBytesSizeMismatchError' },\n )\n }\n}\n\nexport type AbiEncodingLengthMismatchErrorType =\n AbiEncodingLengthMismatchError & {\n name: 'AbiEncodingLengthMismatchError'\n }\nexport class AbiEncodingLengthMismatchError extends BaseError {\n constructor({\n expectedLength,\n givenLength,\n }: { expectedLength: number; givenLength: number }) {\n super(\n [\n 'ABI encoding params/values length mismatch.',\n `Expected length (params): ${expectedLength}`,\n `Given length (values): ${givenLength}`,\n ].join('\\n'),\n { name: 'AbiEncodingLengthMismatchError' },\n )\n }\n}\n\nexport type AbiErrorInputsNotFoundErrorType = AbiErrorInputsNotFoundError & {\n name: 'AbiErrorInputsNotFoundError'\n}\nexport class AbiErrorInputsNotFoundError extends BaseError {\n constructor(errorName: string, { docsPath }: { docsPath: string }) {\n super(\n [\n `Arguments (\\`args\\`) were provided to \"${errorName}\", but \"${errorName}\" on the ABI does not contain any parameters (\\`inputs\\`).`,\n 'Cannot encode error result without knowing what the parameter types are.',\n 'Make sure you are using the correct ABI and that the inputs exist on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiErrorInputsNotFoundError',\n },\n )\n }\n}\n\nexport type AbiErrorNotFoundErrorType = AbiErrorNotFoundError & {\n name: 'AbiErrorNotFoundError'\n}\nexport class AbiErrorNotFoundError extends BaseError {\n constructor(\n errorName?: string | undefined,\n { docsPath }: { docsPath?: string | undefined } = {},\n ) {\n super(\n [\n `Error ${errorName ? `\"${errorName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the error exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiErrorNotFoundError',\n },\n )\n }\n}\n\nexport type AbiErrorSignatureNotFoundErrorType =\n AbiErrorSignatureNotFoundError & {\n name: 'AbiErrorSignatureNotFoundError'\n }\nexport class AbiErrorSignatureNotFoundError extends BaseError {\n signature: Hex\n\n constructor(signature: Hex, { docsPath }: { docsPath: string }) {\n super(\n [\n `Encoded error signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the error exists on it.',\n `You can look up the decoded signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiErrorSignatureNotFoundError',\n },\n )\n this.signature = signature\n }\n}\n\nexport type AbiEventSignatureEmptyTopicsErrorType =\n AbiEventSignatureEmptyTopicsError & {\n name: 'AbiEventSignatureEmptyTopicsError'\n }\nexport class AbiEventSignatureEmptyTopicsError extends BaseError {\n constructor({ docsPath }: { docsPath: string }) {\n super('Cannot extract event signature from empty topics.', {\n docsPath,\n name: 'AbiEventSignatureEmptyTopicsError',\n })\n }\n}\n\nexport type AbiEventSignatureNotFoundErrorType =\n AbiEventSignatureNotFoundError & {\n name: 'AbiEventSignatureNotFoundError'\n }\nexport class AbiEventSignatureNotFoundError extends BaseError {\n constructor(signature: Hex, { docsPath }: { docsPath: string }) {\n super(\n [\n `Encoded event signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the event exists on it.',\n `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiEventSignatureNotFoundError',\n },\n )\n }\n}\n\nexport type AbiEventNotFoundErrorType = AbiEventNotFoundError & {\n name: 'AbiEventNotFoundError'\n}\nexport class AbiEventNotFoundError extends BaseError {\n constructor(\n eventName?: string | undefined,\n { docsPath }: { docsPath?: string | undefined } = {},\n ) {\n super(\n [\n `Event ${eventName ? `\"${eventName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the event exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiEventNotFoundError',\n },\n )\n }\n}\n\nexport type AbiFunctionNotFoundErrorType = AbiFunctionNotFoundError & {\n name: 'AbiFunctionNotFoundError'\n}\nexport class AbiFunctionNotFoundError extends BaseError {\n constructor(\n functionName?: string | undefined,\n { docsPath }: { docsPath?: string | undefined } = {},\n ) {\n super(\n [\n `Function ${functionName ? `\"${functionName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the function exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiFunctionNotFoundError',\n },\n )\n }\n}\n\nexport type AbiFunctionOutputsNotFoundErrorType =\n AbiFunctionOutputsNotFoundError & {\n name: 'AbiFunctionOutputsNotFoundError'\n }\nexport class AbiFunctionOutputsNotFoundError extends BaseError {\n constructor(functionName: string, { docsPath }: { docsPath: string }) {\n super(\n [\n `Function \"${functionName}\" does not contain any \\`outputs\\` on ABI.`,\n 'Cannot decode function result without knowing what the parameter types are.',\n 'Make sure you are using the correct ABI and that the function exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiFunctionOutputsNotFoundError',\n },\n )\n }\n}\n\nexport type AbiFunctionSignatureNotFoundErrorType =\n AbiFunctionSignatureNotFoundError & {\n name: 'AbiFunctionSignatureNotFoundError'\n }\nexport class AbiFunctionSignatureNotFoundError extends BaseError {\n constructor(signature: Hex, { docsPath }: { docsPath: string }) {\n super(\n [\n `Encoded function signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the function exists on it.',\n `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiFunctionSignatureNotFoundError',\n },\n )\n }\n}\n\nexport type AbiItemAmbiguityErrorType = AbiItemAmbiguityError & {\n name: 'AbiItemAmbiguityError'\n}\nexport class AbiItemAmbiguityError extends BaseError {\n constructor(\n x: { abiItem: Abi[number]; type: string },\n y: { abiItem: Abi[number]; type: string },\n ) {\n super('Found ambiguous types in overloaded ABI items.', {\n metaMessages: [\n `\\`${x.type}\\` in \\`${formatAbiItem(x.abiItem)}\\`, and`,\n `\\`${y.type}\\` in \\`${formatAbiItem(y.abiItem)}\\``,\n '',\n 'These types encode differently and cannot be distinguished at runtime.',\n 'Remove one of the ambiguous items in the ABI.',\n ],\n name: 'AbiItemAmbiguityError',\n })\n }\n}\n\nexport type BytesSizeMismatchErrorType = BytesSizeMismatchError & {\n name: 'BytesSizeMismatchError'\n}\nexport class BytesSizeMismatchError extends BaseError {\n constructor({\n expectedSize,\n givenSize,\n }: { expectedSize: number; givenSize: number }) {\n super(`Expected bytes${expectedSize}, got bytes${givenSize}.`, {\n name: 'BytesSizeMismatchError',\n })\n }\n}\n\nexport type DecodeLogDataMismatchErrorType = DecodeLogDataMismatch & {\n name: 'DecodeLogDataMismatch'\n}\nexport class DecodeLogDataMismatch extends BaseError {\n abiItem: AbiEvent\n data: Hex\n params: readonly AbiParameter[]\n size: number\n\n constructor({\n abiItem,\n data,\n params,\n size,\n }: {\n abiItem: AbiEvent\n data: Hex\n params: readonly AbiParameter[]\n size: number\n }) {\n super(\n [\n `Data size of ${size} bytes is too small for non-indexed event parameters.`,\n ].join('\\n'),\n {\n metaMessages: [\n `Params: (${formatAbiParams(params, { includeName: true })})`,\n `Data: ${data} (${size} bytes)`,\n ],\n name: 'DecodeLogDataMismatch',\n },\n )\n\n this.abiItem = abiItem\n this.data = data\n this.params = params\n this.size = size\n }\n}\n\nexport type DecodeLogTopicsMismatchErrorType = DecodeLogTopicsMismatch & {\n name: 'DecodeLogTopicsMismatch'\n}\nexport class DecodeLogTopicsMismatch extends BaseError {\n abiItem: AbiEvent\n\n constructor({\n abiItem,\n param,\n }: {\n abiItem: AbiEvent\n param: AbiParameter & { indexed: boolean }\n }) {\n super(\n [\n `Expected a topic for indexed event parameter${\n param.name ? ` \"${param.name}\"` : ''\n } on event \"${formatAbiItem(abiItem, { includeName: true })}\".`,\n ].join('\\n'),\n { name: 'DecodeLogTopicsMismatch' },\n )\n\n this.abiItem = abiItem\n }\n}\n\nexport type InvalidAbiEncodingTypeErrorType = InvalidAbiEncodingTypeError & {\n name: 'InvalidAbiEncodingTypeError'\n}\nexport class InvalidAbiEncodingTypeError extends BaseError {\n constructor(type: string, { docsPath }: { docsPath: string }) {\n super(\n [\n `Type \"${type}\" is not a valid encoding type.`,\n 'Please provide a valid ABI type.',\n ].join('\\n'),\n { docsPath, name: 'InvalidAbiEncodingType' },\n )\n }\n}\n\nexport type InvalidAbiDecodingTypeErrorType = InvalidAbiDecodingTypeError & {\n name: 'InvalidAbiDecodingTypeError'\n}\nexport class InvalidAbiDecodingTypeError extends BaseError {\n constructor(type: string, { docsPath }: { docsPath: string }) {\n super(\n [\n `Type \"${type}\" is not a valid decoding type.`,\n 'Please provide a valid ABI type.',\n ].join('\\n'),\n { docsPath, name: 'InvalidAbiDecodingType' },\n )\n }\n}\n\nexport type InvalidArrayErrorType = InvalidArrayError & {\n name: 'InvalidArrayError'\n}\nexport class InvalidArrayError extends BaseError {\n constructor(value: unknown) {\n super([`Value \"${value}\" is not a valid array.`].join('\\n'), {\n name: 'InvalidArrayError',\n })\n }\n}\n\nexport type InvalidDefinitionTypeErrorType = InvalidDefinitionTypeError & {\n name: 'InvalidDefinitionTypeError'\n}\nexport class InvalidDefinitionTypeError extends BaseError {\n constructor(type: string) {\n super(\n [\n `\"${type}\" is not a valid definition type.`,\n 'Valid types: \"function\", \"event\", \"error\"',\n ].join('\\n'),\n { name: 'InvalidDefinitionTypeError' },\n )\n }\n}\n\nexport type UnsupportedPackedAbiTypeErrorType = UnsupportedPackedAbiType & {\n name: 'UnsupportedPackedAbiType'\n}\nexport class UnsupportedPackedAbiType extends BaseError {\n constructor(type: unknown) {\n super(`Type \"${type}\" is not supported for packed encoding.`, {\n name: 'UnsupportedPackedAbiType',\n })\n }\n}\n","import { InvalidDefinitionTypeError, } from '../../errors/abi.js';\nexport function formatAbiItem(abiItem, { includeName = false } = {}) {\n if (abiItem.type !== 'function' &&\n abiItem.type !== 'event' &&\n abiItem.type !== 'error')\n throw new InvalidDefinitionTypeError(abiItem.type);\n return `${abiItem.name}(${formatAbiParams(abiItem.inputs, { includeName })})`;\n}\nexport function formatAbiParams(params, { includeName = false } = {}) {\n if (!params)\n return '';\n return params\n .map((param) => formatAbiParam(param, { includeName }))\n .join(includeName ? ', ' : ',');\n}\nfunction formatAbiParam(param, { includeName }) {\n if (param.type.startsWith('tuple')) {\n return `(${formatAbiParams(param.components, { includeName })})${param.type.slice('tuple'.length)}`;\n }\n return param.type + (includeName && param.name ? ` ${param.name}` : '');\n}\n//# sourceMappingURL=formatAbiItem.js.map","import type { AbiParameter } from 'abitype'\n\nimport {\n InvalidDefinitionTypeError,\n type InvalidDefinitionTypeErrorType,\n} from '../../errors/abi.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { AbiItem } from '../../types/contract.js'\n\nexport type FormatAbiItemErrorType =\n | FormatAbiParamsErrorType\n | InvalidDefinitionTypeErrorType\n | ErrorType\n\nexport function formatAbiItem(\n abiItem: AbiItem,\n { includeName = false }: { includeName?: boolean | undefined } = {},\n) {\n if (\n abiItem.type !== 'function' &&\n abiItem.type !== 'event' &&\n abiItem.type !== 'error'\n )\n throw new InvalidDefinitionTypeError(abiItem.type)\n\n return `${abiItem.name}(${formatAbiParams(abiItem.inputs, { includeName })})`\n}\n\nexport type FormatAbiParamsErrorType = ErrorType\n\nexport function formatAbiParams(\n params: readonly AbiParameter[] | undefined,\n { includeName = false }: { includeName?: boolean | undefined } = {},\n): string {\n if (!params) return ''\n return params\n .map((param) => formatAbiParam(param, { includeName }))\n .join(includeName ? ', ' : ',')\n}\n\nexport type FormatAbiParamErrorType = ErrorType\n\nfunction formatAbiParam(\n param: AbiParameter,\n { includeName }: { includeName: boolean },\n): string {\n if (param.type.startsWith('tuple')) {\n return `(${formatAbiParams(\n (param as unknown as { components: AbiParameter[] }).components,\n { includeName },\n )})${param.type.slice('tuple'.length)}`\n }\n return param.type + (includeName && param.name ? ` ${param.name}` : '')\n}\n","import { isHex } from './isHex.js';\n/**\n * @description Retrieves the size of the value (in bytes).\n *\n * @param value The value (hex or byte array) to retrieve the size of.\n * @returns The size of the value (in bytes).\n */\nexport function size(value) {\n if (isHex(value, { strict: false }))\n return Math.ceil((value.length - 2) / 2);\n return value.length;\n}\n//# sourceMappingURL=size.js.map","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\nimport { type IsHexErrorType, isHex } from './isHex.js'\n\nexport type SizeErrorType = IsHexErrorType | ErrorType\n\n/**\n * @description Retrieves the size of the value (in bytes).\n *\n * @param value The value (hex or byte array) to retrieve the size of.\n * @returns The size of the value (in bytes).\n */\nexport function size(value: Hex | ByteArray) {\n if (isHex(value, { strict: false })) return Math.ceil((value.length - 2) / 2)\n return value.length\n}\n","export function isHex(value, { strict = true } = {}) {\n if (!value)\n return false;\n if (typeof value !== 'string')\n return false;\n return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith('0x');\n}\n//# sourceMappingURL=isHex.js.map","import type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\n\nexport type IsHexErrorType = ErrorType\n\nexport function isHex(\n value: unknown,\n { strict = true }: { strict?: boolean | undefined } = {},\n): value is Hex {\n if (!value) return false\n if (typeof value !== 'string') return false\n return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith('0x')\n}\n","import { version } from './version.js';\nlet errorConfig = {\n getDocsUrl: ({ docsBaseUrl, docsPath = '', docsSlug, }) => docsPath\n ? `${docsBaseUrl ?? 'https://viem.sh'}${docsPath}${docsSlug ? `#${docsSlug}` : ''}`\n : undefined,\n version,\n};\nexport function setErrorConfig(config) {\n errorConfig = config;\n}\nexport class BaseError extends Error {\n constructor(shortMessage, args = {}) {\n const details = (() => {\n if (args.cause instanceof BaseError)\n return args.cause.details;\n if (args.cause?.message)\n return args.cause.message;\n return args.details;\n })();\n const docsPath = (() => {\n if (args.cause instanceof BaseError)\n return args.cause.docsPath || args.docsPath;\n return args.docsPath;\n })();\n const docsUrl = errorConfig.getDocsUrl?.({ ...args, docsPath });\n const message = [\n shortMessage || 'An error occurred.',\n '',\n ...(args.metaMessages ? [...args.metaMessages, ''] : []),\n ...(docsUrl ? [`Docs: ${docsUrl}`] : []),\n ...(details ? [`Details: ${details}`] : []),\n ...(errorConfig.version ? [`Version: ${errorConfig.version}`] : []),\n ].join('\\n');\n super(message, args.cause ? { cause: args.cause } : undefined);\n Object.defineProperty(this, \"details\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"docsPath\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"metaMessages\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"shortMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'BaseError'\n });\n this.details = details;\n this.docsPath = docsPath;\n this.metaMessages = args.metaMessages;\n this.name = args.name ?? this.name;\n this.shortMessage = shortMessage;\n this.version = version;\n }\n walk(fn) {\n return walk(this, fn);\n }\n}\nfunction walk(err, fn) {\n if (fn?.(err))\n return err;\n if (err && typeof err === 'object' && 'cause' in err)\n return walk(err.cause, fn);\n return fn ? null : err;\n}\n//# sourceMappingURL=base.js.map","import { version } from './version.js'\n\ntype ErrorConfig = {\n getDocsUrl?: ((args: BaseErrorParameters) => string | undefined) | undefined\n version?: string | undefined\n}\n\nlet errorConfig: ErrorConfig = {\n getDocsUrl: ({\n docsBaseUrl,\n docsPath = '',\n docsSlug,\n }: BaseErrorParameters) =>\n docsPath\n ? `${docsBaseUrl ?? 'https://viem.sh'}${docsPath}${\n docsSlug ? `#${docsSlug}` : ''\n }`\n : undefined,\n version,\n}\n\nexport function setErrorConfig(config: ErrorConfig) {\n errorConfig = config\n}\n\ntype BaseErrorParameters = {\n cause?: BaseError | Error | undefined\n details?: string | undefined\n docsBaseUrl?: string | undefined\n docsPath?: string | undefined\n docsSlug?: string | undefined\n metaMessages?: string[] | undefined\n name?: string | undefined\n}\n\nexport type BaseErrorType = BaseError & { name: 'BaseError' }\nexport class BaseError extends Error {\n details: string\n docsPath?: string | undefined\n metaMessages?: string[] | undefined\n shortMessage: string\n version: string\n\n override name = 'BaseError'\n\n constructor(shortMessage: string, args: BaseErrorParameters = {}) {\n const details = (() => {\n if (args.cause instanceof BaseError) return args.cause.details\n if (args.cause?.message) return args.cause.message\n return args.details!\n })()\n const docsPath = (() => {\n if (args.cause instanceof BaseError)\n return args.cause.docsPath || args.docsPath\n return args.docsPath\n })()\n const docsUrl = errorConfig.getDocsUrl?.({ ...args, docsPath })\n\n const message = [\n shortMessage || 'An error occurred.',\n '',\n ...(args.metaMessages ? [...args.metaMessages, ''] : []),\n ...(docsUrl ? [`Docs: ${docsUrl}`] : []),\n ...(details ? [`Details: ${details}`] : []),\n ...(errorConfig.version ? [`Version: ${errorConfig.version}`] : []),\n ].join('\\n')\n\n super(message, args.cause ? { cause: args.cause } : undefined)\n\n this.details = details\n this.docsPath = docsPath\n this.metaMessages = args.metaMessages\n this.name = args.name ?? this.name\n this.shortMessage = shortMessage\n this.version = version\n }\n\n walk(): Error\n walk(fn: (err: unknown) => boolean): Error | null\n walk(fn?: any): any {\n return walk(this, fn)\n }\n}\n\nfunction walk(\n err: unknown,\n fn?: ((err: unknown) => boolean) | undefined,\n): unknown {\n if (fn?.(err)) return err\n if (err && typeof err === 'object' && 'cause' in err)\n return walk(err.cause, fn)\n return fn ? null : err\n}\n","export const version = '2.21.2';\n//# sourceMappingURL=version.js.map","export const version = '2.21.2'\n","import { BaseError } from './base.js';\nexport class InvalidAddressError extends BaseError {\n constructor({ address }) {\n super(`Address \"${address}\" is invalid.`, {\n metaMessages: [\n '- Address must be a hex value of 20 bytes (40 hex characters).',\n '- Address must match its checksum counterpart.',\n ],\n name: 'InvalidAddressError',\n });\n }\n}\n//# sourceMappingURL=address.js.map","import { BaseError } from './base.js'\n\nexport type InvalidAddressErrorType = InvalidAddressError & {\n name: 'InvalidAddressError'\n}\nexport class InvalidAddressError extends BaseError {\n constructor({ address }: { address: string }) {\n super(`Address \"${address}\" is invalid.`, {\n metaMessages: [\n '- Address must be a hex value of 20 bytes (40 hex characters).',\n '- Address must match its checksum counterpart.',\n ],\n name: 'InvalidAddressError',\n })\n }\n}\n","import { LruMap } from '../lru.js';\nimport { checksumAddress } from './getAddress.js';\nconst addressRegex = /^0x[a-fA-F0-9]{40}$/;\n/** @internal */\nexport const isAddressCache = /*#__PURE__*/ new LruMap(8192);\nexport function isAddress(address, options) {\n const { strict = true } = options ?? {};\n const cacheKey = `${address}.${strict}`;\n if (isAddressCache.has(cacheKey))\n return isAddressCache.get(cacheKey);\n const result = (() => {\n if (!addressRegex.test(address))\n return false;\n if (address.toLowerCase() === address)\n return true;\n if (strict)\n return checksumAddress(address) === address;\n return true;\n })();\n isAddressCache.set(cacheKey, result);\n return result;\n}\n//# sourceMappingURL=isAddress.js.map","import type { Address } from 'abitype'\nimport type { ErrorType } from '../../errors/utils.js'\nimport { LruMap } from '../lru.js'\nimport { checksumAddress } from './getAddress.js'\n\nconst addressRegex = /^0x[a-fA-F0-9]{40}$/\n\n/** @internal */\nexport const isAddressCache = /*#__PURE__*/ new LruMap(8192)\n\nexport type IsAddressOptions = {\n /**\n * Enables strict mode. Whether or not to compare the address against its checksum.\n *\n * @default true\n */\n strict?: boolean | undefined\n}\n\nexport type IsAddressErrorType = ErrorType\n\nexport function isAddress(\n address: string,\n options?: IsAddressOptions | undefined,\n): address is Address {\n const { strict = true } = options ?? {}\n const cacheKey = `${address}.${strict}`\n\n if (isAddressCache.has(cacheKey)) return isAddressCache.get(cacheKey)!\n\n const result = (() => {\n if (!addressRegex.test(address)) return false\n if (address.toLowerCase() === address) return true\n if (strict) return checksumAddress(address as Address) === address\n return true\n })()\n isAddressCache.set(cacheKey, result)\n return result\n}\n","/**\n * Map with a LRU (Least recently used) policy.\n *\n * @link https://en.wikipedia.org/wiki/Cache_replacement_policies#LRU\n */\nexport class LruMap extends Map {\n constructor(size) {\n super();\n Object.defineProperty(this, \"maxSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.maxSize = size;\n }\n set(key, value) {\n super.set(key, value);\n if (this.maxSize && this.size > this.maxSize)\n this.delete(this.keys().next().value);\n return this;\n }\n}\n//# sourceMappingURL=lru.js.map","/**\n * Map with a LRU (Least recently used) policy.\n *\n * @link https://en.wikipedia.org/wiki/Cache_replacement_policies#LRU\n */\nexport class LruMap extends Map {\n maxSize: number\n\n constructor(size: number) {\n super()\n this.maxSize = size\n }\n\n override set(key: string, value: value) {\n super.set(key, value)\n if (this.maxSize && this.size > this.maxSize)\n this.delete(this.keys().next().value)\n return this\n }\n}\n","import { InvalidAddressError } from '../../errors/address.js';\nimport { stringToBytes, } from '../encoding/toBytes.js';\nimport { keccak256 } from '../hash/keccak256.js';\nimport { LruMap } from '../lru.js';\nimport { isAddress } from './isAddress.js';\nconst checksumAddressCache = /*#__PURE__*/ new LruMap(8192);\nexport function checksumAddress(address_, \n/**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */\nchainId) {\n if (checksumAddressCache.has(`${address_}.${chainId}`))\n return checksumAddressCache.get(`${address_}.${chainId}`);\n const hexAddress = chainId\n ? `${chainId}${address_.toLowerCase()}`\n : address_.substring(2).toLowerCase();\n const hash = keccak256(stringToBytes(hexAddress), 'bytes');\n const address = (chainId ? hexAddress.substring(`${chainId}0x`.length) : hexAddress).split('');\n for (let i = 0; i < 40; i += 2) {\n if (hash[i >> 1] >> 4 >= 8 && address[i]) {\n address[i] = address[i].toUpperCase();\n }\n if ((hash[i >> 1] & 0x0f) >= 8 && address[i + 1]) {\n address[i + 1] = address[i + 1].toUpperCase();\n }\n }\n const result = `0x${address.join('')}`;\n checksumAddressCache.set(`${address_}.${chainId}`, result);\n return result;\n}\nexport function getAddress(address, \n/**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */\nchainId) {\n if (!isAddress(address, { strict: false }))\n throw new InvalidAddressError({ address });\n return checksumAddress(address, chainId);\n}\n//# sourceMappingURL=getAddress.js.map","import type { Address } from 'abitype'\n\nimport { InvalidAddressError } from '../../errors/address.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport {\n type StringToBytesErrorType,\n stringToBytes,\n} from '../encoding/toBytes.js'\nimport { type Keccak256ErrorType, keccak256 } from '../hash/keccak256.js'\nimport { LruMap } from '../lru.js'\nimport { type IsAddressErrorType, isAddress } from './isAddress.js'\n\nconst checksumAddressCache = /*#__PURE__*/ new LruMap
(8192)\n\nexport type ChecksumAddressErrorType =\n | Keccak256ErrorType\n | StringToBytesErrorType\n | ErrorType\n\nexport function checksumAddress(\n address_: Address,\n /**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */\n chainId?: number | undefined,\n): Address {\n if (checksumAddressCache.has(`${address_}.${chainId}`))\n return checksumAddressCache.get(`${address_}.${chainId}`)!\n\n const hexAddress = chainId\n ? `${chainId}${address_.toLowerCase()}`\n : address_.substring(2).toLowerCase()\n const hash = keccak256(stringToBytes(hexAddress), 'bytes')\n\n const address = (\n chainId ? hexAddress.substring(`${chainId}0x`.length) : hexAddress\n ).split('')\n for (let i = 0; i < 40; i += 2) {\n if (hash[i >> 1] >> 4 >= 8 && address[i]) {\n address[i] = address[i].toUpperCase()\n }\n if ((hash[i >> 1] & 0x0f) >= 8 && address[i + 1]) {\n address[i + 1] = address[i + 1].toUpperCase()\n }\n }\n\n const result = `0x${address.join('')}` as const\n checksumAddressCache.set(`${address_}.${chainId}`, result)\n return result\n}\n\nexport type GetAddressErrorType =\n | ChecksumAddressErrorType\n | IsAddressErrorType\n | ErrorType\n\nexport function getAddress(\n address: string,\n /**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */\n chainId?: number,\n): Address {\n if (!isAddress(address, { strict: false }))\n throw new InvalidAddressError({ address })\n return checksumAddress(address, chainId)\n}\n","import { BaseError } from '../../errors/base.js';\nimport { isHex } from '../data/isHex.js';\nimport { pad } from '../data/pad.js';\nimport { assertSize } from './fromHex.js';\nimport { numberToHex, } from './toHex.js';\nconst encoder = /*#__PURE__*/ new TextEncoder();\n/**\n * Encodes a UTF-8 string, hex value, bigint, number or boolean to a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes\n * - Example: https://viem.sh/docs/utilities/toBytes#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes('Hello world')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function toBytes(value, opts = {}) {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToBytes(value, opts);\n if (typeof value === 'boolean')\n return boolToBytes(value, opts);\n if (isHex(value))\n return hexToBytes(value, opts);\n return stringToBytes(value, opts);\n}\n/**\n * Encodes a boolean into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#booltobytes\n *\n * @param value Boolean value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true)\n * // Uint8Array([1])\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true, { size: 32 })\n * // Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])\n */\nexport function boolToBytes(value, opts = {}) {\n const bytes = new Uint8Array(1);\n bytes[0] = Number(value);\n if (typeof opts.size === 'number') {\n assertSize(bytes, { size: opts.size });\n return pad(bytes, { size: opts.size });\n }\n return bytes;\n}\n// We use very optimized technique to convert hex string to byte array\nconst charCodeMap = {\n zero: 48,\n nine: 57,\n A: 65,\n F: 70,\n a: 97,\n f: 102,\n};\nfunction charCodeToBase16(char) {\n if (char >= charCodeMap.zero && char <= charCodeMap.nine)\n return char - charCodeMap.zero;\n if (char >= charCodeMap.A && char <= charCodeMap.F)\n return char - (charCodeMap.A - 10);\n if (char >= charCodeMap.a && char <= charCodeMap.f)\n return char - (charCodeMap.a - 10);\n return undefined;\n}\n/**\n * Encodes a hex string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#hextobytes\n *\n * @param hex Hex string to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function hexToBytes(hex_, opts = {}) {\n let hex = hex_;\n if (opts.size) {\n assertSize(hex, { size: opts.size });\n hex = pad(hex, { dir: 'right', size: opts.size });\n }\n let hexString = hex.slice(2);\n if (hexString.length % 2)\n hexString = `0${hexString}`;\n const length = hexString.length / 2;\n const bytes = new Uint8Array(length);\n for (let index = 0, j = 0; index < length; index++) {\n const nibbleLeft = charCodeToBase16(hexString.charCodeAt(j++));\n const nibbleRight = charCodeToBase16(hexString.charCodeAt(j++));\n if (nibbleLeft === undefined || nibbleRight === undefined) {\n throw new BaseError(`Invalid byte sequence (\"${hexString[j - 2]}${hexString[j - 1]}\" in \"${hexString}\").`);\n }\n bytes[index] = nibbleLeft * 16 + nibbleRight;\n }\n return bytes;\n}\n/**\n * Encodes a number into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#numbertobytes\n *\n * @param value Number to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function numberToBytes(value, opts) {\n const hex = numberToHex(value, opts);\n return hexToBytes(hex);\n}\n/**\n * Encodes a UTF-8 string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#stringtobytes\n *\n * @param value String to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 33])\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function stringToBytes(value, opts = {}) {\n const bytes = encoder.encode(value);\n if (typeof opts.size === 'number') {\n assertSize(bytes, { size: opts.size });\n return pad(bytes, { dir: 'right', size: opts.size });\n }\n return bytes;\n}\n//# sourceMappingURL=toBytes.js.map","import { BaseError } from '../../errors/base.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type IsHexErrorType, isHex } from '../data/isHex.js'\nimport { type PadErrorType, pad } from '../data/pad.js'\n\nimport { type AssertSizeErrorType, assertSize } from './fromHex.js'\nimport {\n type NumberToHexErrorType,\n type NumberToHexOpts,\n numberToHex,\n} from './toHex.js'\n\nconst encoder = /*#__PURE__*/ new TextEncoder()\n\nexport type ToBytesParameters = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type ToBytesErrorType =\n | NumberToBytesErrorType\n | BoolToBytesErrorType\n | HexToBytesErrorType\n | StringToBytesErrorType\n | IsHexErrorType\n | ErrorType\n\n/**\n * Encodes a UTF-8 string, hex value, bigint, number or boolean to a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes\n * - Example: https://viem.sh/docs/utilities/toBytes#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes('Hello world')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function toBytes(\n value: string | bigint | number | boolean | Hex,\n opts: ToBytesParameters = {},\n): ByteArray {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToBytes(value, opts)\n if (typeof value === 'boolean') return boolToBytes(value, opts)\n if (isHex(value)) return hexToBytes(value, opts)\n return stringToBytes(value, opts)\n}\n\nexport type BoolToBytesOpts = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type BoolToBytesErrorType =\n | AssertSizeErrorType\n | PadErrorType\n | ErrorType\n\n/**\n * Encodes a boolean into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#booltobytes\n *\n * @param value Boolean value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true)\n * // Uint8Array([1])\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true, { size: 32 })\n * // Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])\n */\nexport function boolToBytes(value: boolean, opts: BoolToBytesOpts = {}) {\n const bytes = new Uint8Array(1)\n bytes[0] = Number(value)\n if (typeof opts.size === 'number') {\n assertSize(bytes, { size: opts.size })\n return pad(bytes, { size: opts.size })\n }\n return bytes\n}\n\n// We use very optimized technique to convert hex string to byte array\nconst charCodeMap = {\n zero: 48,\n nine: 57,\n A: 65,\n F: 70,\n a: 97,\n f: 102,\n} as const\n\nfunction charCodeToBase16(char: number) {\n if (char >= charCodeMap.zero && char <= charCodeMap.nine)\n return char - charCodeMap.zero\n if (char >= charCodeMap.A && char <= charCodeMap.F)\n return char - (charCodeMap.A - 10)\n if (char >= charCodeMap.a && char <= charCodeMap.f)\n return char - (charCodeMap.a - 10)\n return undefined\n}\n\nexport type HexToBytesOpts = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type HexToBytesErrorType = AssertSizeErrorType | PadErrorType | ErrorType\n\n/**\n * Encodes a hex string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#hextobytes\n *\n * @param hex Hex string to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function hexToBytes(hex_: Hex, opts: HexToBytesOpts = {}): ByteArray {\n let hex = hex_\n if (opts.size) {\n assertSize(hex, { size: opts.size })\n hex = pad(hex, { dir: 'right', size: opts.size })\n }\n\n let hexString = hex.slice(2) as string\n if (hexString.length % 2) hexString = `0${hexString}`\n\n const length = hexString.length / 2\n const bytes = new Uint8Array(length)\n for (let index = 0, j = 0; index < length; index++) {\n const nibbleLeft = charCodeToBase16(hexString.charCodeAt(j++))\n const nibbleRight = charCodeToBase16(hexString.charCodeAt(j++))\n if (nibbleLeft === undefined || nibbleRight === undefined) {\n throw new BaseError(\n `Invalid byte sequence (\"${hexString[j - 2]}${\n hexString[j - 1]\n }\" in \"${hexString}\").`,\n )\n }\n bytes[index] = nibbleLeft * 16 + nibbleRight\n }\n return bytes\n}\n\nexport type NumberToBytesErrorType =\n | NumberToHexErrorType\n | HexToBytesErrorType\n | ErrorType\n\n/**\n * Encodes a number into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#numbertobytes\n *\n * @param value Number to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function numberToBytes(\n value: bigint | number,\n opts?: NumberToHexOpts | undefined,\n) {\n const hex = numberToHex(value, opts)\n return hexToBytes(hex)\n}\n\nexport type StringToBytesOpts = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type StringToBytesErrorType =\n | AssertSizeErrorType\n | PadErrorType\n | ErrorType\n\n/**\n * Encodes a UTF-8 string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#stringtobytes\n *\n * @param value String to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 33])\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function stringToBytes(\n value: string,\n opts: StringToBytesOpts = {},\n): ByteArray {\n const bytes = encoder.encode(value)\n if (typeof opts.size === 'number') {\n assertSize(bytes, { size: opts.size })\n return pad(bytes, { dir: 'right', size: opts.size })\n }\n return bytes\n}\n","import { SizeExceedsPaddingSizeError, } from '../../errors/data.js';\nexport function pad(hexOrBytes, { dir, size = 32 } = {}) {\n if (typeof hexOrBytes === 'string')\n return padHex(hexOrBytes, { dir, size });\n return padBytes(hexOrBytes, { dir, size });\n}\nexport function padHex(hex_, { dir, size = 32 } = {}) {\n if (size === null)\n return hex_;\n const hex = hex_.replace('0x', '');\n if (hex.length > size * 2)\n throw new SizeExceedsPaddingSizeError({\n size: Math.ceil(hex.length / 2),\n targetSize: size,\n type: 'hex',\n });\n return `0x${hex[dir === 'right' ? 'padEnd' : 'padStart'](size * 2, '0')}`;\n}\nexport function padBytes(bytes, { dir, size = 32 } = {}) {\n if (size === null)\n return bytes;\n if (bytes.length > size)\n throw new SizeExceedsPaddingSizeError({\n size: bytes.length,\n targetSize: size,\n type: 'bytes',\n });\n const paddedBytes = new Uint8Array(size);\n for (let i = 0; i < size; i++) {\n const padEnd = dir === 'right';\n paddedBytes[padEnd ? i : size - i - 1] =\n bytes[padEnd ? i : bytes.length - i - 1];\n }\n return paddedBytes;\n}\n//# sourceMappingURL=pad.js.map","import {\n SizeExceedsPaddingSizeError,\n type SizeExceedsPaddingSizeErrorType,\n} from '../../errors/data.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\ntype PadOptions = {\n dir?: 'left' | 'right' | undefined\n size?: number | null | undefined\n}\nexport type PadReturnType = value extends Hex\n ? Hex\n : ByteArray\n\nexport type PadErrorType = PadHexErrorType | PadBytesErrorType | ErrorType\n\nexport function pad(\n hexOrBytes: value,\n { dir, size = 32 }: PadOptions = {},\n): PadReturnType {\n if (typeof hexOrBytes === 'string')\n return padHex(hexOrBytes, { dir, size }) as PadReturnType\n return padBytes(hexOrBytes, { dir, size }) as PadReturnType\n}\n\nexport type PadHexErrorType = SizeExceedsPaddingSizeErrorType | ErrorType\n\nexport function padHex(hex_: Hex, { dir, size = 32 }: PadOptions = {}) {\n if (size === null) return hex_\n const hex = hex_.replace('0x', '')\n if (hex.length > size * 2)\n throw new SizeExceedsPaddingSizeError({\n size: Math.ceil(hex.length / 2),\n targetSize: size,\n type: 'hex',\n })\n\n return `0x${hex[dir === 'right' ? 'padEnd' : 'padStart'](\n size * 2,\n '0',\n )}` as Hex\n}\n\nexport type PadBytesErrorType = SizeExceedsPaddingSizeErrorType | ErrorType\n\nexport function padBytes(\n bytes: ByteArray,\n { dir, size = 32 }: PadOptions = {},\n) {\n if (size === null) return bytes\n if (bytes.length > size)\n throw new SizeExceedsPaddingSizeError({\n size: bytes.length,\n targetSize: size,\n type: 'bytes',\n })\n const paddedBytes = new Uint8Array(size)\n for (let i = 0; i < size; i++) {\n const padEnd = dir === 'right'\n paddedBytes[padEnd ? i : size - i - 1] =\n bytes[padEnd ? i : bytes.length - i - 1]\n }\n return paddedBytes\n}\n","import { BaseError } from './base.js';\nexport class SliceOffsetOutOfBoundsError extends BaseError {\n constructor({ offset, position, size, }) {\n super(`Slice ${position === 'start' ? 'starting' : 'ending'} at offset \"${offset}\" is out-of-bounds (size: ${size}).`, { name: 'SliceOffsetOutOfBoundsError' });\n }\n}\nexport class SizeExceedsPaddingSizeError extends BaseError {\n constructor({ size, targetSize, type, }) {\n super(`${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} size (${size}) exceeds padding size (${targetSize}).`, { name: 'SizeExceedsPaddingSizeError' });\n }\n}\nexport class InvalidBytesLengthError extends BaseError {\n constructor({ size, targetSize, type, }) {\n super(`${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} is expected to be ${targetSize} ${type} long, but is ${size} ${type} long.`, { name: 'InvalidBytesLengthError' });\n }\n}\n//# sourceMappingURL=data.js.map","import { BaseError } from './base.js'\n\nexport type SliceOffsetOutOfBoundsErrorType = SliceOffsetOutOfBoundsError & {\n name: 'SliceOffsetOutOfBoundsError'\n}\nexport class SliceOffsetOutOfBoundsError extends BaseError {\n constructor({\n offset,\n position,\n size,\n }: { offset: number; position: 'start' | 'end'; size: number }) {\n super(\n `Slice ${\n position === 'start' ? 'starting' : 'ending'\n } at offset \"${offset}\" is out-of-bounds (size: ${size}).`,\n { name: 'SliceOffsetOutOfBoundsError' },\n )\n }\n}\n\nexport type SizeExceedsPaddingSizeErrorType = SizeExceedsPaddingSizeError & {\n name: 'SizeExceedsPaddingSizeError'\n}\nexport class SizeExceedsPaddingSizeError extends BaseError {\n constructor({\n size,\n targetSize,\n type,\n }: {\n size: number\n targetSize: number\n type: 'hex' | 'bytes'\n }) {\n super(\n `${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} size (${size}) exceeds padding size (${targetSize}).`,\n { name: 'SizeExceedsPaddingSizeError' },\n )\n }\n}\n\nexport type InvalidBytesLengthErrorType = InvalidBytesLengthError & {\n name: 'InvalidBytesLengthError'\n}\nexport class InvalidBytesLengthError extends BaseError {\n constructor({\n size,\n targetSize,\n type,\n }: {\n size: number\n targetSize: number\n type: 'hex' | 'bytes'\n }) {\n super(\n `${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} is expected to be ${targetSize} ${type} long, but is ${size} ${type} long.`,\n { name: 'InvalidBytesLengthError' },\n )\n }\n}\n","import { InvalidHexBooleanError, SizeOverflowError, } from '../../errors/encoding.js';\nimport { size as size_ } from '../data/size.js';\nimport { trim } from '../data/trim.js';\nimport { hexToBytes } from './toBytes.js';\nexport function assertSize(hexOrBytes, { size }) {\n if (size_(hexOrBytes) > size)\n throw new SizeOverflowError({\n givenSize: size_(hexOrBytes),\n maxSize: size,\n });\n}\n/**\n * Decodes a hex string into a string, number, bigint, boolean, or byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex\n * - Example: https://viem.sh/docs/utilities/fromHex#usage\n *\n * @param hex Hex string to decode.\n * @param toOrOpts Type to convert to or options.\n * @returns Decoded value.\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x1a4', 'number')\n * // 420\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c6421', 'string')\n * // 'Hello world'\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * to: 'string'\n * })\n * // 'Hello world'\n */\nexport function fromHex(hex, toOrOpts) {\n const opts = typeof toOrOpts === 'string' ? { to: toOrOpts } : toOrOpts;\n const to = opts.to;\n if (to === 'number')\n return hexToNumber(hex, opts);\n if (to === 'bigint')\n return hexToBigInt(hex, opts);\n if (to === 'string')\n return hexToString(hex, opts);\n if (to === 'boolean')\n return hexToBool(hex, opts);\n return hexToBytes(hex, opts);\n}\n/**\n * Decodes a hex value into a bigint.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobigint\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns BigInt value.\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x1a4', { signed: true })\n * // 420n\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420n\n */\nexport function hexToBigInt(hex, opts = {}) {\n const { signed } = opts;\n if (opts.size)\n assertSize(hex, { size: opts.size });\n const value = BigInt(hex);\n if (!signed)\n return value;\n const size = (hex.length - 2) / 2;\n const max = (1n << (BigInt(size) * 8n - 1n)) - 1n;\n if (value <= max)\n return value;\n return value - BigInt(`0x${'f'.padStart(size * 2, 'f')}`) - 1n;\n}\n/**\n * Decodes a hex value into a boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobool\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Boolean value.\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x01')\n * // true\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x0000000000000000000000000000000000000000000000000000000000000001', { size: 32 })\n * // true\n */\nexport function hexToBool(hex_, opts = {}) {\n let hex = hex_;\n if (opts.size) {\n assertSize(hex, { size: opts.size });\n hex = trim(hex);\n }\n if (trim(hex) === '0x00')\n return false;\n if (trim(hex) === '0x01')\n return true;\n throw new InvalidHexBooleanError(hex);\n}\n/**\n * Decodes a hex string into a number.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextonumber\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Number value.\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToNumber('0x1a4')\n * // 420\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420\n */\nexport function hexToNumber(hex, opts = {}) {\n return Number(hexToBigInt(hex, opts));\n}\n/**\n * Decodes a hex value into a UTF-8 string.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextostring\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns String value.\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c6421')\n * // 'Hello world!'\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * })\n * // 'Hello world'\n */\nexport function hexToString(hex, opts = {}) {\n let bytes = hexToBytes(hex);\n if (opts.size) {\n assertSize(bytes, { size: opts.size });\n bytes = trim(bytes, { dir: 'right' });\n }\n return new TextDecoder().decode(bytes);\n}\n//# sourceMappingURL=fromHex.js.map","import {\n InvalidHexBooleanError,\n type InvalidHexBooleanErrorType,\n SizeOverflowError,\n type SizeOverflowErrorType,\n} from '../../errors/encoding.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type SizeErrorType, size as size_ } from '../data/size.js'\nimport { type TrimErrorType, trim } from '../data/trim.js'\n\nimport { type HexToBytesErrorType, hexToBytes } from './toBytes.js'\n\nexport type AssertSizeErrorType =\n | SizeOverflowErrorType\n | SizeErrorType\n | ErrorType\n\nexport function assertSize(\n hexOrBytes: Hex | ByteArray,\n { size }: { size: number },\n): void {\n if (size_(hexOrBytes) > size)\n throw new SizeOverflowError({\n givenSize: size_(hexOrBytes),\n maxSize: size,\n })\n}\n\nexport type FromHexParameters<\n to extends 'string' | 'bigint' | 'number' | 'bytes' | 'boolean',\n> =\n | to\n | {\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n /** Type to convert to. */\n to: to\n }\n\nexport type FromHexReturnType = to extends 'string'\n ? string\n : to extends 'bigint'\n ? bigint\n : to extends 'number'\n ? number\n : to extends 'bytes'\n ? ByteArray\n : to extends 'boolean'\n ? boolean\n : never\n\nexport type FromHexErrorType =\n | HexToNumberErrorType\n | HexToBigIntErrorType\n | HexToBoolErrorType\n | HexToStringErrorType\n | HexToBytesErrorType\n | ErrorType\n\n/**\n * Decodes a hex string into a string, number, bigint, boolean, or byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex\n * - Example: https://viem.sh/docs/utilities/fromHex#usage\n *\n * @param hex Hex string to decode.\n * @param toOrOpts Type to convert to or options.\n * @returns Decoded value.\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x1a4', 'number')\n * // 420\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c6421', 'string')\n * // 'Hello world'\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * to: 'string'\n * })\n * // 'Hello world'\n */\nexport function fromHex<\n to extends 'string' | 'bigint' | 'number' | 'bytes' | 'boolean',\n>(hex: Hex, toOrOpts: FromHexParameters): FromHexReturnType {\n const opts = typeof toOrOpts === 'string' ? { to: toOrOpts } : toOrOpts\n const to = opts.to\n\n if (to === 'number') return hexToNumber(hex, opts) as FromHexReturnType\n if (to === 'bigint') return hexToBigInt(hex, opts) as FromHexReturnType\n if (to === 'string') return hexToString(hex, opts) as FromHexReturnType\n if (to === 'boolean') return hexToBool(hex, opts) as FromHexReturnType\n return hexToBytes(hex, opts) as FromHexReturnType\n}\n\nexport type HexToBigIntOpts = {\n /** Whether or not the number of a signed representation. */\n signed?: boolean | undefined\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n}\n\nexport type HexToBigIntErrorType = AssertSizeErrorType | ErrorType\n\n/**\n * Decodes a hex value into a bigint.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobigint\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns BigInt value.\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x1a4', { signed: true })\n * // 420n\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420n\n */\nexport function hexToBigInt(hex: Hex, opts: HexToBigIntOpts = {}): bigint {\n const { signed } = opts\n\n if (opts.size) assertSize(hex, { size: opts.size })\n\n const value = BigInt(hex)\n if (!signed) return value\n\n const size = (hex.length - 2) / 2\n const max = (1n << (BigInt(size) * 8n - 1n)) - 1n\n if (value <= max) return value\n\n return value - BigInt(`0x${'f'.padStart(size * 2, 'f')}`) - 1n\n}\n\nexport type HexToBoolOpts = {\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n}\n\nexport type HexToBoolErrorType =\n | AssertSizeErrorType\n | InvalidHexBooleanErrorType\n | TrimErrorType\n | ErrorType\n\n/**\n * Decodes a hex value into a boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobool\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Boolean value.\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x01')\n * // true\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x0000000000000000000000000000000000000000000000000000000000000001', { size: 32 })\n * // true\n */\nexport function hexToBool(hex_: Hex, opts: HexToBoolOpts = {}): boolean {\n let hex = hex_\n if (opts.size) {\n assertSize(hex, { size: opts.size })\n hex = trim(hex)\n }\n if (trim(hex) === '0x00') return false\n if (trim(hex) === '0x01') return true\n throw new InvalidHexBooleanError(hex)\n}\n\nexport type HexToNumberOpts = HexToBigIntOpts\n\nexport type HexToNumberErrorType = HexToBigIntErrorType | ErrorType\n\n/**\n * Decodes a hex string into a number.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextonumber\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Number value.\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToNumber('0x1a4')\n * // 420\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420\n */\nexport function hexToNumber(hex: Hex, opts: HexToNumberOpts = {}): number {\n return Number(hexToBigInt(hex, opts))\n}\n\nexport type HexToStringOpts = {\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n}\n\nexport type HexToStringErrorType =\n | AssertSizeErrorType\n | HexToBytesErrorType\n | TrimErrorType\n | ErrorType\n\n/**\n * Decodes a hex value into a UTF-8 string.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextostring\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns String value.\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c6421')\n * // 'Hello world!'\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * })\n * // 'Hello world'\n */\nexport function hexToString(hex: Hex, opts: HexToStringOpts = {}): string {\n let bytes = hexToBytes(hex)\n if (opts.size) {\n assertSize(bytes, { size: opts.size })\n bytes = trim(bytes, { dir: 'right' })\n }\n return new TextDecoder().decode(bytes)\n}\n","import { BaseError } from './base.js';\nexport class IntegerOutOfRangeError extends BaseError {\n constructor({ max, min, signed, size, value, }) {\n super(`Number \"${value}\" is not in safe ${size ? `${size * 8}-bit ${signed ? 'signed' : 'unsigned'} ` : ''}integer range ${max ? `(${min} to ${max})` : `(above ${min})`}`, { name: 'IntegerOutOfRangeError' });\n }\n}\nexport class InvalidBytesBooleanError extends BaseError {\n constructor(bytes) {\n super(`Bytes value \"${bytes}\" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`, {\n name: 'InvalidBytesBooleanError',\n });\n }\n}\nexport class InvalidHexBooleanError extends BaseError {\n constructor(hex) {\n super(`Hex value \"${hex}\" is not a valid boolean. The hex value must be \"0x0\" (false) or \"0x1\" (true).`, { name: 'InvalidHexBooleanError' });\n }\n}\nexport class InvalidHexValueError extends BaseError {\n constructor(value) {\n super(`Hex value \"${value}\" is an odd length (${value.length}). It must be an even length.`, { name: 'InvalidHexValueError' });\n }\n}\nexport class SizeOverflowError extends BaseError {\n constructor({ givenSize, maxSize }) {\n super(`Size cannot exceed ${maxSize} bytes. Given size: ${givenSize} bytes.`, { name: 'SizeOverflowError' });\n }\n}\n//# sourceMappingURL=encoding.js.map","import type { ByteArray, Hex } from '../types/misc.js'\n\nimport { BaseError } from './base.js'\n\nexport type IntegerOutOfRangeErrorType = IntegerOutOfRangeError & {\n name: 'IntegerOutOfRangeError'\n}\nexport class IntegerOutOfRangeError extends BaseError {\n constructor({\n max,\n min,\n signed,\n size,\n value,\n }: {\n max?: string | undefined\n min: string\n signed?: boolean | undefined\n size?: number | undefined\n value: string\n }) {\n super(\n `Number \"${value}\" is not in safe ${\n size ? `${size * 8}-bit ${signed ? 'signed' : 'unsigned'} ` : ''\n }integer range ${max ? `(${min} to ${max})` : `(above ${min})`}`,\n { name: 'IntegerOutOfRangeError' },\n )\n }\n}\n\nexport type InvalidBytesBooleanErrorType = InvalidBytesBooleanError & {\n name: 'InvalidBytesBooleanError'\n}\nexport class InvalidBytesBooleanError extends BaseError {\n constructor(bytes: ByteArray) {\n super(\n `Bytes value \"${bytes}\" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`,\n {\n name: 'InvalidBytesBooleanError',\n },\n )\n }\n}\n\nexport type InvalidHexBooleanErrorType = InvalidHexBooleanError & {\n name: 'InvalidHexBooleanError'\n}\nexport class InvalidHexBooleanError extends BaseError {\n constructor(hex: Hex) {\n super(\n `Hex value \"${hex}\" is not a valid boolean. The hex value must be \"0x0\" (false) or \"0x1\" (true).`,\n { name: 'InvalidHexBooleanError' },\n )\n }\n}\n\nexport type InvalidHexValueErrorType = InvalidHexValueError & {\n name: 'InvalidHexValueError'\n}\nexport class InvalidHexValueError extends BaseError {\n constructor(value: Hex) {\n super(\n `Hex value \"${value}\" is an odd length (${value.length}). It must be an even length.`,\n { name: 'InvalidHexValueError' },\n )\n }\n}\n\nexport type SizeOverflowErrorType = SizeOverflowError & {\n name: 'SizeOverflowError'\n}\nexport class SizeOverflowError extends BaseError {\n constructor({ givenSize, maxSize }: { givenSize: number; maxSize: number }) {\n super(\n `Size cannot exceed ${maxSize} bytes. Given size: ${givenSize} bytes.`,\n { name: 'SizeOverflowError' },\n )\n }\n}\n","export function trim(hexOrBytes, { dir = 'left' } = {}) {\n let data = typeof hexOrBytes === 'string' ? hexOrBytes.replace('0x', '') : hexOrBytes;\n let sliceLength = 0;\n for (let i = 0; i < data.length - 1; i++) {\n if (data[dir === 'left' ? i : data.length - i - 1].toString() === '0')\n sliceLength++;\n else\n break;\n }\n data =\n dir === 'left'\n ? data.slice(sliceLength)\n : data.slice(0, data.length - sliceLength);\n if (typeof hexOrBytes === 'string') {\n if (data.length === 1 && dir === 'right')\n data = `${data}0`;\n return `0x${data.length % 2 === 1 ? `0${data}` : data}`;\n }\n return data;\n}\n//# sourceMappingURL=trim.js.map","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\ntype TrimOptions = {\n dir?: 'left' | 'right' | undefined\n}\nexport type TrimReturnType = value extends Hex\n ? Hex\n : ByteArray\n\nexport type TrimErrorType = ErrorType\n\nexport function trim(\n hexOrBytes: value,\n { dir = 'left' }: TrimOptions = {},\n): TrimReturnType {\n let data: any =\n typeof hexOrBytes === 'string' ? hexOrBytes.replace('0x', '') : hexOrBytes\n\n let sliceLength = 0\n for (let i = 0; i < data.length - 1; i++) {\n if (data[dir === 'left' ? i : data.length - i - 1].toString() === '0')\n sliceLength++\n else break\n }\n data =\n dir === 'left'\n ? data.slice(sliceLength)\n : data.slice(0, data.length - sliceLength)\n\n if (typeof hexOrBytes === 'string') {\n if (data.length === 1 && dir === 'right') data = `${data}0`\n return `0x${\n data.length % 2 === 1 ? `0${data}` : data\n }` as TrimReturnType\n }\n return data as TrimReturnType\n}\n","import { IntegerOutOfRangeError, } from '../../errors/encoding.js';\nimport { pad } from '../data/pad.js';\nimport { assertSize } from './fromHex.js';\nconst hexes = /*#__PURE__*/ Array.from({ length: 256 }, (_v, i) => i.toString(16).padStart(2, '0'));\n/**\n * Encodes a string, number, bigint, or ByteArray into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex\n * - Example: https://viem.sh/docs/utilities/toHex#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world')\n * // '0x48656c6c6f20776f726c6421'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex(420)\n * // '0x1a4'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world', { size: 32 })\n * // '0x48656c6c6f20776f726c64210000000000000000000000000000000000000000'\n */\nexport function toHex(value, opts = {}) {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToHex(value, opts);\n if (typeof value === 'string') {\n return stringToHex(value, opts);\n }\n if (typeof value === 'boolean')\n return boolToHex(value, opts);\n return bytesToHex(value, opts);\n}\n/**\n * Encodes a boolean into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#booltohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true)\n * // '0x1'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(false)\n * // '0x0'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true, { size: 32 })\n * // '0x0000000000000000000000000000000000000000000000000000000000000001'\n */\nexport function boolToHex(value, opts = {}) {\n const hex = `0x${Number(value)}`;\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size });\n return pad(hex, { size: opts.size });\n }\n return hex;\n}\n/**\n * Encodes a bytes array into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#bytestohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]), { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function bytesToHex(value, opts = {}) {\n let string = '';\n for (let i = 0; i < value.length; i++) {\n string += hexes[value[i]];\n }\n const hex = `0x${string}`;\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size });\n return pad(hex, { dir: 'right', size: opts.size });\n }\n return hex;\n}\n/**\n * Encodes a number or bigint into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#numbertohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420)\n * // '0x1a4'\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420, { size: 32 })\n * // '0x00000000000000000000000000000000000000000000000000000000000001a4'\n */\nexport function numberToHex(value_, opts = {}) {\n const { signed, size } = opts;\n const value = BigInt(value_);\n let maxValue;\n if (size) {\n if (signed)\n maxValue = (1n << (BigInt(size) * 8n - 1n)) - 1n;\n else\n maxValue = 2n ** (BigInt(size) * 8n) - 1n;\n }\n else if (typeof value_ === 'number') {\n maxValue = BigInt(Number.MAX_SAFE_INTEGER);\n }\n const minValue = typeof maxValue === 'bigint' && signed ? -maxValue - 1n : 0;\n if ((maxValue && value > maxValue) || value < minValue) {\n const suffix = typeof value_ === 'bigint' ? 'n' : '';\n throw new IntegerOutOfRangeError({\n max: maxValue ? `${maxValue}${suffix}` : undefined,\n min: `${minValue}${suffix}`,\n signed,\n size,\n value: `${value_}${suffix}`,\n });\n }\n const hex = `0x${(signed && value < 0\n ? (1n << BigInt(size * 8)) + BigInt(value)\n : value).toString(16)}`;\n if (size)\n return pad(hex, { size });\n return hex;\n}\nconst encoder = /*#__PURE__*/ new TextEncoder();\n/**\n * Encodes a UTF-8 string into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#stringtohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!')\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!', { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function stringToHex(value_, opts = {}) {\n const value = encoder.encode(value_);\n return bytesToHex(value, opts);\n}\n//# sourceMappingURL=toHex.js.map","import {\n IntegerOutOfRangeError,\n type IntegerOutOfRangeErrorType,\n} from '../../errors/encoding.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type PadErrorType, pad } from '../data/pad.js'\n\nimport { type AssertSizeErrorType, assertSize } from './fromHex.js'\n\nconst hexes = /*#__PURE__*/ Array.from({ length: 256 }, (_v, i) =>\n i.toString(16).padStart(2, '0'),\n)\n\nexport type ToHexParameters = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type ToHexErrorType =\n | BoolToHexErrorType\n | BytesToHexErrorType\n | NumberToHexErrorType\n | StringToHexErrorType\n | ErrorType\n\n/**\n * Encodes a string, number, bigint, or ByteArray into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex\n * - Example: https://viem.sh/docs/utilities/toHex#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world')\n * // '0x48656c6c6f20776f726c6421'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex(420)\n * // '0x1a4'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world', { size: 32 })\n * // '0x48656c6c6f20776f726c64210000000000000000000000000000000000000000'\n */\nexport function toHex(\n value: string | number | bigint | boolean | ByteArray,\n opts: ToHexParameters = {},\n): Hex {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToHex(value, opts)\n if (typeof value === 'string') {\n return stringToHex(value, opts)\n }\n if (typeof value === 'boolean') return boolToHex(value, opts)\n return bytesToHex(value, opts)\n}\n\nexport type BoolToHexOpts = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type BoolToHexErrorType = AssertSizeErrorType | PadErrorType | ErrorType\n\n/**\n * Encodes a boolean into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#booltohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true)\n * // '0x1'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(false)\n * // '0x0'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true, { size: 32 })\n * // '0x0000000000000000000000000000000000000000000000000000000000000001'\n */\nexport function boolToHex(value: boolean, opts: BoolToHexOpts = {}): Hex {\n const hex: Hex = `0x${Number(value)}`\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size })\n return pad(hex, { size: opts.size })\n }\n return hex\n}\n\nexport type BytesToHexOpts = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type BytesToHexErrorType = AssertSizeErrorType | PadErrorType | ErrorType\n\n/**\n * Encodes a bytes array into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#bytestohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]), { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function bytesToHex(value: ByteArray, opts: BytesToHexOpts = {}): Hex {\n let string = ''\n for (let i = 0; i < value.length; i++) {\n string += hexes[value[i]]\n }\n const hex = `0x${string}` as const\n\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size })\n return pad(hex, { dir: 'right', size: opts.size })\n }\n return hex\n}\n\nexport type NumberToHexOpts =\n | {\n /** Whether or not the number of a signed representation. */\n signed?: boolean | undefined\n /** The size (in bytes) of the output hex value. */\n size: number\n }\n | {\n signed?: undefined\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n }\n\nexport type NumberToHexErrorType =\n | IntegerOutOfRangeErrorType\n | PadErrorType\n | ErrorType\n\n/**\n * Encodes a number or bigint into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#numbertohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420)\n * // '0x1a4'\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420, { size: 32 })\n * // '0x00000000000000000000000000000000000000000000000000000000000001a4'\n */\nexport function numberToHex(\n value_: number | bigint,\n opts: NumberToHexOpts = {},\n): Hex {\n const { signed, size } = opts\n\n const value = BigInt(value_)\n\n let maxValue: bigint | number | undefined\n if (size) {\n if (signed) maxValue = (1n << (BigInt(size) * 8n - 1n)) - 1n\n else maxValue = 2n ** (BigInt(size) * 8n) - 1n\n } else if (typeof value_ === 'number') {\n maxValue = BigInt(Number.MAX_SAFE_INTEGER)\n }\n\n const minValue = typeof maxValue === 'bigint' && signed ? -maxValue - 1n : 0\n\n if ((maxValue && value > maxValue) || value < minValue) {\n const suffix = typeof value_ === 'bigint' ? 'n' : ''\n throw new IntegerOutOfRangeError({\n max: maxValue ? `${maxValue}${suffix}` : undefined,\n min: `${minValue}${suffix}`,\n signed,\n size,\n value: `${value_}${suffix}`,\n })\n }\n\n const hex = `0x${(signed && value < 0\n ? (1n << BigInt(size * 8)) + BigInt(value)\n : value\n ).toString(16)}` as Hex\n if (size) return pad(hex, { size }) as Hex\n return hex\n}\n\nexport type StringToHexOpts = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type StringToHexErrorType = BytesToHexErrorType | ErrorType\n\nconst encoder = /*#__PURE__*/ new TextEncoder()\n\n/**\n * Encodes a UTF-8 string into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#stringtohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!')\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!', { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function stringToHex(value_: string, opts: StringToHexOpts = {}): Hex {\n const value = encoder.encode(value_)\n return bytesToHex(value, opts)\n}\n","import { keccak_256 } from '@noble/hashes/sha3';\nimport { isHex } from '../data/isHex.js';\nimport { toBytes } from '../encoding/toBytes.js';\nimport { toHex } from '../encoding/toHex.js';\nexport function keccak256(value, to_) {\n const to = to_ || 'hex';\n const bytes = keccak_256(isHex(value, { strict: false }) ? toBytes(value) : value);\n if (to === 'bytes')\n return bytes;\n return toHex(bytes);\n}\n//# sourceMappingURL=keccak256.js.map","import { keccak_256 } from '@noble/hashes/sha3'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type IsHexErrorType, isHex } from '../data/isHex.js'\nimport { type ToBytesErrorType, toBytes } from '../encoding/toBytes.js'\nimport { type ToHexErrorType, toHex } from '../encoding/toHex.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type Keccak256Hash =\n | (to extends 'bytes' ? ByteArray : never)\n | (to extends 'hex' ? Hex : never)\n\nexport type Keccak256ErrorType =\n | IsHexErrorType\n | ToBytesErrorType\n | ToHexErrorType\n | ErrorType\n\nexport function keccak256(\n value: Hex | ByteArray,\n to_?: to | undefined,\n): Keccak256Hash {\n const to = to_ || 'hex'\n const bytes = keccak_256(\n isHex(value, { strict: false }) ? toBytes(value) : value,\n )\n if (to === 'bytes') return bytes as Keccak256Hash\n return toHex(bytes) as Keccak256Hash\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shake256 = exports.shake128 = exports.keccak_512 = exports.keccak_384 = exports.keccak_256 = exports.keccak_224 = exports.sha3_512 = exports.sha3_384 = exports.sha3_256 = exports.sha3_224 = exports.Keccak = exports.keccakP = void 0;\nconst _assert_js_1 = require(\"./_assert.js\");\nconst _u64_js_1 = require(\"./_u64.js\");\nconst utils_js_1 = require(\"./utils.js\");\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ (0, _u64_js_1.split)(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? (0, _u64_js_1.rotlBH)(h, l, s) : (0, _u64_js_1.rotlSH)(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? (0, _u64_js_1.rotlBL)(h, l, s) : (0, _u64_js_1.rotlSL)(h, l, s));\n// Same as keccakf1600, but allows to skip some rounds\nfunction keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\nexports.keccakP = keccakP;\nclass Keccak extends utils_js_1.Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n (0, _assert_js_1.number)(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = (0, utils_js_1.u32)(this.state);\n }\n keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n (0, _assert_js_1.exists)(this);\n const { blockLen, state } = this;\n data = (0, utils_js_1.toBytes)(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n (0, _assert_js_1.exists)(this, false);\n (0, _assert_js_1.bytes)(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n (0, _assert_js_1.number)(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n (0, _assert_js_1.output)(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nexports.Keccak = Keccak;\nconst gen = (suffix, blockLen, outputLen) => (0, utils_js_1.wrapConstructor)(() => new Keccak(blockLen, suffix, outputLen));\nexports.sha3_224 = gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexports.sha3_256 = gen(0x06, 136, 256 / 8);\nexports.sha3_384 = gen(0x06, 104, 384 / 8);\nexports.sha3_512 = gen(0x06, 72, 512 / 8);\nexports.keccak_224 = gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexports.keccak_256 = gen(0x01, 136, 256 / 8);\nexports.keccak_384 = gen(0x01, 104, 384 / 8);\nexports.keccak_512 = gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => (0, utils_js_1.wrapXOFConstructorWithOpts)((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\nexports.shake128 = genShake(0x1f, 168, 128 / 8);\nexports.shake256 = genShake(0x1f, 136, 256 / 8);\n//# sourceMappingURL=sha3.js.map","import { bytes, exists, number, output } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport {\n Hash,\n u32,\n Input,\n toBytes,\n wrapConstructor,\n wrapXOFConstructorWithOpts,\n HashXOF,\n} from './utils.js';\n\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA]: [number[], number[], bigint[]] = [[], [], []];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n) t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h: number, l: number, s: number) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h: number, l: number, s: number) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s: Uint32Array, rounds: number = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++) B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++) B[x] = s[y + x];\n for (let x = 0; x < 10; x++) s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\n\nexport class Keccak extends Hash implements HashXOF {\n protected state: Uint8Array;\n protected pos = 0;\n protected posOut = 0;\n protected finished = false;\n protected state32: Uint32Array;\n protected destroyed = false;\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(\n public blockLen: number,\n public suffix: number,\n public outputLen: number,\n protected enableXOF = false,\n protected rounds: number = 24\n ) {\n super();\n // Can be passed from user as dkLen\n number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n protected keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data: Input) {\n exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++) state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen) this.keccak();\n }\n return this;\n }\n protected finish() {\n if (this.finished) return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1) this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n protected writeInto(out: Uint8Array): Uint8Array {\n exists(this, false);\n bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len; ) {\n if (this.posOut >= blockLen) this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out: Uint8Array): Uint8Array {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF) throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes: number): Uint8Array {\n number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out: Uint8Array) {\n output(out, this);\n if (this.finished) throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to?: Keccak): Keccak {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to ||= new Keccak(blockLen, suffix, outputLen, enableXOF, rounds);\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\n\nconst gen = (suffix: number, blockLen: number, outputLen: number) =>\n wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\n\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\n\nexport type ShakeOpts = { dkLen?: number };\n\nconst genShake = (suffix: number, blockLen: number, outputLen: number) =>\n wrapXOFConstructorWithOpts, ShakeOpts>(\n (opts: ShakeOpts = {}) =>\n new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true)\n );\n\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.output = exports.exists = exports.hash = exports.bytes = exports.bool = exports.number = void 0;\nfunction number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nexports.number = number;\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nexports.bool = bool;\nfunction bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nexports.bytes = bytes;\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nexports.hash = hash;\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nexports.exists = exists;\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexports.output = output;\nconst assert = { number, bool, bytes, hash, exists, output };\nexports.default = assert;\n//# sourceMappingURL=_assert.js.map","function number(n: number) {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error(`Wrong positive integer: ${n}`);\n}\n\nfunction bool(b: boolean) {\n if (typeof b !== 'boolean') throw new Error(`Expected boolean, not ${b}`);\n}\n\nfunction bytes(b: Uint8Array | undefined, ...lengths: number[]) {\n if (!(b instanceof Uint8Array)) throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\n\ntype Hash = {\n (data: Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create: any;\n};\nfunction hash(hash: Hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\n\nfunction exists(instance: any, checkFinished = true) {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\nfunction output(out: any, instance: any) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\n\nexport { number, bool, bytes, hash, exists, output };\n\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.add5L = exports.add5H = exports.add4H = exports.add4L = exports.add3H = exports.add3L = exports.add = exports.rotlBL = exports.rotlBH = exports.rotlSL = exports.rotlSH = exports.rotr32L = exports.rotr32H = exports.rotrBL = exports.rotrBH = exports.rotrSL = exports.rotrSH = exports.shrSL = exports.shrSH = exports.toBig = exports.split = exports.fromBig = void 0;\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nexports.fromBig = fromBig;\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nexports.split = split;\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\nexports.toBig = toBig;\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nexports.shrSH = shrSH;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\nexports.shrSL = shrSL;\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nexports.rotrSH = rotrSH;\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\nexports.rotrSL = rotrSL;\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nexports.rotrBH = rotrBH;\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\nexports.rotrBL = rotrBL;\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nexports.rotr32H = rotr32H;\nconst rotr32L = (h, _l) => h;\nexports.rotr32L = rotr32L;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nexports.rotlSH = rotlSH;\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\nexports.rotlSL = rotlSL;\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nexports.rotlBH = rotlBH;\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\nexports.rotlBL = rotlBL;\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\nexports.add = add;\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nexports.add3L = add3L;\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nexports.add3H = add3H;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nexports.add4L = add4L;\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nexports.add4H = add4H;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nexports.add5L = add5L;\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\nexports.add5H = add5H;\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexports.default = u64;\n//# sourceMappingURL=_u64.js.map","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n: bigint, le = false) {\n if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number) => h >>> s;\nconst shrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number) => l;\nconst rotr32L = (h: number, _l: number) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number) => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah: number, Al: number, Bh: number, Bl: number) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number) =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number) =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","\"use strict\";\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.randomBytes = exports.wrapXOFConstructorWithOpts = exports.wrapConstructorWithOpts = exports.wrapConstructor = exports.checkOpts = exports.Hash = exports.concatBytes = exports.toBytes = exports.utf8ToBytes = exports.asyncLoop = exports.nextTick = exports.hexToBytes = exports.bytesToHex = exports.isLE = exports.rotr = exports.createView = exports.u32 = exports.u8 = void 0;\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nconst crypto_1 = require(\"@noble/hashes/crypto\");\nconst u8a = (a) => a instanceof Uint8Array;\n// Cast array to different type\nconst u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexports.u8 = u8;\nconst u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\nexports.u32 = u32;\n// Cast array to view\nconst createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\nexports.createView = createView;\n// The rotate right (circular right shift) operation for uint32\nconst rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\nexports.rotr = rotr;\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexports.isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!exports.isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nfunction bytesToHex(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\nexports.bytesToHex = bytesToHex;\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nexports.hexToBytes = hexToBytes;\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nconst nextTick = async () => { };\nexports.nextTick = nextTick;\n// Returns control to thread each 'tick' ms to avoid blocking\nasync function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await (0, exports.nextTick)();\n ts += diff;\n }\n}\nexports.asyncLoop = asyncLoop;\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nfunction utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\nexports.utf8ToBytes = utf8ToBytes;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nfunction toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!u8a(data))\n throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\nexports.toBytes = toBytes;\n/**\n * Copies several Uint8Arrays into one.\n */\nfunction concatBytes(...arrays) {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a))\n throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\nexports.concatBytes = concatBytes;\n// For runtime check if class implements interface\nclass Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nexports.Hash = Hash;\nconst toStr = {}.toString;\nfunction checkOpts(defaults, opts) {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexports.checkOpts = checkOpts;\nfunction wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexports.wrapConstructor = wrapConstructor;\nfunction wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexports.wrapConstructorWithOpts = wrapConstructorWithOpts;\nfunction wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexports.wrapXOFConstructorWithOpts = wrapXOFConstructorWithOpts;\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nfunction randomBytes(bytesLength = 32) {\n if (crypto_1.crypto && typeof crypto_1.crypto.getRandomValues === 'function') {\n return crypto_1.crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\nexports.randomBytes = randomBytes;\n//# sourceMappingURL=utils.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\nconst u8a = (a: any): a is Uint8Array => a instanceof Uint8Array;\n// Cast array to different type\nexport const u8 = (arr: TypedArray) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr: TypedArray) =>\n new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n\n// Cast array to view\nexport const createView = (arr: TypedArray) =>\n new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word: number, shift: number) => (word << (32 - shift)) | (word >>> shift);\n\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE) throw new Error('Non little-endian hardware is not supported');\n\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n if (!u8a(bytes)) throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2) throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0) throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => {};\n\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters: number, tick: number, cb: (i: number) => void) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\nexport type Input = Uint8Array | string;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n if (!u8a(data)) throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a)) throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n\n// For runtime check if class implements interface\nexport abstract class Hash> {\n abstract blockLen: number; // Bytes per block\n abstract outputLen: number; // Bytes in output\n abstract update(buf: Input): this;\n // Writes digest into buf\n abstract digestInto(buf: Uint8Array): void;\n abstract digest(): Uint8Array;\n /**\n * Resets internal state. Makes Hash instance unusable.\n * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n * by user, they will need to manually call `destroy()` when zeroing is necessary.\n */\n abstract destroy(): void;\n /**\n * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n * when no options are passed.\n * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n * There are no guarantees for clean-up because it's impossible in JS.\n */\n abstract _cloneInto(to?: T): T;\n // Safe version that clones internal state\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF> = Hash & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\nconst toStr = {}.toString;\ntype EmptyObj = {};\nexport function checkOpts(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\nexport type CHash = ReturnType;\n\nexport function wrapConstructor>(hashCons: () => Hash) {\n const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\n\nexport function wrapConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => Hash\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\nexport function wrapXOFConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => HashXOF\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.crypto = void 0;\nexports.crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// See utils.ts for details.\ndeclare const globalThis: Record | undefined;\nexport const crypto =\n typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n","export function concat(values) {\n if (typeof values[0] === 'string')\n return concatHex(values);\n return concatBytes(values);\n}\nexport function concatBytes(values) {\n let length = 0;\n for (const arr of values) {\n length += arr.length;\n }\n const result = new Uint8Array(length);\n let offset = 0;\n for (const arr of values) {\n result.set(arr, offset);\n offset += arr.length;\n }\n return result;\n}\nexport function concatHex(values) {\n return `0x${values.reduce((acc, x) => acc + x.replace('0x', ''), '')}`;\n}\n//# sourceMappingURL=concat.js.map","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\nexport type ConcatReturnType = value extends Hex\n ? Hex\n : ByteArray\n\nexport type ConcatErrorType =\n | ConcatBytesErrorType\n | ConcatHexErrorType\n | ErrorType\n\nexport function concat(\n values: readonly value[],\n): ConcatReturnType {\n if (typeof values[0] === 'string')\n return concatHex(values as readonly Hex[]) as ConcatReturnType\n return concatBytes(values as readonly ByteArray[]) as ConcatReturnType\n}\n\nexport type ConcatBytesErrorType = ErrorType\n\nexport function concatBytes(values: readonly ByteArray[]): ByteArray {\n let length = 0\n for (const arr of values) {\n length += arr.length\n }\n const result = new Uint8Array(length)\n let offset = 0\n for (const arr of values) {\n result.set(arr, offset)\n offset += arr.length\n }\n return result\n}\n\nexport type ConcatHexErrorType = ErrorType\n\nexport function concatHex(values: readonly Hex[]): Hex {\n return `0x${(values as Hex[]).reduce(\n (acc, x) => acc + x.replace('0x', ''),\n '',\n )}`\n}\n","export const arrayRegex = /^(.*)\\[([0-9]*)\\]$/;\n// `bytes`: binary type of `M` bytes, `0 < M <= 32`\n// https://regexr.com/6va55\nexport const bytesRegex = /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/;\n// `(u)int`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`\n// https://regexr.com/6v8hp\nexport const integerRegex = /^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;\n//# sourceMappingURL=regex.js.map","export const arrayRegex = /^(.*)\\[([0-9]*)\\]$/\n\n// `bytes`: binary type of `M` bytes, `0 < M <= 32`\n// https://regexr.com/6va55\nexport const bytesRegex = /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/\n\n// `(u)int`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`\n// https://regexr.com/6v8hp\nexport const integerRegex =\n /^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/\n","export class Random {\n constructor(hash) {\n this.useA = false;\n let sfc32 = function (uint128Hex) {\n let a = parseInt(uint128Hex.substr(0, 8), 16);\n let b = parseInt(uint128Hex.substr(8, 8), 16);\n let c = parseInt(uint128Hex.substr(16, 8), 16);\n let d = parseInt(uint128Hex.substr(24, 8), 16);\n return function () {\n a |= 0;\n b |= 0;\n c |= 0;\n d |= 0;\n let t = (((a + b) | 0) + d) | 0;\n d = (d + 1) | 0;\n a = b ^ (b >>> 9);\n b = (c + (c << 3)) | 0;\n c = (c << 21) | (c >>> 11);\n c = (c + t) | 0;\n return (t >>> 0) / 4294967296;\n };\n };\n this.prngA = new sfc32(hash.substr(2, 32));\n this.prngB = new sfc32(hash.substr(34, 32));\n for (let i = 0; i < 1e6; i += 2) {\n this.prngA();\n this.prngB();\n }\n }\n\n float() {\n this.useA = !this.useA;\n return this.useA ? this.prngA() : this.prngB();\n }\n\n int(a = 0, b = 1) {\n return Math.round(a + this.float() * (b - a));\n }\n\n bell(b = 1, inv) {\n let u = 0,\n v = 0;\n while (u === 0) u = this.float(); //Converting [0,1) to (0,1)\n while (v === 0) v = this.float();\n let num = Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v);\n num = num / 10.0 + 0.5; // Translate to 0 -> 1\n if (num > 1 || num < 0) return this.bell(inv); // resample between 0 and 1\n\n if (inv) {\n if (num >= 0 && num < 0.5) {\n num += 0.5;\n } else {\n num -= 0.5;\n }\n }\n return Math.round(num * b);\n }\n}\n","(function () {\n function k(a, b, c) {\n d.biginteger_used = 1;\n null != a &&\n (\"number\" == typeof a && \"undefined\" == typeof b\n ? this.fromInt(a)\n : \"number\" == typeof a\n ? this.fromNumber(a, b, c)\n : null == b && \"string\" != typeof a\n ? this.fromString(a, 256)\n : this.fromString(a, b));\n }\n function q() {\n return new k(null, void 0, void 0);\n }\n function R(a, b, c, e, d, g) {\n for (; 0 <= --g; ) {\n var f = b * this[a++] + c[e] + d;\n d = Math.floor(f / 67108864);\n c[e++] = f & 67108863;\n }\n return d;\n }\n function S(a, b, c, e, d, g) {\n var f = b & 32767;\n for (b >>= 15; 0 <= --g; ) {\n var m = this[a] & 32767,\n k = this[a++] >> 15,\n n = b * m + k * f;\n m = f * m + ((n & 32767) << 15) + c[e] + (d & 1073741823);\n d = (m >>> 30) + (n >>> 15) + b * k + (d >>> 30);\n c[e++] = m & 1073741823;\n }\n return d;\n }\n function T(a, b, c, e, d, g) {\n var f = b & 16383;\n for (b >>= 14; 0 <= --g; ) {\n var m = this[a] & 16383,\n k = this[a++] >> 14,\n n = b * m + k * f;\n m = f * m + ((n & 16383) << 14) + c[e] + d;\n d = (m >> 28) + (n >> 14) + b * k;\n c[e++] = m & 268435455;\n }\n return d;\n }\n function M(a, b) {\n var c = E[a.charCodeAt(b)];\n return null == c ? -1 : c;\n }\n function y(a) {\n var b = q();\n b.fromInt(a);\n return b;\n }\n function F(a) {\n var b = 1,\n c;\n 0 != (c = a >>> 16) && ((a = c), (b += 16));\n 0 != (c = a >> 8) && ((a = c), (b += 8));\n 0 != (c = a >> 4) && ((a = c), (b += 4));\n 0 != (c = a >> 2) && ((a = c), (b += 2));\n 0 != a >> 1 && (b += 1);\n return b;\n }\n function z(a) {\n this.m = a;\n }\n function B(a) {\n this.m = a;\n this.mp = a.invDigit();\n this.mpl = this.mp & 32767;\n this.mph = this.mp >> 15;\n this.um = (1 << (a.DB - 15)) - 1;\n this.mt2 = 2 * a.t;\n }\n function U(a, b) {\n return a & b;\n }\n function H(a, b) {\n return a | b;\n }\n function N(a, b) {\n return a ^ b;\n }\n function O(a, b) {\n return a & ~b;\n }\n function D() {}\n function P(a) {\n return a;\n }\n function C(a) {\n this.r2 = q();\n this.q3 = q();\n k.ONE.dlShiftTo(2 * a.t, this.r2);\n this.mu = this.r2.divide(a);\n this.m = a;\n }\n var d = { version: \"6.4.2.2\", use_lines: !0, use_xyz: !1 },\n G = !1;\n \"undefined\" !== typeof module && module.exports\n ? ((module.exports = d), (G = !0))\n : \"undefined\" !== typeof document\n ? (window.ClipperLib = d)\n : (self.ClipperLib = d);\n if (G) {\n var u = \"chrome\";\n var v = \"Netscape\";\n } else\n (u = navigator.userAgent.toString().toLowerCase()), (v = navigator.appName);\n var I = -1 != u.indexOf(\"chrome\") && -1 == u.indexOf(\"chromium\") ? 1 : 0;\n G = -1 != u.indexOf(\"chromium\") ? 1 : 0;\n var Q =\n -1 != u.indexOf(\"safari\") &&\n -1 == u.indexOf(\"chrome\") &&\n -1 == u.indexOf(\"chromium\")\n ? 1\n : 0;\n var J = -1 != u.indexOf(\"firefox\") ? 1 : 0;\n u.indexOf(\"firefox/17\");\n u.indexOf(\"firefox/15\");\n u.indexOf(\"firefox/3\");\n var K = -1 != u.indexOf(\"opera\") ? 1 : 0;\n u.indexOf(\"msie 10\");\n u.indexOf(\"msie 9\");\n var L = -1 != u.indexOf(\"msie 8\") ? 1 : 0;\n var V = -1 != u.indexOf(\"msie 7\") ? 1 : 0;\n u = -1 != u.indexOf(\"msie \") ? 1 : 0;\n d.biginteger_used = null;\n \"Microsoft Internet Explorer\" == v\n ? ((k.prototype.am = S), (v = 30))\n : \"Netscape\" != v\n ? ((k.prototype.am = R), (v = 26))\n : ((k.prototype.am = T), (v = 28));\n k.prototype.DB = v;\n k.prototype.DM = (1 << v) - 1;\n k.prototype.DV = 1 << v;\n k.prototype.FV = Math.pow(2, 52);\n k.prototype.F1 = 52 - v;\n k.prototype.F2 = 2 * v - 52;\n var E = [],\n x;\n v = 48;\n for (x = 0; 9 >= x; ++x) E[v++] = x;\n v = 97;\n for (x = 10; 36 > x; ++x) E[v++] = x;\n v = 65;\n for (x = 10; 36 > x; ++x) E[v++] = x;\n z.prototype.convert = function (a) {\n return 0 > a.s || 0 <= a.compareTo(this.m) ? a.mod(this.m) : a;\n };\n z.prototype.revert = function (a) {\n return a;\n };\n z.prototype.reduce = function (a) {\n a.divRemTo(this.m, null, a);\n };\n z.prototype.mulTo = function (a, b, c) {\n a.multiplyTo(b, c);\n this.reduce(c);\n };\n z.prototype.sqrTo = function (a, b) {\n a.squareTo(b);\n this.reduce(b);\n };\n B.prototype.convert = function (a) {\n var b = q();\n a.abs().dlShiftTo(this.m.t, b);\n b.divRemTo(this.m, null, b);\n 0 > a.s && 0 < b.compareTo(k.ZERO) && this.m.subTo(b, b);\n return b;\n };\n B.prototype.revert = function (a) {\n var b = q();\n a.copyTo(b);\n this.reduce(b);\n return b;\n };\n B.prototype.reduce = function (a) {\n for (; a.t <= this.mt2; ) a[a.t++] = 0;\n for (var b = 0; b < this.m.t; ++b) {\n var c = a[b] & 32767,\n e =\n (c * this.mpl +\n (((c * this.mph + (a[b] >> 15) * this.mpl) & this.um) << 15)) &\n a.DM;\n c = b + this.m.t;\n for (a[c] += this.m.am(0, e, a, b, 0, this.m.t); a[c] >= a.DV; )\n (a[c] -= a.DV), a[++c]++;\n }\n a.clamp();\n a.drShiftTo(this.m.t, a);\n 0 <= a.compareTo(this.m) && a.subTo(this.m, a);\n };\n B.prototype.mulTo = function (a, b, c) {\n a.multiplyTo(b, c);\n this.reduce(c);\n };\n B.prototype.sqrTo = function (a, b) {\n a.squareTo(b);\n this.reduce(b);\n };\n k.prototype.copyTo = function (a) {\n for (var b = this.t - 1; 0 <= b; --b) a[b] = this[b];\n a.t = this.t;\n a.s = this.s;\n };\n k.prototype.fromInt = function (a) {\n this.t = 1;\n this.s = 0 > a ? -1 : 0;\n 0 < a ? (this[0] = a) : -1 > a ? (this[0] = a + this.DV) : (this.t = 0);\n };\n k.prototype.fromString = function (a, b) {\n if (16 == b) var c = 4;\n else if (8 == b) c = 3;\n else if (256 == b) c = 8;\n else if (2 == b) c = 1;\n else if (32 == b) c = 5;\n else if (4 == b) c = 2;\n else {\n this.fromRadix(a, b);\n return;\n }\n this.s = this.t = 0;\n for (var e = a.length, d = !1, g = 0; 0 <= --e; ) {\n var h = 8 == c ? a[e] & 255 : M(a, e);\n 0 > h\n ? \"-\" == a.charAt(e) && (d = !0)\n : ((d = !1),\n 0 == g\n ? (this[this.t++] = h)\n : g + c > this.DB\n ? ((this[this.t - 1] |= (h & ((1 << (this.DB - g)) - 1)) << g),\n (this[this.t++] = h >> (this.DB - g)))\n : (this[this.t - 1] |= h << g),\n (g += c),\n g >= this.DB && (g -= this.DB));\n }\n 8 == c &&\n 0 != (a[0] & 128) &&\n ((this.s = -1),\n 0 < g && (this[this.t - 1] |= ((1 << (this.DB - g)) - 1) << g));\n this.clamp();\n d && k.ZERO.subTo(this, this);\n };\n k.prototype.clamp = function () {\n for (var a = this.s & this.DM; 0 < this.t && this[this.t - 1] == a; )\n --this.t;\n };\n k.prototype.dlShiftTo = function (a, b) {\n var c;\n for (c = this.t - 1; 0 <= c; --c) b[c + a] = this[c];\n for (c = a - 1; 0 <= c; --c) b[c] = 0;\n b.t = this.t + a;\n b.s = this.s;\n };\n k.prototype.drShiftTo = function (a, b) {\n for (var c = a; c < this.t; ++c) b[c - a] = this[c];\n b.t = Math.max(this.t - a, 0);\n b.s = this.s;\n };\n k.prototype.lShiftTo = function (a, b) {\n var c = a % this.DB,\n e = this.DB - c,\n d = (1 << e) - 1,\n g = Math.floor(a / this.DB),\n h = (this.s << c) & this.DM,\n m;\n for (m = this.t - 1; 0 <= m; --m)\n (b[m + g + 1] = (this[m] >> e) | h), (h = (this[m] & d) << c);\n for (m = g - 1; 0 <= m; --m) b[m] = 0;\n b[g] = h;\n b.t = this.t + g + 1;\n b.s = this.s;\n b.clamp();\n };\n k.prototype.rShiftTo = function (a, b) {\n b.s = this.s;\n var c = Math.floor(a / this.DB);\n if (c >= this.t) b.t = 0;\n else {\n var e = a % this.DB,\n d = this.DB - e,\n g = (1 << e) - 1;\n b[0] = this[c] >> e;\n for (var h = c + 1; h < this.t; ++h)\n (b[h - c - 1] |= (this[h] & g) << d), (b[h - c] = this[h] >> e);\n 0 < e && (b[this.t - c - 1] |= (this.s & g) << d);\n b.t = this.t - c;\n b.clamp();\n }\n };\n k.prototype.subTo = function (a, b) {\n for (var c = 0, e = 0, d = Math.min(a.t, this.t); c < d; )\n (e += this[c] - a[c]), (b[c++] = e & this.DM), (e >>= this.DB);\n if (a.t < this.t) {\n for (e -= a.s; c < this.t; )\n (e += this[c]), (b[c++] = e & this.DM), (e >>= this.DB);\n e += this.s;\n } else {\n for (e += this.s; c < a.t; )\n (e -= a[c]), (b[c++] = e & this.DM), (e >>= this.DB);\n e -= a.s;\n }\n b.s = 0 > e ? -1 : 0;\n -1 > e ? (b[c++] = this.DV + e) : 0 < e && (b[c++] = e);\n b.t = c;\n b.clamp();\n };\n k.prototype.multiplyTo = function (a, b) {\n var c = this.abs(),\n e = a.abs(),\n d = c.t;\n for (b.t = d + e.t; 0 <= --d; ) b[d] = 0;\n for (d = 0; d < e.t; ++d) b[d + c.t] = c.am(0, e[d], b, d, 0, c.t);\n b.s = 0;\n b.clamp();\n this.s != a.s && k.ZERO.subTo(b, b);\n };\n k.prototype.squareTo = function (a) {\n for (var b = this.abs(), c = (a.t = 2 * b.t); 0 <= --c; ) a[c] = 0;\n for (c = 0; c < b.t - 1; ++c) {\n var e = b.am(c, b[c], a, 2 * c, 0, 1);\n (a[c + b.t] += b.am(c + 1, 2 * b[c], a, 2 * c + 1, e, b.t - c - 1)) >=\n b.DV && ((a[c + b.t] -= b.DV), (a[c + b.t + 1] = 1));\n }\n 0 < a.t && (a[a.t - 1] += b.am(c, b[c], a, 2 * c, 0, 1));\n a.s = 0;\n a.clamp();\n };\n k.prototype.divRemTo = function (a, b, c) {\n var e = a.abs();\n if (!(0 >= e.t)) {\n var d = this.abs();\n if (d.t < e.t) null != b && b.fromInt(0), null != c && this.copyTo(c);\n else {\n null == c && (c = q());\n var g = q(),\n h = this.s;\n a = a.s;\n var m = this.DB - F(e[e.t - 1]);\n 0 < m\n ? (e.lShiftTo(m, g), d.lShiftTo(m, c))\n : (e.copyTo(g), d.copyTo(c));\n e = g.t;\n d = g[e - 1];\n if (0 != d) {\n var l = d * (1 << this.F1) + (1 < e ? g[e - 2] >> this.F2 : 0),\n n = this.FV / l;\n l = (1 << this.F1) / l;\n var r = 1 << this.F2,\n p = c.t,\n t = p - e,\n u = null == b ? q() : b;\n g.dlShiftTo(t, u);\n 0 <= c.compareTo(u) && ((c[c.t++] = 1), c.subTo(u, c));\n k.ONE.dlShiftTo(e, u);\n for (u.subTo(g, g); g.t < e; ) g[g.t++] = 0;\n for (; 0 <= --t; ) {\n var v =\n c[--p] == d ? this.DM : Math.floor(c[p] * n + (c[p - 1] + r) * l);\n if ((c[p] += g.am(0, v, c, t, 0, e)) < v)\n for (g.dlShiftTo(t, u), c.subTo(u, c); c[p] < --v; )\n c.subTo(u, c);\n }\n null != b && (c.drShiftTo(e, b), h != a && k.ZERO.subTo(b, b));\n c.t = e;\n c.clamp();\n 0 < m && c.rShiftTo(m, c);\n 0 > h && k.ZERO.subTo(c, c);\n }\n }\n }\n };\n k.prototype.invDigit = function () {\n if (1 > this.t) return 0;\n var a = this[0];\n if (0 == (a & 1)) return 0;\n var b = a & 3;\n b = (b * (2 - (a & 15) * b)) & 15;\n b = (b * (2 - (a & 255) * b)) & 255;\n b = (b * (2 - (((a & 65535) * b) & 65535))) & 65535;\n b = (b * (2 - ((a * b) % this.DV))) % this.DV;\n return 0 < b ? this.DV - b : -b;\n };\n k.prototype.isEven = function () {\n return 0 == (0 < this.t ? this[0] & 1 : this.s);\n };\n k.prototype.exp = function (a, b) {\n if (4294967295 < a || 1 > a) return k.ONE;\n var c = q(),\n e = q(),\n d = b.convert(this),\n g = F(a) - 1;\n for (d.copyTo(c); 0 <= --g; )\n if ((b.sqrTo(c, e), 0 < (a & (1 << g)))) b.mulTo(e, d, c);\n else {\n var h = c;\n c = e;\n e = h;\n }\n return b.revert(c);\n };\n k.prototype.toString = function (a) {\n if (0 > this.s) return \"-\" + this.negate().toString(a);\n if (16 == a) a = 4;\n else if (8 == a) a = 3;\n else if (2 == a) a = 1;\n else if (32 == a) a = 5;\n else if (4 == a) a = 2;\n else return this.toRadix(a);\n var b = (1 << a) - 1,\n c,\n e = !1,\n d = \"\",\n g = this.t,\n h = this.DB - ((g * this.DB) % a);\n if (0 < g--)\n for (\n h < this.DB &&\n 0 < (c = this[g] >> h) &&\n ((e = !0), (d = \"0123456789abcdefghijklmnopqrstuvwxyz\".charAt(c)));\n 0 <= g;\n\n )\n h < a\n ? ((c = (this[g] & ((1 << h) - 1)) << (a - h)),\n (c |= this[--g] >> (h += this.DB - a)))\n : ((c = (this[g] >> (h -= a)) & b), 0 >= h && ((h += this.DB), --g)),\n 0 < c && (e = !0),\n e && (d += \"0123456789abcdefghijklmnopqrstuvwxyz\".charAt(c));\n return e ? d : \"0\";\n };\n k.prototype.negate = function () {\n var a = q();\n k.ZERO.subTo(this, a);\n return a;\n };\n k.prototype.abs = function () {\n return 0 > this.s ? this.negate() : this;\n };\n k.prototype.compareTo = function (a) {\n var b = this.s - a.s;\n if (0 != b) return b;\n var c = this.t;\n b = c - a.t;\n if (0 != b) return 0 > this.s ? -b : b;\n for (; 0 <= --c; ) if (0 != (b = this[c] - a[c])) return b;\n return 0;\n };\n k.prototype.bitLength = function () {\n return 0 >= this.t\n ? 0\n : this.DB * (this.t - 1) + F(this[this.t - 1] ^ (this.s & this.DM));\n };\n k.prototype.mod = function (a) {\n var b = q();\n this.abs().divRemTo(a, null, b);\n 0 > this.s && 0 < b.compareTo(k.ZERO) && a.subTo(b, b);\n return b;\n };\n k.prototype.modPowInt = function (a, b) {\n var c = 256 > a || b.isEven() ? new z(b) : new B(b);\n return this.exp(a, c);\n };\n k.ZERO = y(0);\n k.ONE = y(1);\n D.prototype.convert = P;\n D.prototype.revert = P;\n D.prototype.mulTo = function (a, b, c) {\n a.multiplyTo(b, c);\n };\n D.prototype.sqrTo = function (a, b) {\n a.squareTo(b);\n };\n C.prototype.convert = function (a) {\n if (0 > a.s || a.t > 2 * this.m.t) return a.mod(this.m);\n if (0 > a.compareTo(this.m)) return a;\n var b = q();\n a.copyTo(b);\n this.reduce(b);\n return b;\n };\n C.prototype.revert = function (a) {\n return a;\n };\n C.prototype.reduce = function (a) {\n a.drShiftTo(this.m.t - 1, this.r2);\n a.t > this.m.t + 1 && ((a.t = this.m.t + 1), a.clamp());\n this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3);\n for (\n this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2);\n 0 > a.compareTo(this.r2);\n\n )\n a.dAddOffset(1, this.m.t + 1);\n for (a.subTo(this.r2, a); 0 <= a.compareTo(this.m); ) a.subTo(this.m, a);\n };\n C.prototype.mulTo = function (a, b, c) {\n a.multiplyTo(b, c);\n this.reduce(c);\n };\n C.prototype.sqrTo = function (a, b) {\n a.squareTo(b);\n this.reduce(b);\n };\n var w = [\n 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67,\n 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149,\n 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229,\n 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313,\n 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409,\n 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499,\n 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601,\n 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691,\n 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809,\n 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907,\n 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997,\n ],\n W = 67108864 / w[w.length - 1];\n k.prototype.chunkSize = function (a) {\n return Math.floor((Math.LN2 * this.DB) / Math.log(a));\n };\n k.prototype.toRadix = function (a) {\n null == a && (a = 10);\n if (0 == this.signum() || 2 > a || 36 < a) return \"0\";\n var b = this.chunkSize(a);\n b = Math.pow(a, b);\n var c = y(b),\n e = q(),\n d = q(),\n g = \"\";\n for (this.divRemTo(c, e, d); 0 < e.signum(); )\n (g = (b + d.intValue()).toString(a).substr(1) + g), e.divRemTo(c, e, d);\n return d.intValue().toString(a) + g;\n };\n k.prototype.fromRadix = function (a, b) {\n this.fromInt(0);\n null == b && (b = 10);\n for (\n var c = this.chunkSize(b),\n e = Math.pow(b, c),\n d = !1,\n g = 0,\n h = 0,\n m = 0;\n m < a.length;\n ++m\n ) {\n var l = M(a, m);\n 0 > l\n ? \"-\" == a.charAt(m) && 0 == this.signum() && (d = !0)\n : ((h = b * h + l),\n ++g >= c && (this.dMultiply(e), this.dAddOffset(h, 0), (h = g = 0)));\n }\n 0 < g && (this.dMultiply(Math.pow(b, g)), this.dAddOffset(h, 0));\n d && k.ZERO.subTo(this, this);\n };\n k.prototype.fromNumber = function (a, b, c) {\n if (\"number\" == typeof b)\n if (2 > a) this.fromInt(1);\n else\n for (\n this.fromNumber(a, c),\n this.testBit(a - 1) ||\n this.bitwiseTo(k.ONE.shiftLeft(a - 1), H, this),\n this.isEven() && this.dAddOffset(1, 0);\n !this.isProbablePrime(b);\n\n )\n this.dAddOffset(2, 0),\n this.bitLength() > a && this.subTo(k.ONE.shiftLeft(a - 1), this);\n else {\n c = [];\n var e = a & 7;\n c.length = (a >> 3) + 1;\n b.nextBytes(c);\n c[0] = 0 < e ? c[0] & ((1 << e) - 1) : 0;\n this.fromString(c, 256);\n }\n };\n k.prototype.bitwiseTo = function (a, b, c) {\n var e,\n d = Math.min(a.t, this.t);\n for (e = 0; e < d; ++e) c[e] = b(this[e], a[e]);\n if (a.t < this.t) {\n var g = a.s & this.DM;\n for (e = d; e < this.t; ++e) c[e] = b(this[e], g);\n c.t = this.t;\n } else {\n g = this.s & this.DM;\n for (e = d; e < a.t; ++e) c[e] = b(g, a[e]);\n c.t = a.t;\n }\n c.s = b(this.s, a.s);\n c.clamp();\n };\n k.prototype.changeBit = function (a, b) {\n var c = k.ONE.shiftLeft(a);\n this.bitwiseTo(c, b, c);\n return c;\n };\n k.prototype.addTo = function (a, b) {\n for (var c = 0, e = 0, d = Math.min(a.t, this.t); c < d; )\n (e += this[c] + a[c]), (b[c++] = e & this.DM), (e >>= this.DB);\n if (a.t < this.t) {\n for (e += a.s; c < this.t; )\n (e += this[c]), (b[c++] = e & this.DM), (e >>= this.DB);\n e += this.s;\n } else {\n for (e += this.s; c < a.t; )\n (e += a[c]), (b[c++] = e & this.DM), (e >>= this.DB);\n e += a.s;\n }\n b.s = 0 > e ? -1 : 0;\n 0 < e ? (b[c++] = e) : -1 > e && (b[c++] = this.DV + e);\n b.t = c;\n b.clamp();\n };\n k.prototype.dMultiply = function (a) {\n this[this.t] = this.am(0, a - 1, this, 0, 0, this.t);\n ++this.t;\n this.clamp();\n };\n k.prototype.dAddOffset = function (a, b) {\n if (0 != a) {\n for (; this.t <= b; ) this[this.t++] = 0;\n for (this[b] += a; this[b] >= this.DV; )\n (this[b] -= this.DV), ++b >= this.t && (this[this.t++] = 0), ++this[b];\n }\n };\n k.prototype.multiplyLowerTo = function (a, b, c) {\n var e = Math.min(this.t + a.t, b);\n c.s = 0;\n for (c.t = e; 0 < e; ) c[--e] = 0;\n var d;\n for (d = c.t - this.t; e < d; ++e)\n c[e + this.t] = this.am(0, a[e], c, e, 0, this.t);\n for (d = Math.min(a.t, b); e < d; ++e) this.am(0, a[e], c, e, 0, b - e);\n c.clamp();\n };\n k.prototype.multiplyUpperTo = function (a, b, c) {\n --b;\n var e = (c.t = this.t + a.t - b);\n for (c.s = 0; 0 <= --e; ) c[e] = 0;\n for (e = Math.max(b - this.t, 0); e < a.t; ++e)\n c[this.t + e - b] = this.am(b - e, a[e], c, 0, 0, this.t + e - b);\n c.clamp();\n c.drShiftTo(1, c);\n };\n k.prototype.modInt = function (a) {\n if (0 >= a) return 0;\n var b = this.DV % a,\n c = 0 > this.s ? a - 1 : 0;\n if (0 < this.t)\n if (0 == b) c = this[0] % a;\n else for (var e = this.t - 1; 0 <= e; --e) c = (b * c + this[e]) % a;\n return c;\n };\n k.prototype.millerRabin = function (a) {\n var b = this.subtract(k.ONE),\n c = b.getLowestSetBit();\n if (0 >= c) return !1;\n var e = b.shiftRight(c);\n a = (a + 1) >> 1;\n a > w.length && (a = w.length);\n for (var d = q(), g = 0; g < a; ++g) {\n d.fromInt(w[Math.floor(Math.random() * w.length)]);\n var h = d.modPow(e, this);\n if (0 != h.compareTo(k.ONE) && 0 != h.compareTo(b)) {\n for (var m = 1; m++ < c && 0 != h.compareTo(b); )\n if (((h = h.modPowInt(2, this)), 0 == h.compareTo(k.ONE))) return !1;\n if (0 != h.compareTo(b)) return !1;\n }\n }\n return !0;\n };\n k.prototype.clone = function () {\n var a = q();\n this.copyTo(a);\n return a;\n };\n k.prototype.intValue = function () {\n if (0 > this.s) {\n if (1 == this.t) return this[0] - this.DV;\n if (0 == this.t) return -1;\n } else {\n if (1 == this.t) return this[0];\n if (0 == this.t) return 0;\n }\n return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0];\n };\n k.prototype.byteValue = function () {\n return 0 == this.t ? this.s : (this[0] << 24) >> 24;\n };\n k.prototype.shortValue = function () {\n return 0 == this.t ? this.s : (this[0] << 16) >> 16;\n };\n k.prototype.signum = function () {\n return 0 > this.s\n ? -1\n : 0 >= this.t || (1 == this.t && 0 >= this[0])\n ? 0\n : 1;\n };\n k.prototype.toByteArray = function () {\n var a = this.t,\n b = [];\n b[0] = this.s;\n var c = this.DB - ((a * this.DB) % 8),\n e,\n d = 0;\n if (0 < a--)\n for (\n c < this.DB &&\n (e = this[a] >> c) != (this.s & this.DM) >> c &&\n (b[d++] = e | (this.s << (this.DB - c)));\n 0 <= a;\n\n )\n if (\n (8 > c\n ? ((e = (this[a] & ((1 << c) - 1)) << (8 - c)),\n (e |= this[--a] >> (c += this.DB - 8)))\n : ((e = (this[a] >> (c -= 8)) & 255),\n 0 >= c && ((c += this.DB), --a)),\n 0 != (e & 128) && (e |= -256),\n 0 == d && (this.s & 128) != (e & 128) && ++d,\n 0 < d || e != this.s)\n )\n b[d++] = e;\n return b;\n };\n k.prototype.equals = function (a) {\n return 0 == this.compareTo(a);\n };\n k.prototype.min = function (a) {\n return 0 > this.compareTo(a) ? this : a;\n };\n k.prototype.max = function (a) {\n return 0 < this.compareTo(a) ? this : a;\n };\n k.prototype.and = function (a) {\n var b = q();\n this.bitwiseTo(a, U, b);\n return b;\n };\n k.prototype.or = function (a) {\n var b = q();\n this.bitwiseTo(a, H, b);\n return b;\n };\n k.prototype.xor = function (a) {\n var b = q();\n this.bitwiseTo(a, N, b);\n return b;\n };\n k.prototype.andNot = function (a) {\n var b = q();\n this.bitwiseTo(a, O, b);\n return b;\n };\n k.prototype.not = function () {\n for (var a = q(), b = 0; b < this.t; ++b) a[b] = this.DM & ~this[b];\n a.t = this.t;\n a.s = ~this.s;\n return a;\n };\n k.prototype.shiftLeft = function (a) {\n var b = q();\n 0 > a ? this.rShiftTo(-a, b) : this.lShiftTo(a, b);\n return b;\n };\n k.prototype.shiftRight = function (a) {\n var b = q();\n 0 > a ? this.lShiftTo(-a, b) : this.rShiftTo(a, b);\n return b;\n };\n k.prototype.getLowestSetBit = function () {\n for (var a = 0; a < this.t; ++a)\n if (0 != this[a]) {\n var b = a * this.DB;\n a = this[a];\n if (0 == a) a = -1;\n else {\n var c = 0;\n 0 == (a & 65535) && ((a >>= 16), (c += 16));\n 0 == (a & 255) && ((a >>= 8), (c += 8));\n 0 == (a & 15) && ((a >>= 4), (c += 4));\n 0 == (a & 3) && ((a >>= 2), (c += 2));\n 0 == (a & 1) && ++c;\n a = c;\n }\n return b + a;\n }\n return 0 > this.s ? this.t * this.DB : -1;\n };\n k.prototype.bitCount = function () {\n for (var a = 0, b = this.s & this.DM, c = 0; c < this.t; ++c) {\n for (var e = this[c] ^ b, d = 0; 0 != e; ) (e &= e - 1), ++d;\n a += d;\n }\n return a;\n };\n k.prototype.testBit = function (a) {\n var b = Math.floor(a / this.DB);\n return b >= this.t ? 0 != this.s : 0 != (this[b] & (1 << a % this.DB));\n };\n k.prototype.setBit = function (a) {\n return this.changeBit(a, H);\n };\n k.prototype.clearBit = function (a) {\n return this.changeBit(a, O);\n };\n k.prototype.flipBit = function (a) {\n return this.changeBit(a, N);\n };\n k.prototype.add = function (a) {\n var b = q();\n this.addTo(a, b);\n return b;\n };\n k.prototype.subtract = function (a) {\n var b = q();\n this.subTo(a, b);\n return b;\n };\n k.prototype.multiply = function (a) {\n var b = q();\n this.multiplyTo(a, b);\n return b;\n };\n k.prototype.divide = function (a) {\n var b = q();\n this.divRemTo(a, b, null);\n return b;\n };\n k.prototype.remainder = function (a) {\n var b = q();\n this.divRemTo(a, null, b);\n return b;\n };\n k.prototype.divideAndRemainder = function (a) {\n var b = q(),\n c = q();\n this.divRemTo(a, b, c);\n return [b, c];\n };\n k.prototype.modPow = function (a, b) {\n var c = a.bitLength(),\n e = y(1);\n if (0 >= c) return e;\n var d = 18 > c ? 1 : 48 > c ? 3 : 144 > c ? 4 : 768 > c ? 5 : 6;\n var g = 8 > c ? new z(b) : b.isEven() ? new C(b) : new B(b);\n var h = [],\n m = 3,\n k = d - 1,\n n = (1 << d) - 1;\n h[1] = g.convert(this);\n if (1 < d)\n for (c = q(), g.sqrTo(h[1], c); m <= n; )\n (h[m] = q()), g.mulTo(c, h[m - 2], h[m]), (m += 2);\n var r = a.t - 1,\n p = !0,\n t = q();\n for (c = F(a[r]) - 1; 0 <= r; ) {\n if (c >= k) var u = (a[r] >> (c - k)) & n;\n else\n (u = (a[r] & ((1 << (c + 1)) - 1)) << (k - c)),\n 0 < r && (u |= a[r - 1] >> (this.DB + c - k));\n for (m = d; 0 == (u & 1); ) (u >>= 1), --m;\n 0 > (c -= m) && ((c += this.DB), --r);\n if (p) h[u].copyTo(e), (p = !1);\n else {\n for (; 1 < m; ) g.sqrTo(e, t), g.sqrTo(t, e), (m -= 2);\n 0 < m ? g.sqrTo(e, t) : ((m = e), (e = t), (t = m));\n g.mulTo(t, h[u], e);\n }\n for (; 0 <= r && 0 == (a[r] & (1 << c)); )\n g.sqrTo(e, t),\n (m = e),\n (e = t),\n (t = m),\n 0 > --c && ((c = this.DB - 1), --r);\n }\n return g.revert(e);\n };\n k.prototype.modInverse = function (a) {\n var b = a.isEven();\n if ((this.isEven() && b) || 0 == a.signum()) return k.ZERO;\n for (\n var c = a.clone(),\n e = this.clone(),\n d = y(1),\n g = y(0),\n h = y(0),\n m = y(1);\n 0 != c.signum();\n\n ) {\n for (; c.isEven(); )\n c.rShiftTo(1, c),\n b\n ? ((d.isEven() && g.isEven()) || (d.addTo(this, d), g.subTo(a, g)),\n d.rShiftTo(1, d))\n : g.isEven() || g.subTo(a, g),\n g.rShiftTo(1, g);\n for (; e.isEven(); )\n e.rShiftTo(1, e),\n b\n ? ((h.isEven() && m.isEven()) || (h.addTo(this, h), m.subTo(a, m)),\n h.rShiftTo(1, h))\n : m.isEven() || m.subTo(a, m),\n m.rShiftTo(1, m);\n 0 <= c.compareTo(e)\n ? (c.subTo(e, c), b && d.subTo(h, d), g.subTo(m, g))\n : (e.subTo(c, e), b && h.subTo(d, h), m.subTo(g, m));\n }\n if (0 != e.compareTo(k.ONE)) return k.ZERO;\n if (0 <= m.compareTo(a)) return m.subtract(a);\n if (0 > m.signum()) m.addTo(a, m);\n else return m;\n return 0 > m.signum() ? m.add(a) : m;\n };\n k.prototype.pow = function (a) {\n return this.exp(a, new D());\n };\n k.prototype.gcd = function (a) {\n var b = 0 > this.s ? this.negate() : this.clone();\n a = 0 > a.s ? a.negate() : a.clone();\n if (0 > b.compareTo(a)) {\n var c = b;\n b = a;\n a = c;\n }\n c = b.getLowestSetBit();\n var e = a.getLowestSetBit();\n if (0 > e) return b;\n c < e && (e = c);\n 0 < e && (b.rShiftTo(e, b), a.rShiftTo(e, a));\n for (; 0 < b.signum(); )\n 0 < (c = b.getLowestSetBit()) && b.rShiftTo(c, b),\n 0 < (c = a.getLowestSetBit()) && a.rShiftTo(c, a),\n 0 <= b.compareTo(a)\n ? (b.subTo(a, b), b.rShiftTo(1, b))\n : (a.subTo(b, a), a.rShiftTo(1, a));\n 0 < e && a.lShiftTo(e, a);\n return a;\n };\n k.prototype.isProbablePrime = function (a) {\n var b,\n c = this.abs();\n if (1 == c.t && c[0] <= w[w.length - 1]) {\n for (b = 0; b < w.length; ++b) if (c[0] == w[b]) return !0;\n return !1;\n }\n if (c.isEven()) return !1;\n for (b = 1; b < w.length; ) {\n for (var e = w[b], d = b + 1; d < w.length && e < W; ) e *= w[d++];\n for (e = c.modInt(e); b < d; ) if (0 == e % w[b++]) return !1;\n }\n return c.millerRabin(a);\n };\n k.prototype.square = function () {\n var a = q();\n this.squareTo(a);\n return a;\n };\n k.prototype.IsNegative = function () {\n return -1 == this.compareTo(k.ZERO) ? !0 : !1;\n };\n k.op_Equality = function (a, b) {\n return 0 == a.compareTo(b) ? !0 : !1;\n };\n k.op_Inequality = function (a, b) {\n return 0 != a.compareTo(b) ? !0 : !1;\n };\n k.op_GreaterThan = function (a, b) {\n return 0 < a.compareTo(b) ? !0 : !1;\n };\n k.op_LessThan = function (a, b) {\n return 0 > a.compareTo(b) ? !0 : !1;\n };\n k.op_Addition = function (a, b) {\n return new k(a, void 0, void 0).add(new k(b, void 0, void 0));\n };\n k.op_Subtraction = function (a, b) {\n return new k(a, void 0, void 0).subtract(new k(b, void 0, void 0));\n };\n k.Int128Mul = function (a, b) {\n return new k(a, void 0, void 0).multiply(new k(b, void 0, void 0));\n };\n k.op_Division = function (a, b) {\n return a.divide(b);\n };\n k.prototype.ToDouble = function () {\n return parseFloat(this.toString());\n };\n v = function (a, b) {\n var c;\n if (\"undefined\" === typeof Object.getOwnPropertyNames)\n for (c in b.prototype) {\n if (\n \"undefined\" === typeof a.prototype[c] ||\n a.prototype[c] === Object.prototype[c]\n )\n a.prototype[c] = b.prototype[c];\n }\n else\n for (\n var e = Object.getOwnPropertyNames(b.prototype), d = 0;\n d < e.length;\n d++\n )\n \"undefined\" ===\n typeof Object.getOwnPropertyDescriptor(a.prototype, e[d]) &&\n Object.defineProperty(\n a.prototype,\n e[d],\n Object.getOwnPropertyDescriptor(b.prototype, e[d])\n );\n for (c in b) \"undefined\" === typeof a[c] && (a[c] = b[c]);\n a.$baseCtor = b;\n };\n d.Path = function () {\n return [];\n };\n d.Path.prototype.push = Array.prototype.push;\n d.Paths = function () {\n return [];\n };\n d.Paths.prototype.push = Array.prototype.push;\n d.DoublePoint = function () {\n var a = arguments;\n this.Y = this.X = 0;\n 1 === a.length\n ? ((this.X = a[0].X), (this.Y = a[0].Y))\n : 2 === a.length && ((this.X = a[0]), (this.Y = a[1]));\n };\n d.DoublePoint0 = function () {\n this.Y = this.X = 0;\n };\n d.DoublePoint0.prototype = d.DoublePoint.prototype;\n d.DoublePoint1 = function (a) {\n this.X = a.X;\n this.Y = a.Y;\n };\n d.DoublePoint1.prototype = d.DoublePoint.prototype;\n d.DoublePoint2 = function (a, b) {\n this.X = a;\n this.Y = b;\n };\n d.DoublePoint2.prototype = d.DoublePoint.prototype;\n d.PolyNode = function () {\n this.m_Parent = null;\n this.m_polygon = new d.Path();\n this.m_endtype = this.m_jointype = this.m_Index = 0;\n this.m_Childs = [];\n this.IsOpen = !1;\n };\n d.PolyNode.prototype.IsHoleNode = function () {\n for (var a = !0, b = this.m_Parent; null !== b; )\n (a = !a), (b = b.m_Parent);\n return a;\n };\n d.PolyNode.prototype.ChildCount = function () {\n return this.m_Childs.length;\n };\n d.PolyNode.prototype.Contour = function () {\n return this.m_polygon;\n };\n d.PolyNode.prototype.AddChild = function (a) {\n var b = this.m_Childs.length;\n this.m_Childs.push(a);\n a.m_Parent = this;\n a.m_Index = b;\n };\n d.PolyNode.prototype.GetNext = function () {\n return 0 < this.m_Childs.length\n ? this.m_Childs[0]\n : this.GetNextSiblingUp();\n };\n d.PolyNode.prototype.GetNextSiblingUp = function () {\n return null === this.m_Parent\n ? null\n : this.m_Index === this.m_Parent.m_Childs.length - 1\n ? this.m_Parent.GetNextSiblingUp()\n : this.m_Parent.m_Childs[this.m_Index + 1];\n };\n d.PolyNode.prototype.Childs = function () {\n return this.m_Childs;\n };\n d.PolyNode.prototype.Parent = function () {\n return this.m_Parent;\n };\n d.PolyNode.prototype.IsHole = function () {\n return this.IsHoleNode();\n };\n d.PolyTree = function () {\n this.m_AllPolys = [];\n d.PolyNode.call(this);\n };\n d.PolyTree.prototype.Clear = function () {\n for (var a = 0, b = this.m_AllPolys.length; a < b; a++)\n this.m_AllPolys[a] = null;\n this.m_AllPolys.length = 0;\n this.m_Childs.length = 0;\n };\n d.PolyTree.prototype.GetFirst = function () {\n return 0 < this.m_Childs.length ? this.m_Childs[0] : null;\n };\n d.PolyTree.prototype.Total = function () {\n var a = this.m_AllPolys.length;\n 0 < a && this.m_Childs[0] !== this.m_AllPolys[0] && a--;\n return a;\n };\n v(d.PolyTree, d.PolyNode);\n d.Math_Abs_Int64 =\n d.Math_Abs_Int32 =\n d.Math_Abs_Double =\n function (a) {\n return Math.abs(a);\n };\n d.Math_Max_Int32_Int32 = function (a, b) {\n return Math.max(a, b);\n };\n d.Cast_Int32 =\n u || K || Q\n ? function (a) {\n return a | 0;\n }\n : function (a) {\n return ~~a;\n };\n \"undefined\" === typeof Number.toInteger && (Number.toInteger = null);\n d.Cast_Int64 = I\n ? function (a) {\n return -2147483648 > a || 2147483647 < a\n ? 0 > a\n ? Math.ceil(a)\n : Math.floor(a)\n : ~~a;\n }\n : J && \"function\" === typeof Number.toInteger\n ? function (a) {\n return Number.toInteger(a);\n }\n : V || L\n ? function (a) {\n return parseInt(a, 10);\n }\n : u\n ? function (a) {\n return -2147483648 > a || 2147483647 < a\n ? 0 > a\n ? Math.ceil(a)\n : Math.floor(a)\n : a | 0;\n }\n : function (a) {\n return 0 > a ? Math.ceil(a) : Math.floor(a);\n };\n d.Clear = function (a) {\n a.length = 0;\n };\n d.PI = 3.141592653589793;\n d.PI2 = 6.283185307179586;\n d.IntPoint = function () {\n var a = arguments;\n var b = a.length;\n this.Y = this.X = 0;\n d.use_xyz\n ? ((this.Z = 0),\n 3 === b\n ? ((this.X = a[0]), (this.Y = a[1]), (this.Z = a[2]))\n : 2 === b\n ? ((this.X = a[0]), (this.Y = a[1]), (this.Z = 0))\n : 1 === b\n ? a[0] instanceof d.DoublePoint\n ? ((a = a[0]),\n (this.X = d.Clipper.Round(a.X)),\n (this.Y = d.Clipper.Round(a.Y)),\n (this.Z = 0))\n : ((a = a[0]),\n \"undefined\" === typeof a.Z && (a.Z = 0),\n (this.X = a.X),\n (this.Y = a.Y),\n (this.Z = a.Z))\n : (this.Z = this.Y = this.X = 0))\n : 2 === b\n ? ((this.X = a[0]), (this.Y = a[1]))\n : 1 === b\n ? a[0] instanceof d.DoublePoint\n ? ((a = a[0]),\n (this.X = d.Clipper.Round(a.X)),\n (this.Y = d.Clipper.Round(a.Y)))\n : ((a = a[0]), (this.X = a.X), (this.Y = a.Y))\n : (this.Y = this.X = 0);\n };\n d.IntPoint.op_Equality = function (a, b) {\n return a.X === b.X && a.Y === b.Y;\n };\n d.IntPoint.op_Inequality = function (a, b) {\n return a.X !== b.X || a.Y !== b.Y;\n };\n d.IntPoint0 = function () {\n this.Y = this.X = 0;\n d.use_xyz && (this.Z = 0);\n };\n d.IntPoint0.prototype = d.IntPoint.prototype;\n d.IntPoint1 = function (a) {\n this.X = a.X;\n this.Y = a.Y;\n d.use_xyz && (this.Z = \"undefined\" === typeof a.Z ? 0 : a.Z);\n };\n d.IntPoint1.prototype = d.IntPoint.prototype;\n d.IntPoint1dp = function (a) {\n this.X = d.Clipper.Round(a.X);\n this.Y = d.Clipper.Round(a.Y);\n d.use_xyz && (this.Z = 0);\n };\n d.IntPoint1dp.prototype = d.IntPoint.prototype;\n d.IntPoint2 = function (a, b, c) {\n this.X = a;\n this.Y = b;\n d.use_xyz && (this.Z = \"undefined\" === typeof c ? 0 : c);\n };\n d.IntPoint2.prototype = d.IntPoint.prototype;\n d.IntRect = function () {\n var a = arguments,\n b = a.length;\n 4 === b\n ? ((this.left = a[0]),\n (this.top = a[1]),\n (this.right = a[2]),\n (this.bottom = a[3]))\n : 1 === b\n ? ((a = a[0]),\n (this.left = a.left),\n (this.top = a.top),\n (this.right = a.right),\n (this.bottom = a.bottom))\n : (this.bottom = this.right = this.top = this.left = 0);\n };\n d.IntRect0 = function () {\n this.bottom = this.right = this.top = this.left = 0;\n };\n d.IntRect0.prototype = d.IntRect.prototype;\n d.IntRect1 = function (a) {\n this.left = a.left;\n this.top = a.top;\n this.right = a.right;\n this.bottom = a.bottom;\n };\n d.IntRect1.prototype = d.IntRect.prototype;\n d.IntRect4 = function (a, b, c, e) {\n this.left = a;\n this.top = b;\n this.right = c;\n this.bottom = e;\n };\n d.IntRect4.prototype = d.IntRect.prototype;\n d.ClipType = { ctIntersection: 0, ctUnion: 1, ctDifference: 2, ctXor: 3 };\n d.PolyType = { ptSubject: 0, ptClip: 1 };\n d.PolyFillType = {\n pftEvenOdd: 0,\n pftNonZero: 1,\n pftPositive: 2,\n pftNegative: 3,\n };\n d.JoinType = { jtSquare: 0, jtRound: 1, jtMiter: 2 };\n d.EndType = {\n etOpenSquare: 0,\n etOpenRound: 1,\n etOpenButt: 2,\n etClosedLine: 3,\n etClosedPolygon: 4,\n };\n d.EdgeSide = { esLeft: 0, esRight: 1 };\n d.Direction = { dRightToLeft: 0, dLeftToRight: 1 };\n d.TEdge = function () {\n this.Bot = new d.IntPoint0();\n this.Curr = new d.IntPoint0();\n this.Top = new d.IntPoint0();\n this.Delta = new d.IntPoint0();\n this.Dx = 0;\n this.PolyTyp = d.PolyType.ptSubject;\n this.Side = d.EdgeSide.esLeft;\n this.OutIdx = this.WindCnt2 = this.WindCnt = this.WindDelta = 0;\n this.PrevInSEL =\n this.NextInSEL =\n this.PrevInAEL =\n this.NextInAEL =\n this.NextInLML =\n this.Prev =\n this.Next =\n null;\n };\n d.IntersectNode = function () {\n this.Edge2 = this.Edge1 = null;\n this.Pt = new d.IntPoint0();\n };\n d.MyIntersectNodeSort = function () {};\n d.MyIntersectNodeSort.Compare = function (a, b) {\n var c = b.Pt.Y - a.Pt.Y;\n return 0 < c ? 1 : 0 > c ? -1 : 0;\n };\n d.LocalMinima = function () {\n this.Y = 0;\n this.Next = this.RightBound = this.LeftBound = null;\n };\n d.Scanbeam = function () {\n this.Y = 0;\n this.Next = null;\n };\n d.Maxima = function () {\n this.X = 0;\n this.Prev = this.Next = null;\n };\n d.OutRec = function () {\n this.Idx = 0;\n this.IsOpen = this.IsHole = !1;\n this.PolyNode = this.BottomPt = this.Pts = this.FirstLeft = null;\n };\n d.OutPt = function () {\n this.Idx = 0;\n this.Pt = new d.IntPoint0();\n this.Prev = this.Next = null;\n };\n d.Join = function () {\n this.OutPt2 = this.OutPt1 = null;\n this.OffPt = new d.IntPoint0();\n };\n d.ClipperBase = function () {\n this.m_CurrentLM = this.m_MinimaList = null;\n this.m_edges = [];\n this.PreserveCollinear = this.m_HasOpenPaths = this.m_UseFullRange = !1;\n this.m_ActiveEdges = this.m_PolyOuts = this.m_Scanbeam = null;\n };\n d.ClipperBase.horizontal = -9007199254740992;\n d.ClipperBase.Skip = -2;\n d.ClipperBase.Unassigned = -1;\n d.ClipperBase.tolerance = 1e-20;\n d.ClipperBase.loRange = 47453132;\n d.ClipperBase.hiRange = 0xfffffffffffff;\n d.ClipperBase.near_zero = function (a) {\n return a > -d.ClipperBase.tolerance && a < d.ClipperBase.tolerance;\n };\n d.ClipperBase.IsHorizontal = function (a) {\n return 0 === a.Delta.Y;\n };\n d.ClipperBase.prototype.PointIsVertex = function (a, b) {\n var c = b;\n do {\n if (d.IntPoint.op_Equality(c.Pt, a)) return !0;\n c = c.Next;\n } while (c !== b);\n return !1;\n };\n d.ClipperBase.prototype.PointOnLineSegment = function (a, b, c, e) {\n return e\n ? (a.X === b.X && a.Y === b.Y) ||\n (a.X === c.X && a.Y === c.Y) ||\n (a.X > b.X === a.X < c.X &&\n a.Y > b.Y === a.Y < c.Y &&\n k.op_Equality(\n k.Int128Mul(a.X - b.X, c.Y - b.Y),\n k.Int128Mul(c.X - b.X, a.Y - b.Y)\n ))\n : (a.X === b.X && a.Y === b.Y) ||\n (a.X === c.X && a.Y === c.Y) ||\n (a.X > b.X === a.X < c.X &&\n a.Y > b.Y === a.Y < c.Y &&\n (a.X - b.X) * (c.Y - b.Y) === (c.X - b.X) * (a.Y - b.Y));\n };\n d.ClipperBase.prototype.PointOnPolygon = function (a, b, c) {\n for (var e = b; ; ) {\n if (this.PointOnLineSegment(a, e.Pt, e.Next.Pt, c)) return !0;\n e = e.Next;\n if (e === b) break;\n }\n return !1;\n };\n d.ClipperBase.prototype.SlopesEqual = d.ClipperBase.SlopesEqual =\n function () {\n var a = arguments,\n b = a.length;\n if (3 === b) {\n b = a[0];\n var c = a[1];\n return (a = a[2])\n ? k.op_Equality(\n k.Int128Mul(b.Delta.Y, c.Delta.X),\n k.Int128Mul(b.Delta.X, c.Delta.Y)\n )\n : d.Cast_Int64(b.Delta.Y * c.Delta.X) ===\n d.Cast_Int64(b.Delta.X * c.Delta.Y);\n }\n if (4 === b) {\n b = a[0];\n c = a[1];\n var e = a[2];\n return (a = a[3])\n ? k.op_Equality(\n k.Int128Mul(b.Y - c.Y, c.X - e.X),\n k.Int128Mul(b.X - c.X, c.Y - e.Y)\n )\n : 0 ===\n d.Cast_Int64((b.Y - c.Y) * (c.X - e.X)) -\n d.Cast_Int64((b.X - c.X) * (c.Y - e.Y));\n }\n b = a[0];\n c = a[1];\n e = a[2];\n var f = a[3];\n return (a = a[4])\n ? k.op_Equality(\n k.Int128Mul(b.Y - c.Y, e.X - f.X),\n k.Int128Mul(b.X - c.X, e.Y - f.Y)\n )\n : 0 ===\n d.Cast_Int64((b.Y - c.Y) * (e.X - f.X)) -\n d.Cast_Int64((b.X - c.X) * (e.Y - f.Y));\n };\n d.ClipperBase.SlopesEqual3 = function (a, b, c) {\n return c\n ? k.op_Equality(\n k.Int128Mul(a.Delta.Y, b.Delta.X),\n k.Int128Mul(a.Delta.X, b.Delta.Y)\n )\n : d.Cast_Int64(a.Delta.Y * b.Delta.X) ===\n d.Cast_Int64(a.Delta.X * b.Delta.Y);\n };\n d.ClipperBase.SlopesEqual4 = function (a, b, c, e) {\n return e\n ? k.op_Equality(\n k.Int128Mul(a.Y - b.Y, b.X - c.X),\n k.Int128Mul(a.X - b.X, b.Y - c.Y)\n )\n : 0 ===\n d.Cast_Int64((a.Y - b.Y) * (b.X - c.X)) -\n d.Cast_Int64((a.X - b.X) * (b.Y - c.Y));\n };\n d.ClipperBase.SlopesEqual5 = function (a, b, c, e, f) {\n return f\n ? k.op_Equality(\n k.Int128Mul(a.Y - b.Y, c.X - e.X),\n k.Int128Mul(a.X - b.X, c.Y - e.Y)\n )\n : 0 ===\n d.Cast_Int64((a.Y - b.Y) * (c.X - e.X)) -\n d.Cast_Int64((a.X - b.X) * (c.Y - e.Y));\n };\n d.ClipperBase.prototype.Clear = function () {\n this.DisposeLocalMinimaList();\n for (var a = 0, b = this.m_edges.length; a < b; ++a) {\n for (var c = 0, e = this.m_edges[a].length; c < e; ++c)\n this.m_edges[a][c] = null;\n d.Clear(this.m_edges[a]);\n }\n d.Clear(this.m_edges);\n this.m_HasOpenPaths = this.m_UseFullRange = !1;\n };\n d.ClipperBase.prototype.DisposeLocalMinimaList = function () {\n for (; null !== this.m_MinimaList; ) {\n var a = this.m_MinimaList.Next;\n this.m_MinimaList = null;\n this.m_MinimaList = a;\n }\n this.m_CurrentLM = null;\n };\n d.ClipperBase.prototype.RangeTest = function (a, b) {\n if (b.Value)\n (a.X > d.ClipperBase.hiRange ||\n a.Y > d.ClipperBase.hiRange ||\n -a.X > d.ClipperBase.hiRange ||\n -a.Y > d.ClipperBase.hiRange) &&\n d.Error(\"Coordinate outside allowed range in RangeTest().\");\n else if (\n a.X > d.ClipperBase.loRange ||\n a.Y > d.ClipperBase.loRange ||\n -a.X > d.ClipperBase.loRange ||\n -a.Y > d.ClipperBase.loRange\n )\n (b.Value = !0), this.RangeTest(a, b);\n };\n d.ClipperBase.prototype.InitEdge = function (a, b, c, e) {\n a.Next = b;\n a.Prev = c;\n a.Curr.X = e.X;\n a.Curr.Y = e.Y;\n d.use_xyz && (a.Curr.Z = e.Z);\n a.OutIdx = -1;\n };\n d.ClipperBase.prototype.InitEdge2 = function (a, b) {\n a.Curr.Y >= a.Next.Curr.Y\n ? ((a.Bot.X = a.Curr.X),\n (a.Bot.Y = a.Curr.Y),\n d.use_xyz && (a.Bot.Z = a.Curr.Z),\n (a.Top.X = a.Next.Curr.X),\n (a.Top.Y = a.Next.Curr.Y),\n d.use_xyz && (a.Top.Z = a.Next.Curr.Z))\n : ((a.Top.X = a.Curr.X),\n (a.Top.Y = a.Curr.Y),\n d.use_xyz && (a.Top.Z = a.Curr.Z),\n (a.Bot.X = a.Next.Curr.X),\n (a.Bot.Y = a.Next.Curr.Y),\n d.use_xyz && (a.Bot.Z = a.Next.Curr.Z));\n this.SetDx(a);\n a.PolyTyp = b;\n };\n d.ClipperBase.prototype.FindNextLocMin = function (a) {\n for (var b; ; ) {\n for (\n ;\n d.IntPoint.op_Inequality(a.Bot, a.Prev.Bot) ||\n d.IntPoint.op_Equality(a.Curr, a.Top);\n\n )\n a = a.Next;\n if (\n a.Dx !== d.ClipperBase.horizontal &&\n a.Prev.Dx !== d.ClipperBase.horizontal\n )\n break;\n for (; a.Prev.Dx === d.ClipperBase.horizontal; ) a = a.Prev;\n for (b = a; a.Dx === d.ClipperBase.horizontal; ) a = a.Next;\n if (a.Top.Y !== a.Prev.Bot.Y) {\n b.Prev.Bot.X < a.Bot.X && (a = b);\n break;\n }\n }\n return a;\n };\n d.ClipperBase.prototype.ProcessBound = function (a, b) {\n var c = a,\n e;\n if (c.OutIdx === d.ClipperBase.Skip) {\n a = c;\n if (b) {\n for (; a.Top.Y === a.Next.Bot.Y; ) a = a.Next;\n for (; a !== c && a.Dx === d.ClipperBase.horizontal; ) a = a.Prev;\n } else {\n for (; a.Top.Y === a.Prev.Bot.Y; ) a = a.Prev;\n for (; a !== c && a.Dx === d.ClipperBase.horizontal; ) a = a.Next;\n }\n if (a === c) c = b ? a.Next : a.Prev;\n else {\n a = b ? c.Next : c.Prev;\n var f = new d.LocalMinima();\n f.Next = null;\n f.Y = a.Bot.Y;\n f.LeftBound = null;\n f.RightBound = a;\n a.WindDelta = 0;\n c = this.ProcessBound(a, b);\n this.InsertLocalMinima(f);\n }\n return c;\n }\n a.Dx === d.ClipperBase.horizontal &&\n ((f = b ? a.Prev : a.Next),\n f.Dx === d.ClipperBase.horizontal\n ? f.Bot.X !== a.Bot.X &&\n f.Top.X !== a.Bot.X &&\n this.ReverseHorizontal(a)\n : f.Bot.X !== a.Bot.X && this.ReverseHorizontal(a));\n f = a;\n if (b) {\n for (; c.Top.Y === c.Next.Bot.Y && c.Next.OutIdx !== d.ClipperBase.Skip; )\n c = c.Next;\n if (\n c.Dx === d.ClipperBase.horizontal &&\n c.Next.OutIdx !== d.ClipperBase.Skip\n ) {\n for (e = c; e.Prev.Dx === d.ClipperBase.horizontal; ) e = e.Prev;\n e.Prev.Top.X > c.Next.Top.X && (c = e.Prev);\n }\n for (; a !== c; )\n (a.NextInLML = a.Next),\n a.Dx === d.ClipperBase.horizontal &&\n a !== f &&\n a.Bot.X !== a.Prev.Top.X &&\n this.ReverseHorizontal(a),\n (a = a.Next);\n a.Dx === d.ClipperBase.horizontal &&\n a !== f &&\n a.Bot.X !== a.Prev.Top.X &&\n this.ReverseHorizontal(a);\n c = c.Next;\n } else {\n for (; c.Top.Y === c.Prev.Bot.Y && c.Prev.OutIdx !== d.ClipperBase.Skip; )\n c = c.Prev;\n if (\n c.Dx === d.ClipperBase.horizontal &&\n c.Prev.OutIdx !== d.ClipperBase.Skip\n ) {\n for (e = c; e.Next.Dx === d.ClipperBase.horizontal; ) e = e.Next;\n if (e.Next.Top.X === c.Prev.Top.X || e.Next.Top.X > c.Prev.Top.X)\n c = e.Next;\n }\n for (; a !== c; )\n (a.NextInLML = a.Prev),\n a.Dx === d.ClipperBase.horizontal &&\n a !== f &&\n a.Bot.X !== a.Next.Top.X &&\n this.ReverseHorizontal(a),\n (a = a.Prev);\n a.Dx === d.ClipperBase.horizontal &&\n a !== f &&\n a.Bot.X !== a.Next.Top.X &&\n this.ReverseHorizontal(a);\n c = c.Prev;\n }\n return c;\n };\n d.ClipperBase.prototype.AddPath = function (a, b, c) {\n d.use_lines\n ? c ||\n b !== d.PolyType.ptClip ||\n d.Error(\"AddPath: Open paths must be subject.\")\n : c || d.Error(\"AddPath: Open paths have been disabled.\");\n var e = a.length - 1;\n if (c) for (; 0 < e && d.IntPoint.op_Equality(a[e], a[0]); ) --e;\n for (; 0 < e && d.IntPoint.op_Equality(a[e], a[e - 1]); ) --e;\n if ((c && 2 > e) || (!c && 1 > e)) return !1;\n for (var f = [], g = 0; g <= e; g++) f.push(new d.TEdge());\n var h = !0;\n f[1].Curr.X = a[1].X;\n f[1].Curr.Y = a[1].Y;\n d.use_xyz && (f[1].Curr.Z = a[1].Z);\n var m = { Value: this.m_UseFullRange };\n this.RangeTest(a[0], m);\n this.m_UseFullRange = m.Value;\n m.Value = this.m_UseFullRange;\n this.RangeTest(a[e], m);\n this.m_UseFullRange = m.Value;\n this.InitEdge(f[0], f[1], f[e], a[0]);\n this.InitEdge(f[e], f[0], f[e - 1], a[e]);\n for (g = e - 1; 1 <= g; --g)\n (m.Value = this.m_UseFullRange),\n this.RangeTest(a[g], m),\n (this.m_UseFullRange = m.Value),\n this.InitEdge(f[g], f[g + 1], f[g - 1], a[g]);\n for (g = a = e = f[0]; ; )\n if (a.Curr !== a.Next.Curr || (!c && a.Next === e)) {\n if (a.Prev === a.Next) break;\n else if (\n c &&\n d.ClipperBase.SlopesEqual4(\n a.Prev.Curr,\n a.Curr,\n a.Next.Curr,\n this.m_UseFullRange\n ) &&\n (!this.PreserveCollinear ||\n !this.Pt2IsBetweenPt1AndPt3(a.Prev.Curr, a.Curr, a.Next.Curr))\n ) {\n a === e && (e = a.Next);\n a = this.RemoveEdge(a);\n g = a = a.Prev;\n continue;\n }\n a = a.Next;\n if (a === g || (!c && a.Next === e)) break;\n } else {\n if (a === a.Next) break;\n a === e && (e = a.Next);\n g = a = this.RemoveEdge(a);\n }\n if ((!c && a === a.Next) || (c && a.Prev === a.Next)) return !1;\n c || ((this.m_HasOpenPaths = !0), (e.Prev.OutIdx = d.ClipperBase.Skip));\n a = e;\n do\n this.InitEdge2(a, b),\n (a = a.Next),\n h && a.Curr.Y !== e.Curr.Y && (h = !1);\n while (a !== e);\n if (h) {\n if (c) return !1;\n a.Prev.OutIdx = d.ClipperBase.Skip;\n b = new d.LocalMinima();\n b.Next = null;\n b.Y = a.Bot.Y;\n b.LeftBound = null;\n b.RightBound = a;\n b.RightBound.Side = d.EdgeSide.esRight;\n for (b.RightBound.WindDelta = 0; ; ) {\n a.Bot.X !== a.Prev.Top.X && this.ReverseHorizontal(a);\n if (a.Next.OutIdx === d.ClipperBase.Skip) break;\n a = a.NextInLML = a.Next;\n }\n this.InsertLocalMinima(b);\n this.m_edges.push(f);\n return !0;\n }\n this.m_edges.push(f);\n h = null;\n d.IntPoint.op_Equality(a.Prev.Bot, a.Prev.Top) && (a = a.Next);\n for (;;) {\n a = this.FindNextLocMin(a);\n if (a === h) break;\n else null === h && (h = a);\n b = new d.LocalMinima();\n b.Next = null;\n b.Y = a.Bot.Y;\n a.Dx < a.Prev.Dx\n ? ((b.LeftBound = a.Prev), (b.RightBound = a), (f = !1))\n : ((b.LeftBound = a), (b.RightBound = a.Prev), (f = !0));\n b.LeftBound.Side = d.EdgeSide.esLeft;\n b.RightBound.Side = d.EdgeSide.esRight;\n b.LeftBound.WindDelta = c\n ? b.LeftBound.Next === b.RightBound\n ? -1\n : 1\n : 0;\n b.RightBound.WindDelta = -b.LeftBound.WindDelta;\n a = this.ProcessBound(b.LeftBound, f);\n a.OutIdx === d.ClipperBase.Skip && (a = this.ProcessBound(a, f));\n e = this.ProcessBound(b.RightBound, !f);\n e.OutIdx === d.ClipperBase.Skip && (e = this.ProcessBound(e, !f));\n b.LeftBound.OutIdx === d.ClipperBase.Skip\n ? (b.LeftBound = null)\n : b.RightBound.OutIdx === d.ClipperBase.Skip && (b.RightBound = null);\n this.InsertLocalMinima(b);\n f || (a = e);\n }\n return !0;\n };\n d.ClipperBase.prototype.AddPaths = function (a, b, c) {\n for (var e = !1, d = 0, g = a.length; d < g; ++d)\n this.AddPath(a[d], b, c) && (e = !0);\n return e;\n };\n d.ClipperBase.prototype.Pt2IsBetweenPt1AndPt3 = function (a, b, c) {\n return d.IntPoint.op_Equality(a, c) ||\n d.IntPoint.op_Equality(a, b) ||\n d.IntPoint.op_Equality(c, b)\n ? !1\n : a.X !== c.X\n ? b.X > a.X === b.X < c.X\n : b.Y > a.Y === b.Y < c.Y;\n };\n d.ClipperBase.prototype.RemoveEdge = function (a) {\n a.Prev.Next = a.Next;\n a.Next.Prev = a.Prev;\n var b = a.Next;\n a.Prev = null;\n return b;\n };\n d.ClipperBase.prototype.SetDx = function (a) {\n a.Delta.X = a.Top.X - a.Bot.X;\n a.Delta.Y = a.Top.Y - a.Bot.Y;\n a.Dx = 0 === a.Delta.Y ? d.ClipperBase.horizontal : a.Delta.X / a.Delta.Y;\n };\n d.ClipperBase.prototype.InsertLocalMinima = function (a) {\n if (null === this.m_MinimaList) this.m_MinimaList = a;\n else if (a.Y >= this.m_MinimaList.Y)\n (a.Next = this.m_MinimaList), (this.m_MinimaList = a);\n else {\n for (var b = this.m_MinimaList; null !== b.Next && a.Y < b.Next.Y; )\n b = b.Next;\n a.Next = b.Next;\n b.Next = a;\n }\n };\n d.ClipperBase.prototype.PopLocalMinima = function (a, b) {\n b.v = this.m_CurrentLM;\n return null !== this.m_CurrentLM && this.m_CurrentLM.Y === a\n ? ((this.m_CurrentLM = this.m_CurrentLM.Next), !0)\n : !1;\n };\n d.ClipperBase.prototype.ReverseHorizontal = function (a) {\n var b = a.Top.X;\n a.Top.X = a.Bot.X;\n a.Bot.X = b;\n d.use_xyz && ((b = a.Top.Z), (a.Top.Z = a.Bot.Z), (a.Bot.Z = b));\n };\n d.ClipperBase.prototype.Reset = function () {\n this.m_CurrentLM = this.m_MinimaList;\n if (null !== this.m_CurrentLM) {\n this.m_Scanbeam = null;\n for (var a = this.m_MinimaList; null !== a; ) {\n this.InsertScanbeam(a.Y);\n var b = a.LeftBound;\n null !== b &&\n ((b.Curr.X = b.Bot.X),\n (b.Curr.Y = b.Bot.Y),\n d.use_xyz && (b.Curr.Z = b.Bot.Z),\n (b.OutIdx = d.ClipperBase.Unassigned));\n b = a.RightBound;\n null !== b &&\n ((b.Curr.X = b.Bot.X),\n (b.Curr.Y = b.Bot.Y),\n d.use_xyz && (b.Curr.Z = b.Bot.Z),\n (b.OutIdx = d.ClipperBase.Unassigned));\n a = a.Next;\n }\n this.m_ActiveEdges = null;\n }\n };\n d.ClipperBase.prototype.InsertScanbeam = function (a) {\n if (null === this.m_Scanbeam)\n (this.m_Scanbeam = new d.Scanbeam()),\n (this.m_Scanbeam.Next = null),\n (this.m_Scanbeam.Y = a);\n else if (a > this.m_Scanbeam.Y) {\n var b = new d.Scanbeam();\n b.Y = a;\n b.Next = this.m_Scanbeam;\n this.m_Scanbeam = b;\n } else {\n for (b = this.m_Scanbeam; null !== b.Next && a <= b.Next.Y; ) b = b.Next;\n if (a !== b.Y) {\n var c = new d.Scanbeam();\n c.Y = a;\n c.Next = b.Next;\n b.Next = c;\n }\n }\n };\n d.ClipperBase.prototype.PopScanbeam = function (a) {\n if (null === this.m_Scanbeam) return (a.v = 0), !1;\n a.v = this.m_Scanbeam.Y;\n this.m_Scanbeam = this.m_Scanbeam.Next;\n return !0;\n };\n d.ClipperBase.prototype.LocalMinimaPending = function () {\n return null !== this.m_CurrentLM;\n };\n d.ClipperBase.prototype.CreateOutRec = function () {\n var a = new d.OutRec();\n a.Idx = d.ClipperBase.Unassigned;\n a.IsHole = !1;\n a.IsOpen = !1;\n a.FirstLeft = null;\n a.Pts = null;\n a.BottomPt = null;\n a.PolyNode = null;\n this.m_PolyOuts.push(a);\n a.Idx = this.m_PolyOuts.length - 1;\n return a;\n };\n d.ClipperBase.prototype.DisposeOutRec = function (a) {\n this.m_PolyOuts[a].Pts = null;\n this.m_PolyOuts[a] = null;\n };\n d.ClipperBase.prototype.UpdateEdgeIntoAEL = function (a) {\n null === a.NextInLML && d.Error(\"UpdateEdgeIntoAEL: invalid call\");\n var b = a.PrevInAEL,\n c = a.NextInAEL;\n a.NextInLML.OutIdx = a.OutIdx;\n null !== b\n ? (b.NextInAEL = a.NextInLML)\n : (this.m_ActiveEdges = a.NextInLML);\n null !== c && (c.PrevInAEL = a.NextInLML);\n a.NextInLML.Side = a.Side;\n a.NextInLML.WindDelta = a.WindDelta;\n a.NextInLML.WindCnt = a.WindCnt;\n a.NextInLML.WindCnt2 = a.WindCnt2;\n a = a.NextInLML;\n a.Curr.X = a.Bot.X;\n a.Curr.Y = a.Bot.Y;\n a.PrevInAEL = b;\n a.NextInAEL = c;\n d.ClipperBase.IsHorizontal(a) || this.InsertScanbeam(a.Top.Y);\n return a;\n };\n d.ClipperBase.prototype.SwapPositionsInAEL = function (a, b) {\n if (a.NextInAEL !== a.PrevInAEL && b.NextInAEL !== b.PrevInAEL) {\n if (a.NextInAEL === b) {\n var c = b.NextInAEL;\n null !== c && (c.PrevInAEL = a);\n var e = a.PrevInAEL;\n null !== e && (e.NextInAEL = b);\n b.PrevInAEL = e;\n b.NextInAEL = a;\n a.PrevInAEL = b;\n a.NextInAEL = c;\n } else\n b.NextInAEL === a\n ? ((c = a.NextInAEL),\n null !== c && (c.PrevInAEL = b),\n (e = b.PrevInAEL),\n null !== e && (e.NextInAEL = a),\n (a.PrevInAEL = e),\n (a.NextInAEL = b),\n (b.PrevInAEL = a),\n (b.NextInAEL = c))\n : ((c = a.NextInAEL),\n (e = a.PrevInAEL),\n (a.NextInAEL = b.NextInAEL),\n null !== a.NextInAEL && (a.NextInAEL.PrevInAEL = a),\n (a.PrevInAEL = b.PrevInAEL),\n null !== a.PrevInAEL && (a.PrevInAEL.NextInAEL = a),\n (b.NextInAEL = c),\n null !== b.NextInAEL && (b.NextInAEL.PrevInAEL = b),\n (b.PrevInAEL = e),\n null !== b.PrevInAEL && (b.PrevInAEL.NextInAEL = b));\n null === a.PrevInAEL\n ? (this.m_ActiveEdges = a)\n : null === b.PrevInAEL && (this.m_ActiveEdges = b);\n }\n };\n d.ClipperBase.prototype.DeleteFromAEL = function (a) {\n var b = a.PrevInAEL,\n c = a.NextInAEL;\n if (null !== b || null !== c || a === this.m_ActiveEdges)\n null !== b ? (b.NextInAEL = c) : (this.m_ActiveEdges = c),\n null !== c && (c.PrevInAEL = b),\n (a.NextInAEL = null),\n (a.PrevInAEL = null);\n };\n d.Clipper = function (a) {\n \"undefined\" === typeof a && (a = 0);\n this.m_PolyOuts = null;\n this.m_ClipType = d.ClipType.ctIntersection;\n this.m_IntersectNodeComparer =\n this.m_IntersectList =\n this.m_SortedEdges =\n this.m_ActiveEdges =\n this.m_Maxima =\n this.m_Scanbeam =\n null;\n this.m_ExecuteLocked = !1;\n this.m_SubjFillType = this.m_ClipFillType = d.PolyFillType.pftEvenOdd;\n this.m_GhostJoins = this.m_Joins = null;\n this.StrictlySimple = this.ReverseSolution = this.m_UsingPolyTree = !1;\n d.ClipperBase.call(this);\n this.m_SortedEdges =\n this.m_ActiveEdges =\n this.m_Maxima =\n this.m_Scanbeam =\n null;\n this.m_IntersectList = [];\n this.m_IntersectNodeComparer = d.MyIntersectNodeSort.Compare;\n this.m_UsingPolyTree = this.m_ExecuteLocked = !1;\n this.m_PolyOuts = [];\n this.m_Joins = [];\n this.m_GhostJoins = [];\n this.ReverseSolution = 0 !== (1 & a);\n this.StrictlySimple = 0 !== (2 & a);\n this.PreserveCollinear = 0 !== (4 & a);\n d.use_xyz && (this.ZFillFunction = null);\n };\n d.Clipper.ioReverseSolution = 1;\n d.Clipper.ioStrictlySimple = 2;\n d.Clipper.ioPreserveCollinear = 4;\n d.Clipper.prototype.Clear = function () {\n 0 !== this.m_edges.length &&\n (this.DisposeAllPolyPts(), d.ClipperBase.prototype.Clear.call(this));\n };\n d.Clipper.prototype.InsertMaxima = function (a) {\n var b = new d.Maxima();\n b.X = a;\n if (null === this.m_Maxima)\n (this.m_Maxima = b),\n (this.m_Maxima.Next = null),\n (this.m_Maxima.Prev = null);\n else if (a < this.m_Maxima.X)\n (b.Next = this.m_Maxima), (b.Prev = null), (this.m_Maxima = b);\n else {\n for (var c = this.m_Maxima; null !== c.Next && a >= c.Next.X; )\n c = c.Next;\n a !== c.X &&\n ((b.Next = c.Next),\n (b.Prev = c),\n null !== c.Next && (c.Next.Prev = b),\n (c.Next = b));\n }\n };\n d.Clipper.prototype.Execute = function () {\n var a;\n var b = arguments;\n var c = b.length;\n var e = b[1] instanceof d.PolyTree;\n if (4 !== c || e) {\n if (4 === c && e) {\n c = b[0];\n var f = b[1];\n e = b[2];\n b = b[3];\n if (this.m_ExecuteLocked) return !1;\n this.m_ExecuteLocked = !0;\n this.m_SubjFillType = e;\n this.m_ClipFillType = b;\n this.m_ClipType = c;\n this.m_UsingPolyTree = !0;\n try {\n (a = this.ExecuteInternal()) && this.BuildResult2(f);\n } finally {\n this.DisposeAllPolyPts(), (this.m_ExecuteLocked = !1);\n }\n return a;\n }\n if ((2 === c && !e) || (2 === c && e))\n return (\n (c = b[0]),\n (f = b[1]),\n this.Execute(\n c,\n f,\n d.PolyFillType.pftEvenOdd,\n d.PolyFillType.pftEvenOdd\n )\n );\n } else {\n c = b[0];\n f = b[1];\n e = b[2];\n b = b[3];\n if (this.m_ExecuteLocked) return !1;\n this.m_HasOpenPaths &&\n d.Error(\"Error: PolyTree struct is needed for open path clipping.\");\n this.m_ExecuteLocked = !0;\n d.Clear(f);\n this.m_SubjFillType = e;\n this.m_ClipFillType = b;\n this.m_ClipType = c;\n this.m_UsingPolyTree = !1;\n try {\n (a = this.ExecuteInternal()) && this.BuildResult(f);\n } finally {\n this.DisposeAllPolyPts(), (this.m_ExecuteLocked = !1);\n }\n return a;\n }\n };\n d.Clipper.prototype.FixHoleLinkage = function (a) {\n if (\n null !== a.FirstLeft &&\n (a.IsHole === a.FirstLeft.IsHole || null === a.FirstLeft.Pts)\n ) {\n for (\n var b = a.FirstLeft;\n null !== b && (b.IsHole === a.IsHole || null === b.Pts);\n\n )\n b = b.FirstLeft;\n a.FirstLeft = b;\n }\n };\n d.Clipper.prototype.ExecuteInternal = function () {\n try {\n this.Reset();\n this.m_Maxima = this.m_SortedEdges = null;\n var a = {},\n b = {};\n if (!this.PopScanbeam(a)) return !1;\n for (\n this.InsertLocalMinimaIntoAEL(a.v);\n this.PopScanbeam(b) || this.LocalMinimaPending();\n\n ) {\n this.ProcessHorizontals();\n this.m_GhostJoins.length = 0;\n if (!this.ProcessIntersections(b.v)) return !1;\n this.ProcessEdgesAtTopOfScanbeam(b.v);\n a.v = b.v;\n this.InsertLocalMinimaIntoAEL(a.v);\n }\n var c;\n var e = 0;\n for (c = this.m_PolyOuts.length; e < c; e++) {\n var d = this.m_PolyOuts[e];\n null === d.Pts ||\n d.IsOpen ||\n ((d.IsHole ^ this.ReverseSolution) == 0 < this.Area$1(d) &&\n this.ReversePolyPtLinks(d.Pts));\n }\n this.JoinCommonEdges();\n e = 0;\n for (c = this.m_PolyOuts.length; e < c; e++)\n (d = this.m_PolyOuts[e]),\n null !== d.Pts &&\n (d.IsOpen ? this.FixupOutPolyline(d) : this.FixupOutPolygon(d));\n this.StrictlySimple && this.DoSimplePolygons();\n return !0;\n } finally {\n (this.m_Joins.length = 0), (this.m_GhostJoins.length = 0);\n }\n };\n d.Clipper.prototype.DisposeAllPolyPts = function () {\n for (var a = 0, b = this.m_PolyOuts.length; a < b; ++a)\n this.DisposeOutRec(a);\n d.Clear(this.m_PolyOuts);\n };\n d.Clipper.prototype.AddJoin = function (a, b, c) {\n var e = new d.Join();\n e.OutPt1 = a;\n e.OutPt2 = b;\n e.OffPt.X = c.X;\n e.OffPt.Y = c.Y;\n d.use_xyz && (e.OffPt.Z = c.Z);\n this.m_Joins.push(e);\n };\n d.Clipper.prototype.AddGhostJoin = function (a, b) {\n var c = new d.Join();\n c.OutPt1 = a;\n c.OffPt.X = b.X;\n c.OffPt.Y = b.Y;\n d.use_xyz && (c.OffPt.Z = b.Z);\n this.m_GhostJoins.push(c);\n };\n d.Clipper.prototype.SetZ = function (a, b, c) {\n null !== this.ZFillFunction &&\n 0 === a.Z &&\n null !== this.ZFillFunction &&\n (d.IntPoint.op_Equality(a, b.Bot)\n ? (a.Z = b.Bot.Z)\n : d.IntPoint.op_Equality(a, b.Top)\n ? (a.Z = b.Top.Z)\n : d.IntPoint.op_Equality(a, c.Bot)\n ? (a.Z = c.Bot.Z)\n : d.IntPoint.op_Equality(a, c.Top)\n ? (a.Z = c.Top.Z)\n : this.ZFillFunction(b.Bot, b.Top, c.Bot, c.Top, a));\n };\n d.Clipper.prototype.InsertLocalMinimaIntoAEL = function (a) {\n for (var b, c = {}, e, f; this.PopLocalMinima(a, c); ) {\n e = c.v.LeftBound;\n f = c.v.RightBound;\n var g = null;\n null === e\n ? (this.InsertEdgeIntoAEL(f, null),\n this.SetWindingCount(f),\n this.IsContributing(f) && (g = this.AddOutPt(f, f.Bot)))\n : (null === f\n ? (this.InsertEdgeIntoAEL(e, null),\n this.SetWindingCount(e),\n this.IsContributing(e) && (g = this.AddOutPt(e, e.Bot)))\n : (this.InsertEdgeIntoAEL(e, null),\n this.InsertEdgeIntoAEL(f, e),\n this.SetWindingCount(e),\n (f.WindCnt = e.WindCnt),\n (f.WindCnt2 = e.WindCnt2),\n this.IsContributing(e) &&\n (g = this.AddLocalMinPoly(e, f, e.Bot))),\n this.InsertScanbeam(e.Top.Y));\n null !== f &&\n (d.ClipperBase.IsHorizontal(f)\n ? (null !== f.NextInLML && this.InsertScanbeam(f.NextInLML.Top.Y),\n this.AddEdgeToSEL(f))\n : this.InsertScanbeam(f.Top.Y));\n if (null !== e && null !== f) {\n if (\n null !== g &&\n d.ClipperBase.IsHorizontal(f) &&\n 0 < this.m_GhostJoins.length &&\n 0 !== f.WindDelta\n ) {\n b = 0;\n for (var h = this.m_GhostJoins.length; b < h; b++) {\n var m = this.m_GhostJoins[b];\n this.HorzSegmentsOverlap(\n m.OutPt1.Pt.X,\n m.OffPt.X,\n f.Bot.X,\n f.Top.X\n ) && this.AddJoin(m.OutPt1, g, m.OffPt);\n }\n }\n 0 <= e.OutIdx &&\n null !== e.PrevInAEL &&\n e.PrevInAEL.Curr.X === e.Bot.X &&\n 0 <= e.PrevInAEL.OutIdx &&\n d.ClipperBase.SlopesEqual5(\n e.PrevInAEL.Curr,\n e.PrevInAEL.Top,\n e.Curr,\n e.Top,\n this.m_UseFullRange\n ) &&\n 0 !== e.WindDelta &&\n 0 !== e.PrevInAEL.WindDelta &&\n ((b = this.AddOutPt(e.PrevInAEL, e.Bot)), this.AddJoin(g, b, e.Top));\n if (\n e.NextInAEL !== f &&\n (0 <= f.OutIdx &&\n 0 <= f.PrevInAEL.OutIdx &&\n d.ClipperBase.SlopesEqual5(\n f.PrevInAEL.Curr,\n f.PrevInAEL.Top,\n f.Curr,\n f.Top,\n this.m_UseFullRange\n ) &&\n 0 !== f.WindDelta &&\n 0 !== f.PrevInAEL.WindDelta &&\n ((b = this.AddOutPt(f.PrevInAEL, f.Bot)),\n this.AddJoin(g, b, f.Top)),\n (g = e.NextInAEL),\n null !== g)\n )\n for (; g !== f; )\n this.IntersectEdges(f, g, e.Curr), (g = g.NextInAEL);\n }\n }\n };\n d.Clipper.prototype.InsertEdgeIntoAEL = function (a, b) {\n if (null === this.m_ActiveEdges)\n (a.PrevInAEL = null), (a.NextInAEL = null), (this.m_ActiveEdges = a);\n else if (null === b && this.E2InsertsBeforeE1(this.m_ActiveEdges, a))\n (a.PrevInAEL = null),\n (a.NextInAEL = this.m_ActiveEdges),\n (this.m_ActiveEdges = this.m_ActiveEdges.PrevInAEL = a);\n else {\n null === b && (b = this.m_ActiveEdges);\n for (; null !== b.NextInAEL && !this.E2InsertsBeforeE1(b.NextInAEL, a); )\n b = b.NextInAEL;\n a.NextInAEL = b.NextInAEL;\n null !== b.NextInAEL && (b.NextInAEL.PrevInAEL = a);\n a.PrevInAEL = b;\n b.NextInAEL = a;\n }\n };\n d.Clipper.prototype.E2InsertsBeforeE1 = function (a, b) {\n return b.Curr.X === a.Curr.X\n ? b.Top.Y > a.Top.Y\n ? b.Top.X < d.Clipper.TopX(a, b.Top.Y)\n : a.Top.X > d.Clipper.TopX(b, a.Top.Y)\n : b.Curr.X < a.Curr.X;\n };\n d.Clipper.prototype.IsEvenOddFillType = function (a) {\n return a.PolyTyp === d.PolyType.ptSubject\n ? this.m_SubjFillType === d.PolyFillType.pftEvenOdd\n : this.m_ClipFillType === d.PolyFillType.pftEvenOdd;\n };\n d.Clipper.prototype.IsEvenOddAltFillType = function (a) {\n return a.PolyTyp === d.PolyType.ptSubject\n ? this.m_ClipFillType === d.PolyFillType.pftEvenOdd\n : this.m_SubjFillType === d.PolyFillType.pftEvenOdd;\n };\n d.Clipper.prototype.IsContributing = function (a) {\n if (a.PolyTyp === d.PolyType.ptSubject) {\n var b = this.m_SubjFillType;\n var c = this.m_ClipFillType;\n } else (b = this.m_ClipFillType), (c = this.m_SubjFillType);\n switch (b) {\n case d.PolyFillType.pftEvenOdd:\n if (0 === a.WindDelta && 1 !== a.WindCnt) return !1;\n break;\n case d.PolyFillType.pftNonZero:\n if (1 !== Math.abs(a.WindCnt)) return !1;\n break;\n case d.PolyFillType.pftPositive:\n if (1 !== a.WindCnt) return !1;\n break;\n default:\n if (-1 !== a.WindCnt) return !1;\n }\n switch (this.m_ClipType) {\n case d.ClipType.ctIntersection:\n switch (c) {\n case d.PolyFillType.pftEvenOdd:\n case d.PolyFillType.pftNonZero:\n return 0 !== a.WindCnt2;\n case d.PolyFillType.pftPositive:\n return 0 < a.WindCnt2;\n default:\n return 0 > a.WindCnt2;\n }\n case d.ClipType.ctUnion:\n switch (c) {\n case d.PolyFillType.pftEvenOdd:\n case d.PolyFillType.pftNonZero:\n return 0 === a.WindCnt2;\n case d.PolyFillType.pftPositive:\n return 0 >= a.WindCnt2;\n default:\n return 0 <= a.WindCnt2;\n }\n case d.ClipType.ctDifference:\n if (a.PolyTyp === d.PolyType.ptSubject)\n switch (c) {\n case d.PolyFillType.pftEvenOdd:\n case d.PolyFillType.pftNonZero:\n return 0 === a.WindCnt2;\n case d.PolyFillType.pftPositive:\n return 0 >= a.WindCnt2;\n default:\n return 0 <= a.WindCnt2;\n }\n else\n switch (c) {\n case d.PolyFillType.pftEvenOdd:\n case d.PolyFillType.pftNonZero:\n return 0 !== a.WindCnt2;\n case d.PolyFillType.pftPositive:\n return 0 < a.WindCnt2;\n default:\n return 0 > a.WindCnt2;\n }\n case d.ClipType.ctXor:\n if (0 === a.WindDelta)\n switch (c) {\n case d.PolyFillType.pftEvenOdd:\n case d.PolyFillType.pftNonZero:\n return 0 === a.WindCnt2;\n case d.PolyFillType.pftPositive:\n return 0 >= a.WindCnt2;\n default:\n return 0 <= a.WindCnt2;\n }\n }\n return !0;\n };\n d.Clipper.prototype.SetWindingCount = function (a) {\n for (\n var b = a.PrevInAEL;\n null !== b && (b.PolyTyp !== a.PolyTyp || 0 === b.WindDelta);\n\n )\n b = b.PrevInAEL;\n if (null === b)\n (b =\n a.PolyTyp === d.PolyType.ptSubject\n ? this.m_SubjFillType\n : this.m_ClipFillType),\n (a.WindCnt =\n 0 === a.WindDelta\n ? b === d.PolyFillType.pftNegative\n ? -1\n : 1\n : a.WindDelta),\n (a.WindCnt2 = 0),\n (b = this.m_ActiveEdges);\n else {\n if (0 === a.WindDelta && this.m_ClipType !== d.ClipType.ctUnion)\n a.WindCnt = 1;\n else if (this.IsEvenOddFillType(a))\n if (0 === a.WindDelta) {\n for (var c = !0, e = b.PrevInAEL; null !== e; )\n e.PolyTyp === b.PolyTyp && 0 !== e.WindDelta && (c = !c),\n (e = e.PrevInAEL);\n a.WindCnt = c ? 0 : 1;\n } else a.WindCnt = a.WindDelta;\n else\n a.WindCnt =\n 0 > b.WindCnt * b.WindDelta\n ? 1 < Math.abs(b.WindCnt)\n ? 0 > b.WindDelta * a.WindDelta\n ? b.WindCnt\n : b.WindCnt + a.WindDelta\n : 0 === a.WindDelta\n ? 1\n : a.WindDelta\n : 0 === a.WindDelta\n ? 0 > b.WindCnt\n ? b.WindCnt - 1\n : b.WindCnt + 1\n : 0 > b.WindDelta * a.WindDelta\n ? b.WindCnt\n : b.WindCnt + a.WindDelta;\n a.WindCnt2 = b.WindCnt2;\n b = b.NextInAEL;\n }\n if (this.IsEvenOddAltFillType(a))\n for (; b !== a; )\n 0 !== b.WindDelta && (a.WindCnt2 = 0 === a.WindCnt2 ? 1 : 0),\n (b = b.NextInAEL);\n else for (; b !== a; ) (a.WindCnt2 += b.WindDelta), (b = b.NextInAEL);\n };\n d.Clipper.prototype.AddEdgeToSEL = function (a) {\n null === this.m_SortedEdges\n ? ((this.m_SortedEdges = a), (a.PrevInSEL = null), (a.NextInSEL = null))\n : ((a.NextInSEL = this.m_SortedEdges),\n (a.PrevInSEL = null),\n (this.m_SortedEdges = this.m_SortedEdges.PrevInSEL = a));\n };\n d.Clipper.prototype.PopEdgeFromSEL = function (a) {\n a.v = this.m_SortedEdges;\n if (null === a.v) return !1;\n var b = a.v;\n this.m_SortedEdges = a.v.NextInSEL;\n null !== this.m_SortedEdges && (this.m_SortedEdges.PrevInSEL = null);\n b.NextInSEL = null;\n b.PrevInSEL = null;\n return !0;\n };\n d.Clipper.prototype.CopyAELToSEL = function () {\n var a = this.m_ActiveEdges;\n for (this.m_SortedEdges = a; null !== a; )\n (a.PrevInSEL = a.PrevInAEL), (a = a.NextInSEL = a.NextInAEL);\n };\n d.Clipper.prototype.SwapPositionsInSEL = function (a, b) {\n if (null !== a.NextInSEL || null !== a.PrevInSEL)\n if (null !== b.NextInSEL || null !== b.PrevInSEL) {\n if (a.NextInSEL === b) {\n var c = b.NextInSEL;\n null !== c && (c.PrevInSEL = a);\n var e = a.PrevInSEL;\n null !== e && (e.NextInSEL = b);\n b.PrevInSEL = e;\n b.NextInSEL = a;\n a.PrevInSEL = b;\n a.NextInSEL = c;\n } else\n b.NextInSEL === a\n ? ((c = a.NextInSEL),\n null !== c && (c.PrevInSEL = b),\n (e = b.PrevInSEL),\n null !== e && (e.NextInSEL = a),\n (a.PrevInSEL = e),\n (a.NextInSEL = b),\n (b.PrevInSEL = a),\n (b.NextInSEL = c))\n : ((c = a.NextInSEL),\n (e = a.PrevInSEL),\n (a.NextInSEL = b.NextInSEL),\n null !== a.NextInSEL && (a.NextInSEL.PrevInSEL = a),\n (a.PrevInSEL = b.PrevInSEL),\n null !== a.PrevInSEL && (a.PrevInSEL.NextInSEL = a),\n (b.NextInSEL = c),\n null !== b.NextInSEL && (b.NextInSEL.PrevInSEL = b),\n (b.PrevInSEL = e),\n null !== b.PrevInSEL && (b.PrevInSEL.NextInSEL = b));\n null === a.PrevInSEL\n ? (this.m_SortedEdges = a)\n : null === b.PrevInSEL && (this.m_SortedEdges = b);\n }\n };\n d.Clipper.prototype.AddLocalMaxPoly = function (a, b, c) {\n this.AddOutPt(a, c);\n 0 === b.WindDelta && this.AddOutPt(b, c);\n a.OutIdx === b.OutIdx\n ? ((a.OutIdx = -1), (b.OutIdx = -1))\n : a.OutIdx < b.OutIdx\n ? this.AppendPolygon(a, b)\n : this.AppendPolygon(b, a);\n };\n d.Clipper.prototype.AddLocalMinPoly = function (a, b, c) {\n if (d.ClipperBase.IsHorizontal(b) || a.Dx > b.Dx) {\n var e = this.AddOutPt(a, c);\n b.OutIdx = a.OutIdx;\n a.Side = d.EdgeSide.esLeft;\n b.Side = d.EdgeSide.esRight;\n var f = a;\n a = f.PrevInAEL === b ? b.PrevInAEL : f.PrevInAEL;\n } else\n (e = this.AddOutPt(b, c)),\n (a.OutIdx = b.OutIdx),\n (a.Side = d.EdgeSide.esRight),\n (b.Side = d.EdgeSide.esLeft),\n (f = b),\n (a = f.PrevInAEL === a ? a.PrevInAEL : f.PrevInAEL);\n if (null !== a && 0 <= a.OutIdx && a.Top.Y < c.Y && f.Top.Y < c.Y) {\n b = d.Clipper.TopX(a, c.Y);\n var g = d.Clipper.TopX(f, c.Y);\n b === g &&\n 0 !== f.WindDelta &&\n 0 !== a.WindDelta &&\n d.ClipperBase.SlopesEqual5(\n new d.IntPoint2(b, c.Y),\n a.Top,\n new d.IntPoint2(g, c.Y),\n f.Top,\n this.m_UseFullRange\n ) &&\n ((c = this.AddOutPt(a, c)), this.AddJoin(e, c, f.Top));\n }\n return e;\n };\n d.Clipper.prototype.AddOutPt = function (a, b) {\n if (0 > a.OutIdx) {\n var c = this.CreateOutRec();\n c.IsOpen = 0 === a.WindDelta;\n var e = new d.OutPt();\n c.Pts = e;\n e.Idx = c.Idx;\n e.Pt.X = b.X;\n e.Pt.Y = b.Y;\n d.use_xyz && (e.Pt.Z = b.Z);\n e.Next = e;\n e.Prev = e;\n c.IsOpen || this.SetHoleState(a, c);\n a.OutIdx = c.Idx;\n } else {\n c = this.m_PolyOuts[a.OutIdx];\n var f = c.Pts,\n g = a.Side === d.EdgeSide.esLeft;\n if (g && d.IntPoint.op_Equality(b, f.Pt)) return f;\n if (!g && d.IntPoint.op_Equality(b, f.Prev.Pt)) return f.Prev;\n e = new d.OutPt();\n e.Idx = c.Idx;\n e.Pt.X = b.X;\n e.Pt.Y = b.Y;\n d.use_xyz && (e.Pt.Z = b.Z);\n e.Next = f;\n e.Prev = f.Prev;\n e.Prev.Next = e;\n f.Prev = e;\n g && (c.Pts = e);\n }\n return e;\n };\n d.Clipper.prototype.GetLastOutPt = function (a) {\n var b = this.m_PolyOuts[a.OutIdx];\n return a.Side === d.EdgeSide.esLeft ? b.Pts : b.Pts.Prev;\n };\n d.Clipper.prototype.SwapPoints = function (a, b) {\n var c = new d.IntPoint1(a.Value);\n a.Value.X = b.Value.X;\n a.Value.Y = b.Value.Y;\n d.use_xyz && (a.Value.Z = b.Value.Z);\n b.Value.X = c.X;\n b.Value.Y = c.Y;\n d.use_xyz && (b.Value.Z = c.Z);\n };\n d.Clipper.prototype.HorzSegmentsOverlap = function (a, b, c, e) {\n if (a > b) {\n var d = a;\n a = b;\n b = d;\n }\n c > e && ((d = c), (c = e), (e = d));\n return a < e && c < b;\n };\n d.Clipper.prototype.SetHoleState = function (a, b) {\n for (var c = a.PrevInAEL, e = null; null !== c; )\n 0 <= c.OutIdx &&\n 0 !== c.WindDelta &&\n (null === e ? (e = c) : e.OutIdx === c.OutIdx && (e = null)),\n (c = c.PrevInAEL);\n null === e\n ? ((b.FirstLeft = null), (b.IsHole = !1))\n : ((b.FirstLeft = this.m_PolyOuts[e.OutIdx]),\n (b.IsHole = !b.FirstLeft.IsHole));\n };\n d.Clipper.prototype.GetDx = function (a, b) {\n return a.Y === b.Y ? d.ClipperBase.horizontal : (b.X - a.X) / (b.Y - a.Y);\n };\n d.Clipper.prototype.FirstIsBottomPt = function (a, b) {\n for (var c = a.Prev; d.IntPoint.op_Equality(c.Pt, a.Pt) && c !== a; )\n c = c.Prev;\n var e = Math.abs(this.GetDx(a.Pt, c.Pt));\n for (c = a.Next; d.IntPoint.op_Equality(c.Pt, a.Pt) && c !== a; )\n c = c.Next;\n var f = Math.abs(this.GetDx(a.Pt, c.Pt));\n for (c = b.Prev; d.IntPoint.op_Equality(c.Pt, b.Pt) && c !== b; )\n c = c.Prev;\n var g = Math.abs(this.GetDx(b.Pt, c.Pt));\n for (c = b.Next; d.IntPoint.op_Equality(c.Pt, b.Pt) && c !== b; )\n c = c.Next;\n c = Math.abs(this.GetDx(b.Pt, c.Pt));\n return Math.max(e, f) === Math.max(g, c) &&\n Math.min(e, f) === Math.min(g, c)\n ? 0 < this.Area(a)\n : (e >= g && e >= c) || (f >= g && f >= c);\n };\n d.Clipper.prototype.GetBottomPt = function (a) {\n for (var b = null, c = a.Next; c !== a; )\n c.Pt.Y > a.Pt.Y\n ? ((a = c), (b = null))\n : c.Pt.Y === a.Pt.Y &&\n c.Pt.X <= a.Pt.X &&\n (c.Pt.X < a.Pt.X\n ? ((b = null), (a = c))\n : c.Next !== a && c.Prev !== a && (b = c)),\n (c = c.Next);\n if (null !== b)\n for (; b !== c; )\n for (\n this.FirstIsBottomPt(c, b) || (a = b), b = b.Next;\n d.IntPoint.op_Inequality(b.Pt, a.Pt);\n\n )\n b = b.Next;\n return a;\n };\n d.Clipper.prototype.GetLowermostRec = function (a, b) {\n null === a.BottomPt && (a.BottomPt = this.GetBottomPt(a.Pts));\n null === b.BottomPt && (b.BottomPt = this.GetBottomPt(b.Pts));\n var c = a.BottomPt,\n e = b.BottomPt;\n return c.Pt.Y > e.Pt.Y\n ? a\n : c.Pt.Y < e.Pt.Y\n ? b\n : c.Pt.X < e.Pt.X\n ? a\n : c.Pt.X > e.Pt.X\n ? b\n : c.Next === c\n ? b\n : e.Next === e\n ? a\n : this.FirstIsBottomPt(c, e)\n ? a\n : b;\n };\n d.Clipper.prototype.OutRec1RightOfOutRec2 = function (a, b) {\n do if (((a = a.FirstLeft), a === b)) return !0;\n while (null !== a);\n return !1;\n };\n d.Clipper.prototype.GetOutRec = function (a) {\n for (a = this.m_PolyOuts[a]; a !== this.m_PolyOuts[a.Idx]; )\n a = this.m_PolyOuts[a.Idx];\n return a;\n };\n d.Clipper.prototype.AppendPolygon = function (a, b) {\n var c = this.m_PolyOuts[a.OutIdx],\n e = this.m_PolyOuts[b.OutIdx];\n var f = this.OutRec1RightOfOutRec2(c, e)\n ? e\n : this.OutRec1RightOfOutRec2(e, c)\n ? c\n : this.GetLowermostRec(c, e);\n var g = c.Pts,\n h = g.Prev,\n m = e.Pts,\n k = m.Prev;\n a.Side === d.EdgeSide.esLeft\n ? b.Side === d.EdgeSide.esLeft\n ? (this.ReversePolyPtLinks(m),\n (m.Next = g),\n (g.Prev = m),\n (h.Next = k),\n (k.Prev = h),\n (c.Pts = k))\n : ((k.Next = g), (g.Prev = k), (m.Prev = h), (h.Next = m), (c.Pts = m))\n : b.Side === d.EdgeSide.esRight\n ? (this.ReversePolyPtLinks(m),\n (h.Next = k),\n (k.Prev = h),\n (m.Next = g),\n (g.Prev = m))\n : ((h.Next = m), (m.Prev = h), (g.Prev = k), (k.Next = g));\n c.BottomPt = null;\n f === e &&\n (e.FirstLeft !== c && (c.FirstLeft = e.FirstLeft), (c.IsHole = e.IsHole));\n e.Pts = null;\n e.BottomPt = null;\n e.FirstLeft = c;\n f = a.OutIdx;\n g = b.OutIdx;\n a.OutIdx = -1;\n b.OutIdx = -1;\n for (h = this.m_ActiveEdges; null !== h; ) {\n if (h.OutIdx === g) {\n h.OutIdx = f;\n h.Side = a.Side;\n break;\n }\n h = h.NextInAEL;\n }\n e.Idx = c.Idx;\n };\n d.Clipper.prototype.ReversePolyPtLinks = function (a) {\n if (null !== a) {\n var b = a;\n do {\n var c = b.Next;\n b.Next = b.Prev;\n b = b.Prev = c;\n } while (b !== a);\n }\n };\n d.Clipper.SwapSides = function (a, b) {\n var c = a.Side;\n a.Side = b.Side;\n b.Side = c;\n };\n d.Clipper.SwapPolyIndexes = function (a, b) {\n var c = a.OutIdx;\n a.OutIdx = b.OutIdx;\n b.OutIdx = c;\n };\n d.Clipper.prototype.IntersectEdges = function (a, b, c) {\n var e = 0 <= a.OutIdx,\n f = 0 <= b.OutIdx;\n d.use_xyz && this.SetZ(c, a, b);\n if (!d.use_lines || (0 !== a.WindDelta && 0 !== b.WindDelta)) {\n if (a.PolyTyp === b.PolyTyp)\n if (this.IsEvenOddFillType(a)) {\n var g = a.WindCnt;\n a.WindCnt = b.WindCnt;\n b.WindCnt = g;\n } else\n (a.WindCnt =\n 0 === a.WindCnt + b.WindDelta\n ? -a.WindCnt\n : a.WindCnt + b.WindDelta),\n (b.WindCnt =\n 0 === b.WindCnt - a.WindDelta\n ? -b.WindCnt\n : b.WindCnt - a.WindDelta);\n else\n this.IsEvenOddFillType(b)\n ? (a.WindCnt2 = 0 === a.WindCnt2 ? 1 : 0)\n : (a.WindCnt2 += b.WindDelta),\n this.IsEvenOddFillType(a)\n ? (b.WindCnt2 = 0 === b.WindCnt2 ? 1 : 0)\n : (b.WindCnt2 -= a.WindDelta);\n if (a.PolyTyp === d.PolyType.ptSubject) {\n var h = this.m_SubjFillType;\n var k = this.m_ClipFillType;\n } else (h = this.m_ClipFillType), (k = this.m_SubjFillType);\n if (b.PolyTyp === d.PolyType.ptSubject) {\n var l = this.m_SubjFillType;\n g = this.m_ClipFillType;\n } else (l = this.m_ClipFillType), (g = this.m_SubjFillType);\n switch (h) {\n case d.PolyFillType.pftPositive:\n h = a.WindCnt;\n break;\n case d.PolyFillType.pftNegative:\n h = -a.WindCnt;\n break;\n default:\n h = Math.abs(a.WindCnt);\n }\n switch (l) {\n case d.PolyFillType.pftPositive:\n l = b.WindCnt;\n break;\n case d.PolyFillType.pftNegative:\n l = -b.WindCnt;\n break;\n default:\n l = Math.abs(b.WindCnt);\n }\n if (e && f)\n (0 !== h && 1 !== h) ||\n (0 !== l && 1 !== l) ||\n (a.PolyTyp !== b.PolyTyp && this.m_ClipType !== d.ClipType.ctXor)\n ? this.AddLocalMaxPoly(a, b, c)\n : (this.AddOutPt(a, c),\n this.AddOutPt(b, c),\n d.Clipper.SwapSides(a, b),\n d.Clipper.SwapPolyIndexes(a, b));\n else if (e) {\n if (0 === l || 1 === l)\n this.AddOutPt(a, c),\n d.Clipper.SwapSides(a, b),\n d.Clipper.SwapPolyIndexes(a, b);\n } else if (f) {\n if (0 === h || 1 === h)\n this.AddOutPt(b, c),\n d.Clipper.SwapSides(a, b),\n d.Clipper.SwapPolyIndexes(a, b);\n } else if (!((0 !== h && 1 !== h) || (0 !== l && 1 !== l))) {\n switch (k) {\n case d.PolyFillType.pftPositive:\n e = a.WindCnt2;\n break;\n case d.PolyFillType.pftNegative:\n e = -a.WindCnt2;\n break;\n default:\n e = Math.abs(a.WindCnt2);\n }\n switch (g) {\n case d.PolyFillType.pftPositive:\n f = b.WindCnt2;\n break;\n case d.PolyFillType.pftNegative:\n f = -b.WindCnt2;\n break;\n default:\n f = Math.abs(b.WindCnt2);\n }\n if (a.PolyTyp !== b.PolyTyp) this.AddLocalMinPoly(a, b, c);\n else if (1 === h && 1 === l)\n switch (this.m_ClipType) {\n case d.ClipType.ctIntersection:\n 0 < e && 0 < f && this.AddLocalMinPoly(a, b, c);\n break;\n case d.ClipType.ctUnion:\n 0 >= e && 0 >= f && this.AddLocalMinPoly(a, b, c);\n break;\n case d.ClipType.ctDifference:\n ((a.PolyTyp === d.PolyType.ptClip && 0 < e && 0 < f) ||\n (a.PolyTyp === d.PolyType.ptSubject && 0 >= e && 0 >= f)) &&\n this.AddLocalMinPoly(a, b, c);\n break;\n case d.ClipType.ctXor:\n this.AddLocalMinPoly(a, b, c);\n }\n else d.Clipper.SwapSides(a, b);\n }\n } else if (0 !== a.WindDelta || 0 !== b.WindDelta)\n a.PolyTyp === b.PolyTyp &&\n a.WindDelta !== b.WindDelta &&\n this.m_ClipType === d.ClipType.ctUnion\n ? 0 === a.WindDelta\n ? f && (this.AddOutPt(a, c), e && (a.OutIdx = -1))\n : e && (this.AddOutPt(b, c), f && (b.OutIdx = -1))\n : a.PolyTyp !== b.PolyTyp &&\n (0 !== a.WindDelta ||\n 1 !== Math.abs(b.WindCnt) ||\n (this.m_ClipType === d.ClipType.ctUnion && 0 !== b.WindCnt2)\n ? 0 !== b.WindDelta ||\n 1 !== Math.abs(a.WindCnt) ||\n (this.m_ClipType === d.ClipType.ctUnion && 0 !== a.WindCnt2) ||\n (this.AddOutPt(b, c), f && (b.OutIdx = -1))\n : (this.AddOutPt(a, c), e && (a.OutIdx = -1)));\n };\n d.Clipper.prototype.DeleteFromSEL = function (a) {\n var b = a.PrevInSEL,\n c = a.NextInSEL;\n if (null !== b || null !== c || a === this.m_SortedEdges)\n null !== b ? (b.NextInSEL = c) : (this.m_SortedEdges = c),\n null !== c && (c.PrevInSEL = b),\n (a.NextInSEL = null),\n (a.PrevInSEL = null);\n };\n d.Clipper.prototype.ProcessHorizontals = function () {\n for (var a = {}; this.PopEdgeFromSEL(a); ) this.ProcessHorizontal(a.v);\n };\n d.Clipper.prototype.GetHorzDirection = function (a, b) {\n a.Bot.X < a.Top.X\n ? ((b.Left = a.Bot.X),\n (b.Right = a.Top.X),\n (b.Dir = d.Direction.dLeftToRight))\n : ((b.Left = a.Top.X),\n (b.Right = a.Bot.X),\n (b.Dir = d.Direction.dRightToLeft));\n };\n d.Clipper.prototype.ProcessHorizontal = function (a) {\n var b,\n c = { Dir: null, Left: null, Right: null };\n this.GetHorzDirection(a, c);\n var e = c.Dir,\n f = c.Left;\n c = c.Right;\n for (\n var g = 0 === a.WindDelta, h = a, k = null;\n null !== h.NextInLML && d.ClipperBase.IsHorizontal(h.NextInLML);\n\n )\n h = h.NextInLML;\n null === h.NextInLML && (k = this.GetMaximaPair(h));\n var l = this.m_Maxima;\n if (null !== l)\n if (e === d.Direction.dLeftToRight) {\n for (; null !== l && l.X <= a.Bot.X; ) l = l.Next;\n null !== l && l.X >= h.Top.X && (l = null);\n } else {\n for (; null !== l.Next && l.Next.X < a.Bot.X; ) l = l.Next;\n l.X <= h.Top.X && (l = null);\n }\n for (var n = null; ; ) {\n for (var r = a === h, p = this.GetNextInAEL(a, e); null !== p; ) {\n if (null !== l)\n if (e === d.Direction.dLeftToRight)\n for (; null !== l && l.X < p.Curr.X; )\n 0 <= a.OutIdx &&\n !g &&\n this.AddOutPt(a, new d.IntPoint2(l.X, a.Bot.Y)),\n (l = l.Next);\n else\n for (; null !== l && l.X > p.Curr.X; )\n 0 <= a.OutIdx &&\n !g &&\n this.AddOutPt(a, new d.IntPoint2(l.X, a.Bot.Y)),\n (l = l.Prev);\n if (\n (e === d.Direction.dLeftToRight && p.Curr.X > c) ||\n (e === d.Direction.dRightToLeft && p.Curr.X < f)\n )\n break;\n if (\n p.Curr.X === a.Top.X &&\n null !== a.NextInLML &&\n p.Dx < a.NextInLML.Dx\n )\n break;\n if (0 <= a.OutIdx && !g) {\n d.use_xyz &&\n (e === d.Direction.dLeftToRight\n ? this.SetZ(p.Curr, a, p)\n : this.SetZ(p.Curr, p, a));\n n = this.AddOutPt(a, p.Curr);\n for (b = this.m_SortedEdges; null !== b; ) {\n if (\n 0 <= b.OutIdx &&\n this.HorzSegmentsOverlap(a.Bot.X, a.Top.X, b.Bot.X, b.Top.X)\n ) {\n var t = this.GetLastOutPt(b);\n this.AddJoin(t, n, b.Top);\n }\n b = b.NextInSEL;\n }\n this.AddGhostJoin(n, a.Bot);\n }\n if (p === k && r) {\n 0 <= a.OutIdx && this.AddLocalMaxPoly(a, k, a.Top);\n this.DeleteFromAEL(a);\n this.DeleteFromAEL(k);\n return;\n }\n e === d.Direction.dLeftToRight\n ? ((t = new d.IntPoint2(p.Curr.X, a.Curr.Y)),\n this.IntersectEdges(a, p, t))\n : ((t = new d.IntPoint2(p.Curr.X, a.Curr.Y)),\n this.IntersectEdges(p, a, t));\n t = this.GetNextInAEL(p, e);\n this.SwapPositionsInAEL(a, p);\n p = t;\n }\n if (null === a.NextInLML || !d.ClipperBase.IsHorizontal(a.NextInLML))\n break;\n a = this.UpdateEdgeIntoAEL(a);\n 0 <= a.OutIdx && this.AddOutPt(a, a.Bot);\n c = { Dir: e, Left: f, Right: c };\n this.GetHorzDirection(a, c);\n e = c.Dir;\n f = c.Left;\n c = c.Right;\n }\n if (0 <= a.OutIdx && null === n) {\n n = this.GetLastOutPt(a);\n for (b = this.m_SortedEdges; null !== b; )\n 0 <= b.OutIdx &&\n this.HorzSegmentsOverlap(a.Bot.X, a.Top.X, b.Bot.X, b.Top.X) &&\n ((t = this.GetLastOutPt(b)), this.AddJoin(t, n, b.Top)),\n (b = b.NextInSEL);\n this.AddGhostJoin(n, a.Top);\n }\n null !== a.NextInLML\n ? 0 <= a.OutIdx\n ? ((n = this.AddOutPt(a, a.Top)),\n (a = this.UpdateEdgeIntoAEL(a)),\n 0 !== a.WindDelta &&\n ((e = a.PrevInAEL),\n (t = a.NextInAEL),\n null !== e &&\n e.Curr.X === a.Bot.X &&\n e.Curr.Y === a.Bot.Y &&\n 0 === e.WindDelta &&\n 0 <= e.OutIdx &&\n e.Curr.Y > e.Top.Y &&\n d.ClipperBase.SlopesEqual3(a, e, this.m_UseFullRange)\n ? ((t = this.AddOutPt(e, a.Bot)), this.AddJoin(n, t, a.Top))\n : null !== t &&\n t.Curr.X === a.Bot.X &&\n t.Curr.Y === a.Bot.Y &&\n 0 !== t.WindDelta &&\n 0 <= t.OutIdx &&\n t.Curr.Y > t.Top.Y &&\n d.ClipperBase.SlopesEqual3(a, t, this.m_UseFullRange) &&\n ((t = this.AddOutPt(t, a.Bot)), this.AddJoin(n, t, a.Top))))\n : this.UpdateEdgeIntoAEL(a)\n : (0 <= a.OutIdx && this.AddOutPt(a, a.Top), this.DeleteFromAEL(a));\n };\n d.Clipper.prototype.GetNextInAEL = function (a, b) {\n return b === d.Direction.dLeftToRight ? a.NextInAEL : a.PrevInAEL;\n };\n d.Clipper.prototype.IsMinima = function (a) {\n return null !== a && a.Prev.NextInLML !== a && a.Next.NextInLML !== a;\n };\n d.Clipper.prototype.IsMaxima = function (a, b) {\n return null !== a && a.Top.Y === b && null === a.NextInLML;\n };\n d.Clipper.prototype.IsIntermediate = function (a, b) {\n return a.Top.Y === b && null !== a.NextInLML;\n };\n d.Clipper.prototype.GetMaximaPair = function (a) {\n return d.IntPoint.op_Equality(a.Next.Top, a.Top) &&\n null === a.Next.NextInLML\n ? a.Next\n : d.IntPoint.op_Equality(a.Prev.Top, a.Top) && null === a.Prev.NextInLML\n ? a.Prev\n : null;\n };\n d.Clipper.prototype.GetMaximaPairEx = function (a) {\n a = this.GetMaximaPair(a);\n return null === a ||\n a.OutIdx === d.ClipperBase.Skip ||\n (a.NextInAEL === a.PrevInAEL && !d.ClipperBase.IsHorizontal(a))\n ? null\n : a;\n };\n d.Clipper.prototype.ProcessIntersections = function (a) {\n if (null === this.m_ActiveEdges) return !0;\n try {\n this.BuildIntersectList(a);\n if (0 === this.m_IntersectList.length) return !0;\n if (1 === this.m_IntersectList.length || this.FixupIntersectionOrder())\n this.ProcessIntersectList();\n else return !1;\n } catch (b) {\n (this.m_SortedEdges = null),\n (this.m_IntersectList.length = 0),\n d.Error(\"ProcessIntersections error\");\n }\n this.m_SortedEdges = null;\n return !0;\n };\n d.Clipper.prototype.BuildIntersectList = function (a) {\n if (null !== this.m_ActiveEdges) {\n var b = this.m_ActiveEdges;\n for (this.m_SortedEdges = b; null !== b; )\n (b.PrevInSEL = b.PrevInAEL),\n (b.NextInSEL = b.NextInAEL),\n (b.Curr.X = d.Clipper.TopX(b, a)),\n (b = b.NextInAEL);\n for (var c = !0; c && null !== this.m_SortedEdges; ) {\n c = !1;\n for (b = this.m_SortedEdges; null !== b.NextInSEL; ) {\n var e = b.NextInSEL,\n f = new d.IntPoint0();\n b.Curr.X > e.Curr.X\n ? (this.IntersectPoint(b, e, f),\n f.Y < a && (f = new d.IntPoint2(d.Clipper.TopX(b, a), a)),\n (c = new d.IntersectNode()),\n (c.Edge1 = b),\n (c.Edge2 = e),\n (c.Pt.X = f.X),\n (c.Pt.Y = f.Y),\n d.use_xyz && (c.Pt.Z = f.Z),\n this.m_IntersectList.push(c),\n this.SwapPositionsInSEL(b, e),\n (c = !0))\n : (b = e);\n }\n if (null !== b.PrevInSEL) b.PrevInSEL.NextInSEL = null;\n else break;\n }\n this.m_SortedEdges = null;\n }\n };\n d.Clipper.prototype.EdgesAdjacent = function (a) {\n return a.Edge1.NextInSEL === a.Edge2 || a.Edge1.PrevInSEL === a.Edge2;\n };\n d.Clipper.IntersectNodeSort = function (a, b) {\n return b.Pt.Y - a.Pt.Y;\n };\n d.Clipper.prototype.FixupIntersectionOrder = function () {\n this.m_IntersectList.sort(this.m_IntersectNodeComparer);\n this.CopyAELToSEL();\n for (var a = this.m_IntersectList.length, b = 0; b < a; b++) {\n if (!this.EdgesAdjacent(this.m_IntersectList[b])) {\n for (\n var c = b + 1;\n c < a && !this.EdgesAdjacent(this.m_IntersectList[c]);\n\n )\n c++;\n if (c === a) return !1;\n var e = this.m_IntersectList[b];\n this.m_IntersectList[b] = this.m_IntersectList[c];\n this.m_IntersectList[c] = e;\n }\n this.SwapPositionsInSEL(\n this.m_IntersectList[b].Edge1,\n this.m_IntersectList[b].Edge2\n );\n }\n return !0;\n };\n d.Clipper.prototype.ProcessIntersectList = function () {\n for (var a = 0, b = this.m_IntersectList.length; a < b; a++) {\n var c = this.m_IntersectList[a];\n this.IntersectEdges(c.Edge1, c.Edge2, c.Pt);\n this.SwapPositionsInAEL(c.Edge1, c.Edge2);\n }\n this.m_IntersectList.length = 0;\n };\n I = function (a) {\n return 0 > a ? Math.ceil(a - 0.5) : Math.round(a);\n };\n J = function (a) {\n return 0 > a ? Math.ceil(a - 0.5) : Math.floor(a + 0.5);\n };\n K = function (a) {\n return 0 > a ? -Math.round(Math.abs(a)) : Math.round(a);\n };\n L = function (a) {\n if (0 > a) return (a -= 0.5), -2147483648 > a ? Math.ceil(a) : a | 0;\n a += 0.5;\n return 2147483647 < a ? Math.floor(a) : a | 0;\n };\n d.Clipper.Round = u ? I : G ? K : Q ? L : J;\n d.Clipper.TopX = function (a, b) {\n return b === a.Top.Y\n ? a.Top.X\n : a.Bot.X + d.Clipper.Round(a.Dx * (b - a.Bot.Y));\n };\n d.Clipper.prototype.IntersectPoint = function (a, b, c) {\n c.X = 0;\n c.Y = 0;\n if (a.Dx === b.Dx) (c.Y = a.Curr.Y), (c.X = d.Clipper.TopX(a, c.Y));\n else {\n if (0 === a.Delta.X)\n if (((c.X = a.Bot.X), d.ClipperBase.IsHorizontal(b))) c.Y = b.Bot.Y;\n else {\n var e = b.Bot.Y - b.Bot.X / b.Dx;\n c.Y = d.Clipper.Round(c.X / b.Dx + e);\n }\n else if (0 === b.Delta.X)\n if (((c.X = b.Bot.X), d.ClipperBase.IsHorizontal(a))) c.Y = a.Bot.Y;\n else {\n var f = a.Bot.Y - a.Bot.X / a.Dx;\n c.Y = d.Clipper.Round(c.X / a.Dx + f);\n }\n else {\n f = a.Bot.X - a.Bot.Y * a.Dx;\n e = b.Bot.X - b.Bot.Y * b.Dx;\n var g = (e - f) / (a.Dx - b.Dx);\n c.Y = d.Clipper.Round(g);\n c.X =\n Math.abs(a.Dx) < Math.abs(b.Dx)\n ? d.Clipper.Round(a.Dx * g + f)\n : d.Clipper.Round(b.Dx * g + e);\n }\n if (c.Y < a.Top.Y || c.Y < b.Top.Y) {\n if (a.Top.Y > b.Top.Y)\n return (\n (c.Y = a.Top.Y), (c.X = d.Clipper.TopX(b, a.Top.Y)), c.X < a.Top.X\n );\n c.Y = b.Top.Y;\n c.X =\n Math.abs(a.Dx) < Math.abs(b.Dx)\n ? d.Clipper.TopX(a, c.Y)\n : d.Clipper.TopX(b, c.Y);\n }\n c.Y > a.Curr.Y &&\n ((c.Y = a.Curr.Y),\n (c.X =\n Math.abs(a.Dx) > Math.abs(b.Dx)\n ? d.Clipper.TopX(b, c.Y)\n : d.Clipper.TopX(a, c.Y)));\n }\n };\n d.Clipper.prototype.ProcessEdgesAtTopOfScanbeam = function (a) {\n for (var b, c, e = this.m_ActiveEdges; null !== e; ) {\n if ((c = this.IsMaxima(e, a)))\n (c = this.GetMaximaPairEx(e)),\n (c = null === c || !d.ClipperBase.IsHorizontal(c));\n if (c)\n this.StrictlySimple && this.InsertMaxima(e.Top.X),\n (b = e.PrevInAEL),\n this.DoMaxima(e),\n (e = null === b ? this.m_ActiveEdges : b.NextInAEL);\n else {\n this.IsIntermediate(e, a) && d.ClipperBase.IsHorizontal(e.NextInLML)\n ? ((e = this.UpdateEdgeIntoAEL(e)),\n 0 <= e.OutIdx && this.AddOutPt(e, e.Bot),\n this.AddEdgeToSEL(e))\n : ((e.Curr.X = d.Clipper.TopX(e, a)), (e.Curr.Y = a));\n d.use_xyz &&\n (e.Curr.Z = e.Top.Y === a ? e.Top.Z : e.Bot.Y === a ? e.Bot.Z : 0);\n if (\n this.StrictlySimple &&\n ((b = e.PrevInAEL),\n 0 <= e.OutIdx &&\n 0 !== e.WindDelta &&\n null !== b &&\n 0 <= b.OutIdx &&\n b.Curr.X === e.Curr.X &&\n 0 !== b.WindDelta)\n ) {\n var f = new d.IntPoint1(e.Curr);\n d.use_xyz && this.SetZ(f, b, e);\n c = this.AddOutPt(b, f);\n b = this.AddOutPt(e, f);\n this.AddJoin(c, b, f);\n }\n e = e.NextInAEL;\n }\n }\n this.ProcessHorizontals();\n this.m_Maxima = null;\n for (e = this.m_ActiveEdges; null !== e; )\n this.IsIntermediate(e, a) &&\n ((c = null),\n 0 <= e.OutIdx && (c = this.AddOutPt(e, e.Top)),\n (e = this.UpdateEdgeIntoAEL(e)),\n (b = e.PrevInAEL),\n (f = e.NextInAEL),\n null !== b &&\n b.Curr.X === e.Bot.X &&\n b.Curr.Y === e.Bot.Y &&\n null !== c &&\n 0 <= b.OutIdx &&\n b.Curr.Y === b.Top.Y &&\n d.ClipperBase.SlopesEqual5(\n e.Curr,\n e.Top,\n b.Curr,\n b.Top,\n this.m_UseFullRange\n ) &&\n 0 !== e.WindDelta &&\n 0 !== b.WindDelta\n ? ((b = this.AddOutPt(ePrev2, e.Bot)), this.AddJoin(c, b, e.Top))\n : null !== f &&\n f.Curr.X === e.Bot.X &&\n f.Curr.Y === e.Bot.Y &&\n null !== c &&\n 0 <= f.OutIdx &&\n f.Curr.Y === f.Top.Y &&\n d.ClipperBase.SlopesEqual5(\n e.Curr,\n e.Top,\n f.Curr,\n f.Top,\n this.m_UseFullRange\n ) &&\n 0 !== e.WindDelta &&\n 0 !== f.WindDelta &&\n ((b = this.AddOutPt(f, e.Bot)), this.AddJoin(c, b, e.Top))),\n (e = e.NextInAEL);\n };\n d.Clipper.prototype.DoMaxima = function (a) {\n var b = this.GetMaximaPairEx(a);\n if (null === b)\n 0 <= a.OutIdx && this.AddOutPt(a, a.Top), this.DeleteFromAEL(a);\n else {\n for (var c = a.NextInAEL; null !== c && c !== b; )\n this.IntersectEdges(a, c, a.Top),\n this.SwapPositionsInAEL(a, c),\n (c = a.NextInAEL);\n -1 === a.OutIdx && -1 === b.OutIdx\n ? (this.DeleteFromAEL(a), this.DeleteFromAEL(b))\n : 0 <= a.OutIdx && 0 <= b.OutIdx\n ? (0 <= a.OutIdx && this.AddLocalMaxPoly(a, b, a.Top),\n this.DeleteFromAEL(a),\n this.DeleteFromAEL(b))\n : d.use_lines && 0 === a.WindDelta\n ? (0 <= a.OutIdx &&\n (this.AddOutPt(a, a.Top),\n (a.OutIdx = d.ClipperBase.Unassigned)),\n this.DeleteFromAEL(a),\n 0 <= b.OutIdx &&\n (this.AddOutPt(b, a.Top),\n (b.OutIdx = d.ClipperBase.Unassigned)),\n this.DeleteFromAEL(b))\n : d.Error(\"DoMaxima error\");\n }\n };\n d.Clipper.ReversePaths = function (a) {\n for (var b = 0, c = a.length; b < c; b++) a[b].reverse();\n };\n d.Clipper.Orientation = function (a) {\n return 0 <= d.Clipper.Area(a);\n };\n d.Clipper.prototype.PointCount = function (a) {\n if (null === a) return 0;\n var b = 0,\n c = a;\n do b++, (c = c.Next);\n while (c !== a);\n return b;\n };\n d.Clipper.prototype.BuildResult = function (a) {\n d.Clear(a);\n for (var b = 0, c = this.m_PolyOuts.length; b < c; b++) {\n var e = this.m_PolyOuts[b];\n if (null !== e.Pts) {\n e = e.Pts.Prev;\n var f = this.PointCount(e);\n if (!(2 > f)) {\n for (var g = Array(f), h = 0; h < f; h++) (g[h] = e.Pt), (e = e.Prev);\n a.push(g);\n }\n }\n }\n };\n d.Clipper.prototype.BuildResult2 = function (a) {\n a.Clear();\n for (var b = 0, c = this.m_PolyOuts.length; b < c; b++) {\n var e = this.m_PolyOuts[b];\n var f = this.PointCount(e.Pts);\n if (!((e.IsOpen && 2 > f) || (!e.IsOpen && 3 > f))) {\n this.FixHoleLinkage(e);\n var g = new d.PolyNode();\n a.m_AllPolys.push(g);\n e.PolyNode = g;\n g.m_polygon.length = f;\n e = e.Pts.Prev;\n for (var h = 0; h < f; h++) (g.m_polygon[h] = e.Pt), (e = e.Prev);\n }\n }\n b = 0;\n for (c = this.m_PolyOuts.length; b < c; b++)\n (e = this.m_PolyOuts[b]),\n null !== e.PolyNode &&\n (e.IsOpen\n ? ((e.PolyNode.IsOpen = !0), a.AddChild(e.PolyNode))\n : null !== e.FirstLeft && null !== e.FirstLeft.PolyNode\n ? e.FirstLeft.PolyNode.AddChild(e.PolyNode)\n : a.AddChild(e.PolyNode));\n };\n d.Clipper.prototype.FixupOutPolyline = function (a) {\n for (var b = a.Pts, c = b.Prev; b !== c; )\n if (((b = b.Next), d.IntPoint.op_Equality(b.Pt, b.Prev.Pt))) {\n b === c && (c = b.Prev);\n var e = b.Prev;\n e.Next = b.Next;\n b = b.Next.Prev = e;\n }\n b === b.Prev && (a.Pts = null);\n };\n d.Clipper.prototype.FixupOutPolygon = function (a) {\n var b = null;\n a.BottomPt = null;\n for (var c = a.Pts, e = this.PreserveCollinear || this.StrictlySimple; ; ) {\n if (c.Prev === c || c.Prev === c.Next) {\n a.Pts = null;\n return;\n }\n if (\n d.IntPoint.op_Equality(c.Pt, c.Next.Pt) ||\n d.IntPoint.op_Equality(c.Pt, c.Prev.Pt) ||\n (d.ClipperBase.SlopesEqual4(\n c.Prev.Pt,\n c.Pt,\n c.Next.Pt,\n this.m_UseFullRange\n ) &&\n (!e || !this.Pt2IsBetweenPt1AndPt3(c.Prev.Pt, c.Pt, c.Next.Pt)))\n )\n (b = null), (c.Prev.Next = c.Next), (c = c.Next.Prev = c.Prev);\n else if (c === b) break;\n else null === b && (b = c), (c = c.Next);\n }\n a.Pts = c;\n };\n d.Clipper.prototype.DupOutPt = function (a, b) {\n var c = new d.OutPt();\n c.Pt.X = a.Pt.X;\n c.Pt.Y = a.Pt.Y;\n d.use_xyz && (c.Pt.Z = a.Pt.Z);\n c.Idx = a.Idx;\n b\n ? ((c.Next = a.Next), (c.Prev = a), (a.Next.Prev = c), (a.Next = c))\n : ((c.Prev = a.Prev), (c.Next = a), (a.Prev.Next = c), (a.Prev = c));\n return c;\n };\n d.Clipper.prototype.GetOverlap = function (a, b, c, e, d) {\n a < b\n ? c < e\n ? ((d.Left = Math.max(a, c)), (d.Right = Math.min(b, e)))\n : ((d.Left = Math.max(a, e)), (d.Right = Math.min(b, c)))\n : c < e\n ? ((d.Left = Math.max(b, c)), (d.Right = Math.min(a, e)))\n : ((d.Left = Math.max(b, e)), (d.Right = Math.min(a, c)));\n return d.Left < d.Right;\n };\n d.Clipper.prototype.JoinHorz = function (a, b, c, e, f, g) {\n var h =\n a.Pt.X > b.Pt.X ? d.Direction.dRightToLeft : d.Direction.dLeftToRight;\n e = c.Pt.X > e.Pt.X ? d.Direction.dRightToLeft : d.Direction.dLeftToRight;\n if (h === e) return !1;\n if (h === d.Direction.dLeftToRight) {\n for (\n ;\n a.Next.Pt.X <= f.X && a.Next.Pt.X >= a.Pt.X && a.Next.Pt.Y === f.Y;\n\n )\n a = a.Next;\n g && a.Pt.X !== f.X && (a = a.Next);\n b = this.DupOutPt(a, !g);\n d.IntPoint.op_Inequality(b.Pt, f) &&\n ((a = b),\n (a.Pt.X = f.X),\n (a.Pt.Y = f.Y),\n d.use_xyz && (a.Pt.Z = f.Z),\n (b = this.DupOutPt(a, !g)));\n } else {\n for (\n ;\n a.Next.Pt.X >= f.X && a.Next.Pt.X <= a.Pt.X && a.Next.Pt.Y === f.Y;\n\n )\n a = a.Next;\n g || a.Pt.X === f.X || (a = a.Next);\n b = this.DupOutPt(a, g);\n d.IntPoint.op_Inequality(b.Pt, f) &&\n ((a = b),\n (a.Pt.X = f.X),\n (a.Pt.Y = f.Y),\n d.use_xyz && (a.Pt.Z = f.Z),\n (b = this.DupOutPt(a, g)));\n }\n if (e === d.Direction.dLeftToRight) {\n for (\n ;\n c.Next.Pt.X <= f.X && c.Next.Pt.X >= c.Pt.X && c.Next.Pt.Y === f.Y;\n\n )\n c = c.Next;\n g && c.Pt.X !== f.X && (c = c.Next);\n e = this.DupOutPt(c, !g);\n d.IntPoint.op_Inequality(e.Pt, f) &&\n ((c = e),\n (c.Pt.X = f.X),\n (c.Pt.Y = f.Y),\n d.use_xyz && (c.Pt.Z = f.Z),\n (e = this.DupOutPt(c, !g)));\n } else {\n for (\n ;\n c.Next.Pt.X >= f.X && c.Next.Pt.X <= c.Pt.X && c.Next.Pt.Y === f.Y;\n\n )\n c = c.Next;\n g || c.Pt.X === f.X || (c = c.Next);\n e = this.DupOutPt(c, g);\n d.IntPoint.op_Inequality(e.Pt, f) &&\n ((c = e),\n (c.Pt.X = f.X),\n (c.Pt.Y = f.Y),\n d.use_xyz && (c.Pt.Z = f.Z),\n (e = this.DupOutPt(c, g)));\n }\n (h === d.Direction.dLeftToRight) === g\n ? ((a.Prev = c), (c.Next = a), (b.Next = e), (e.Prev = b))\n : ((a.Next = c), (c.Prev = a), (b.Prev = e), (e.Next = b));\n return !0;\n };\n d.Clipper.prototype.JoinPoints = function (a, b, c) {\n var e = a.OutPt1,\n f;\n new d.OutPt();\n var g = a.OutPt2,\n h;\n new d.OutPt();\n if (\n (h = a.OutPt1.Pt.Y === a.OffPt.Y) &&\n d.IntPoint.op_Equality(a.OffPt, a.OutPt1.Pt) &&\n d.IntPoint.op_Equality(a.OffPt, a.OutPt2.Pt)\n ) {\n if (b !== c) return !1;\n for (\n f = a.OutPt1.Next;\n f !== e && d.IntPoint.op_Equality(f.Pt, a.OffPt);\n\n )\n f = f.Next;\n f = f.Pt.Y > a.OffPt.Y;\n for (\n h = a.OutPt2.Next;\n h !== g && d.IntPoint.op_Equality(h.Pt, a.OffPt);\n\n )\n h = h.Next;\n if (f === h.Pt.Y > a.OffPt.Y) return !1;\n f\n ? ((f = this.DupOutPt(e, !1)),\n (h = this.DupOutPt(g, !0)),\n (e.Prev = g),\n (g.Next = e),\n (f.Next = h),\n (h.Prev = f))\n : ((f = this.DupOutPt(e, !0)),\n (h = this.DupOutPt(g, !1)),\n (e.Next = g),\n (g.Prev = e),\n (f.Prev = h),\n (h.Next = f));\n a.OutPt1 = e;\n a.OutPt2 = f;\n return !0;\n }\n if (h) {\n for (f = e; e.Prev.Pt.Y === e.Pt.Y && e.Prev !== f && e.Prev !== g; )\n e = e.Prev;\n for (; f.Next.Pt.Y === f.Pt.Y && f.Next !== e && f.Next !== g; )\n f = f.Next;\n if (f.Next === e || f.Next === g) return !1;\n for (h = g; g.Prev.Pt.Y === g.Pt.Y && g.Prev !== h && g.Prev !== f; )\n g = g.Prev;\n for (; h.Next.Pt.Y === h.Pt.Y && h.Next !== g && h.Next !== e; )\n h = h.Next;\n if (h.Next === g || h.Next === e) return !1;\n c = { Left: null, Right: null };\n if (!this.GetOverlap(e.Pt.X, f.Pt.X, g.Pt.X, h.Pt.X, c)) return !1;\n b = c.Left;\n var k = c.Right;\n c = new d.IntPoint0();\n e.Pt.X >= b && e.Pt.X <= k\n ? ((c.X = e.Pt.X),\n (c.Y = e.Pt.Y),\n d.use_xyz && (c.Z = e.Pt.Z),\n (b = e.Pt.X > f.Pt.X))\n : g.Pt.X >= b && g.Pt.X <= k\n ? ((c.X = g.Pt.X),\n (c.Y = g.Pt.Y),\n d.use_xyz && (c.Z = g.Pt.Z),\n (b = g.Pt.X > h.Pt.X))\n : f.Pt.X >= b && f.Pt.X <= k\n ? ((c.X = f.Pt.X),\n (c.Y = f.Pt.Y),\n d.use_xyz && (c.Z = f.Pt.Z),\n (b = f.Pt.X > e.Pt.X))\n : ((c.X = h.Pt.X),\n (c.Y = h.Pt.Y),\n d.use_xyz && (c.Z = h.Pt.Z),\n (b = h.Pt.X > g.Pt.X));\n a.OutPt1 = e;\n a.OutPt2 = g;\n return this.JoinHorz(e, f, g, h, c, b);\n }\n for (f = e.Next; d.IntPoint.op_Equality(f.Pt, e.Pt) && f !== e; )\n f = f.Next;\n if (\n (k =\n f.Pt.Y > e.Pt.Y ||\n !d.ClipperBase.SlopesEqual4(e.Pt, f.Pt, a.OffPt, this.m_UseFullRange))\n ) {\n for (f = e.Prev; d.IntPoint.op_Equality(f.Pt, e.Pt) && f !== e; )\n f = f.Prev;\n if (\n f.Pt.Y > e.Pt.Y ||\n !d.ClipperBase.SlopesEqual4(e.Pt, f.Pt, a.OffPt, this.m_UseFullRange)\n )\n return !1;\n }\n for (h = g.Next; d.IntPoint.op_Equality(h.Pt, g.Pt) && h !== g; )\n h = h.Next;\n var l =\n h.Pt.Y > g.Pt.Y ||\n !d.ClipperBase.SlopesEqual4(g.Pt, h.Pt, a.OffPt, this.m_UseFullRange);\n if (l) {\n for (h = g.Prev; d.IntPoint.op_Equality(h.Pt, g.Pt) && h !== g; )\n h = h.Prev;\n if (\n h.Pt.Y > g.Pt.Y ||\n !d.ClipperBase.SlopesEqual4(g.Pt, h.Pt, a.OffPt, this.m_UseFullRange)\n )\n return !1;\n }\n if (f === e || h === g || f === h || (b === c && k === l)) return !1;\n k\n ? ((f = this.DupOutPt(e, !1)),\n (h = this.DupOutPt(g, !0)),\n (e.Prev = g),\n (g.Next = e),\n (f.Next = h),\n (h.Prev = f))\n : ((f = this.DupOutPt(e, !0)),\n (h = this.DupOutPt(g, !1)),\n (e.Next = g),\n (g.Prev = e),\n (f.Prev = h),\n (h.Next = f));\n a.OutPt1 = e;\n a.OutPt2 = f;\n return !0;\n };\n d.Clipper.GetBounds = function (a) {\n for (var b = 0, c = a.length; b < c && 0 === a[b].length; ) b++;\n if (b === c) return new d.IntRect(0, 0, 0, 0);\n var e = new d.IntRect();\n e.left = a[b][0].X;\n e.right = e.left;\n e.top = a[b][0].Y;\n for (e.bottom = e.top; b < c; b++)\n for (var f = 0, g = a[b].length; f < g; f++)\n a[b][f].X < e.left\n ? (e.left = a[b][f].X)\n : a[b][f].X > e.right && (e.right = a[b][f].X),\n a[b][f].Y < e.top\n ? (e.top = a[b][f].Y)\n : a[b][f].Y > e.bottom && (e.bottom = a[b][f].Y);\n return e;\n };\n d.Clipper.prototype.GetBounds2 = function (a) {\n var b = a,\n c = new d.IntRect();\n c.left = a.Pt.X;\n c.right = a.Pt.X;\n c.top = a.Pt.Y;\n c.bottom = a.Pt.Y;\n for (a = a.Next; a !== b; )\n a.Pt.X < c.left && (c.left = a.Pt.X),\n a.Pt.X > c.right && (c.right = a.Pt.X),\n a.Pt.Y < c.top && (c.top = a.Pt.Y),\n a.Pt.Y > c.bottom && (c.bottom = a.Pt.Y),\n (a = a.Next);\n return c;\n };\n d.Clipper.PointInPolygon = function (a, b) {\n var c = 0,\n e = b.length;\n if (3 > e) return 0;\n for (var d = b[0], g = 1; g <= e; ++g) {\n var h = g === e ? b[0] : b[g];\n if (\n h.Y === a.Y &&\n (h.X === a.X || (d.Y === a.Y && h.X > a.X === d.X < a.X))\n )\n return -1;\n if (d.Y < a.Y !== h.Y < a.Y)\n if (d.X >= a.X)\n if (h.X > a.X) c = 1 - c;\n else {\n var k = (d.X - a.X) * (h.Y - a.Y) - (h.X - a.X) * (d.Y - a.Y);\n if (0 === k) return -1;\n 0 < k === h.Y > d.Y && (c = 1 - c);\n }\n else if (h.X > a.X) {\n k = (d.X - a.X) * (h.Y - a.Y) - (h.X - a.X) * (d.Y - a.Y);\n if (0 === k) return -1;\n 0 < k === h.Y > d.Y && (c = 1 - c);\n }\n d = h;\n }\n return c;\n };\n d.Clipper.prototype.PointInPolygon = function (a, b) {\n var c = 0,\n d = b,\n f = a.X,\n g = a.Y;\n var h = b.Pt.X;\n var k = b.Pt.Y;\n do {\n b = b.Next;\n var l = b.Pt.X,\n n = b.Pt.Y;\n if (n === g && (l === f || (k === g && l > f === h < f))) return -1;\n if (k < g !== n < g)\n if (h >= f)\n if (l > f) c = 1 - c;\n else {\n h = (h - f) * (n - g) - (l - f) * (k - g);\n if (0 === h) return -1;\n 0 < h === n > k && (c = 1 - c);\n }\n else if (l > f) {\n h = (h - f) * (n - g) - (l - f) * (k - g);\n if (0 === h) return -1;\n 0 < h === n > k && (c = 1 - c);\n }\n h = l;\n k = n;\n } while (d !== b);\n return c;\n };\n d.Clipper.prototype.Poly2ContainsPoly1 = function (a, b) {\n var c = a;\n do {\n var d = this.PointInPolygon(c.Pt, b);\n if (0 <= d) return 0 < d;\n c = c.Next;\n } while (c !== a);\n return !0;\n };\n d.Clipper.prototype.FixupFirstLefts1 = function (a, b) {\n for (var c, e, f = 0, g = this.m_PolyOuts.length; f < g; f++)\n (c = this.m_PolyOuts[f]),\n (e = d.Clipper.ParseFirstLeft(c.FirstLeft)),\n null !== c.Pts &&\n e === a &&\n this.Poly2ContainsPoly1(c.Pts, b.Pts) &&\n (c.FirstLeft = b);\n };\n d.Clipper.prototype.FixupFirstLefts2 = function (a, b) {\n for (\n var c = b.FirstLeft, e, f, g = 0, h = this.m_PolyOuts.length;\n g < h;\n g++\n )\n if (\n ((e = this.m_PolyOuts[g]),\n null !== e.Pts &&\n e !== b &&\n e !== a &&\n ((f = d.Clipper.ParseFirstLeft(e.FirstLeft)),\n f === c || f === a || f === b))\n )\n if (this.Poly2ContainsPoly1(e.Pts, a.Pts)) e.FirstLeft = a;\n else if (this.Poly2ContainsPoly1(e.Pts, b.Pts)) e.FirstLeft = b;\n else if (e.FirstLeft === a || e.FirstLeft === b) e.FirstLeft = c;\n };\n d.Clipper.prototype.FixupFirstLefts3 = function (a, b) {\n for (var c, e, f = 0, g = this.m_PolyOuts.length; f < g; f++)\n (c = this.m_PolyOuts[f]),\n (e = d.Clipper.ParseFirstLeft(c.FirstLeft)),\n null !== c.Pts && e === a && (c.FirstLeft = b);\n };\n d.Clipper.ParseFirstLeft = function (a) {\n for (; null !== a && null === a.Pts; ) a = a.FirstLeft;\n return a;\n };\n d.Clipper.prototype.JoinCommonEdges = function () {\n for (var a = 0, b = this.m_Joins.length; a < b; a++) {\n var c = this.m_Joins[a],\n d = this.GetOutRec(c.OutPt1.Idx),\n f = this.GetOutRec(c.OutPt2.Idx);\n if (null !== d.Pts && null !== f.Pts && !d.IsOpen && !f.IsOpen) {\n var g =\n d === f\n ? d\n : this.OutRec1RightOfOutRec2(d, f)\n ? f\n : this.OutRec1RightOfOutRec2(f, d)\n ? d\n : this.GetLowermostRec(d, f);\n this.JoinPoints(c, d, f) &&\n (d === f\n ? ((d.Pts = c.OutPt1),\n (d.BottomPt = null),\n (f = this.CreateOutRec()),\n (f.Pts = c.OutPt2),\n this.UpdateOutPtIdxs(f),\n this.Poly2ContainsPoly1(f.Pts, d.Pts)\n ? ((f.IsHole = !d.IsHole),\n (f.FirstLeft = d),\n this.m_UsingPolyTree && this.FixupFirstLefts2(f, d),\n (f.IsHole ^ this.ReverseSolution) == 0 < this.Area$1(f) &&\n this.ReversePolyPtLinks(f.Pts))\n : this.Poly2ContainsPoly1(d.Pts, f.Pts)\n ? ((f.IsHole = d.IsHole),\n (d.IsHole = !f.IsHole),\n (f.FirstLeft = d.FirstLeft),\n (d.FirstLeft = f),\n this.m_UsingPolyTree && this.FixupFirstLefts2(d, f),\n (d.IsHole ^ this.ReverseSolution) == 0 < this.Area$1(d) &&\n this.ReversePolyPtLinks(d.Pts))\n : ((f.IsHole = d.IsHole),\n (f.FirstLeft = d.FirstLeft),\n this.m_UsingPolyTree && this.FixupFirstLefts1(d, f)))\n : ((f.Pts = null),\n (f.BottomPt = null),\n (f.Idx = d.Idx),\n (d.IsHole = g.IsHole),\n g === f && (d.FirstLeft = f.FirstLeft),\n (f.FirstLeft = d),\n this.m_UsingPolyTree && this.FixupFirstLefts3(f, d)));\n }\n }\n };\n d.Clipper.prototype.UpdateOutPtIdxs = function (a) {\n var b = a.Pts;\n do (b.Idx = a.Idx), (b = b.Prev);\n while (b !== a.Pts);\n };\n d.Clipper.prototype.DoSimplePolygons = function () {\n for (var a = 0; a < this.m_PolyOuts.length; ) {\n var b = this.m_PolyOuts[a++],\n c = b.Pts;\n if (null !== c && !b.IsOpen) {\n do {\n for (var e = c.Next; e !== b.Pts; ) {\n if (\n d.IntPoint.op_Equality(c.Pt, e.Pt) &&\n e.Next !== c &&\n e.Prev !== c\n ) {\n var f = c.Prev,\n g = e.Prev;\n c.Prev = g;\n g.Next = c;\n e.Prev = f;\n f.Next = e;\n b.Pts = c;\n f = this.CreateOutRec();\n f.Pts = e;\n this.UpdateOutPtIdxs(f);\n this.Poly2ContainsPoly1(f.Pts, b.Pts)\n ? ((f.IsHole = !b.IsHole),\n (f.FirstLeft = b),\n this.m_UsingPolyTree && this.FixupFirstLefts2(f, b))\n : this.Poly2ContainsPoly1(b.Pts, f.Pts)\n ? ((f.IsHole = b.IsHole),\n (b.IsHole = !f.IsHole),\n (f.FirstLeft = b.FirstLeft),\n (b.FirstLeft = f),\n this.m_UsingPolyTree && this.FixupFirstLefts2(b, f))\n : ((f.IsHole = b.IsHole),\n (f.FirstLeft = b.FirstLeft),\n this.m_UsingPolyTree && this.FixupFirstLefts1(b, f));\n e = c;\n }\n e = e.Next;\n }\n c = c.Next;\n } while (c !== b.Pts);\n }\n }\n };\n d.Clipper.Area = function (a) {\n if (!Array.isArray(a)) return 0;\n var b = a.length;\n if (3 > b) return 0;\n for (var c = 0, d = 0, f = b - 1; d < b; ++d)\n (c += (a[f].X + a[d].X) * (a[f].Y - a[d].Y)), (f = d);\n return 0.5 * -c;\n };\n d.Clipper.prototype.Area = function (a) {\n var b = a;\n if (null === a) return 0;\n var c = 0;\n do (c += (a.Prev.Pt.X + a.Pt.X) * (a.Prev.Pt.Y - a.Pt.Y)), (a = a.Next);\n while (a !== b);\n return 0.5 * c;\n };\n d.Clipper.prototype.Area$1 = function (a) {\n return this.Area(a.Pts);\n };\n d.Clipper.SimplifyPolygon = function (a, b) {\n var c = [],\n e = new d.Clipper(0);\n e.StrictlySimple = !0;\n e.AddPath(a, d.PolyType.ptSubject, !0);\n e.Execute(d.ClipType.ctUnion, c, b, b);\n return c;\n };\n d.Clipper.SimplifyPolygons = function (a, b) {\n \"undefined\" === typeof b && (b = d.PolyFillType.pftEvenOdd);\n var c = [],\n e = new d.Clipper(0);\n e.StrictlySimple = !0;\n e.AddPaths(a, d.PolyType.ptSubject, !0);\n e.Execute(d.ClipType.ctUnion, c, b, b);\n return c;\n };\n d.Clipper.DistanceSqrd = function (a, b) {\n var c = a.X - b.X,\n d = a.Y - b.Y;\n return c * c + d * d;\n };\n d.Clipper.DistanceFromLineSqrd = function (a, b, c) {\n var d = b.Y - c.Y;\n c = c.X - b.X;\n b = d * b.X + c * b.Y;\n b = d * a.X + c * a.Y - b;\n return (b * b) / (d * d + c * c);\n };\n d.Clipper.SlopesNearCollinear = function (a, b, c, e) {\n return Math.abs(a.X - b.X) > Math.abs(a.Y - b.Y)\n ? a.X > b.X === a.X < c.X\n ? d.Clipper.DistanceFromLineSqrd(a, b, c) < e\n : b.X > a.X === b.X < c.X\n ? d.Clipper.DistanceFromLineSqrd(b, a, c) < e\n : d.Clipper.DistanceFromLineSqrd(c, a, b) < e\n : a.Y > b.Y === a.Y < c.Y\n ? d.Clipper.DistanceFromLineSqrd(a, b, c) < e\n : b.Y > a.Y === b.Y < c.Y\n ? d.Clipper.DistanceFromLineSqrd(b, a, c) < e\n : d.Clipper.DistanceFromLineSqrd(c, a, b) < e;\n };\n d.Clipper.PointsAreClose = function (a, b, c) {\n var d = a.X - b.X;\n a = a.Y - b.Y;\n return d * d + a * a <= c;\n };\n d.Clipper.ExcludeOp = function (a) {\n var b = a.Prev;\n b.Next = a.Next;\n a.Next.Prev = b;\n b.Idx = 0;\n return b;\n };\n d.Clipper.CleanPolygon = function (a, b) {\n \"undefined\" === typeof b && (b = 1.415);\n var c = a.length;\n if (0 === c) return [];\n for (var e = Array(c), f = 0; f < c; ++f) e[f] = new d.OutPt();\n for (f = 0; f < c; ++f)\n (e[f].Pt = a[f]),\n (e[f].Next = e[(f + 1) % c]),\n (e[f].Next.Prev = e[f]),\n (e[f].Idx = 0);\n f = b * b;\n for (e = e[0]; 0 === e.Idx && e.Next !== e.Prev; )\n d.Clipper.PointsAreClose(e.Pt, e.Prev.Pt, f)\n ? ((e = d.Clipper.ExcludeOp(e)), c--)\n : d.Clipper.PointsAreClose(e.Prev.Pt, e.Next.Pt, f)\n ? (d.Clipper.ExcludeOp(e.Next),\n (e = d.Clipper.ExcludeOp(e)),\n (c -= 2))\n : d.Clipper.SlopesNearCollinear(e.Prev.Pt, e.Pt, e.Next.Pt, f)\n ? ((e = d.Clipper.ExcludeOp(e)), c--)\n : ((e.Idx = 1), (e = e.Next));\n 3 > c && (c = 0);\n var g = Array(c);\n for (f = 0; f < c; ++f) (g[f] = new d.IntPoint1(e.Pt)), (e = e.Next);\n return g;\n };\n d.Clipper.CleanPolygons = function (a, b) {\n for (var c = Array(a.length), e = 0, f = a.length; e < f; e++)\n c[e] = d.Clipper.CleanPolygon(a[e], b);\n return c;\n };\n d.Clipper.Minkowski = function (a, b, c, e) {\n e = e ? 1 : 0;\n var f = a.length,\n g = b.length,\n h = [];\n if (c)\n for (c = 0; c < g; c++) {\n var k = Array(f);\n for (var l = 0, n = a.length, r = a[l]; l < n; l++, r = a[l])\n k[l] = new d.IntPoint2(b[c].X + r.X, b[c].Y + r.Y);\n h.push(k);\n }\n else\n for (c = 0; c < g; c++) {\n k = Array(f);\n l = 0;\n n = a.length;\n for (r = a[l]; l < n; l++, r = a[l])\n k[l] = new d.IntPoint2(b[c].X - r.X, b[c].Y - r.Y);\n h.push(k);\n }\n a = [];\n for (c = 0; c < g - 1 + e; c++)\n for (l = 0; l < f; l++)\n (b = []),\n b.push(h[c % g][l % f]),\n b.push(h[(c + 1) % g][l % f]),\n b.push(h[(c + 1) % g][(l + 1) % f]),\n b.push(h[c % g][(l + 1) % f]),\n d.Clipper.Orientation(b) || b.reverse(),\n a.push(b);\n return a;\n };\n d.Clipper.MinkowskiSum = function (a, b, c) {\n if (b[0] instanceof Array) {\n var e = b;\n var f = new d.Paths();\n b = new d.Clipper();\n for (var g = 0; g < e.length; ++g) {\n var h = d.Clipper.Minkowski(a, e[g], !0, c);\n b.AddPaths(h, d.PolyType.ptSubject, !0);\n c &&\n ((h = d.Clipper.TranslatePath(e[g], a[0])),\n b.AddPath(h, d.PolyType.ptClip, !0));\n }\n b.Execute(\n d.ClipType.ctUnion,\n f,\n d.PolyFillType.pftNonZero,\n d.PolyFillType.pftNonZero\n );\n return f;\n }\n e = d.Clipper.Minkowski(a, b, !0, c);\n b = new d.Clipper();\n b.AddPaths(e, d.PolyType.ptSubject, !0);\n b.Execute(\n d.ClipType.ctUnion,\n e,\n d.PolyFillType.pftNonZero,\n d.PolyFillType.pftNonZero\n );\n return e;\n };\n d.Clipper.TranslatePath = function (a, b) {\n for (var c = new d.Path(), e = 0; e < a.length; e++)\n c.push(new d.IntPoint2(a[e].X + b.X, a[e].Y + b.Y));\n return c;\n };\n d.Clipper.MinkowskiDiff = function (a, b) {\n var c = d.Clipper.Minkowski(a, b, !1, !0),\n e = new d.Clipper();\n e.AddPaths(c, d.PolyType.ptSubject, !0);\n e.Execute(\n d.ClipType.ctUnion,\n c,\n d.PolyFillType.pftNonZero,\n d.PolyFillType.pftNonZero\n );\n return c;\n };\n d.Clipper.PolyTreeToPaths = function (a) {\n var b = [];\n d.Clipper.AddPolyNodeToPaths(a, d.Clipper.NodeType.ntAny, b);\n return b;\n };\n d.Clipper.AddPolyNodeToPaths = function (a, b, c) {\n var e = !0;\n switch (b) {\n case d.Clipper.NodeType.ntOpen:\n return;\n case d.Clipper.NodeType.ntClosed:\n e = !a.IsOpen;\n }\n 0 < a.m_polygon.length && e && c.push(a.m_polygon);\n e = 0;\n a = a.Childs();\n for (var f = a.length, g = a[e]; e < f; e++, g = a[e])\n d.Clipper.AddPolyNodeToPaths(g, b, c);\n };\n d.Clipper.OpenPathsFromPolyTree = function (a) {\n for (var b = new d.Paths(), c = 0, e = a.ChildCount(); c < e; c++)\n a.Childs()[c].IsOpen && b.push(a.Childs()[c].m_polygon);\n return b;\n };\n d.Clipper.ClosedPathsFromPolyTree = function (a) {\n var b = new d.Paths();\n d.Clipper.AddPolyNodeToPaths(a, d.Clipper.NodeType.ntClosed, b);\n return b;\n };\n v(d.Clipper, d.ClipperBase);\n d.Clipper.NodeType = { ntAny: 0, ntOpen: 1, ntClosed: 2 };\n d.ClipperOffset = function (a, b) {\n \"undefined\" === typeof a && (a = 2);\n \"undefined\" === typeof b && (b = d.ClipperOffset.def_arc_tolerance);\n this.m_destPolys = new d.Paths();\n this.m_srcPoly = new d.Path();\n this.m_destPoly = new d.Path();\n this.m_normals = [];\n this.m_StepsPerRad =\n this.m_miterLim =\n this.m_cos =\n this.m_sin =\n this.m_sinA =\n this.m_delta =\n 0;\n this.m_lowest = new d.IntPoint0();\n this.m_polyNodes = new d.PolyNode();\n this.MiterLimit = a;\n this.ArcTolerance = b;\n this.m_lowest.X = -1;\n };\n d.ClipperOffset.two_pi = 6.28318530717959;\n d.ClipperOffset.def_arc_tolerance = 0.25;\n d.ClipperOffset.prototype.Clear = function () {\n d.Clear(this.m_polyNodes.Childs());\n this.m_lowest.X = -1;\n };\n d.ClipperOffset.Round = d.Clipper.Round;\n d.ClipperOffset.prototype.AddPath = function (a, b, c) {\n var e = a.length - 1;\n if (!(0 > e)) {\n var f = new d.PolyNode();\n f.m_jointype = b;\n f.m_endtype = c;\n if (c === d.EndType.etClosedLine || c === d.EndType.etClosedPolygon)\n for (; 0 < e && d.IntPoint.op_Equality(a[0], a[e]); ) e--;\n f.m_polygon.push(a[0]);\n var g = 0;\n b = 0;\n for (var h = 1; h <= e; h++)\n d.IntPoint.op_Inequality(f.m_polygon[g], a[h]) &&\n (g++,\n f.m_polygon.push(a[h]),\n a[h].Y > f.m_polygon[b].Y ||\n (a[h].Y === f.m_polygon[b].Y && a[h].X < f.m_polygon[b].X)) &&\n (b = g);\n if (\n !(c === d.EndType.etClosedPolygon && 2 > g) &&\n (this.m_polyNodes.AddChild(f), c === d.EndType.etClosedPolygon)\n )\n if (0 > this.m_lowest.X)\n this.m_lowest = new d.IntPoint2(this.m_polyNodes.ChildCount() - 1, b);\n else if (\n ((a =\n this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon[\n this.m_lowest.Y\n ]),\n f.m_polygon[b].Y > a.Y ||\n (f.m_polygon[b].Y === a.Y && f.m_polygon[b].X < a.X))\n )\n this.m_lowest = new d.IntPoint2(this.m_polyNodes.ChildCount() - 1, b);\n }\n };\n d.ClipperOffset.prototype.AddPaths = function (a, b, c) {\n for (var d = 0, f = a.length; d < f; d++) this.AddPath(a[d], b, c);\n };\n d.ClipperOffset.prototype.FixOrientations = function () {\n if (\n 0 <= this.m_lowest.X &&\n !d.Clipper.Orientation(\n this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon\n )\n )\n for (var a = 0; a < this.m_polyNodes.ChildCount(); a++) {\n var b = this.m_polyNodes.Childs()[a];\n (b.m_endtype === d.EndType.etClosedPolygon ||\n (b.m_endtype === d.EndType.etClosedLine &&\n d.Clipper.Orientation(b.m_polygon))) &&\n b.m_polygon.reverse();\n }\n else\n for (a = 0; a < this.m_polyNodes.ChildCount(); a++)\n (b = this.m_polyNodes.Childs()[a]),\n b.m_endtype !== d.EndType.etClosedLine ||\n d.Clipper.Orientation(b.m_polygon) ||\n b.m_polygon.reverse();\n };\n d.ClipperOffset.GetUnitNormal = function (a, b) {\n var c = b.X - a.X,\n e = b.Y - a.Y;\n if (0 === c && 0 === e) return new d.DoublePoint2(0, 0);\n var f = 1 / Math.sqrt(c * c + e * e);\n return new d.DoublePoint2(e * f, -(c * f));\n };\n d.ClipperOffset.prototype.DoOffset = function (a) {\n var b;\n this.m_destPolys = [];\n this.m_delta = a;\n if (d.ClipperBase.near_zero(a))\n for (var c = 0; c < this.m_polyNodes.ChildCount(); c++) {\n var e = this.m_polyNodes.Childs()[c];\n e.m_endtype === d.EndType.etClosedPolygon &&\n this.m_destPolys.push(e.m_polygon);\n }\n else {\n this.m_miterLim =\n 2 < this.MiterLimit ? 2 / (this.MiterLimit * this.MiterLimit) : 0.5;\n var f =\n 3.14159265358979 /\n Math.acos(\n 1 -\n (0 >= this.ArcTolerance\n ? d.ClipperOffset.def_arc_tolerance\n : this.ArcTolerance >\n Math.abs(a) * d.ClipperOffset.def_arc_tolerance\n ? Math.abs(a) * d.ClipperOffset.def_arc_tolerance\n : this.ArcTolerance) /\n Math.abs(a)\n );\n this.m_sin = Math.sin(d.ClipperOffset.two_pi / f);\n this.m_cos = Math.cos(d.ClipperOffset.two_pi / f);\n this.m_StepsPerRad = f / d.ClipperOffset.two_pi;\n 0 > a && (this.m_sin = -this.m_sin);\n for (c = 0; c < this.m_polyNodes.ChildCount(); c++) {\n e = this.m_polyNodes.Childs()[c];\n this.m_srcPoly = e.m_polygon;\n var g = this.m_srcPoly.length;\n if (\n !(\n 0 === g ||\n (0 >= a && (3 > g || e.m_endtype !== d.EndType.etClosedPolygon))\n )\n ) {\n this.m_destPoly = [];\n if (1 === g)\n if (e.m_jointype === d.JoinType.jtRound)\n for (g = 1, e = 0, b = 1; b <= f; b++) {\n this.m_destPoly.push(\n new d.IntPoint2(\n d.ClipperOffset.Round(this.m_srcPoly[0].X + g * a),\n d.ClipperOffset.Round(this.m_srcPoly[0].Y + e * a)\n )\n );\n var h = g;\n g = g * this.m_cos - this.m_sin * e;\n e = h * this.m_sin + e * this.m_cos;\n }\n else\n for (e = g = -1, b = 0; 4 > b; ++b)\n this.m_destPoly.push(\n new d.IntPoint2(\n d.ClipperOffset.Round(this.m_srcPoly[0].X + g * a),\n d.ClipperOffset.Round(this.m_srcPoly[0].Y + e * a)\n )\n ),\n 0 > g ? (g = 1) : 0 > e ? (e = 1) : (g = -1);\n else {\n for (b = this.m_normals.length = 0; b < g - 1; b++)\n this.m_normals.push(\n d.ClipperOffset.GetUnitNormal(\n this.m_srcPoly[b],\n this.m_srcPoly[b + 1]\n )\n );\n e.m_endtype === d.EndType.etClosedLine ||\n e.m_endtype === d.EndType.etClosedPolygon\n ? this.m_normals.push(\n d.ClipperOffset.GetUnitNormal(\n this.m_srcPoly[g - 1],\n this.m_srcPoly[0]\n )\n )\n : this.m_normals.push(new d.DoublePoint1(this.m_normals[g - 2]));\n if (e.m_endtype === d.EndType.etClosedPolygon)\n for (h = g - 1, b = 0; b < g; b++)\n h = this.OffsetPoint(b, h, e.m_jointype);\n else if (e.m_endtype === d.EndType.etClosedLine) {\n h = g - 1;\n for (b = 0; b < g; b++) h = this.OffsetPoint(b, h, e.m_jointype);\n this.m_destPolys.push(this.m_destPoly);\n this.m_destPoly = [];\n h = this.m_normals[g - 1];\n for (b = g - 1; 0 < b; b--)\n this.m_normals[b] = new d.DoublePoint2(\n -this.m_normals[b - 1].X,\n -this.m_normals[b - 1].Y\n );\n this.m_normals[0] = new d.DoublePoint2(-h.X, -h.Y);\n h = 0;\n for (b = g - 1; 0 <= b; b--)\n h = this.OffsetPoint(b, h, e.m_jointype);\n } else {\n h = 0;\n for (b = 1; b < g - 1; ++b)\n h = this.OffsetPoint(b, h, e.m_jointype);\n e.m_endtype === d.EndType.etOpenButt\n ? ((b = g - 1),\n (h = new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[b].X + this.m_normals[b].X * a\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[b].Y + this.m_normals[b].Y * a\n )\n )),\n this.m_destPoly.push(h),\n (h = new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[b].X - this.m_normals[b].X * a\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[b].Y - this.m_normals[b].Y * a\n )\n )),\n this.m_destPoly.push(h))\n : ((b = g - 1),\n (h = g - 2),\n (this.m_sinA = 0),\n (this.m_normals[b] = new d.DoublePoint2(\n -this.m_normals[b].X,\n -this.m_normals[b].Y\n )),\n e.m_endtype === d.EndType.etOpenSquare\n ? this.DoSquare(b, h)\n : this.DoRound(b, h));\n for (b = g - 1; 0 < b; b--)\n this.m_normals[b] = new d.DoublePoint2(\n -this.m_normals[b - 1].X,\n -this.m_normals[b - 1].Y\n );\n this.m_normals[0] = new d.DoublePoint2(\n -this.m_normals[1].X,\n -this.m_normals[1].Y\n );\n h = g - 1;\n for (b = h - 1; 0 < b; --b)\n h = this.OffsetPoint(b, h, e.m_jointype);\n e.m_endtype === d.EndType.etOpenButt\n ? ((h = new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[0].X - this.m_normals[0].X * a\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[0].Y - this.m_normals[0].Y * a\n )\n )),\n this.m_destPoly.push(h),\n (h = new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[0].X + this.m_normals[0].X * a\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[0].Y + this.m_normals[0].Y * a\n )\n )),\n this.m_destPoly.push(h))\n : ((this.m_sinA = 0),\n e.m_endtype === d.EndType.etOpenSquare\n ? this.DoSquare(0, 1)\n : this.DoRound(0, 1));\n }\n }\n this.m_destPolys.push(this.m_destPoly);\n }\n }\n }\n };\n d.ClipperOffset.prototype.Execute = function () {\n var a = arguments;\n if (a[0] instanceof d.PolyTree) {\n var b = a[0];\n var c = a[1];\n b.Clear();\n this.FixOrientations();\n this.DoOffset(c);\n a = new d.Clipper(0);\n a.AddPaths(this.m_destPolys, d.PolyType.ptSubject, !0);\n if (0 < c)\n a.Execute(\n d.ClipType.ctUnion,\n b,\n d.PolyFillType.pftPositive,\n d.PolyFillType.pftPositive\n );\n else {\n var e = d.Clipper.GetBounds(this.m_destPolys);\n c = new d.Path();\n c.push(new d.IntPoint2(e.left - 10, e.bottom + 10));\n c.push(new d.IntPoint2(e.right + 10, e.bottom + 10));\n c.push(new d.IntPoint2(e.right + 10, e.top - 10));\n c.push(new d.IntPoint2(e.left - 10, e.top - 10));\n a.AddPath(c, d.PolyType.ptSubject, !0);\n a.ReverseSolution = !0;\n a.Execute(\n d.ClipType.ctUnion,\n b,\n d.PolyFillType.pftNegative,\n d.PolyFillType.pftNegative\n );\n if (1 === b.ChildCount() && 0 < b.Childs()[0].ChildCount())\n for (\n a = b.Childs()[0],\n b.Childs()[0] = a.Childs()[0],\n b.Childs()[0].m_Parent = b,\n c = 1;\n c < a.ChildCount();\n c++\n )\n b.AddChild(a.Childs()[c]);\n else b.Clear();\n }\n } else\n (b = a[0]),\n (c = a[1]),\n d.Clear(b),\n this.FixOrientations(),\n this.DoOffset(c),\n (a = new d.Clipper(0)),\n a.AddPaths(this.m_destPolys, d.PolyType.ptSubject, !0),\n 0 < c\n ? a.Execute(\n d.ClipType.ctUnion,\n b,\n d.PolyFillType.pftPositive,\n d.PolyFillType.pftPositive\n )\n : ((e = d.Clipper.GetBounds(this.m_destPolys)),\n (c = new d.Path()),\n c.push(new d.IntPoint2(e.left - 10, e.bottom + 10)),\n c.push(new d.IntPoint2(e.right + 10, e.bottom + 10)),\n c.push(new d.IntPoint2(e.right + 10, e.top - 10)),\n c.push(new d.IntPoint2(e.left - 10, e.top - 10)),\n a.AddPath(c, d.PolyType.ptSubject, !0),\n (a.ReverseSolution = !0),\n a.Execute(\n d.ClipType.ctUnion,\n b,\n d.PolyFillType.pftNegative,\n d.PolyFillType.pftNegative\n ),\n 0 < b.length && b.splice(0, 1));\n };\n d.ClipperOffset.prototype.OffsetPoint = function (a, b, c) {\n this.m_sinA =\n this.m_normals[b].X * this.m_normals[a].Y -\n this.m_normals[a].X * this.m_normals[b].Y;\n if (1 > Math.abs(this.m_sinA * this.m_delta)) {\n if (\n 0 <\n this.m_normals[b].X * this.m_normals[a].X +\n this.m_normals[a].Y * this.m_normals[b].Y\n )\n return (\n this.m_destPoly.push(\n new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[a].X + this.m_normals[b].X * this.m_delta\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[a].Y + this.m_normals[b].Y * this.m_delta\n )\n )\n ),\n b\n );\n } else\n 1 < this.m_sinA\n ? (this.m_sinA = 1)\n : -1 > this.m_sinA && (this.m_sinA = -1);\n if (0 > this.m_sinA * this.m_delta)\n this.m_destPoly.push(\n new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[a].X + this.m_normals[b].X * this.m_delta\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[a].Y + this.m_normals[b].Y * this.m_delta\n )\n )\n ),\n this.m_destPoly.push(new d.IntPoint1(this.m_srcPoly[a])),\n this.m_destPoly.push(\n new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[a].X + this.m_normals[a].X * this.m_delta\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[a].Y + this.m_normals[a].Y * this.m_delta\n )\n )\n );\n else\n switch (c) {\n case d.JoinType.jtMiter:\n c =\n 1 +\n (this.m_normals[a].X * this.m_normals[b].X +\n this.m_normals[a].Y * this.m_normals[b].Y);\n c >= this.m_miterLim ? this.DoMiter(a, b, c) : this.DoSquare(a, b);\n break;\n case d.JoinType.jtSquare:\n this.DoSquare(a, b);\n break;\n case d.JoinType.jtRound:\n this.DoRound(a, b);\n }\n return a;\n };\n d.ClipperOffset.prototype.DoSquare = function (a, b) {\n var c = Math.tan(\n Math.atan2(\n this.m_sinA,\n this.m_normals[b].X * this.m_normals[a].X +\n this.m_normals[b].Y * this.m_normals[a].Y\n ) / 4\n );\n this.m_destPoly.push(\n new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[a].X +\n this.m_delta * (this.m_normals[b].X - this.m_normals[b].Y * c)\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[a].Y +\n this.m_delta * (this.m_normals[b].Y + this.m_normals[b].X * c)\n )\n )\n );\n this.m_destPoly.push(\n new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[a].X +\n this.m_delta * (this.m_normals[a].X + this.m_normals[a].Y * c)\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[a].Y +\n this.m_delta * (this.m_normals[a].Y - this.m_normals[a].X * c)\n )\n )\n );\n };\n d.ClipperOffset.prototype.DoMiter = function (a, b, c) {\n c = this.m_delta / c;\n this.m_destPoly.push(\n new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[a].X + (this.m_normals[b].X + this.m_normals[a].X) * c\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[a].Y + (this.m_normals[b].Y + this.m_normals[a].Y) * c\n )\n )\n );\n };\n d.ClipperOffset.prototype.DoRound = function (a, b) {\n for (\n var c = Math.max(\n d.Cast_Int32(\n d.ClipperOffset.Round(\n this.m_StepsPerRad *\n Math.abs(\n Math.atan2(\n this.m_sinA,\n this.m_normals[b].X * this.m_normals[a].X +\n this.m_normals[b].Y * this.m_normals[a].Y\n )\n )\n )\n ),\n 1\n ),\n e = this.m_normals[b].X,\n f = this.m_normals[b].Y,\n g,\n h = 0;\n h < c;\n ++h\n )\n this.m_destPoly.push(\n new d.IntPoint2(\n d.ClipperOffset.Round(this.m_srcPoly[a].X + e * this.m_delta),\n d.ClipperOffset.Round(this.m_srcPoly[a].Y + f * this.m_delta)\n )\n ),\n (g = e),\n (e = e * this.m_cos - this.m_sin * f),\n (f = g * this.m_sin + f * this.m_cos);\n this.m_destPoly.push(\n new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[a].X + this.m_normals[a].X * this.m_delta\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[a].Y + this.m_normals[a].Y * this.m_delta\n )\n )\n );\n };\n d.Error = function (a) {\n try {\n throw Error(a);\n } catch (b) {\n alert(b.message);\n }\n };\n d.JS = {};\n d.JS.AreaOfPolygon = function (a, b) {\n b || (b = 1);\n return d.Clipper.Area(a) / (b * b);\n };\n d.JS.AreaOfPolygons = function (a, b) {\n b || (b = 1);\n for (var c = 0, e = 0; e < a.length; e++) c += d.Clipper.Area(a[e]);\n return c / (b * b);\n };\n d.JS.BoundsOfPath = function (a, b) {\n return d.JS.BoundsOfPaths([a], b);\n };\n d.JS.BoundsOfPaths = function (a, b) {\n b || (b = 1);\n var c = d.Clipper.GetBounds(a);\n c.left /= b;\n c.bottom /= b;\n c.right /= b;\n c.top /= b;\n return c;\n };\n d.JS.Clean = function (a, b) {\n if (!(a instanceof Array)) return [];\n var c = a[0] instanceof Array;\n a = d.JS.Clone(a);\n if (\"number\" !== typeof b || null === b)\n return d.Error(\"Delta is not a number in Clean().\"), a;\n if (0 === a.length || (1 === a.length && 0 === a[0].length) || 0 > b)\n return a;\n c || (a = [a]);\n for (var e = a.length, f, g, h, k, l, n, r, p = [], t = 0; t < e; t++)\n if (((g = a[t]), (f = g.length), 0 !== f))\n if (3 > f) (h = g), p.push(h);\n else {\n h = g;\n k = b * b;\n l = g[0];\n for (r = n = 1; r < f; r++)\n (g[r].X - l.X) * (g[r].X - l.X) + (g[r].Y - l.Y) * (g[r].Y - l.Y) <=\n k || ((h[n] = g[r]), (l = g[r]), n++);\n l = g[n - 1];\n (g[0].X - l.X) * (g[0].X - l.X) + (g[0].Y - l.Y) * (g[0].Y - l.Y) <=\n k && n--;\n n < f && h.splice(n, f - n);\n h.length && p.push(h);\n }\n !c && p.length\n ? (p = p[0])\n : c || 0 !== p.length\n ? c && 0 === p.length && (p = [[]])\n : (p = []);\n return p;\n };\n d.JS.Clone = function (a) {\n if (!(a instanceof Array) || 0 === a.length) return [];\n if (1 === a.length && 0 === a[0].length) return [[]];\n var b = a[0] instanceof Array;\n b || (a = [a]);\n var c = a.length,\n d,\n f,\n g = Array(c);\n for (d = 0; d < c; d++) {\n var h = a[d].length;\n var k = Array(h);\n for (f = 0; f < h; f++) k[f] = { X: a[d][f].X, Y: a[d][f].Y };\n g[d] = k;\n }\n b || (g = g[0]);\n return g;\n };\n d.JS.Lighten = function (a, b) {\n if (!(a instanceof Array)) return [];\n if (\"number\" !== typeof b || null === b)\n return d.Error(\"Tolerance is not a number in Lighten().\"), d.JS.Clone(a);\n if (0 === a.length || (1 === a.length && 0 === a[0].length) || 0 > b)\n return d.JS.Clone(a);\n var c = a[0] instanceof Array;\n c || (a = [a]);\n var e,\n f,\n g,\n h = a.length,\n k = b * b,\n l = [];\n for (e = 0; e < h; e++) {\n var n = a[e];\n var r = n.length;\n if (0 !== r) {\n for (g = 0; 1e6 > g; g++) {\n var p = [];\n r = n.length;\n if (n[r - 1].X !== n[0].X || n[r - 1].Y !== n[0].Y) {\n var t = 1;\n n.push({ X: n[0].X, Y: n[0].Y });\n r = n.length;\n } else t = 0;\n var u = [];\n for (f = 0; f < r - 2; f++) {\n var q = n[f];\n var v = n[f + 1];\n var w = n[f + 2];\n var x = q.X;\n var y = q.Y;\n q = w.X - x;\n var A = w.Y - y;\n if (0 !== q || 0 !== A) {\n var z = ((v.X - x) * q + (v.Y - y) * A) / (q * q + A * A);\n 1 < z\n ? ((x = w.X), (y = w.Y))\n : 0 < z && ((x += q * z), (y += A * z));\n }\n q = v.X - x;\n A = v.Y - y;\n w = q * q + A * A;\n w <= k && ((u[f + 1] = 1), f++);\n }\n p.push({ X: n[0].X, Y: n[0].Y });\n for (f = 1; f < r - 1; f++) u[f] || p.push({ X: n[f].X, Y: n[f].Y });\n p.push({ X: n[r - 1].X, Y: n[r - 1].Y });\n t && n.pop();\n if (u.length) n = p;\n else break;\n }\n r = p.length;\n p[r - 1].X === p[0].X && p[r - 1].Y === p[0].Y && p.pop();\n 2 < p.length && l.push(p);\n }\n }\n c || (l = l[0]);\n \"undefined\" === typeof l && (l = []);\n return l;\n };\n d.JS.PerimeterOfPath = function (a, b, c) {\n if (\"undefined\" === typeof a) return 0;\n var d = Math.sqrt,\n f = 0,\n g = a.length;\n if (2 > g) return 0;\n b && ((a[g] = a[0]), g++);\n for (; --g; ) {\n var h = a[g];\n var k = h.X;\n h = h.Y;\n var l = a[g - 1];\n var n = l.X;\n l = l.Y;\n f += d((k - n) * (k - n) + (h - l) * (h - l));\n }\n b && a.pop();\n return f / c;\n };\n d.JS.PerimeterOfPaths = function (a, b, c) {\n c || (c = 1);\n for (var e = 0, f = 0; f < a.length; f++)\n e += d.JS.PerimeterOfPath(a[f], b, c);\n return e;\n };\n d.JS.ScaleDownPath = function (a, b) {\n var c;\n b || (b = 1);\n for (c = a.length; c--; ) {\n var d = a[c];\n d.X /= b;\n d.Y /= b;\n }\n };\n d.JS.ScaleDownPaths = function (a, b) {\n var c, d;\n b || (b = 1);\n for (c = a.length; c--; )\n for (d = a[c].length; d--; ) {\n var f = a[c][d];\n f.X /= b;\n f.Y /= b;\n }\n };\n d.JS.ScaleUpPath = function (a, b) {\n var c,\n d = Math.round;\n b || (b = 1);\n for (c = a.length; c--; ) {\n var f = a[c];\n f.X = d(f.X * b);\n f.Y = d(f.Y * b);\n }\n };\n d.JS.ScaleUpPaths = function (a, b) {\n var c,\n d,\n f = Math.round;\n b || (b = 1);\n for (c = a.length; c--; )\n for (d = a[c].length; d--; ) {\n var g = a[c][d];\n g.X = f(g.X * b);\n g.Y = f(g.Y * b);\n }\n };\n d.ExPolygons = function () {\n return [];\n };\n d.ExPolygon = function () {\n this.holes = this.outer = null;\n };\n d.JS.AddOuterPolyNodeToExPolygons = function (a, b) {\n var c = new d.ExPolygon();\n c.outer = a.Contour();\n var e = a.Childs(),\n f = e.length;\n c.holes = Array(f);\n var g, h;\n for (g = 0; g < f; g++) {\n var k = e[g];\n c.holes[g] = k.Contour();\n var l = 0;\n var n = k.Childs();\n for (h = n.length; l < h; l++)\n (k = n[l]), d.JS.AddOuterPolyNodeToExPolygons(k, b);\n }\n b.push(c);\n };\n d.JS.ExPolygonsToPaths = function (a) {\n var b,\n c,\n e = new d.Paths();\n var f = 0;\n for (b = a.length; f < b; f++) {\n e.push(a[f].outer);\n var g = 0;\n for (c = a[f].holes.length; g < c; g++) e.push(a[f].holes[g]);\n }\n return e;\n };\n d.JS.PolyTreeToExPolygons = function (a) {\n var b = new d.ExPolygons(),\n c;\n var e = 0;\n var f = a.Childs();\n for (c = f.length; e < c; e++)\n (a = f[e]), d.JS.AddOuterPolyNodeToExPolygons(a, b);\n return b;\n };\n})();\n"],"names":["$a8b194ee5ee2de37$var$resizeTimer","$parcel$interopDefault","a","__esModule","default","$d440cba9eebbb8de$export$8a9b6341a7c96bc","value","strict","test","startsWith","$c972e44f440b9af9$export$346677f925de839c","Math","ceil","length","$266a83479ddcca51$export$83d89fbfd8236492","$99d887ad91c984c6$var$errorConfig","getDocsUrl","docsBaseUrl","docsPath","docsSlug","undefined","version","$99d887ad91c984c6$export$a490eb03cb7a0a5e","Error","constructor","shortMessage","args","details","cause","message","docsUrl","metaMessages","join","Object","defineProperty","enumerable","configurable","writable","name","walk","fn","$99d887ad91c984c6$var$walk","err","$5b122542bf87f4b6$export$20737d495bb13c2d","expectedLength","givenLength","$5b122542bf87f4b6$export$a0eb884ede5c87eb","expectedSize","givenSize","$5b122542bf87f4b6$export$a16541e2fe420ef1","type","$223c6c44c48560e0$export$66c44d927ffead98","address","$113b826c68452f61$export$fcb3b6cad79d7e3a","Map","size","maxSize","set","key","delete","keys","next","$22d4c2005867f2d3$export$70445dc308a7f3d5","targetSize","charAt","toUpperCase","slice","toLowerCase","$98fd51879b3ecb59$export$5d04458e2a6c373e","hexOrBytes","dir","$98fd51879b3ecb59$export$1bcd51c0fce8ee55","hex_","hex","replace","$98fd51879b3ecb59$export$4c6b868113605df3","bytes","paddedBytes","Uint8Array","i","padEnd","$6bc7cb07282b4ef9$export$47d164a8071229a9","max","min","signed","$6bc7cb07282b4ef9$export$beb44ed4f8747d0e","$48b086097357245b$export$2af489edb7fa35fe","$f004194a770c7248$var$hexes","Array","from","_v","toString","padStart","$f004194a770c7248$export$b5c95dec4f62ef7a","opts","Number","$f004194a770c7248$export$58b867e287a802c8","string","$f004194a770c7248$export$4e87185b7ecfeec4","value_","maxValue","BigInt","MAX_SAFE_INTEGER","minValue","suffix","$f004194a770c7248$var$encoder","TextEncoder","$f004194a770c7248$export$551c48dea6f88e6d","encode","$551a23ba4e8afae7$var$encoder","$551a23ba4e8afae7$var$charCodeMap","zero","nine","A","F","f","$551a23ba4e8afae7$var$charCodeToBase16","char","$551a23ba4e8afae7$export$31c96b9df38bc8d4","hexString","index","j","nibbleLeft","charCodeAt","nibbleRight","$551a23ba4e8afae7$export$c8dd6bc66a63753c","$c8edf0fd0cb8f896$exports","shake256","shake128","keccak_512","keccak_384","keccak_256","keccak_224","sha3_512","sha3_384","sha3_256","sha3_224","Keccak","keccakP","$fc6ec5653e91d6e4$exports","$fc6ec5653e91d6e4$var$number","n","isSafeInteger","$fc6ec5653e91d6e4$var$bool","b","$fc6ec5653e91d6e4$var$bytes","lengths","includes","$fc6ec5653e91d6e4$var$hash","hash","create","outputLen","blockLen","$fc6ec5653e91d6e4$var$exists","instance","checkFinished","destroyed","finished","$fc6ec5653e91d6e4$var$output","out","output","exists","bool","number","$15c2007833b0fa11$exports","add5L","add5H","add4H","add4L","add3H","add3L","add","rotlBL","rotlBH","rotlSL","rotlSH","rotr32L","rotr32H","rotrBL","rotrBH","rotrSL","rotrSH","shrSL","shrSH","toBig","split","fromBig","$15c2007833b0fa11$var$U32_MASK64","$15c2007833b0fa11$var$_32n","$15c2007833b0fa11$var$fromBig","le","h","l","$15c2007833b0fa11$var$split","lst","Ah","Uint32Array","Al","$15c2007833b0fa11$var$toBig","$15c2007833b0fa11$var$shrSH","_l","s","$15c2007833b0fa11$var$shrSL","$15c2007833b0fa11$var$rotrSH","$15c2007833b0fa11$var$rotrSL","$15c2007833b0fa11$var$rotrBH","$15c2007833b0fa11$var$rotrBL","$15c2007833b0fa11$var$rotr32H","_h","$15c2007833b0fa11$var$rotr32L","$15c2007833b0fa11$var$rotlSH","$15c2007833b0fa11$var$rotlSL","$15c2007833b0fa11$var$rotlBH","$15c2007833b0fa11$var$rotlBL","$15c2007833b0fa11$var$add","Bh","Bl","$15c2007833b0fa11$var$add3L","Cl","$15c2007833b0fa11$var$add3H","low","Ch","$15c2007833b0fa11$var$add4L","Dl","$15c2007833b0fa11$var$add4H","Dh","$15c2007833b0fa11$var$add5L","El","$15c2007833b0fa11$var$add5H","Eh","$7a81f263a7d1b628$exports","randomBytes","wrapXOFConstructorWithOpts","wrapConstructorWithOpts","wrapConstructor","checkOpts","Hash","concatBytes","toBytes","utf8ToBytes","asyncLoop","nextTick","hexToBytes","bytesToHex","isLE","rotr","createView","u32","u8","$00e8c55746711c4b$exports","crypto","globalThis","$7a81f263a7d1b628$var$u8a","arr","buffer","byteOffset","byteLength","floor","DataView","word","shift","$7a81f263a7d1b628$var$hexes","_","len","array","byte","parseInt","isNaN","$7a81f263a7d1b628$var$nextTick","$7a81f263a7d1b628$var$asyncLoop","iters","tick","cb","ts","Date","now","diff","$7a81f263a7d1b628$var$utf8ToBytes","str","$7a81f263a7d1b628$var$toBytes","data","arrays","r","reduce","sum","pad","forEach","clone","_cloneInto","$7a81f263a7d1b628$var$toStr","defaults","call","assign","hashCons","hashC","msg","update","digest","tmp","bytesLength","getRandomValues","$c8edf0fd0cb8f896$var$SHA3_PI","$c8edf0fd0cb8f896$var$SHA3_ROTL","$c8edf0fd0cb8f896$var$_SHA3_IOTA","$c8edf0fd0cb8f896$var$_0n","$c8edf0fd0cb8f896$var$_1n","$c8edf0fd0cb8f896$var$_2n","$c8edf0fd0cb8f896$var$_7n","$c8edf0fd0cb8f896$var$_256n","$c8edf0fd0cb8f896$var$_0x71n","round","R","x","y","push","t","$c8edf0fd0cb8f896$var$SHA3_IOTA_H","$c8edf0fd0cb8f896$var$SHA3_IOTA_L","$c8edf0fd0cb8f896$var$rotlH","$c8edf0fd0cb8f896$var$rotlL","$c8edf0fd0cb8f896$var$keccakP","rounds","B","idx1","idx0","B0","B1","Th","Tl","curH","curL","PI","fill","$c8edf0fd0cb8f896$var$Keccak","enableXOF","pos","posOut","state","state32","keccak","take","finish","writeInto","bufferOut","subarray","xofInto","xof","digestInto","destroy","to","$c8edf0fd0cb8f896$var$gen","$c8edf0fd0cb8f896$var$genShake","dkLen","$70d1698339832295$export$f8151fce47ad1c35","to_","$551a23ba4e8afae7$export$771517697a68241","$74c3746ba4e98114$var$checksumAddressCache","$0220c738ddd72734$var$addressRegex","$0220c738ddd72734$export$ef83598cc5072ce","$f97a6a403efe1d42$export$f6cc0b64b5a999af","values","acc","$ac26bfea216b911d$export$6cd562aaf6380f0e","$ac26bfea216b911d$export$94d7303c0d9f263a","$ac26bfea216b911d$export$45902cc189596eef","$a0fa327a4f07121a$exports","k","c","d","biginteger_used","fromInt","fromNumber","fromString","q","M","E","z","m","mp","invDigit","mpl","mph","um","DB","mt2","U","H","N","O","D","P","C","r2","q3","ONE","dlShiftTo","mu","divide","use_lines","use_xyz","G","document","window","ClipperLib","self","u","v","navigator","userAgent","appName","I","indexOf","Q","J","K","L","V","prototype","am","e","g","DM","DV","FV","F1","F2","convert","compareTo","mod","revert","divRemTo","mulTo","multiplyTo","sqrTo","squareTo","abs","ZERO","subTo","copyTo","clamp","drShiftTo","fromRadix","lShiftTo","rShiftTo","p","isEven","exp","negate","toRadix","bitLength","modPowInt","multiplyUpperTo","multiplyLowerTo","dAddOffset","w","W","chunkSize","LN2","log","signum","pow","intValue","substr","dMultiply","testBit","bitwiseTo","shiftLeft","isProbablePrime","nextBytes","changeBit","addTo","modInt","millerRabin","subtract","getLowestSetBit","shiftRight","random","modPow","byteValue","shortValue","toByteArray","equals","and","or","xor","andNot","not","bitCount","setBit","clearBit","flipBit","multiply","remainder","divideAndRemainder","modInverse","gcd","square","IsNegative","op_Equality","op_Inequality","op_GreaterThan","op_LessThan","op_Addition","op_Subtraction","Int128Mul","op_Division","ToDouble","parseFloat","getOwnPropertyNames","getOwnPropertyDescriptor","$baseCtor","Path","Paths","DoublePoint","arguments","Y","X","DoublePoint0","DoublePoint1","DoublePoint2","PolyNode","m_Parent","m_polygon","m_endtype","m_jointype","m_Index","m_Childs","IsOpen","IsHoleNode","ChildCount","Contour","AddChild","GetNext","GetNextSiblingUp","Childs","Parent","IsHole","PolyTree","m_AllPolys","Clear","GetFirst","Total","Math_Abs_Int64","Math_Abs_Int32","Math_Abs_Double","Math_Max_Int32_Int32","Cast_Int32","toInteger","Cast_Int64","PI2","IntPoint","Z","Clipper","Round","IntPoint0","IntPoint1","IntPoint1dp","IntPoint2","IntRect","left","top","right","bottom","IntRect0","IntRect1","IntRect4","ClipType","ctIntersection","ctUnion","ctDifference","ctXor","PolyType","ptSubject","ptClip","PolyFillType","pftEvenOdd","pftNonZero","pftPositive","pftNegative","JoinType","jtSquare","jtRound","jtMiter","EndType","etOpenSquare","etOpenRound","etOpenButt","etClosedLine","etClosedPolygon","EdgeSide","esLeft","esRight","Direction","dRightToLeft","dLeftToRight","TEdge","Bot","Curr","Top","Delta","Dx","PolyTyp","Side","OutIdx","WindCnt2","WindCnt","WindDelta","PrevInSEL","NextInSEL","PrevInAEL","NextInAEL","NextInLML","Prev","Next","IntersectNode","Edge2","Edge1","Pt","MyIntersectNodeSort","Compare","LocalMinima","RightBound","LeftBound","Scanbeam","Maxima","OutRec","Idx","BottomPt","Pts","FirstLeft","OutPt","Join","OutPt2","OutPt1","OffPt","ClipperBase","m_CurrentLM","m_MinimaList","m_edges","PreserveCollinear","m_HasOpenPaths","m_UseFullRange","m_ActiveEdges","m_PolyOuts","m_Scanbeam","horizontal","Skip","Unassigned","tolerance","loRange","hiRange","near_zero","IsHorizontal","PointIsVertex","PointOnLineSegment","PointOnPolygon","SlopesEqual","SlopesEqual3","SlopesEqual4","SlopesEqual5","DisposeLocalMinimaList","RangeTest","Value","InitEdge","InitEdge2","SetDx","FindNextLocMin","ProcessBound","InsertLocalMinima","ReverseHorizontal","AddPath","RemoveEdge","Pt2IsBetweenPt1AndPt3","AddPaths","PopLocalMinima","Reset","InsertScanbeam","PopScanbeam","LocalMinimaPending","CreateOutRec","DisposeOutRec","UpdateEdgeIntoAEL","SwapPositionsInAEL","DeleteFromAEL","m_ClipType","m_IntersectNodeComparer","m_IntersectList","m_SortedEdges","m_Maxima","m_ExecuteLocked","m_SubjFillType","m_ClipFillType","m_GhostJoins","m_Joins","StrictlySimple","ReverseSolution","m_UsingPolyTree","ZFillFunction","ioReverseSolution","ioStrictlySimple","ioPreserveCollinear","DisposeAllPolyPts","InsertMaxima","Execute","ExecuteInternal","BuildResult2","BuildResult","FixHoleLinkage","InsertLocalMinimaIntoAEL","ProcessHorizontals","ProcessIntersections","ProcessEdgesAtTopOfScanbeam","Area$1","ReversePolyPtLinks","JoinCommonEdges","FixupOutPolyline","FixupOutPolygon","DoSimplePolygons","AddJoin","AddGhostJoin","SetZ","InsertEdgeIntoAEL","SetWindingCount","IsContributing","AddOutPt","AddLocalMinPoly","AddEdgeToSEL","HorzSegmentsOverlap","IntersectEdges","E2InsertsBeforeE1","TopX","IsEvenOddFillType","IsEvenOddAltFillType","PopEdgeFromSEL","CopyAELToSEL","SwapPositionsInSEL","AddLocalMaxPoly","AppendPolygon","SetHoleState","GetLastOutPt","SwapPoints","GetDx","FirstIsBottomPt","Area","GetBottomPt","GetLowermostRec","OutRec1RightOfOutRec2","GetOutRec","SwapSides","SwapPolyIndexes","DeleteFromSEL","ProcessHorizontal","GetHorzDirection","Left","Right","Dir","GetMaximaPair","GetNextInAEL","IsMinima","IsMaxima","IsIntermediate","GetMaximaPairEx","BuildIntersectList","FixupIntersectionOrder","ProcessIntersectList","IntersectPoint","EdgesAdjacent","IntersectNodeSort","sort","DoMaxima","ePrev2","ReversePaths","reverse","Orientation","PointCount","DupOutPt","GetOverlap","JoinHorz","JoinPoints","GetBounds","GetBounds2","PointInPolygon","Poly2ContainsPoly1","FixupFirstLefts1","ParseFirstLeft","FixupFirstLefts2","FixupFirstLefts3","UpdateOutPtIdxs","isArray","SimplifyPolygon","SimplifyPolygons","DistanceSqrd","DistanceFromLineSqrd","SlopesNearCollinear","PointsAreClose","ExcludeOp","CleanPolygon","CleanPolygons","Minkowski","MinkowskiSum","TranslatePath","MinkowskiDiff","PolyTreeToPaths","AddPolyNodeToPaths","NodeType","ntAny","ntOpen","ntClosed","OpenPathsFromPolyTree","ClosedPathsFromPolyTree","ClipperOffset","def_arc_tolerance","m_destPolys","m_srcPoly","m_destPoly","m_normals","m_StepsPerRad","m_miterLim","m_cos","m_sin","m_sinA","m_delta","m_lowest","m_polyNodes","MiterLimit","ArcTolerance","two_pi","FixOrientations","GetUnitNormal","sqrt","DoOffset","acos","sin","cos","OffsetPoint","DoSquare","DoRound","splice","DoMiter","tan","atan2","alert","JS","AreaOfPolygon","AreaOfPolygons","BoundsOfPath","BoundsOfPaths","Clean","Clone","Lighten","pop","PerimeterOfPath","PerimeterOfPaths","ScaleDownPath","ScaleDownPaths","ScaleUpPath","ScaleUpPaths","ExPolygons","ExPolygon","holes","outer","AddOuterPolyNodeToExPolygons","ExPolygonsToPaths","PolyTreeToExPolygons","$a8b194ee5ee2de37$var$solidityKeccak256","stringTypes","types","$c35d3b9dae26c1f3$var$encode","options","cacheKey","has","get","result","address_","chainId","hexAddress","substring","intMatch","match","_type","baseType","bits","bytesMatch","arrayMatch","childType","$a8b194ee5ee2de37$var$randomRange","seed","$a8b194ee5ee2de37$var$urlInfo","location","$a8b194ee5ee2de37$var$tokenId","$a8b194ee5ee2de37$var$backgroundOffset","backgroundOverride","console","tokenId","$a8b194ee5ee2de37$var$seed","$a8b194ee5ee2de37$var$R","useA","sfc32","uint128Hex","prngA","prngB","float","int","bell","inv","num","$a8b194ee5ee2de37$var$win_w","innerWidth","$a8b194ee5ee2de37$var$win_h","innerHeight","$a8b194ee5ee2de37$var$largestSide","$a8b194ee5ee2de37$var$marginFactor","$a8b194ee5ee2de37$var$margin","$a8b194ee5ee2de37$var$amount","$a8b194ee5ee2de37$var$elWidth","$a8b194ee5ee2de37$var$elHeight","$a8b194ee5ee2de37$var$angle","$a8b194ee5ee2de37$var$showHole","$a8b194ee5ee2de37$var$configSeed","$a8b194ee5ee2de37$var$showRectangles","$a8b194ee5ee2de37$var$showPolygons","$a8b194ee5ee2de37$var$showGrid","$a8b194ee5ee2de37$var$showStar","$a8b194ee5ee2de37$var$showFrame","$a8b194ee5ee2de37$var$rotateAllRectangles","$a8b194ee5ee2de37$var$gridVal","$a8b194ee5ee2de37$var$gridMargin","$a8b194ee5ee2de37$var$gridCLipType","$a8b194ee5ee2de37$var$frameAmount","$a8b194ee5ee2de37$var$selectionObjectsOrigin","$a8b194ee5ee2de37$var$selectionObjects","$a8b194ee5ee2de37$var$generateEmptySelectionObjects","sa","$a8b194ee5ee2de37$var$SelectionObject","$a8b194ee5ee2de37$var$polygonObjects","$a8b194ee5ee2de37$var$generatePolygonObjects","pa","$a8b194ee5ee2de37$var$PolygonObject","createRn","xR","yR","wR","hR","getPath","marginize","setValue","startX","startY","polyLength","stepVar","rnArray","path","marginVar","applyMargin","makePolygon","polX","polY","expon","dim","$a8b194ee5ee2de37$var$renderSelections","treatAllAsTrue","clip_paths","subj_paths","sx","sy","$a8b194ee5ee2de37$var$clipPathToAll","$a8b194ee5ee2de37$var$rotatePath","angle","pA","pB","$a8b194ee5ee2de37$var$rotateCoordinate","pC","pD","poly","fillTypes","gridSize","clipTypes","largestSide","ch_w","ch_h","ch_x","ch_y","svgPath","$a8b194ee5ee2de37$var$paths2string","paths","svgpath","error","querySelector","setAttribute","cpr","subject_fillType","clip_fillType","solution_paths","cx","cy","radians","$a8b194ee5ee2de37$var$setBg","finalColor","gradAngle","dark","solidColorString","solidsArray","solidOverGrad","grayOverColor","bgStyleRand","bgState","gray1Val","gray1","gray2Val","gray2","color1R","color1G","color1B","color1","addOrSubtract","colorOffset","color2","getElementsByTagName","style","$a8b194ee5ee2de37$var$resizeEnded","onload","$a8b194ee5ee2de37$var$svg","onclick","onresize","clearTimeout","setTimeout"],"version":3,"file":"selection.js.map"} \ No newline at end of file +{"mappings":"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","sources":["","src/selection.js","node_modules/viem/_esm/utils/abi/encodePacked.js","node_modules/viem/utils/abi/encodePacked.ts","node_modules/viem/_esm/errors/abi.js","node_modules/viem/errors/abi.ts","node_modules/viem/_esm/utils/abi/formatAbiItem.js","node_modules/viem/utils/abi/formatAbiItem.ts","node_modules/viem/_esm/utils/data/size.js","node_modules/viem/utils/data/size.ts","node_modules/viem/_esm/utils/data/isHex.js","node_modules/viem/utils/data/isHex.ts","node_modules/viem/_esm/errors/base.js","node_modules/viem/errors/base.ts","node_modules/viem/_esm/errors/version.js","node_modules/viem/errors/version.ts","node_modules/viem/_esm/errors/address.js","node_modules/viem/errors/address.ts","node_modules/viem/_esm/utils/address/isAddress.js","node_modules/viem/utils/address/isAddress.ts","node_modules/viem/_esm/utils/lru.js","node_modules/viem/utils/lru.ts","node_modules/viem/_esm/utils/address/getAddress.js","node_modules/viem/utils/address/getAddress.ts","node_modules/viem/_esm/utils/encoding/toBytes.js","node_modules/viem/utils/encoding/toBytes.ts","node_modules/viem/_esm/utils/data/pad.js","node_modules/viem/utils/data/pad.ts","node_modules/viem/_esm/errors/data.js","node_modules/viem/errors/data.ts","node_modules/viem/_esm/utils/encoding/fromHex.js","node_modules/viem/utils/encoding/fromHex.ts","node_modules/viem/_esm/errors/encoding.js","node_modules/viem/errors/encoding.ts","node_modules/viem/_esm/utils/data/trim.js","node_modules/viem/utils/data/trim.ts","node_modules/viem/_esm/utils/encoding/toHex.js","node_modules/viem/utils/encoding/toHex.ts","node_modules/viem/_esm/utils/hash/keccak256.js","node_modules/viem/utils/hash/keccak256.ts","node_modules/viem/node_modules/@noble/hashes/sha3.js","node_modules/viem/node_modules/@noble/hashes/src/sha3.ts","node_modules/viem/node_modules/@noble/hashes/_assert.js","node_modules/viem/node_modules/@noble/hashes/src/_assert.ts","node_modules/viem/node_modules/@noble/hashes/_u64.js","node_modules/viem/node_modules/@noble/hashes/src/_u64.ts","node_modules/viem/node_modules/@noble/hashes/utils.js","node_modules/viem/node_modules/@noble/hashes/src/utils.ts","node_modules/viem/node_modules/@noble/hashes/crypto.js","node_modules/viem/node_modules/@noble/hashes/src/crypto.ts","node_modules/viem/_esm/utils/data/concat.js","node_modules/viem/utils/data/concat.ts","node_modules/viem/_esm/utils/regex.js","node_modules/viem/utils/regex.ts","src/random.js","src/clipper.js"],"sourcesContent":["\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $1987e5e986c056f7$export$dc5d0ff4fc2fdee1(abiItem, { includeName: includeName = false } = {}) {\n if (abiItem.type !== \"function\" && abiItem.type !== \"event\" && abiItem.type !== \"error\") throw new (0, $5b122542bf87f4b6$export$81781a0fcfb9ed95)(abiItem.type);\n return `${abiItem.name}(${$1987e5e986c056f7$export$849e499971de75b3(abiItem.inputs, {\n includeName: includeName\n })})`;\n}\nfunction $1987e5e986c056f7$export$849e499971de75b3(params, { includeName: includeName = false } = {}) {\n if (!params) return \"\";\n return params.map((param)=>$1987e5e986c056f7$var$formatAbiParam(param, {\n includeName: includeName\n })).join(includeName ? \", \" : \",\");\n}\nfunction $1987e5e986c056f7$var$formatAbiParam(param, { includeName: includeName }) {\n if (param.type.startsWith(\"tuple\")) return `(${$1987e5e986c056f7$export$849e499971de75b3(param.components, {\n includeName: includeName\n })})${param.type.slice(5)}`;\n return param.type + (includeName && param.name ? ` ${param.name}` : \"\");\n}\n\n\nfunction $d440cba9eebbb8de$export$8a9b6341a7c96bc(value, { strict: strict = true } = {}) {\n if (!value) return false;\n if (typeof value !== \"string\") return false;\n return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith(\"0x\");\n}\n\n\nfunction $c972e44f440b9af9$export$346677f925de839c(value) {\n if ((0, $d440cba9eebbb8de$export$8a9b6341a7c96bc)(value, {\n strict: false\n })) return Math.ceil((value.length - 2) / 2);\n return value.length;\n}\n\n\nconst $266a83479ddcca51$export$83d89fbfd8236492 = \"2.21.2\";\n\n\nlet $99d887ad91c984c6$var$errorConfig = {\n getDocsUrl: ({ docsBaseUrl: docsBaseUrl, docsPath: docsPath = \"\", docsSlug: docsSlug })=>docsPath ? `${docsBaseUrl ?? \"https://viem.sh\"}${docsPath}${docsSlug ? `#${docsSlug}` : \"\"}` : undefined,\n version: $266a83479ddcca51$export$83d89fbfd8236492\n};\nfunction $99d887ad91c984c6$export$4ac109df0c5244e9(config) {\n $99d887ad91c984c6$var$errorConfig = config;\n}\nclass $99d887ad91c984c6$export$a490eb03cb7a0a5e extends Error {\n constructor(shortMessage, args = {}){\n const details = (()=>{\n if (args.cause instanceof $99d887ad91c984c6$export$a490eb03cb7a0a5e) return args.cause.details;\n if (args.cause?.message) return args.cause.message;\n return args.details;\n })();\n const docsPath = (()=>{\n if (args.cause instanceof $99d887ad91c984c6$export$a490eb03cb7a0a5e) return args.cause.docsPath || args.docsPath;\n return args.docsPath;\n })();\n const docsUrl = $99d887ad91c984c6$var$errorConfig.getDocsUrl?.({\n ...args,\n docsPath: docsPath\n });\n const message = [\n shortMessage || \"An error occurred.\",\n \"\",\n ...args.metaMessages ? [\n ...args.metaMessages,\n \"\"\n ] : [],\n ...docsUrl ? [\n `Docs: ${docsUrl}`\n ] : [],\n ...details ? [\n `Details: ${details}`\n ] : [],\n ...$99d887ad91c984c6$var$errorConfig.version ? [\n `Version: ${$99d887ad91c984c6$var$errorConfig.version}`\n ] : []\n ].join(\"\\n\");\n super(message, args.cause ? {\n cause: args.cause\n } : undefined);\n Object.defineProperty(this, \"details\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"docsPath\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"metaMessages\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"shortMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"BaseError\"\n });\n this.details = details;\n this.docsPath = docsPath;\n this.metaMessages = args.metaMessages;\n this.name = args.name ?? this.name;\n this.shortMessage = shortMessage;\n this.version = (0, $266a83479ddcca51$export$83d89fbfd8236492);\n }\n walk(fn) {\n return $99d887ad91c984c6$var$walk(this, fn);\n }\n}\nfunction $99d887ad91c984c6$var$walk(err, fn) {\n if (fn?.(err)) return err;\n if (err && typeof err === \"object\" && \"cause\" in err) return $99d887ad91c984c6$var$walk(err.cause, fn);\n return fn ? null : err;\n}\n\n\nclass $5b122542bf87f4b6$export$efa723f306cf6168 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ docsPath: docsPath }){\n super([\n \"A constructor was not found on the ABI.\",\n \"Make sure you are using the correct ABI and that the constructor exists on it.\"\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"AbiConstructorNotFoundError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$4faec14323ef9c47 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ docsPath: docsPath }){\n super([\n \"Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.\",\n \"Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists.\"\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"AbiConstructorParamsNotFoundError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$68a7b570091cba69 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ data: data, size: size }){\n super([\n `Data size of ${size} bytes is invalid.`,\n \"Size must be in increments of 32 bytes (size % 32 === 0).\"\n ].join(\"\\n\"), {\n metaMessages: [\n `Data: ${data} (${size} bytes)`\n ],\n name: \"AbiDecodingDataSizeInvalidError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$7a409e433c5f3a8c extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ data: data, params: params, size: size }){\n super([\n `Data size of ${size} bytes is too small for given parameters.`\n ].join(\"\\n\"), {\n metaMessages: [\n `Params: (${(0, $1987e5e986c056f7$export$849e499971de75b3)(params, {\n includeName: true\n })})`,\n `Data: ${data} (${size} bytes)`\n ],\n name: \"AbiDecodingDataSizeTooSmallError\"\n });\n Object.defineProperty(this, \"data\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"params\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"size\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.data = data;\n this.params = params;\n this.size = size;\n }\n}\nclass $5b122542bf87f4b6$export$a063cde4013f1935 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(){\n super('Cannot decode zero data (\"0x\") with ABI parameters.', {\n name: \"AbiDecodingZeroDataError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$a851da9bf50b557 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ expectedLength: expectedLength, givenLength: givenLength, type: type }){\n super([\n `ABI encoding array length mismatch for type ${type}.`,\n `Expected length: ${expectedLength}`,\n `Given length: ${givenLength}`\n ].join(\"\\n\"), {\n name: \"AbiEncodingArrayLengthMismatchError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$19c281dc8e23a2ea extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ expectedSize: expectedSize, value: value }){\n super(`Size of bytes \"${value}\" (bytes${(0, $c972e44f440b9af9$export$346677f925de839c)(value)}) does not match expected size (bytes${expectedSize}).`, {\n name: \"AbiEncodingBytesSizeMismatchError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$20737d495bb13c2d extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ expectedLength: expectedLength, givenLength: givenLength }){\n super([\n \"ABI encoding params/values length mismatch.\",\n `Expected length (params): ${expectedLength}`,\n `Given length (values): ${givenLength}`\n ].join(\"\\n\"), {\n name: \"AbiEncodingLengthMismatchError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$d47cf5ef47eda817 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(errorName, { docsPath: docsPath }){\n super([\n `Arguments (\\`args\\`) were provided to \"${errorName}\", but \"${errorName}\" on the ABI does not contain any parameters (\\`inputs\\`).`,\n \"Cannot encode error result without knowing what the parameter types are.\",\n \"Make sure you are using the correct ABI and that the inputs exist on it.\"\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"AbiErrorInputsNotFoundError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$86b719574b683f04 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(errorName, { docsPath: docsPath } = {}){\n super([\n `Error ${errorName ? `\"${errorName}\" ` : \"\"}not found on ABI.`,\n \"Make sure you are using the correct ABI and that the error exists on it.\"\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"AbiErrorNotFoundError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$8959cb729fefe1ea extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(signature, { docsPath: docsPath }){\n super([\n `Encoded error signature \"${signature}\" not found on ABI.`,\n \"Make sure you are using the correct ABI and that the error exists on it.\",\n `You can look up the decoded signature here: https://openchain.xyz/signatures?query=${signature}.`\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"AbiErrorSignatureNotFoundError\"\n });\n Object.defineProperty(this, \"signature\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.signature = signature;\n }\n}\nclass $5b122542bf87f4b6$export$f83210ce5f9b901f extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ docsPath: docsPath }){\n super(\"Cannot extract event signature from empty topics.\", {\n docsPath: docsPath,\n name: \"AbiEventSignatureEmptyTopicsError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$3b44baeac92e4d3a extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(signature, { docsPath: docsPath }){\n super([\n `Encoded event signature \"${signature}\" not found on ABI.`,\n \"Make sure you are using the correct ABI and that the event exists on it.\",\n `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"AbiEventSignatureNotFoundError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$c7be62baad13b157 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(eventName, { docsPath: docsPath } = {}){\n super([\n `Event ${eventName ? `\"${eventName}\" ` : \"\"}not found on ABI.`,\n \"Make sure you are using the correct ABI and that the event exists on it.\"\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"AbiEventNotFoundError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$c4faa308ea7f9b2 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(functionName, { docsPath: docsPath } = {}){\n super([\n `Function ${functionName ? `\"${functionName}\" ` : \"\"}not found on ABI.`,\n \"Make sure you are using the correct ABI and that the function exists on it.\"\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"AbiFunctionNotFoundError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$26f2edb605108b34 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(functionName, { docsPath: docsPath }){\n super([\n `Function \"${functionName}\" does not contain any \\`outputs\\` on ABI.`,\n \"Cannot decode function result without knowing what the parameter types are.\",\n \"Make sure you are using the correct ABI and that the function exists on it.\"\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"AbiFunctionOutputsNotFoundError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$14373147a0e60810 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(signature, { docsPath: docsPath }){\n super([\n `Encoded function signature \"${signature}\" not found on ABI.`,\n \"Make sure you are using the correct ABI and that the function exists on it.\",\n `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"AbiFunctionSignatureNotFoundError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$fdbba54ba15f2c2d extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(x, y){\n super(\"Found ambiguous types in overloaded ABI items.\", {\n metaMessages: [\n `\\`${x.type}\\` in \\`${(0, $1987e5e986c056f7$export$dc5d0ff4fc2fdee1)(x.abiItem)}\\`, and`,\n `\\`${y.type}\\` in \\`${(0, $1987e5e986c056f7$export$dc5d0ff4fc2fdee1)(y.abiItem)}\\``,\n \"\",\n \"These types encode differently and cannot be distinguished at runtime.\",\n \"Remove one of the ambiguous items in the ABI.\"\n ],\n name: \"AbiItemAmbiguityError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$a0eb884ede5c87eb extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ expectedSize: expectedSize, givenSize: givenSize }){\n super(`Expected bytes${expectedSize}, got bytes${givenSize}.`, {\n name: \"BytesSizeMismatchError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$3978f86c08fc8c25 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ abiItem: abiItem, data: data, params: params, size: size }){\n super([\n `Data size of ${size} bytes is too small for non-indexed event parameters.`\n ].join(\"\\n\"), {\n metaMessages: [\n `Params: (${(0, $1987e5e986c056f7$export$849e499971de75b3)(params, {\n includeName: true\n })})`,\n `Data: ${data} (${size} bytes)`\n ],\n name: \"DecodeLogDataMismatch\"\n });\n Object.defineProperty(this, \"abiItem\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"data\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"params\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"size\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.abiItem = abiItem;\n this.data = data;\n this.params = params;\n this.size = size;\n }\n}\nclass $5b122542bf87f4b6$export$6d7c6f419cf52377 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ abiItem: abiItem, param: param }){\n super([\n `Expected a topic for indexed event parameter${param.name ? ` \"${param.name}\"` : \"\"} on event \"${(0, $1987e5e986c056f7$export$dc5d0ff4fc2fdee1)(abiItem, {\n includeName: true\n })}\".`\n ].join(\"\\n\"), {\n name: \"DecodeLogTopicsMismatch\"\n });\n Object.defineProperty(this, \"abiItem\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.abiItem = abiItem;\n }\n}\nclass $5b122542bf87f4b6$export$53ed98b886965f49 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(type, { docsPath: docsPath }){\n super([\n `Type \"${type}\" is not a valid encoding type.`,\n \"Please provide a valid ABI type.\"\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"InvalidAbiEncodingType\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$cf94ccff0ff97c65 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(type, { docsPath: docsPath }){\n super([\n `Type \"${type}\" is not a valid decoding type.`,\n \"Please provide a valid ABI type.\"\n ].join(\"\\n\"), {\n docsPath: docsPath,\n name: \"InvalidAbiDecodingType\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$710dd6d4f78cc47e extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(value){\n super([\n `Value \"${value}\" is not a valid array.`\n ].join(\"\\n\"), {\n name: \"InvalidArrayError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$81781a0fcfb9ed95 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(type){\n super([\n `\"${type}\" is not a valid definition type.`,\n 'Valid types: \"function\", \"event\", \"error\"'\n ].join(\"\\n\"), {\n name: \"InvalidDefinitionTypeError\"\n });\n }\n}\nclass $5b122542bf87f4b6$export$a16541e2fe420ef1 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(type){\n super(`Type \"${type}\" is not supported for packed encoding.`, {\n name: \"UnsupportedPackedAbiType\"\n });\n }\n}\n\n\n\nclass $223c6c44c48560e0$export$66c44d927ffead98 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ address: address }){\n super(`Address \"${address}\" is invalid.`, {\n metaMessages: [\n \"- Address must be a hex value of 20 bytes (40 hex characters).\",\n \"- Address must match its checksum counterpart.\"\n ],\n name: \"InvalidAddressError\"\n });\n }\n}\n\n\n/**\n * Map with a LRU (Least recently used) policy.\n *\n * @link https://en.wikipedia.org/wiki/Cache_replacement_policies#LRU\n */ class $113b826c68452f61$export$fcb3b6cad79d7e3a extends Map {\n constructor(size){\n super();\n Object.defineProperty(this, \"maxSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.maxSize = size;\n }\n set(key, value) {\n super.set(key, value);\n if (this.maxSize && this.size > this.maxSize) this.delete(this.keys().next().value);\n return this;\n }\n}\n\n\n\n\n\n\nclass $22d4c2005867f2d3$export$cfcd41bba8b36dbd extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ offset: offset, position: position, size: size }){\n super(`Slice ${position === \"start\" ? \"starting\" : \"ending\"} at offset \"${offset}\" is out-of-bounds (size: ${size}).`, {\n name: \"SliceOffsetOutOfBoundsError\"\n });\n }\n}\nclass $22d4c2005867f2d3$export$70445dc308a7f3d5 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ size: size, targetSize: targetSize, type: type }){\n super(`${type.charAt(0).toUpperCase()}${type.slice(1).toLowerCase()} size (${size}) exceeds padding size (${targetSize}).`, {\n name: \"SizeExceedsPaddingSizeError\"\n });\n }\n}\nclass $22d4c2005867f2d3$export$8a5469becf223114 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ size: size, targetSize: targetSize, type: type }){\n super(`${type.charAt(0).toUpperCase()}${type.slice(1).toLowerCase()} is expected to be ${targetSize} ${type} long, but is ${size} ${type} long.`, {\n name: \"InvalidBytesLengthError\"\n });\n }\n}\n\n\nfunction $98fd51879b3ecb59$export$5d04458e2a6c373e(hexOrBytes, { dir: dir, size: size = 32 } = {}) {\n if (typeof hexOrBytes === \"string\") return $98fd51879b3ecb59$export$1bcd51c0fce8ee55(hexOrBytes, {\n dir: dir,\n size: size\n });\n return $98fd51879b3ecb59$export$4c6b868113605df3(hexOrBytes, {\n dir: dir,\n size: size\n });\n}\nfunction $98fd51879b3ecb59$export$1bcd51c0fce8ee55(hex_, { dir: dir, size: size = 32 } = {}) {\n if (size === null) return hex_;\n const hex = hex_.replace(\"0x\", \"\");\n if (hex.length > size * 2) throw new (0, $22d4c2005867f2d3$export$70445dc308a7f3d5)({\n size: Math.ceil(hex.length / 2),\n targetSize: size,\n type: \"hex\"\n });\n return `0x${hex[dir === \"right\" ? \"padEnd\" : \"padStart\"](size * 2, \"0\")}`;\n}\nfunction $98fd51879b3ecb59$export$4c6b868113605df3(bytes, { dir: dir, size: size = 32 } = {}) {\n if (size === null) return bytes;\n if (bytes.length > size) throw new (0, $22d4c2005867f2d3$export$70445dc308a7f3d5)({\n size: bytes.length,\n targetSize: size,\n type: \"bytes\"\n });\n const paddedBytes = new Uint8Array(size);\n for(let i = 0; i < size; i++){\n const padEnd = dir === \"right\";\n paddedBytes[padEnd ? i : size - i - 1] = bytes[padEnd ? i : bytes.length - i - 1];\n }\n return paddedBytes;\n}\n\n\n\nclass $6bc7cb07282b4ef9$export$47d164a8071229a9 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ max: max, min: min, signed: signed, size: size, value: value }){\n super(`Number \"${value}\" is not in safe ${size ? `${size * 8}-bit ${signed ? \"signed\" : \"unsigned\"} ` : \"\"}integer range ${max ? `(${min} to ${max})` : `(above ${min})`}`, {\n name: \"IntegerOutOfRangeError\"\n });\n }\n}\nclass $6bc7cb07282b4ef9$export$52fc62e5266c8838 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(bytes){\n super(`Bytes value \"${bytes}\" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`, {\n name: \"InvalidBytesBooleanError\"\n });\n }\n}\nclass $6bc7cb07282b4ef9$export$f574ac54e35514c extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(hex){\n super(`Hex value \"${hex}\" is not a valid boolean. The hex value must be \"0x0\" (false) or \"0x1\" (true).`, {\n name: \"InvalidHexBooleanError\"\n });\n }\n}\nclass $6bc7cb07282b4ef9$export$ef05eafd11dd4a83 extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor(value){\n super(`Hex value \"${value}\" is an odd length (${value.length}). It must be an even length.`, {\n name: \"InvalidHexValueError\"\n });\n }\n}\nclass $6bc7cb07282b4ef9$export$beb44ed4f8747d0e extends (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e) {\n constructor({ givenSize: givenSize, maxSize: maxSize }){\n super(`Size cannot exceed ${maxSize} bytes. Given size: ${givenSize} bytes.`, {\n name: \"SizeOverflowError\"\n });\n }\n}\n\n\n\nfunction $9198e630706ef6a3$export$87c2784dc9fc4ab(hexOrBytes, { dir: dir = \"left\" } = {}) {\n let data = typeof hexOrBytes === \"string\" ? hexOrBytes.replace(\"0x\", \"\") : hexOrBytes;\n let sliceLength = 0;\n for(let i = 0; i < data.length - 1; i++){\n if (data[dir === \"left\" ? i : data.length - i - 1].toString() === \"0\") sliceLength++;\n else break;\n }\n data = dir === \"left\" ? data.slice(sliceLength) : data.slice(0, data.length - sliceLength);\n if (typeof hexOrBytes === \"string\") {\n if (data.length === 1 && dir === \"right\") data = `${data}0`;\n return `0x${data.length % 2 === 1 ? `0${data}` : data}`;\n }\n return data;\n}\n\n\n\nfunction $48b086097357245b$export$2af489edb7fa35fe(hexOrBytes, { size: size }) {\n if ((0, $c972e44f440b9af9$export$346677f925de839c)(hexOrBytes) > size) throw new (0, $6bc7cb07282b4ef9$export$beb44ed4f8747d0e)({\n givenSize: (0, $c972e44f440b9af9$export$346677f925de839c)(hexOrBytes),\n maxSize: size\n });\n}\nfunction $48b086097357245b$export$1a8ceedbd5845648(hex, toOrOpts) {\n const opts = typeof toOrOpts === \"string\" ? {\n to: toOrOpts\n } : toOrOpts;\n const to = opts.to;\n if (to === \"number\") return $48b086097357245b$export$d57f2bacc26b4249(hex, opts);\n if (to === \"bigint\") return $48b086097357245b$export$92a44656ec81b584(hex, opts);\n if (to === \"string\") return $48b086097357245b$export$f4bc7e46f3eb3ac3(hex, opts);\n if (to === \"boolean\") return $48b086097357245b$export$bde1d77e6fe6c41e(hex, opts);\n return (0, $551a23ba4e8afae7$export$31c96b9df38bc8d4)(hex, opts);\n}\nfunction $48b086097357245b$export$92a44656ec81b584(hex, opts = {}) {\n const { signed: signed } = opts;\n if (opts.size) $48b086097357245b$export$2af489edb7fa35fe(hex, {\n size: opts.size\n });\n const value = BigInt(hex);\n if (!signed) return value;\n const size = (hex.length - 2) / 2;\n const max = (1n << BigInt(size) * 8n - 1n) - 1n;\n if (value <= max) return value;\n return value - BigInt(`0x${\"f\".padStart(size * 2, \"f\")}`) - 1n;\n}\nfunction $48b086097357245b$export$bde1d77e6fe6c41e(hex_, opts = {}) {\n let hex = hex_;\n if (opts.size) {\n $48b086097357245b$export$2af489edb7fa35fe(hex, {\n size: opts.size\n });\n hex = (0, $9198e630706ef6a3$export$87c2784dc9fc4ab)(hex);\n }\n if ((0, $9198e630706ef6a3$export$87c2784dc9fc4ab)(hex) === \"0x00\") return false;\n if ((0, $9198e630706ef6a3$export$87c2784dc9fc4ab)(hex) === \"0x01\") return true;\n throw new (0, $6bc7cb07282b4ef9$export$f574ac54e35514c)(hex);\n}\nfunction $48b086097357245b$export$d57f2bacc26b4249(hex, opts = {}) {\n return Number($48b086097357245b$export$92a44656ec81b584(hex, opts));\n}\nfunction $48b086097357245b$export$f4bc7e46f3eb3ac3(hex, opts = {}) {\n let bytes = (0, $551a23ba4e8afae7$export$31c96b9df38bc8d4)(hex);\n if (opts.size) {\n $48b086097357245b$export$2af489edb7fa35fe(bytes, {\n size: opts.size\n });\n bytes = (0, $9198e630706ef6a3$export$87c2784dc9fc4ab)(bytes, {\n dir: \"right\"\n });\n }\n return new TextDecoder().decode(bytes);\n}\n\n\n\n\n\nconst $f004194a770c7248$var$hexes = /*#__PURE__*/ Array.from({\n length: 256\n}, (_v, i)=>i.toString(16).padStart(2, \"0\"));\nfunction $f004194a770c7248$export$7ea66e3774a60b67(value, opts = {}) {\n if (typeof value === \"number\" || typeof value === \"bigint\") return $f004194a770c7248$export$4e87185b7ecfeec4(value, opts);\n if (typeof value === \"string\") return $f004194a770c7248$export$551c48dea6f88e6d(value, opts);\n if (typeof value === \"boolean\") return $f004194a770c7248$export$b5c95dec4f62ef7a(value, opts);\n return $f004194a770c7248$export$58b867e287a802c8(value, opts);\n}\nfunction $f004194a770c7248$export$b5c95dec4f62ef7a(value, opts = {}) {\n const hex = `0x${Number(value)}`;\n if (typeof opts.size === \"number\") {\n (0, $48b086097357245b$export$2af489edb7fa35fe)(hex, {\n size: opts.size\n });\n return (0, $98fd51879b3ecb59$export$5d04458e2a6c373e)(hex, {\n size: opts.size\n });\n }\n return hex;\n}\nfunction $f004194a770c7248$export$58b867e287a802c8(value, opts = {}) {\n let string = \"\";\n for(let i = 0; i < value.length; i++)string += $f004194a770c7248$var$hexes[value[i]];\n const hex = `0x${string}`;\n if (typeof opts.size === \"number\") {\n (0, $48b086097357245b$export$2af489edb7fa35fe)(hex, {\n size: opts.size\n });\n return (0, $98fd51879b3ecb59$export$5d04458e2a6c373e)(hex, {\n dir: \"right\",\n size: opts.size\n });\n }\n return hex;\n}\nfunction $f004194a770c7248$export$4e87185b7ecfeec4(value_, opts = {}) {\n const { signed: signed, size: size } = opts;\n const value = BigInt(value_);\n let maxValue;\n if (size) {\n if (signed) maxValue = (1n << BigInt(size) * 8n - 1n) - 1n;\n else maxValue = 2n ** (BigInt(size) * 8n) - 1n;\n } else if (typeof value_ === \"number\") maxValue = BigInt(Number.MAX_SAFE_INTEGER);\n const minValue = typeof maxValue === \"bigint\" && signed ? -maxValue - 1n : 0;\n if (maxValue && value > maxValue || value < minValue) {\n const suffix = typeof value_ === \"bigint\" ? \"n\" : \"\";\n throw new (0, $6bc7cb07282b4ef9$export$47d164a8071229a9)({\n max: maxValue ? `${maxValue}${suffix}` : undefined,\n min: `${minValue}${suffix}`,\n signed: signed,\n size: size,\n value: `${value_}${suffix}`\n });\n }\n const hex = `0x${(signed && value < 0 ? (1n << BigInt(size * 8)) + BigInt(value) : value).toString(16)}`;\n if (size) return (0, $98fd51879b3ecb59$export$5d04458e2a6c373e)(hex, {\n size: size\n });\n return hex;\n}\nconst $f004194a770c7248$var$encoder = /*#__PURE__*/ new TextEncoder();\nfunction $f004194a770c7248$export$551c48dea6f88e6d(value_, opts = {}) {\n const value = $f004194a770c7248$var$encoder.encode(value_);\n return $f004194a770c7248$export$58b867e287a802c8(value, opts);\n}\n\n\nconst $551a23ba4e8afae7$var$encoder = /*#__PURE__*/ new TextEncoder();\nfunction $551a23ba4e8afae7$export$30a71edf0753ed6b(value, opts = {}) {\n if (typeof value === \"number\" || typeof value === \"bigint\") return $551a23ba4e8afae7$export$49ad9be85c347998(value, opts);\n if (typeof value === \"boolean\") return $551a23ba4e8afae7$export$771517697a68241(value, opts);\n if ((0, $d440cba9eebbb8de$export$8a9b6341a7c96bc)(value)) return $551a23ba4e8afae7$export$31c96b9df38bc8d4(value, opts);\n return $551a23ba4e8afae7$export$c8dd6bc66a63753c(value, opts);\n}\nfunction $551a23ba4e8afae7$export$771517697a68241(value, opts = {}) {\n const bytes = new Uint8Array(1);\n bytes[0] = Number(value);\n if (typeof opts.size === \"number\") {\n (0, $48b086097357245b$export$2af489edb7fa35fe)(bytes, {\n size: opts.size\n });\n return (0, $98fd51879b3ecb59$export$5d04458e2a6c373e)(bytes, {\n size: opts.size\n });\n }\n return bytes;\n}\n// We use very optimized technique to convert hex string to byte array\nconst $551a23ba4e8afae7$var$charCodeMap = {\n zero: 48,\n nine: 57,\n A: 65,\n F: 70,\n a: 97,\n f: 102\n};\nfunction $551a23ba4e8afae7$var$charCodeToBase16(char) {\n if (char >= $551a23ba4e8afae7$var$charCodeMap.zero && char <= $551a23ba4e8afae7$var$charCodeMap.nine) return char - $551a23ba4e8afae7$var$charCodeMap.zero;\n if (char >= $551a23ba4e8afae7$var$charCodeMap.A && char <= $551a23ba4e8afae7$var$charCodeMap.F) return char - ($551a23ba4e8afae7$var$charCodeMap.A - 10);\n if (char >= $551a23ba4e8afae7$var$charCodeMap.a && char <= $551a23ba4e8afae7$var$charCodeMap.f) return char - ($551a23ba4e8afae7$var$charCodeMap.a - 10);\n return undefined;\n}\nfunction $551a23ba4e8afae7$export$31c96b9df38bc8d4(hex_, opts = {}) {\n let hex = hex_;\n if (opts.size) {\n (0, $48b086097357245b$export$2af489edb7fa35fe)(hex, {\n size: opts.size\n });\n hex = (0, $98fd51879b3ecb59$export$5d04458e2a6c373e)(hex, {\n dir: \"right\",\n size: opts.size\n });\n }\n let hexString = hex.slice(2);\n if (hexString.length % 2) hexString = `0${hexString}`;\n const length = hexString.length / 2;\n const bytes = new Uint8Array(length);\n for(let index = 0, j = 0; index < length; index++){\n const nibbleLeft = $551a23ba4e8afae7$var$charCodeToBase16(hexString.charCodeAt(j++));\n const nibbleRight = $551a23ba4e8afae7$var$charCodeToBase16(hexString.charCodeAt(j++));\n if (nibbleLeft === undefined || nibbleRight === undefined) throw new (0, $99d887ad91c984c6$export$a490eb03cb7a0a5e)(`Invalid byte sequence (\"${hexString[j - 2]}${hexString[j - 1]}\" in \"${hexString}\").`);\n bytes[index] = nibbleLeft * 16 + nibbleRight;\n }\n return bytes;\n}\nfunction $551a23ba4e8afae7$export$49ad9be85c347998(value, opts) {\n const hex = (0, $f004194a770c7248$export$4e87185b7ecfeec4)(value, opts);\n return $551a23ba4e8afae7$export$31c96b9df38bc8d4(hex);\n}\nfunction $551a23ba4e8afae7$export$c8dd6bc66a63753c(value, opts = {}) {\n const bytes = $551a23ba4e8afae7$var$encoder.encode(value);\n if (typeof opts.size === \"number\") {\n (0, $48b086097357245b$export$2af489edb7fa35fe)(bytes, {\n size: opts.size\n });\n return (0, $98fd51879b3ecb59$export$5d04458e2a6c373e)(bytes, {\n dir: \"right\",\n size: opts.size\n });\n }\n return bytes;\n}\n\n\nvar $c8edf0fd0cb8f896$exports = {};\n\"use strict\";\nObject.defineProperty($c8edf0fd0cb8f896$exports, \"__esModule\", {\n value: true\n});\n$c8edf0fd0cb8f896$exports.shake256 = $c8edf0fd0cb8f896$exports.shake128 = $c8edf0fd0cb8f896$exports.keccak_512 = $c8edf0fd0cb8f896$exports.keccak_384 = $c8edf0fd0cb8f896$exports.keccak_256 = $c8edf0fd0cb8f896$exports.keccak_224 = $c8edf0fd0cb8f896$exports.sha3_512 = $c8edf0fd0cb8f896$exports.sha3_384 = $c8edf0fd0cb8f896$exports.sha3_256 = $c8edf0fd0cb8f896$exports.sha3_224 = $c8edf0fd0cb8f896$exports.Keccak = $c8edf0fd0cb8f896$exports.keccakP = void 0;\nvar $fc6ec5653e91d6e4$exports = {};\n\"use strict\";\nObject.defineProperty($fc6ec5653e91d6e4$exports, \"__esModule\", {\n value: true\n});\n$fc6ec5653e91d6e4$exports.output = $fc6ec5653e91d6e4$exports.exists = $fc6ec5653e91d6e4$exports.hash = $fc6ec5653e91d6e4$exports.bytes = $fc6ec5653e91d6e4$exports.bool = $fc6ec5653e91d6e4$exports.number = void 0;\nfunction $fc6ec5653e91d6e4$var$number(n) {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error(`Wrong positive integer: ${n}`);\n}\n$fc6ec5653e91d6e4$exports.number = $fc6ec5653e91d6e4$var$number;\nfunction $fc6ec5653e91d6e4$var$bool(b) {\n if (typeof b !== \"boolean\") throw new Error(`Expected boolean, not ${b}`);\n}\n$fc6ec5653e91d6e4$exports.bool = $fc6ec5653e91d6e4$var$bool;\nfunction $fc6ec5653e91d6e4$var$bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array)) throw new Error(\"Expected Uint8Array\");\n if (lengths.length > 0 && !lengths.includes(b.length)) throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\n$fc6ec5653e91d6e4$exports.bytes = $fc6ec5653e91d6e4$var$bytes;\nfunction $fc6ec5653e91d6e4$var$hash(hash) {\n if (typeof hash !== \"function\" || typeof hash.create !== \"function\") throw new Error(\"Hash should be wrapped by utils.wrapConstructor\");\n $fc6ec5653e91d6e4$var$number(hash.outputLen);\n $fc6ec5653e91d6e4$var$number(hash.blockLen);\n}\n$fc6ec5653e91d6e4$exports.hash = $fc6ec5653e91d6e4$var$hash;\nfunction $fc6ec5653e91d6e4$var$exists(instance, checkFinished = true) {\n if (instance.destroyed) throw new Error(\"Hash instance has been destroyed\");\n if (checkFinished && instance.finished) throw new Error(\"Hash#digest() has already been called\");\n}\n$fc6ec5653e91d6e4$exports.exists = $fc6ec5653e91d6e4$var$exists;\nfunction $fc6ec5653e91d6e4$var$output(out, instance) {\n $fc6ec5653e91d6e4$var$bytes(out);\n const min = instance.outputLen;\n if (out.length < min) throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n}\n$fc6ec5653e91d6e4$exports.output = $fc6ec5653e91d6e4$var$output;\nconst $fc6ec5653e91d6e4$var$assert = {\n number: $fc6ec5653e91d6e4$var$number,\n bool: $fc6ec5653e91d6e4$var$bool,\n bytes: $fc6ec5653e91d6e4$var$bytes,\n hash: $fc6ec5653e91d6e4$var$hash,\n exists: $fc6ec5653e91d6e4$var$exists,\n output: $fc6ec5653e91d6e4$var$output\n};\n$fc6ec5653e91d6e4$exports.default = $fc6ec5653e91d6e4$var$assert;\n\n\nvar $15c2007833b0fa11$exports = {};\n\"use strict\";\nObject.defineProperty($15c2007833b0fa11$exports, \"__esModule\", {\n value: true\n});\n$15c2007833b0fa11$exports.add5L = $15c2007833b0fa11$exports.add5H = $15c2007833b0fa11$exports.add4H = $15c2007833b0fa11$exports.add4L = $15c2007833b0fa11$exports.add3H = $15c2007833b0fa11$exports.add3L = $15c2007833b0fa11$exports.add = $15c2007833b0fa11$exports.rotlBL = $15c2007833b0fa11$exports.rotlBH = $15c2007833b0fa11$exports.rotlSL = $15c2007833b0fa11$exports.rotlSH = $15c2007833b0fa11$exports.rotr32L = $15c2007833b0fa11$exports.rotr32H = $15c2007833b0fa11$exports.rotrBL = $15c2007833b0fa11$exports.rotrBH = $15c2007833b0fa11$exports.rotrSL = $15c2007833b0fa11$exports.rotrSH = $15c2007833b0fa11$exports.shrSL = $15c2007833b0fa11$exports.shrSH = $15c2007833b0fa11$exports.toBig = $15c2007833b0fa11$exports.split = $15c2007833b0fa11$exports.fromBig = void 0;\nconst $15c2007833b0fa11$var$U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst $15c2007833b0fa11$var$_32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction $15c2007833b0fa11$var$fromBig(n, le = false) {\n if (le) return {\n h: Number(n & $15c2007833b0fa11$var$U32_MASK64),\n l: Number(n >> $15c2007833b0fa11$var$_32n & $15c2007833b0fa11$var$U32_MASK64)\n };\n return {\n h: Number(n >> $15c2007833b0fa11$var$_32n & $15c2007833b0fa11$var$U32_MASK64) | 0,\n l: Number(n & $15c2007833b0fa11$var$U32_MASK64) | 0\n };\n}\n$15c2007833b0fa11$exports.fromBig = $15c2007833b0fa11$var$fromBig;\nfunction $15c2007833b0fa11$var$split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for(let i = 0; i < lst.length; i++){\n const { h: h, l: l } = $15c2007833b0fa11$var$fromBig(lst[i], le);\n [Ah[i], Al[i]] = [\n h,\n l\n ];\n }\n return [\n Ah,\n Al\n ];\n}\n$15c2007833b0fa11$exports.split = $15c2007833b0fa11$var$split;\nconst $15c2007833b0fa11$var$toBig = (h, l)=>BigInt(h >>> 0) << $15c2007833b0fa11$var$_32n | BigInt(l >>> 0);\n$15c2007833b0fa11$exports.toBig = $15c2007833b0fa11$var$toBig;\n// for Shift in [0, 32)\nconst $15c2007833b0fa11$var$shrSH = (h, _l, s)=>h >>> s;\n$15c2007833b0fa11$exports.shrSH = $15c2007833b0fa11$var$shrSH;\nconst $15c2007833b0fa11$var$shrSL = (h, l, s)=>h << 32 - s | l >>> s;\n$15c2007833b0fa11$exports.shrSL = $15c2007833b0fa11$var$shrSL;\n// Right rotate for Shift in [1, 32)\nconst $15c2007833b0fa11$var$rotrSH = (h, l, s)=>h >>> s | l << 32 - s;\n$15c2007833b0fa11$exports.rotrSH = $15c2007833b0fa11$var$rotrSH;\nconst $15c2007833b0fa11$var$rotrSL = (h, l, s)=>h << 32 - s | l >>> s;\n$15c2007833b0fa11$exports.rotrSL = $15c2007833b0fa11$var$rotrSL;\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst $15c2007833b0fa11$var$rotrBH = (h, l, s)=>h << 64 - s | l >>> s - 32;\n$15c2007833b0fa11$exports.rotrBH = $15c2007833b0fa11$var$rotrBH;\nconst $15c2007833b0fa11$var$rotrBL = (h, l, s)=>h >>> s - 32 | l << 64 - s;\n$15c2007833b0fa11$exports.rotrBL = $15c2007833b0fa11$var$rotrBL;\n// Right rotate for shift===32 (just swaps l&h)\nconst $15c2007833b0fa11$var$rotr32H = (_h, l)=>l;\n$15c2007833b0fa11$exports.rotr32H = $15c2007833b0fa11$var$rotr32H;\nconst $15c2007833b0fa11$var$rotr32L = (h, _l)=>h;\n$15c2007833b0fa11$exports.rotr32L = $15c2007833b0fa11$var$rotr32L;\n// Left rotate for Shift in [1, 32)\nconst $15c2007833b0fa11$var$rotlSH = (h, l, s)=>h << s | l >>> 32 - s;\n$15c2007833b0fa11$exports.rotlSH = $15c2007833b0fa11$var$rotlSH;\nconst $15c2007833b0fa11$var$rotlSL = (h, l, s)=>l << s | h >>> 32 - s;\n$15c2007833b0fa11$exports.rotlSL = $15c2007833b0fa11$var$rotlSL;\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst $15c2007833b0fa11$var$rotlBH = (h, l, s)=>l << s - 32 | h >>> 64 - s;\n$15c2007833b0fa11$exports.rotlBH = $15c2007833b0fa11$var$rotlBH;\nconst $15c2007833b0fa11$var$rotlBL = (h, l, s)=>h << s - 32 | l >>> 64 - s;\n$15c2007833b0fa11$exports.rotlBL = $15c2007833b0fa11$var$rotlBL;\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction $15c2007833b0fa11$var$add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return {\n h: Ah + Bh + (l / 2 ** 32 | 0) | 0,\n l: l | 0\n };\n}\n$15c2007833b0fa11$exports.add = $15c2007833b0fa11$var$add;\n// Addition with more than 2 elements\nconst $15c2007833b0fa11$var$add3L = (Al, Bl, Cl)=>(Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\n$15c2007833b0fa11$exports.add3L = $15c2007833b0fa11$var$add3L;\nconst $15c2007833b0fa11$var$add3H = (low, Ah, Bh, Ch)=>Ah + Bh + Ch + (low / 2 ** 32 | 0) | 0;\n$15c2007833b0fa11$exports.add3H = $15c2007833b0fa11$var$add3H;\nconst $15c2007833b0fa11$var$add4L = (Al, Bl, Cl, Dl)=>(Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\n$15c2007833b0fa11$exports.add4L = $15c2007833b0fa11$var$add4L;\nconst $15c2007833b0fa11$var$add4H = (low, Ah, Bh, Ch, Dh)=>Ah + Bh + Ch + Dh + (low / 2 ** 32 | 0) | 0;\n$15c2007833b0fa11$exports.add4H = $15c2007833b0fa11$var$add4H;\nconst $15c2007833b0fa11$var$add5L = (Al, Bl, Cl, Dl, El)=>(Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\n$15c2007833b0fa11$exports.add5L = $15c2007833b0fa11$var$add5L;\nconst $15c2007833b0fa11$var$add5H = (low, Ah, Bh, Ch, Dh, Eh)=>Ah + Bh + Ch + Dh + Eh + (low / 2 ** 32 | 0) | 0;\n$15c2007833b0fa11$exports.add5H = $15c2007833b0fa11$var$add5H;\n// prettier-ignore\nconst $15c2007833b0fa11$var$u64 = {\n fromBig: $15c2007833b0fa11$var$fromBig,\n split: $15c2007833b0fa11$var$split,\n toBig: $15c2007833b0fa11$var$toBig,\n shrSH: $15c2007833b0fa11$var$shrSH,\n shrSL: $15c2007833b0fa11$var$shrSL,\n rotrSH: $15c2007833b0fa11$var$rotrSH,\n rotrSL: $15c2007833b0fa11$var$rotrSL,\n rotrBH: $15c2007833b0fa11$var$rotrBH,\n rotrBL: $15c2007833b0fa11$var$rotrBL,\n rotr32H: $15c2007833b0fa11$var$rotr32H,\n rotr32L: $15c2007833b0fa11$var$rotr32L,\n rotlSH: $15c2007833b0fa11$var$rotlSH,\n rotlSL: $15c2007833b0fa11$var$rotlSL,\n rotlBH: $15c2007833b0fa11$var$rotlBH,\n rotlBL: $15c2007833b0fa11$var$rotlBL,\n add: $15c2007833b0fa11$var$add,\n add3L: $15c2007833b0fa11$var$add3L,\n add3H: $15c2007833b0fa11$var$add3H,\n add4L: $15c2007833b0fa11$var$add4L,\n add4H: $15c2007833b0fa11$var$add4H,\n add5H: $15c2007833b0fa11$var$add5H,\n add5L: $15c2007833b0fa11$var$add5L\n};\n$15c2007833b0fa11$exports.default = $15c2007833b0fa11$var$u64;\n\n\nvar $7a81f263a7d1b628$exports = {};\n\"use strict\";\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */ Object.defineProperty($7a81f263a7d1b628$exports, \"__esModule\", {\n value: true\n});\n$7a81f263a7d1b628$exports.randomBytes = $7a81f263a7d1b628$exports.wrapXOFConstructorWithOpts = $7a81f263a7d1b628$exports.wrapConstructorWithOpts = $7a81f263a7d1b628$exports.wrapConstructor = $7a81f263a7d1b628$exports.checkOpts = $7a81f263a7d1b628$exports.Hash = $7a81f263a7d1b628$exports.concatBytes = $7a81f263a7d1b628$exports.toBytes = $7a81f263a7d1b628$exports.utf8ToBytes = $7a81f263a7d1b628$exports.asyncLoop = $7a81f263a7d1b628$exports.nextTick = $7a81f263a7d1b628$exports.hexToBytes = $7a81f263a7d1b628$exports.bytesToHex = $7a81f263a7d1b628$exports.isLE = $7a81f263a7d1b628$exports.rotr = $7a81f263a7d1b628$exports.createView = $7a81f263a7d1b628$exports.u32 = $7a81f263a7d1b628$exports.u8 = void 0;\nvar $00e8c55746711c4b$exports = {};\n\"use strict\";\nObject.defineProperty($00e8c55746711c4b$exports, \"__esModule\", {\n value: true\n});\n$00e8c55746711c4b$exports.crypto = void 0;\n$00e8c55746711c4b$exports.crypto = typeof globalThis === \"object\" && \"crypto\" in globalThis ? globalThis.crypto : undefined;\n\n\nconst $7a81f263a7d1b628$var$u8a = (a)=>a instanceof Uint8Array;\n// Cast array to different type\nconst $7a81f263a7d1b628$var$u8 = (arr)=>new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n$7a81f263a7d1b628$exports.u8 = $7a81f263a7d1b628$var$u8;\nconst $7a81f263a7d1b628$var$u32 = (arr)=>new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n$7a81f263a7d1b628$exports.u32 = $7a81f263a7d1b628$var$u32;\n// Cast array to view\nconst $7a81f263a7d1b628$var$createView = (arr)=>new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n$7a81f263a7d1b628$exports.createView = $7a81f263a7d1b628$var$createView;\n// The rotate right (circular right shift) operation for uint32\nconst $7a81f263a7d1b628$var$rotr = (word, shift)=>word << 32 - shift | word >>> shift;\n$7a81f263a7d1b628$exports.rotr = $7a81f263a7d1b628$var$rotr;\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\n$7a81f263a7d1b628$exports.isLE = new Uint8Array(new Uint32Array([\n 0x11223344\n]).buffer)[0] === 0x44;\nif (!$7a81f263a7d1b628$exports.isLE) throw new Error(\"Non little-endian hardware is not supported\");\nconst $7a81f263a7d1b628$var$hexes = /* @__PURE__ */ Array.from({\n length: 256\n}, (_, i)=>i.toString(16).padStart(2, \"0\"));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */ function $7a81f263a7d1b628$var$bytesToHex(bytes) {\n if (!$7a81f263a7d1b628$var$u8a(bytes)) throw new Error(\"Uint8Array expected\");\n // pre-caching improves the speed 6x\n let hex = \"\";\n for(let i = 0; i < bytes.length; i++)hex += $7a81f263a7d1b628$var$hexes[bytes[i]];\n return hex;\n}\n$7a81f263a7d1b628$exports.bytesToHex = $7a81f263a7d1b628$var$bytesToHex;\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */ function $7a81f263a7d1b628$var$hexToBytes(hex) {\n if (typeof hex !== \"string\") throw new Error(\"hex string expected, got \" + typeof hex);\n const len = hex.length;\n if (len % 2) throw new Error(\"padded hex string expected, got unpadded hex of length \" + len);\n const array = new Uint8Array(len / 2);\n for(let i = 0; i < array.length; i++){\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0) throw new Error(\"Invalid byte sequence\");\n array[i] = byte;\n }\n return array;\n}\n$7a81f263a7d1b628$exports.hexToBytes = $7a81f263a7d1b628$var$hexToBytes;\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nconst $7a81f263a7d1b628$var$nextTick = async ()=>{};\n$7a81f263a7d1b628$exports.nextTick = $7a81f263a7d1b628$var$nextTick;\n// Returns control to thread each 'tick' ms to avoid blocking\nasync function $7a81f263a7d1b628$var$asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for(let i = 0; i < iters; i++){\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await (0, $7a81f263a7d1b628$exports.nextTick)();\n ts += diff;\n }\n}\n$7a81f263a7d1b628$exports.asyncLoop = $7a81f263a7d1b628$var$asyncLoop;\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */ function $7a81f263a7d1b628$var$utf8ToBytes(str) {\n if (typeof str !== \"string\") throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n$7a81f263a7d1b628$exports.utf8ToBytes = $7a81f263a7d1b628$var$utf8ToBytes;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */ function $7a81f263a7d1b628$var$toBytes(data) {\n if (typeof data === \"string\") data = $7a81f263a7d1b628$var$utf8ToBytes(data);\n if (!$7a81f263a7d1b628$var$u8a(data)) throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n$7a81f263a7d1b628$exports.toBytes = $7a81f263a7d1b628$var$toBytes;\n/**\n * Copies several Uint8Arrays into one.\n */ function $7a81f263a7d1b628$var$concatBytes(...arrays) {\n const r = new Uint8Array(arrays.reduce((sum, a)=>sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a)=>{\n if (!$7a81f263a7d1b628$var$u8a(a)) throw new Error(\"Uint8Array expected\");\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n$7a81f263a7d1b628$exports.concatBytes = $7a81f263a7d1b628$var$concatBytes;\n// For runtime check if class implements interface\nclass $7a81f263a7d1b628$var$Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\n$7a81f263a7d1b628$exports.Hash = $7a81f263a7d1b628$var$Hash;\nconst $7a81f263a7d1b628$var$toStr = {}.toString;\nfunction $7a81f263a7d1b628$var$checkOpts(defaults, opts) {\n if (opts !== undefined && $7a81f263a7d1b628$var$toStr.call(opts) !== \"[object Object]\") throw new Error(\"Options should be object or undefined\");\n const merged = Object.assign(defaults, opts);\n return merged;\n}\n$7a81f263a7d1b628$exports.checkOpts = $7a81f263a7d1b628$var$checkOpts;\nfunction $7a81f263a7d1b628$var$wrapConstructor(hashCons) {\n const hashC = (msg)=>hashCons().update($7a81f263a7d1b628$var$toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = ()=>hashCons();\n return hashC;\n}\n$7a81f263a7d1b628$exports.wrapConstructor = $7a81f263a7d1b628$var$wrapConstructor;\nfunction $7a81f263a7d1b628$var$wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts)=>hashCons(opts).update($7a81f263a7d1b628$var$toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts)=>hashCons(opts);\n return hashC;\n}\n$7a81f263a7d1b628$exports.wrapConstructorWithOpts = $7a81f263a7d1b628$var$wrapConstructorWithOpts;\nfunction $7a81f263a7d1b628$var$wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts)=>hashCons(opts).update($7a81f263a7d1b628$var$toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts)=>hashCons(opts);\n return hashC;\n}\n$7a81f263a7d1b628$exports.wrapXOFConstructorWithOpts = $7a81f263a7d1b628$var$wrapXOFConstructorWithOpts;\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */ function $7a81f263a7d1b628$var$randomBytes(bytesLength = 32) {\n if ($00e8c55746711c4b$exports.crypto && typeof $00e8c55746711c4b$exports.crypto.getRandomValues === \"function\") return $00e8c55746711c4b$exports.crypto.getRandomValues(new Uint8Array(bytesLength));\n throw new Error(\"crypto.getRandomValues must be defined\");\n}\n$7a81f263a7d1b628$exports.randomBytes = $7a81f263a7d1b628$var$randomBytes;\n\n\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n// Various per round constants calculations\nconst [$c8edf0fd0cb8f896$var$SHA3_PI, $c8edf0fd0cb8f896$var$SHA3_ROTL, $c8edf0fd0cb8f896$var$_SHA3_IOTA] = [\n [],\n [],\n []\n];\nconst $c8edf0fd0cb8f896$var$_0n = /* @__PURE__ */ BigInt(0);\nconst $c8edf0fd0cb8f896$var$_1n = /* @__PURE__ */ BigInt(1);\nconst $c8edf0fd0cb8f896$var$_2n = /* @__PURE__ */ BigInt(2);\nconst $c8edf0fd0cb8f896$var$_7n = /* @__PURE__ */ BigInt(7);\nconst $c8edf0fd0cb8f896$var$_256n = /* @__PURE__ */ BigInt(256);\nconst $c8edf0fd0cb8f896$var$_0x71n = /* @__PURE__ */ BigInt(0x71);\nfor(let round = 0, R = $c8edf0fd0cb8f896$var$_1n, x = 1, y = 0; round < 24; round++){\n // Pi\n [x, y] = [\n y,\n (2 * x + 3 * y) % 5\n ];\n $c8edf0fd0cb8f896$var$SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n $c8edf0fd0cb8f896$var$SHA3_ROTL.push((round + 1) * (round + 2) / 2 % 64);\n // Iota\n let t = $c8edf0fd0cb8f896$var$_0n;\n for(let j = 0; j < 7; j++){\n R = (R << $c8edf0fd0cb8f896$var$_1n ^ (R >> $c8edf0fd0cb8f896$var$_7n) * $c8edf0fd0cb8f896$var$_0x71n) % $c8edf0fd0cb8f896$var$_256n;\n if (R & $c8edf0fd0cb8f896$var$_2n) t ^= $c8edf0fd0cb8f896$var$_1n << ($c8edf0fd0cb8f896$var$_1n << /* @__PURE__ */ BigInt(j)) - $c8edf0fd0cb8f896$var$_1n;\n }\n $c8edf0fd0cb8f896$var$_SHA3_IOTA.push(t);\n}\nconst [$c8edf0fd0cb8f896$var$SHA3_IOTA_H, $c8edf0fd0cb8f896$var$SHA3_IOTA_L] = /* @__PURE__ */ (0, $15c2007833b0fa11$exports.split)($c8edf0fd0cb8f896$var$_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst $c8edf0fd0cb8f896$var$rotlH = (h, l, s)=>s > 32 ? (0, $15c2007833b0fa11$exports.rotlBH)(h, l, s) : (0, $15c2007833b0fa11$exports.rotlSH)(h, l, s);\nconst $c8edf0fd0cb8f896$var$rotlL = (h, l, s)=>s > 32 ? (0, $15c2007833b0fa11$exports.rotlBL)(h, l, s) : (0, $15c2007833b0fa11$exports.rotlSL)(h, l, s);\n// Same as keccakf1600, but allows to skip some rounds\nfunction $c8edf0fd0cb8f896$var$keccakP(s, rounds = 24) {\n const B = new Uint32Array(10);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for(let round = 24 - rounds; round < 24; round++){\n // Theta θ\n for(let x = 0; x < 10; x++)B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for(let x = 0; x < 10; x += 2){\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = $c8edf0fd0cb8f896$var$rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = $c8edf0fd0cb8f896$var$rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for(let y = 0; y < 50; y += 10){\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for(let t = 0; t < 24; t++){\n const shift = $c8edf0fd0cb8f896$var$SHA3_ROTL[t];\n const Th = $c8edf0fd0cb8f896$var$rotlH(curH, curL, shift);\n const Tl = $c8edf0fd0cb8f896$var$rotlL(curH, curL, shift);\n const PI = $c8edf0fd0cb8f896$var$SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for(let y = 0; y < 50; y += 10){\n for(let x = 0; x < 10; x++)B[x] = s[y + x];\n for(let x = 0; x < 10; x++)s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= $c8edf0fd0cb8f896$var$SHA3_IOTA_H[round];\n s[1] ^= $c8edf0fd0cb8f896$var$SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\n$c8edf0fd0cb8f896$exports.keccakP = $c8edf0fd0cb8f896$var$keccakP;\nclass $c8edf0fd0cb8f896$var$Keccak extends $7a81f263a7d1b628$exports.Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24){\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n (0, $fc6ec5653e91d6e4$exports.number)(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200) throw new Error(\"Sha3 supports only keccak-f1600 function\");\n this.state = new Uint8Array(200);\n this.state32 = (0, $7a81f263a7d1b628$exports.u32)(this.state);\n }\n keccak() {\n $c8edf0fd0cb8f896$var$keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n (0, $fc6ec5653e91d6e4$exports.exists)(this);\n const { blockLen: blockLen, state: state } = this;\n data = (0, $7a81f263a7d1b628$exports.toBytes)(data);\n const len = data.length;\n for(let pos = 0; pos < len;){\n const take = Math.min(blockLen - this.pos, len - pos);\n for(let i = 0; i < take; i++)state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen) this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished) return;\n this.finished = true;\n const { state: state, suffix: suffix, pos: pos, blockLen: blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1) this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n (0, $fc6ec5653e91d6e4$exports.exists)(this, false);\n (0, $fc6ec5653e91d6e4$exports.bytes)(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen: blockLen } = this;\n for(let pos = 0, len = out.length; pos < len;){\n if (this.posOut >= blockLen) this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF) throw new Error(\"XOF is not possible for this instance\");\n return this.writeInto(out);\n }\n xof(bytes) {\n (0, $fc6ec5653e91d6e4$exports.number)(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n (0, $fc6ec5653e91d6e4$exports.output)(out, this);\n if (this.finished) throw new Error(\"digest() was already called\");\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to) {\n const { blockLen: blockLen, suffix: suffix, outputLen: outputLen, rounds: rounds, enableXOF: enableXOF } = this;\n to || (to = new $c8edf0fd0cb8f896$var$Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\n$c8edf0fd0cb8f896$exports.Keccak = $c8edf0fd0cb8f896$var$Keccak;\nconst $c8edf0fd0cb8f896$var$gen = (suffix, blockLen, outputLen)=>(0, $7a81f263a7d1b628$exports.wrapConstructor)(()=>new $c8edf0fd0cb8f896$var$Keccak(blockLen, suffix, outputLen));\n$c8edf0fd0cb8f896$exports.sha3_224 = $c8edf0fd0cb8f896$var$gen(0x06, 144, 28);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */ $c8edf0fd0cb8f896$exports.sha3_256 = $c8edf0fd0cb8f896$var$gen(0x06, 136, 32);\n$c8edf0fd0cb8f896$exports.sha3_384 = $c8edf0fd0cb8f896$var$gen(0x06, 104, 48);\n$c8edf0fd0cb8f896$exports.sha3_512 = $c8edf0fd0cb8f896$var$gen(0x06, 72, 64);\n$c8edf0fd0cb8f896$exports.keccak_224 = $c8edf0fd0cb8f896$var$gen(0x01, 144, 28);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */ $c8edf0fd0cb8f896$exports.keccak_256 = $c8edf0fd0cb8f896$var$gen(0x01, 136, 32);\n$c8edf0fd0cb8f896$exports.keccak_384 = $c8edf0fd0cb8f896$var$gen(0x01, 104, 48);\n$c8edf0fd0cb8f896$exports.keccak_512 = $c8edf0fd0cb8f896$var$gen(0x01, 72, 64);\nconst $c8edf0fd0cb8f896$var$genShake = (suffix, blockLen, outputLen)=>(0, $7a81f263a7d1b628$exports.wrapXOFConstructorWithOpts)((opts = {})=>new $c8edf0fd0cb8f896$var$Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\n$c8edf0fd0cb8f896$exports.shake128 = $c8edf0fd0cb8f896$var$genShake(0x1f, 168, 16);\n$c8edf0fd0cb8f896$exports.shake256 = $c8edf0fd0cb8f896$var$genShake(0x1f, 136, 32);\n\n\n\n\n\nfunction $70d1698339832295$export$f8151fce47ad1c35(value, to_) {\n const to = to_ || \"hex\";\n const bytes = (0, $c8edf0fd0cb8f896$exports.keccak_256)((0, $d440cba9eebbb8de$export$8a9b6341a7c96bc)(value, {\n strict: false\n }) ? (0, $551a23ba4e8afae7$export$30a71edf0753ed6b)(value) : value);\n if (to === \"bytes\") return bytes;\n return (0, $f004194a770c7248$export$7ea66e3774a60b67)(bytes);\n}\n\n\n\n\nconst $74c3746ba4e98114$var$checksumAddressCache = /*#__PURE__*/ new (0, $113b826c68452f61$export$fcb3b6cad79d7e3a)(8192);\nfunction $74c3746ba4e98114$export$9ff46e8f6df13548(address_, /**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */ chainId) {\n if ($74c3746ba4e98114$var$checksumAddressCache.has(`${address_}.${chainId}`)) return $74c3746ba4e98114$var$checksumAddressCache.get(`${address_}.${chainId}`);\n const hexAddress = chainId ? `${chainId}${address_.toLowerCase()}` : address_.substring(2).toLowerCase();\n const hash = (0, $70d1698339832295$export$f8151fce47ad1c35)((0, $551a23ba4e8afae7$export$c8dd6bc66a63753c)(hexAddress), \"bytes\");\n const address = (chainId ? hexAddress.substring(`${chainId}0x`.length) : hexAddress).split(\"\");\n for(let i = 0; i < 40; i += 2){\n if (hash[i >> 1] >> 4 >= 8 && address[i]) address[i] = address[i].toUpperCase();\n if ((hash[i >> 1] & 0x0f) >= 8 && address[i + 1]) address[i + 1] = address[i + 1].toUpperCase();\n }\n const result = `0x${address.join(\"\")}`;\n $74c3746ba4e98114$var$checksumAddressCache.set(`${address_}.${chainId}`, result);\n return result;\n}\nfunction $74c3746ba4e98114$export$88411125f012957a(address, /**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */ chainId) {\n if (!(0, $0220c738ddd72734$export$977e255126d763d6)(address, {\n strict: false\n })) throw new (0, $223c6c44c48560e0$export$66c44d927ffead98)({\n address: address\n });\n return $74c3746ba4e98114$export$9ff46e8f6df13548(address, chainId);\n}\n\n\nconst $0220c738ddd72734$var$addressRegex = /^0x[a-fA-F0-9]{40}$/;\nconst $0220c738ddd72734$export$ef83598cc5072ce = /*#__PURE__*/ new (0, $113b826c68452f61$export$fcb3b6cad79d7e3a)(8192);\nfunction $0220c738ddd72734$export$977e255126d763d6(address, options) {\n const { strict: strict = true } = options ?? {};\n const cacheKey = `${address}.${strict}`;\n if ($0220c738ddd72734$export$ef83598cc5072ce.has(cacheKey)) return $0220c738ddd72734$export$ef83598cc5072ce.get(cacheKey);\n const result = (()=>{\n if (!$0220c738ddd72734$var$addressRegex.test(address)) return false;\n if (address.toLowerCase() === address) return true;\n if (strict) return (0, $74c3746ba4e98114$export$9ff46e8f6df13548)(address) === address;\n return true;\n })();\n $0220c738ddd72734$export$ef83598cc5072ce.set(cacheKey, result);\n return result;\n}\n\n\nfunction $f97a6a403efe1d42$export$ee1b3e54f0441b22(values) {\n if (typeof values[0] === \"string\") return $f97a6a403efe1d42$export$f6cc0b64b5a999af(values);\n return $f97a6a403efe1d42$export$287dd7971339c972(values);\n}\nfunction $f97a6a403efe1d42$export$287dd7971339c972(values) {\n let length = 0;\n for (const arr of values)length += arr.length;\n const result = new Uint8Array(length);\n let offset = 0;\n for (const arr of values){\n result.set(arr, offset);\n offset += arr.length;\n }\n return result;\n}\nfunction $f97a6a403efe1d42$export$f6cc0b64b5a999af(values) {\n return `0x${values.reduce((acc, x)=>acc + x.replace(\"0x\", \"\"), \"\")}`;\n}\n\n\n\n\nconst $ac26bfea216b911d$export$6cd562aaf6380f0e = /^(.*)\\[([0-9]*)\\]$/;\nconst $ac26bfea216b911d$export$94d7303c0d9f263a = /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/;\nconst $ac26bfea216b911d$export$45902cc189596eef = /^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;\n\n\nfunction $c35d3b9dae26c1f3$export$92dace262a9f3722(types, values) {\n if (types.length !== values.length) throw new (0, $5b122542bf87f4b6$export$20737d495bb13c2d)({\n expectedLength: types.length,\n givenLength: values.length\n });\n const data = [];\n for(let i = 0; i < types.length; i++){\n const type = types[i];\n const value = values[i];\n data.push($c35d3b9dae26c1f3$var$encode(type, value));\n }\n return (0, $f97a6a403efe1d42$export$f6cc0b64b5a999af)(data);\n}\nfunction $c35d3b9dae26c1f3$var$encode(type, value, isArray = false) {\n if (type === \"address\") {\n const address = value;\n if (!(0, $0220c738ddd72734$export$977e255126d763d6)(address)) throw new (0, $223c6c44c48560e0$export$66c44d927ffead98)({\n address: address\n });\n return (0, $98fd51879b3ecb59$export$5d04458e2a6c373e)(address.toLowerCase(), {\n size: isArray ? 32 : null\n });\n }\n if (type === \"string\") return (0, $f004194a770c7248$export$551c48dea6f88e6d)(value);\n if (type === \"bytes\") return value;\n if (type === \"bool\") return (0, $98fd51879b3ecb59$export$5d04458e2a6c373e)((0, $f004194a770c7248$export$b5c95dec4f62ef7a)(value), {\n size: isArray ? 32 : 1\n });\n const intMatch = type.match((0, $ac26bfea216b911d$export$45902cc189596eef));\n if (intMatch) {\n const [_type, baseType, bits = \"256\"] = intMatch;\n const size = Number.parseInt(bits) / 8;\n return (0, $f004194a770c7248$export$4e87185b7ecfeec4)(value, {\n size: isArray ? 32 : size,\n signed: baseType === \"int\"\n });\n }\n const bytesMatch = type.match((0, $ac26bfea216b911d$export$94d7303c0d9f263a));\n if (bytesMatch) {\n const [_type, size] = bytesMatch;\n if (Number.parseInt(size) !== (value.length - 2) / 2) throw new (0, $5b122542bf87f4b6$export$a0eb884ede5c87eb)({\n expectedSize: Number.parseInt(size),\n givenSize: (value.length - 2) / 2\n });\n return (0, $98fd51879b3ecb59$export$5d04458e2a6c373e)(value, {\n dir: \"right\",\n size: isArray ? 32 : null\n });\n }\n const arrayMatch = type.match((0, $ac26bfea216b911d$export$6cd562aaf6380f0e));\n if (arrayMatch && Array.isArray(value)) {\n const [_type, childType] = arrayMatch;\n const data = [];\n for(let i = 0; i < value.length; i++)data.push($c35d3b9dae26c1f3$var$encode(childType, value[i], true));\n if (data.length === 0) return \"0x\";\n return (0, $f97a6a403efe1d42$export$f6cc0b64b5a999af)(data);\n }\n throw new (0, $5b122542bf87f4b6$export$a16541e2fe420ef1)(type);\n}\n\n\nclass $b8d51e053fccc1ae$export$a92776769f460054 {\n constructor(hash){\n this.useA = false;\n let sfc32 = function(uint128Hex) {\n let a = parseInt(uint128Hex.substr(0, 8), 16);\n let b = parseInt(uint128Hex.substr(8, 8), 16);\n let c = parseInt(uint128Hex.substr(16, 8), 16);\n let d = parseInt(uint128Hex.substr(24, 8), 16);\n return function() {\n a |= 0;\n b |= 0;\n c |= 0;\n d |= 0;\n let t = (a + b | 0) + d | 0;\n d = d + 1 | 0;\n a = b ^ b >>> 9;\n b = c + (c << 3) | 0;\n c = c << 21 | c >>> 11;\n c = c + t | 0;\n return (t >>> 0) / 4294967296;\n };\n };\n this.prngA = new sfc32(hash.substr(2, 32));\n this.prngB = new sfc32(hash.substr(34, 32));\n for(let i = 0; i < 1e6; i += 2){\n this.prngA();\n this.prngB();\n }\n }\n float() {\n this.useA = !this.useA;\n return this.useA ? this.prngA() : this.prngB();\n }\n int(a = 0, b = 1) {\n return Math.round(a + this.float() * (b - a));\n }\n bell(b = 1, inv) {\n let u = 0, v = 0;\n while(u === 0)u = this.float(); //Converting [0,1) to (0,1)\n while(v === 0)v = this.float();\n let num = Math.sqrt(-2 * Math.log(u)) * Math.cos(2.0 * Math.PI * v);\n num = num / 10.0 + 0.5; // Translate to 0 -> 1\n if (num > 1 || num < 0) return this.bell(inv); // resample between 0 and 1\n if (inv) {\n if (num >= 0 && num < 0.5) num += 0.5;\n else num -= 0.5;\n }\n return Math.round(num * b);\n }\n}\n\n\nvar $a0fa327a4f07121a$exports = {};\n(function() {\n function k(a, b, c) {\n d.biginteger_used = 1;\n null != a && (\"number\" == typeof a && \"undefined\" == typeof b ? this.fromInt(a) : \"number\" == typeof a ? this.fromNumber(a, b, c) : null == b && \"string\" != typeof a ? this.fromString(a, 256) : this.fromString(a, b));\n }\n function q() {\n return new k(null, void 0, void 0);\n }\n function R(a, b, c, e, d, g) {\n for(; 0 <= --g;){\n var f = b * this[a++] + c[e] + d;\n d = Math.floor(f / 67108864);\n c[e++] = f & 67108863;\n }\n return d;\n }\n function S(a, b, c, e, d, g) {\n var f = b & 32767;\n for(b >>= 15; 0 <= --g;){\n var m = this[a] & 32767, k = this[a++] >> 15, n = b * m + k * f;\n m = f * m + ((n & 32767) << 15) + c[e] + (d & 1073741823);\n d = (m >>> 30) + (n >>> 15) + b * k + (d >>> 30);\n c[e++] = m & 1073741823;\n }\n return d;\n }\n function T(a, b, c, e, d, g) {\n var f = b & 16383;\n for(b >>= 14; 0 <= --g;){\n var m = this[a] & 16383, k = this[a++] >> 14, n = b * m + k * f;\n m = f * m + ((n & 16383) << 14) + c[e] + d;\n d = (m >> 28) + (n >> 14) + b * k;\n c[e++] = m & 268435455;\n }\n return d;\n }\n function M(a, b) {\n var c = E[a.charCodeAt(b)];\n return null == c ? -1 : c;\n }\n function y(a) {\n var b = q();\n b.fromInt(a);\n return b;\n }\n function F(a) {\n var b = 1, c;\n 0 != (c = a >>> 16) && (a = c, b += 16);\n 0 != (c = a >> 8) && (a = c, b += 8);\n 0 != (c = a >> 4) && (a = c, b += 4);\n 0 != (c = a >> 2) && (a = c, b += 2);\n 0 != a >> 1 && (b += 1);\n return b;\n }\n function z(a) {\n this.m = a;\n }\n function B(a) {\n this.m = a;\n this.mp = a.invDigit();\n this.mpl = this.mp & 32767;\n this.mph = this.mp >> 15;\n this.um = (1 << a.DB - 15) - 1;\n this.mt2 = 2 * a.t;\n }\n function U(a, b) {\n return a & b;\n }\n function H(a, b) {\n return a | b;\n }\n function N(a, b) {\n return a ^ b;\n }\n function O(a, b) {\n return a & ~b;\n }\n function D() {}\n function P(a) {\n return a;\n }\n function C(a) {\n this.r2 = q();\n this.q3 = q();\n k.ONE.dlShiftTo(2 * a.t, this.r2);\n this.mu = this.r2.divide(a);\n this.m = a;\n }\n var d = {\n version: \"6.4.2.2\",\n use_lines: !0,\n use_xyz: !1\n }, G = !1;\n (0, $a0fa327a4f07121a$exports) ? ($a0fa327a4f07121a$exports = d, G = !0) : \"undefined\" !== typeof document ? window.ClipperLib = d : self.ClipperLib = d;\n if (G) {\n var u = \"chrome\";\n var v = \"Netscape\";\n } else u = navigator.userAgent.toString().toLowerCase(), v = navigator.appName;\n var I = -1 != u.indexOf(\"chrome\") && -1 == u.indexOf(\"chromium\") ? 1 : 0;\n G = -1 != u.indexOf(\"chromium\") ? 1 : 0;\n var Q = -1 != u.indexOf(\"safari\") && -1 == u.indexOf(\"chrome\") && -1 == u.indexOf(\"chromium\") ? 1 : 0;\n var J = -1 != u.indexOf(\"firefox\") ? 1 : 0;\n u.indexOf(\"firefox/17\");\n u.indexOf(\"firefox/15\");\n u.indexOf(\"firefox/3\");\n var K = -1 != u.indexOf(\"opera\") ? 1 : 0;\n u.indexOf(\"msie 10\");\n u.indexOf(\"msie 9\");\n var L = -1 != u.indexOf(\"msie 8\") ? 1 : 0;\n var V = -1 != u.indexOf(\"msie 7\") ? 1 : 0;\n u = -1 != u.indexOf(\"msie \") ? 1 : 0;\n d.biginteger_used = null;\n \"Microsoft Internet Explorer\" == v ? (k.prototype.am = S, v = 30) : \"Netscape\" != v ? (k.prototype.am = R, v = 26) : (k.prototype.am = T, v = 28);\n k.prototype.DB = v;\n k.prototype.DM = (1 << v) - 1;\n k.prototype.DV = 1 << v;\n k.prototype.FV = Math.pow(2, 52);\n k.prototype.F1 = 52 - v;\n k.prototype.F2 = 2 * v - 52;\n var E = [], x;\n v = 48;\n for(x = 0; 9 >= x; ++x)E[v++] = x;\n v = 97;\n for(x = 10; 36 > x; ++x)E[v++] = x;\n v = 65;\n for(x = 10; 36 > x; ++x)E[v++] = x;\n z.prototype.convert = function(a) {\n return 0 > a.s || 0 <= a.compareTo(this.m) ? a.mod(this.m) : a;\n };\n z.prototype.revert = function(a) {\n return a;\n };\n z.prototype.reduce = function(a) {\n a.divRemTo(this.m, null, a);\n };\n z.prototype.mulTo = function(a, b, c) {\n a.multiplyTo(b, c);\n this.reduce(c);\n };\n z.prototype.sqrTo = function(a, b) {\n a.squareTo(b);\n this.reduce(b);\n };\n B.prototype.convert = function(a) {\n var b = q();\n a.abs().dlShiftTo(this.m.t, b);\n b.divRemTo(this.m, null, b);\n 0 > a.s && 0 < b.compareTo(k.ZERO) && this.m.subTo(b, b);\n return b;\n };\n B.prototype.revert = function(a) {\n var b = q();\n a.copyTo(b);\n this.reduce(b);\n return b;\n };\n B.prototype.reduce = function(a) {\n for(; a.t <= this.mt2;)a[a.t++] = 0;\n for(var b = 0; b < this.m.t; ++b){\n var c = a[b] & 32767, e = c * this.mpl + ((c * this.mph + (a[b] >> 15) * this.mpl & this.um) << 15) & a.DM;\n c = b + this.m.t;\n for(a[c] += this.m.am(0, e, a, b, 0, this.m.t); a[c] >= a.DV;)a[c] -= a.DV, a[++c]++;\n }\n a.clamp();\n a.drShiftTo(this.m.t, a);\n 0 <= a.compareTo(this.m) && a.subTo(this.m, a);\n };\n B.prototype.mulTo = function(a, b, c) {\n a.multiplyTo(b, c);\n this.reduce(c);\n };\n B.prototype.sqrTo = function(a, b) {\n a.squareTo(b);\n this.reduce(b);\n };\n k.prototype.copyTo = function(a) {\n for(var b = this.t - 1; 0 <= b; --b)a[b] = this[b];\n a.t = this.t;\n a.s = this.s;\n };\n k.prototype.fromInt = function(a) {\n this.t = 1;\n this.s = 0 > a ? -1 : 0;\n 0 < a ? this[0] = a : -1 > a ? this[0] = a + this.DV : this.t = 0;\n };\n k.prototype.fromString = function(a, b) {\n if (16 == b) var c = 4;\n else if (8 == b) c = 3;\n else if (256 == b) c = 8;\n else if (2 == b) c = 1;\n else if (32 == b) c = 5;\n else if (4 == b) c = 2;\n else {\n this.fromRadix(a, b);\n return;\n }\n this.s = this.t = 0;\n for(var e = a.length, d = !1, g = 0; 0 <= --e;){\n var h = 8 == c ? a[e] & 255 : M(a, e);\n 0 > h ? \"-\" == a.charAt(e) && (d = !0) : (d = !1, 0 == g ? this[this.t++] = h : g + c > this.DB ? (this[this.t - 1] |= (h & (1 << this.DB - g) - 1) << g, this[this.t++] = h >> this.DB - g) : this[this.t - 1] |= h << g, g += c, g >= this.DB && (g -= this.DB));\n }\n 8 == c && 0 != (a[0] & 128) && (this.s = -1, 0 < g && (this[this.t - 1] |= (1 << this.DB - g) - 1 << g));\n this.clamp();\n d && k.ZERO.subTo(this, this);\n };\n k.prototype.clamp = function() {\n for(var a = this.s & this.DM; 0 < this.t && this[this.t - 1] == a;)--this.t;\n };\n k.prototype.dlShiftTo = function(a, b) {\n var c;\n for(c = this.t - 1; 0 <= c; --c)b[c + a] = this[c];\n for(c = a - 1; 0 <= c; --c)b[c] = 0;\n b.t = this.t + a;\n b.s = this.s;\n };\n k.prototype.drShiftTo = function(a, b) {\n for(var c = a; c < this.t; ++c)b[c - a] = this[c];\n b.t = Math.max(this.t - a, 0);\n b.s = this.s;\n };\n k.prototype.lShiftTo = function(a, b) {\n var c = a % this.DB, e = this.DB - c, d = (1 << e) - 1, g = Math.floor(a / this.DB), h = this.s << c & this.DM, m;\n for(m = this.t - 1; 0 <= m; --m)b[m + g + 1] = this[m] >> e | h, h = (this[m] & d) << c;\n for(m = g - 1; 0 <= m; --m)b[m] = 0;\n b[g] = h;\n b.t = this.t + g + 1;\n b.s = this.s;\n b.clamp();\n };\n k.prototype.rShiftTo = function(a, b) {\n b.s = this.s;\n var c = Math.floor(a / this.DB);\n if (c >= this.t) b.t = 0;\n else {\n var e = a % this.DB, d = this.DB - e, g = (1 << e) - 1;\n b[0] = this[c] >> e;\n for(var h = c + 1; h < this.t; ++h)b[h - c - 1] |= (this[h] & g) << d, b[h - c] = this[h] >> e;\n 0 < e && (b[this.t - c - 1] |= (this.s & g) << d);\n b.t = this.t - c;\n b.clamp();\n }\n };\n k.prototype.subTo = function(a, b) {\n for(var c = 0, e = 0, d = Math.min(a.t, this.t); c < d;)e += this[c] - a[c], b[c++] = e & this.DM, e >>= this.DB;\n if (a.t < this.t) {\n for(e -= a.s; c < this.t;)e += this[c], b[c++] = e & this.DM, e >>= this.DB;\n e += this.s;\n } else {\n for(e += this.s; c < a.t;)e -= a[c], b[c++] = e & this.DM, e >>= this.DB;\n e -= a.s;\n }\n b.s = 0 > e ? -1 : 0;\n -1 > e ? b[c++] = this.DV + e : 0 < e && (b[c++] = e);\n b.t = c;\n b.clamp();\n };\n k.prototype.multiplyTo = function(a, b) {\n var c = this.abs(), e = a.abs(), d = c.t;\n for(b.t = d + e.t; 0 <= --d;)b[d] = 0;\n for(d = 0; d < e.t; ++d)b[d + c.t] = c.am(0, e[d], b, d, 0, c.t);\n b.s = 0;\n b.clamp();\n this.s != a.s && k.ZERO.subTo(b, b);\n };\n k.prototype.squareTo = function(a) {\n for(var b = this.abs(), c = a.t = 2 * b.t; 0 <= --c;)a[c] = 0;\n for(c = 0; c < b.t - 1; ++c){\n var e = b.am(c, b[c], a, 2 * c, 0, 1);\n (a[c + b.t] += b.am(c + 1, 2 * b[c], a, 2 * c + 1, e, b.t - c - 1)) >= b.DV && (a[c + b.t] -= b.DV, a[c + b.t + 1] = 1);\n }\n 0 < a.t && (a[a.t - 1] += b.am(c, b[c], a, 2 * c, 0, 1));\n a.s = 0;\n a.clamp();\n };\n k.prototype.divRemTo = function(a, b, c) {\n var e = a.abs();\n if (!(0 >= e.t)) {\n var d = this.abs();\n if (d.t < e.t) null != b && b.fromInt(0), null != c && this.copyTo(c);\n else {\n null == c && (c = q());\n var g = q(), h = this.s;\n a = a.s;\n var m = this.DB - F(e[e.t - 1]);\n 0 < m ? (e.lShiftTo(m, g), d.lShiftTo(m, c)) : (e.copyTo(g), d.copyTo(c));\n e = g.t;\n d = g[e - 1];\n if (0 != d) {\n var l = d * (1 << this.F1) + (1 < e ? g[e - 2] >> this.F2 : 0), n = this.FV / l;\n l = (1 << this.F1) / l;\n var r = 1 << this.F2, p = c.t, t = p - e, u = null == b ? q() : b;\n g.dlShiftTo(t, u);\n 0 <= c.compareTo(u) && (c[c.t++] = 1, c.subTo(u, c));\n k.ONE.dlShiftTo(e, u);\n for(u.subTo(g, g); g.t < e;)g[g.t++] = 0;\n for(; 0 <= --t;){\n var v = c[--p] == d ? this.DM : Math.floor(c[p] * n + (c[p - 1] + r) * l);\n if ((c[p] += g.am(0, v, c, t, 0, e)) < v) for(g.dlShiftTo(t, u), c.subTo(u, c); c[p] < --v;)c.subTo(u, c);\n }\n null != b && (c.drShiftTo(e, b), h != a && k.ZERO.subTo(b, b));\n c.t = e;\n c.clamp();\n 0 < m && c.rShiftTo(m, c);\n 0 > h && k.ZERO.subTo(c, c);\n }\n }\n }\n };\n k.prototype.invDigit = function() {\n if (1 > this.t) return 0;\n var a = this[0];\n if (0 == (a & 1)) return 0;\n var b = a & 3;\n b = b * (2 - (a & 15) * b) & 15;\n b = b * (2 - (a & 255) * b) & 255;\n b = b * (2 - ((a & 65535) * b & 65535)) & 65535;\n b = b * (2 - a * b % this.DV) % this.DV;\n return 0 < b ? this.DV - b : -b;\n };\n k.prototype.isEven = function() {\n return 0 == (0 < this.t ? this[0] & 1 : this.s);\n };\n k.prototype.exp = function(a, b) {\n if (4294967295 < a || 1 > a) return k.ONE;\n var c = q(), e = q(), d = b.convert(this), g = F(a) - 1;\n for(d.copyTo(c); 0 <= --g;)if (b.sqrTo(c, e), 0 < (a & 1 << g)) b.mulTo(e, d, c);\n else {\n var h = c;\n c = e;\n e = h;\n }\n return b.revert(c);\n };\n k.prototype.toString = function(a) {\n if (0 > this.s) return \"-\" + this.negate().toString(a);\n if (16 == a) a = 4;\n else if (8 == a) a = 3;\n else if (2 == a) a = 1;\n else if (32 == a) a = 5;\n else if (4 == a) a = 2;\n else return this.toRadix(a);\n var b = (1 << a) - 1, c, e = !1, d = \"\", g = this.t, h = this.DB - g * this.DB % a;\n if (0 < g--) for(h < this.DB && 0 < (c = this[g] >> h) && (e = !0, d = \"0123456789abcdefghijklmnopqrstuvwxyz\".charAt(c)); 0 <= g;)h < a ? (c = (this[g] & (1 << h) - 1) << a - h, c |= this[--g] >> (h += this.DB - a)) : (c = this[g] >> (h -= a) & b, 0 >= h && (h += this.DB, --g)), 0 < c && (e = !0), e && (d += \"0123456789abcdefghijklmnopqrstuvwxyz\".charAt(c));\n return e ? d : \"0\";\n };\n k.prototype.negate = function() {\n var a = q();\n k.ZERO.subTo(this, a);\n return a;\n };\n k.prototype.abs = function() {\n return 0 > this.s ? this.negate() : this;\n };\n k.prototype.compareTo = function(a) {\n var b = this.s - a.s;\n if (0 != b) return b;\n var c = this.t;\n b = c - a.t;\n if (0 != b) return 0 > this.s ? -b : b;\n for(; 0 <= --c;)if (0 != (b = this[c] - a[c])) return b;\n return 0;\n };\n k.prototype.bitLength = function() {\n return 0 >= this.t ? 0 : this.DB * (this.t - 1) + F(this[this.t - 1] ^ this.s & this.DM);\n };\n k.prototype.mod = function(a) {\n var b = q();\n this.abs().divRemTo(a, null, b);\n 0 > this.s && 0 < b.compareTo(k.ZERO) && a.subTo(b, b);\n return b;\n };\n k.prototype.modPowInt = function(a, b) {\n var c = 256 > a || b.isEven() ? new z(b) : new B(b);\n return this.exp(a, c);\n };\n k.ZERO = y(0);\n k.ONE = y(1);\n D.prototype.convert = P;\n D.prototype.revert = P;\n D.prototype.mulTo = function(a, b, c) {\n a.multiplyTo(b, c);\n };\n D.prototype.sqrTo = function(a, b) {\n a.squareTo(b);\n };\n C.prototype.convert = function(a) {\n if (0 > a.s || a.t > 2 * this.m.t) return a.mod(this.m);\n if (0 > a.compareTo(this.m)) return a;\n var b = q();\n a.copyTo(b);\n this.reduce(b);\n return b;\n };\n C.prototype.revert = function(a) {\n return a;\n };\n C.prototype.reduce = function(a) {\n a.drShiftTo(this.m.t - 1, this.r2);\n a.t > this.m.t + 1 && (a.t = this.m.t + 1, a.clamp());\n this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3);\n for(this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2); 0 > a.compareTo(this.r2);)a.dAddOffset(1, this.m.t + 1);\n for(a.subTo(this.r2, a); 0 <= a.compareTo(this.m);)a.subTo(this.m, a);\n };\n C.prototype.mulTo = function(a, b, c) {\n a.multiplyTo(b, c);\n this.reduce(c);\n };\n C.prototype.sqrTo = function(a, b) {\n a.squareTo(b);\n this.reduce(b);\n };\n var w = [\n 2,\n 3,\n 5,\n 7,\n 11,\n 13,\n 17,\n 19,\n 23,\n 29,\n 31,\n 37,\n 41,\n 43,\n 47,\n 53,\n 59,\n 61,\n 67,\n 71,\n 73,\n 79,\n 83,\n 89,\n 97,\n 101,\n 103,\n 107,\n 109,\n 113,\n 127,\n 131,\n 137,\n 139,\n 149,\n 151,\n 157,\n 163,\n 167,\n 173,\n 179,\n 181,\n 191,\n 193,\n 197,\n 199,\n 211,\n 223,\n 227,\n 229,\n 233,\n 239,\n 241,\n 251,\n 257,\n 263,\n 269,\n 271,\n 277,\n 281,\n 283,\n 293,\n 307,\n 311,\n 313,\n 317,\n 331,\n 337,\n 347,\n 349,\n 353,\n 359,\n 367,\n 373,\n 379,\n 383,\n 389,\n 397,\n 401,\n 409,\n 419,\n 421,\n 431,\n 433,\n 439,\n 443,\n 449,\n 457,\n 461,\n 463,\n 467,\n 479,\n 487,\n 491,\n 499,\n 503,\n 509,\n 521,\n 523,\n 541,\n 547,\n 557,\n 563,\n 569,\n 571,\n 577,\n 587,\n 593,\n 599,\n 601,\n 607,\n 613,\n 617,\n 619,\n 631,\n 641,\n 643,\n 647,\n 653,\n 659,\n 661,\n 673,\n 677,\n 683,\n 691,\n 701,\n 709,\n 719,\n 727,\n 733,\n 739,\n 743,\n 751,\n 757,\n 761,\n 769,\n 773,\n 787,\n 797,\n 809,\n 811,\n 821,\n 823,\n 827,\n 829,\n 839,\n 853,\n 857,\n 859,\n 863,\n 877,\n 881,\n 883,\n 887,\n 907,\n 911,\n 919,\n 929,\n 937,\n 941,\n 947,\n 953,\n 967,\n 971,\n 977,\n 983,\n 991,\n 997\n ], W = 67108864 / w[w.length - 1];\n k.prototype.chunkSize = function(a) {\n return Math.floor(Math.LN2 * this.DB / Math.log(a));\n };\n k.prototype.toRadix = function(a) {\n null == a && (a = 10);\n if (0 == this.signum() || 2 > a || 36 < a) return \"0\";\n var b = this.chunkSize(a);\n b = Math.pow(a, b);\n var c = y(b), e = q(), d = q(), g = \"\";\n for(this.divRemTo(c, e, d); 0 < e.signum();)g = (b + d.intValue()).toString(a).substr(1) + g, e.divRemTo(c, e, d);\n return d.intValue().toString(a) + g;\n };\n k.prototype.fromRadix = function(a, b) {\n this.fromInt(0);\n null == b && (b = 10);\n for(var c = this.chunkSize(b), e = Math.pow(b, c), d = !1, g = 0, h = 0, m = 0; m < a.length; ++m){\n var l = M(a, m);\n 0 > l ? \"-\" == a.charAt(m) && 0 == this.signum() && (d = !0) : (h = b * h + l, ++g >= c && (this.dMultiply(e), this.dAddOffset(h, 0), h = g = 0));\n }\n 0 < g && (this.dMultiply(Math.pow(b, g)), this.dAddOffset(h, 0));\n d && k.ZERO.subTo(this, this);\n };\n k.prototype.fromNumber = function(a, b, c) {\n if (\"number\" == typeof b) {\n if (2 > a) this.fromInt(1);\n else for(this.fromNumber(a, c), this.testBit(a - 1) || this.bitwiseTo(k.ONE.shiftLeft(a - 1), H, this), this.isEven() && this.dAddOffset(1, 0); !this.isProbablePrime(b);)this.dAddOffset(2, 0), this.bitLength() > a && this.subTo(k.ONE.shiftLeft(a - 1), this);\n } else {\n c = [];\n var e = a & 7;\n c.length = (a >> 3) + 1;\n b.nextBytes(c);\n c[0] = 0 < e ? c[0] & (1 << e) - 1 : 0;\n this.fromString(c, 256);\n }\n };\n k.prototype.bitwiseTo = function(a, b, c) {\n var e, d = Math.min(a.t, this.t);\n for(e = 0; e < d; ++e)c[e] = b(this[e], a[e]);\n if (a.t < this.t) {\n var g = a.s & this.DM;\n for(e = d; e < this.t; ++e)c[e] = b(this[e], g);\n c.t = this.t;\n } else {\n g = this.s & this.DM;\n for(e = d; e < a.t; ++e)c[e] = b(g, a[e]);\n c.t = a.t;\n }\n c.s = b(this.s, a.s);\n c.clamp();\n };\n k.prototype.changeBit = function(a, b) {\n var c = k.ONE.shiftLeft(a);\n this.bitwiseTo(c, b, c);\n return c;\n };\n k.prototype.addTo = function(a, b) {\n for(var c = 0, e = 0, d = Math.min(a.t, this.t); c < d;)e += this[c] + a[c], b[c++] = e & this.DM, e >>= this.DB;\n if (a.t < this.t) {\n for(e += a.s; c < this.t;)e += this[c], b[c++] = e & this.DM, e >>= this.DB;\n e += this.s;\n } else {\n for(e += this.s; c < a.t;)e += a[c], b[c++] = e & this.DM, e >>= this.DB;\n e += a.s;\n }\n b.s = 0 > e ? -1 : 0;\n 0 < e ? b[c++] = e : -1 > e && (b[c++] = this.DV + e);\n b.t = c;\n b.clamp();\n };\n k.prototype.dMultiply = function(a) {\n this[this.t] = this.am(0, a - 1, this, 0, 0, this.t);\n ++this.t;\n this.clamp();\n };\n k.prototype.dAddOffset = function(a, b) {\n if (0 != a) {\n for(; this.t <= b;)this[this.t++] = 0;\n for(this[b] += a; this[b] >= this.DV;)this[b] -= this.DV, ++b >= this.t && (this[this.t++] = 0), ++this[b];\n }\n };\n k.prototype.multiplyLowerTo = function(a, b, c) {\n var e = Math.min(this.t + a.t, b);\n c.s = 0;\n for(c.t = e; 0 < e;)c[--e] = 0;\n var d;\n for(d = c.t - this.t; e < d; ++e)c[e + this.t] = this.am(0, a[e], c, e, 0, this.t);\n for(d = Math.min(a.t, b); e < d; ++e)this.am(0, a[e], c, e, 0, b - e);\n c.clamp();\n };\n k.prototype.multiplyUpperTo = function(a, b, c) {\n --b;\n var e = c.t = this.t + a.t - b;\n for(c.s = 0; 0 <= --e;)c[e] = 0;\n for(e = Math.max(b - this.t, 0); e < a.t; ++e)c[this.t + e - b] = this.am(b - e, a[e], c, 0, 0, this.t + e - b);\n c.clamp();\n c.drShiftTo(1, c);\n };\n k.prototype.modInt = function(a) {\n if (0 >= a) return 0;\n var b = this.DV % a, c = 0 > this.s ? a - 1 : 0;\n if (0 < this.t) {\n if (0 == b) c = this[0] % a;\n else for(var e = this.t - 1; 0 <= e; --e)c = (b * c + this[e]) % a;\n }\n return c;\n };\n k.prototype.millerRabin = function(a) {\n var b = this.subtract(k.ONE), c = b.getLowestSetBit();\n if (0 >= c) return !1;\n var e = b.shiftRight(c);\n a = a + 1 >> 1;\n a > w.length && (a = w.length);\n for(var d = q(), g = 0; g < a; ++g){\n d.fromInt(w[Math.floor(Math.random() * w.length)]);\n var h = d.modPow(e, this);\n if (0 != h.compareTo(k.ONE) && 0 != h.compareTo(b)) {\n for(var m = 1; m++ < c && 0 != h.compareTo(b);)if (h = h.modPowInt(2, this), 0 == h.compareTo(k.ONE)) return !1;\n if (0 != h.compareTo(b)) return !1;\n }\n }\n return !0;\n };\n k.prototype.clone = function() {\n var a = q();\n this.copyTo(a);\n return a;\n };\n k.prototype.intValue = function() {\n if (0 > this.s) {\n if (1 == this.t) return this[0] - this.DV;\n if (0 == this.t) return -1;\n } else {\n if (1 == this.t) return this[0];\n if (0 == this.t) return 0;\n }\n return (this[1] & (1 << 32 - this.DB) - 1) << this.DB | this[0];\n };\n k.prototype.byteValue = function() {\n return 0 == this.t ? this.s : this[0] << 24 >> 24;\n };\n k.prototype.shortValue = function() {\n return 0 == this.t ? this.s : this[0] << 16 >> 16;\n };\n k.prototype.signum = function() {\n return 0 > this.s ? -1 : 0 >= this.t || 1 == this.t && 0 >= this[0] ? 0 : 1;\n };\n k.prototype.toByteArray = function() {\n var a = this.t, b = [];\n b[0] = this.s;\n var c = this.DB - a * this.DB % 8, e, d = 0;\n if (0 < a--) {\n for(c < this.DB && (e = this[a] >> c) != (this.s & this.DM) >> c && (b[d++] = e | this.s << this.DB - c); 0 <= a;)if (8 > c ? (e = (this[a] & (1 << c) - 1) << 8 - c, e |= this[--a] >> (c += this.DB - 8)) : (e = this[a] >> (c -= 8) & 255, 0 >= c && (c += this.DB, --a)), 0 != (e & 128) && (e |= -256), 0 == d && (this.s & 128) != (e & 128) && ++d, 0 < d || e != this.s) b[d++] = e;\n }\n return b;\n };\n k.prototype.equals = function(a) {\n return 0 == this.compareTo(a);\n };\n k.prototype.min = function(a) {\n return 0 > this.compareTo(a) ? this : a;\n };\n k.prototype.max = function(a) {\n return 0 < this.compareTo(a) ? this : a;\n };\n k.prototype.and = function(a) {\n var b = q();\n this.bitwiseTo(a, U, b);\n return b;\n };\n k.prototype.or = function(a) {\n var b = q();\n this.bitwiseTo(a, H, b);\n return b;\n };\n k.prototype.xor = function(a) {\n var b = q();\n this.bitwiseTo(a, N, b);\n return b;\n };\n k.prototype.andNot = function(a) {\n var b = q();\n this.bitwiseTo(a, O, b);\n return b;\n };\n k.prototype.not = function() {\n for(var a = q(), b = 0; b < this.t; ++b)a[b] = this.DM & ~this[b];\n a.t = this.t;\n a.s = ~this.s;\n return a;\n };\n k.prototype.shiftLeft = function(a) {\n var b = q();\n 0 > a ? this.rShiftTo(-a, b) : this.lShiftTo(a, b);\n return b;\n };\n k.prototype.shiftRight = function(a) {\n var b = q();\n 0 > a ? this.lShiftTo(-a, b) : this.rShiftTo(a, b);\n return b;\n };\n k.prototype.getLowestSetBit = function() {\n for(var a = 0; a < this.t; ++a)if (0 != this[a]) {\n var b = a * this.DB;\n a = this[a];\n if (0 == a) a = -1;\n else {\n var c = 0;\n 0 == (a & 65535) && (a >>= 16, c += 16);\n 0 == (a & 255) && (a >>= 8, c += 8);\n 0 == (a & 15) && (a >>= 4, c += 4);\n 0 == (a & 3) && (a >>= 2, c += 2);\n 0 == (a & 1) && ++c;\n a = c;\n }\n return b + a;\n }\n return 0 > this.s ? this.t * this.DB : -1;\n };\n k.prototype.bitCount = function() {\n for(var a = 0, b = this.s & this.DM, c = 0; c < this.t; ++c){\n for(var e = this[c] ^ b, d = 0; 0 != e;)e &= e - 1, ++d;\n a += d;\n }\n return a;\n };\n k.prototype.testBit = function(a) {\n var b = Math.floor(a / this.DB);\n return b >= this.t ? 0 != this.s : 0 != (this[b] & 1 << a % this.DB);\n };\n k.prototype.setBit = function(a) {\n return this.changeBit(a, H);\n };\n k.prototype.clearBit = function(a) {\n return this.changeBit(a, O);\n };\n k.prototype.flipBit = function(a) {\n return this.changeBit(a, N);\n };\n k.prototype.add = function(a) {\n var b = q();\n this.addTo(a, b);\n return b;\n };\n k.prototype.subtract = function(a) {\n var b = q();\n this.subTo(a, b);\n return b;\n };\n k.prototype.multiply = function(a) {\n var b = q();\n this.multiplyTo(a, b);\n return b;\n };\n k.prototype.divide = function(a) {\n var b = q();\n this.divRemTo(a, b, null);\n return b;\n };\n k.prototype.remainder = function(a) {\n var b = q();\n this.divRemTo(a, null, b);\n return b;\n };\n k.prototype.divideAndRemainder = function(a) {\n var b = q(), c = q();\n this.divRemTo(a, b, c);\n return [\n b,\n c\n ];\n };\n k.prototype.modPow = function(a, b) {\n var c = a.bitLength(), e = y(1);\n if (0 >= c) return e;\n var d = 18 > c ? 1 : 48 > c ? 3 : 144 > c ? 4 : 768 > c ? 5 : 6;\n var g = 8 > c ? new z(b) : b.isEven() ? new C(b) : new B(b);\n var h = [], m = 3, k = d - 1, n = (1 << d) - 1;\n h[1] = g.convert(this);\n if (1 < d) for(c = q(), g.sqrTo(h[1], c); m <= n;)h[m] = q(), g.mulTo(c, h[m - 2], h[m]), m += 2;\n var r = a.t - 1, p = !0, t = q();\n for(c = F(a[r]) - 1; 0 <= r;){\n if (c >= k) var u = a[r] >> c - k & n;\n else u = (a[r] & (1 << c + 1) - 1) << k - c, 0 < r && (u |= a[r - 1] >> this.DB + c - k);\n for(m = d; 0 == (u & 1);)u >>= 1, --m;\n 0 > (c -= m) && (c += this.DB, --r);\n if (p) h[u].copyTo(e), p = !1;\n else {\n for(; 1 < m;)g.sqrTo(e, t), g.sqrTo(t, e), m -= 2;\n 0 < m ? g.sqrTo(e, t) : (m = e, e = t, t = m);\n g.mulTo(t, h[u], e);\n }\n for(; 0 <= r && 0 == (a[r] & 1 << c);)g.sqrTo(e, t), m = e, e = t, t = m, 0 > --c && (c = this.DB - 1, --r);\n }\n return g.revert(e);\n };\n k.prototype.modInverse = function(a) {\n var b = a.isEven();\n if (this.isEven() && b || 0 == a.signum()) return k.ZERO;\n for(var c = a.clone(), e = this.clone(), d = y(1), g = y(0), h = y(0), m = y(1); 0 != c.signum();){\n for(; c.isEven();)c.rShiftTo(1, c), b ? (d.isEven() && g.isEven() || (d.addTo(this, d), g.subTo(a, g)), d.rShiftTo(1, d)) : g.isEven() || g.subTo(a, g), g.rShiftTo(1, g);\n for(; e.isEven();)e.rShiftTo(1, e), b ? (h.isEven() && m.isEven() || (h.addTo(this, h), m.subTo(a, m)), h.rShiftTo(1, h)) : m.isEven() || m.subTo(a, m), m.rShiftTo(1, m);\n 0 <= c.compareTo(e) ? (c.subTo(e, c), b && d.subTo(h, d), g.subTo(m, g)) : (e.subTo(c, e), b && h.subTo(d, h), m.subTo(g, m));\n }\n if (0 != e.compareTo(k.ONE)) return k.ZERO;\n if (0 <= m.compareTo(a)) return m.subtract(a);\n if (0 > m.signum()) m.addTo(a, m);\n else return m;\n return 0 > m.signum() ? m.add(a) : m;\n };\n k.prototype.pow = function(a) {\n return this.exp(a, new D());\n };\n k.prototype.gcd = function(a) {\n var b = 0 > this.s ? this.negate() : this.clone();\n a = 0 > a.s ? a.negate() : a.clone();\n if (0 > b.compareTo(a)) {\n var c = b;\n b = a;\n a = c;\n }\n c = b.getLowestSetBit();\n var e = a.getLowestSetBit();\n if (0 > e) return b;\n c < e && (e = c);\n 0 < e && (b.rShiftTo(e, b), a.rShiftTo(e, a));\n for(; 0 < b.signum();)0 < (c = b.getLowestSetBit()) && b.rShiftTo(c, b), 0 < (c = a.getLowestSetBit()) && a.rShiftTo(c, a), 0 <= b.compareTo(a) ? (b.subTo(a, b), b.rShiftTo(1, b)) : (a.subTo(b, a), a.rShiftTo(1, a));\n 0 < e && a.lShiftTo(e, a);\n return a;\n };\n k.prototype.isProbablePrime = function(a) {\n var b, c = this.abs();\n if (1 == c.t && c[0] <= w[w.length - 1]) {\n for(b = 0; b < w.length; ++b)if (c[0] == w[b]) return !0;\n return !1;\n }\n if (c.isEven()) return !1;\n for(b = 1; b < w.length;){\n for(var e = w[b], d = b + 1; d < w.length && e < W;)e *= w[d++];\n for(e = c.modInt(e); b < d;)if (0 == e % w[b++]) return !1;\n }\n return c.millerRabin(a);\n };\n k.prototype.square = function() {\n var a = q();\n this.squareTo(a);\n return a;\n };\n k.prototype.IsNegative = function() {\n return -1 == this.compareTo(k.ZERO) ? !0 : !1;\n };\n k.op_Equality = function(a, b) {\n return 0 == a.compareTo(b) ? !0 : !1;\n };\n k.op_Inequality = function(a, b) {\n return 0 != a.compareTo(b) ? !0 : !1;\n };\n k.op_GreaterThan = function(a, b) {\n return 0 < a.compareTo(b) ? !0 : !1;\n };\n k.op_LessThan = function(a, b) {\n return 0 > a.compareTo(b) ? !0 : !1;\n };\n k.op_Addition = function(a, b) {\n return new k(a, void 0, void 0).add(new k(b, void 0, void 0));\n };\n k.op_Subtraction = function(a, b) {\n return new k(a, void 0, void 0).subtract(new k(b, void 0, void 0));\n };\n k.Int128Mul = function(a, b) {\n return new k(a, void 0, void 0).multiply(new k(b, void 0, void 0));\n };\n k.op_Division = function(a, b) {\n return a.divide(b);\n };\n k.prototype.ToDouble = function() {\n return parseFloat(this.toString());\n };\n v = function(a, b) {\n var c;\n if (\"undefined\" === typeof Object.getOwnPropertyNames) {\n for(c in b.prototype)if (\"undefined\" === typeof a.prototype[c] || a.prototype[c] === Object.prototype[c]) a.prototype[c] = b.prototype[c];\n } else for(var e = Object.getOwnPropertyNames(b.prototype), d = 0; d < e.length; d++)\"undefined\" === typeof Object.getOwnPropertyDescriptor(a.prototype, e[d]) && Object.defineProperty(a.prototype, e[d], Object.getOwnPropertyDescriptor(b.prototype, e[d]));\n for(c in b)\"undefined\" === typeof a[c] && (a[c] = b[c]);\n a.$baseCtor = b;\n };\n d.Path = function() {\n return [];\n };\n d.Path.prototype.push = Array.prototype.push;\n d.Paths = function() {\n return [];\n };\n d.Paths.prototype.push = Array.prototype.push;\n d.DoublePoint = function() {\n var a = arguments;\n this.Y = this.X = 0;\n 1 === a.length ? (this.X = a[0].X, this.Y = a[0].Y) : 2 === a.length && (this.X = a[0], this.Y = a[1]);\n };\n d.DoublePoint0 = function() {\n this.Y = this.X = 0;\n };\n d.DoublePoint0.prototype = d.DoublePoint.prototype;\n d.DoublePoint1 = function(a) {\n this.X = a.X;\n this.Y = a.Y;\n };\n d.DoublePoint1.prototype = d.DoublePoint.prototype;\n d.DoublePoint2 = function(a, b) {\n this.X = a;\n this.Y = b;\n };\n d.DoublePoint2.prototype = d.DoublePoint.prototype;\n d.PolyNode = function() {\n this.m_Parent = null;\n this.m_polygon = new d.Path();\n this.m_endtype = this.m_jointype = this.m_Index = 0;\n this.m_Childs = [];\n this.IsOpen = !1;\n };\n d.PolyNode.prototype.IsHoleNode = function() {\n for(var a = !0, b = this.m_Parent; null !== b;)a = !a, b = b.m_Parent;\n return a;\n };\n d.PolyNode.prototype.ChildCount = function() {\n return this.m_Childs.length;\n };\n d.PolyNode.prototype.Contour = function() {\n return this.m_polygon;\n };\n d.PolyNode.prototype.AddChild = function(a) {\n var b = this.m_Childs.length;\n this.m_Childs.push(a);\n a.m_Parent = this;\n a.m_Index = b;\n };\n d.PolyNode.prototype.GetNext = function() {\n return 0 < this.m_Childs.length ? this.m_Childs[0] : this.GetNextSiblingUp();\n };\n d.PolyNode.prototype.GetNextSiblingUp = function() {\n return null === this.m_Parent ? null : this.m_Index === this.m_Parent.m_Childs.length - 1 ? this.m_Parent.GetNextSiblingUp() : this.m_Parent.m_Childs[this.m_Index + 1];\n };\n d.PolyNode.prototype.Childs = function() {\n return this.m_Childs;\n };\n d.PolyNode.prototype.Parent = function() {\n return this.m_Parent;\n };\n d.PolyNode.prototype.IsHole = function() {\n return this.IsHoleNode();\n };\n d.PolyTree = function() {\n this.m_AllPolys = [];\n d.PolyNode.call(this);\n };\n d.PolyTree.prototype.Clear = function() {\n for(var a = 0, b = this.m_AllPolys.length; a < b; a++)this.m_AllPolys[a] = null;\n this.m_AllPolys.length = 0;\n this.m_Childs.length = 0;\n };\n d.PolyTree.prototype.GetFirst = function() {\n return 0 < this.m_Childs.length ? this.m_Childs[0] : null;\n };\n d.PolyTree.prototype.Total = function() {\n var a = this.m_AllPolys.length;\n 0 < a && this.m_Childs[0] !== this.m_AllPolys[0] && a--;\n return a;\n };\n v(d.PolyTree, d.PolyNode);\n d.Math_Abs_Int64 = d.Math_Abs_Int32 = d.Math_Abs_Double = function(a) {\n return Math.abs(a);\n };\n d.Math_Max_Int32_Int32 = function(a, b) {\n return Math.max(a, b);\n };\n d.Cast_Int32 = u || K || Q ? function(a) {\n return a | 0;\n } : function(a) {\n return ~~a;\n };\n \"undefined\" === typeof Number.toInteger && (Number.toInteger = null);\n d.Cast_Int64 = I ? function(a) {\n return -2147483648 > a || 2147483647 < a ? 0 > a ? Math.ceil(a) : Math.floor(a) : ~~a;\n } : J && \"function\" === typeof Number.toInteger ? function(a) {\n return Number.toInteger(a);\n } : V || L ? function(a) {\n return parseInt(a, 10);\n } : u ? function(a) {\n return -2147483648 > a || 2147483647 < a ? 0 > a ? Math.ceil(a) : Math.floor(a) : a | 0;\n } : function(a) {\n return 0 > a ? Math.ceil(a) : Math.floor(a);\n };\n d.Clear = function(a) {\n a.length = 0;\n };\n d.PI = 3.141592653589793;\n d.PI2 = 6.283185307179586;\n d.IntPoint = function() {\n var a = arguments;\n var b = a.length;\n this.Y = this.X = 0;\n d.use_xyz ? (this.Z = 0, 3 === b ? (this.X = a[0], this.Y = a[1], this.Z = a[2]) : 2 === b ? (this.X = a[0], this.Y = a[1], this.Z = 0) : 1 === b ? a[0] instanceof d.DoublePoint ? (a = a[0], this.X = d.Clipper.Round(a.X), this.Y = d.Clipper.Round(a.Y), this.Z = 0) : (a = a[0], \"undefined\" === typeof a.Z && (a.Z = 0), this.X = a.X, this.Y = a.Y, this.Z = a.Z) : this.Z = this.Y = this.X = 0) : 2 === b ? (this.X = a[0], this.Y = a[1]) : 1 === b ? a[0] instanceof d.DoublePoint ? (a = a[0], this.X = d.Clipper.Round(a.X), this.Y = d.Clipper.Round(a.Y)) : (a = a[0], this.X = a.X, this.Y = a.Y) : this.Y = this.X = 0;\n };\n d.IntPoint.op_Equality = function(a, b) {\n return a.X === b.X && a.Y === b.Y;\n };\n d.IntPoint.op_Inequality = function(a, b) {\n return a.X !== b.X || a.Y !== b.Y;\n };\n d.IntPoint0 = function() {\n this.Y = this.X = 0;\n d.use_xyz && (this.Z = 0);\n };\n d.IntPoint0.prototype = d.IntPoint.prototype;\n d.IntPoint1 = function(a) {\n this.X = a.X;\n this.Y = a.Y;\n d.use_xyz && (this.Z = \"undefined\" === typeof a.Z ? 0 : a.Z);\n };\n d.IntPoint1.prototype = d.IntPoint.prototype;\n d.IntPoint1dp = function(a) {\n this.X = d.Clipper.Round(a.X);\n this.Y = d.Clipper.Round(a.Y);\n d.use_xyz && (this.Z = 0);\n };\n d.IntPoint1dp.prototype = d.IntPoint.prototype;\n d.IntPoint2 = function(a, b, c) {\n this.X = a;\n this.Y = b;\n d.use_xyz && (this.Z = \"undefined\" === typeof c ? 0 : c);\n };\n d.IntPoint2.prototype = d.IntPoint.prototype;\n d.IntRect = function() {\n var a = arguments, b = a.length;\n 4 === b ? (this.left = a[0], this.top = a[1], this.right = a[2], this.bottom = a[3]) : 1 === b ? (a = a[0], this.left = a.left, this.top = a.top, this.right = a.right, this.bottom = a.bottom) : this.bottom = this.right = this.top = this.left = 0;\n };\n d.IntRect0 = function() {\n this.bottom = this.right = this.top = this.left = 0;\n };\n d.IntRect0.prototype = d.IntRect.prototype;\n d.IntRect1 = function(a) {\n this.left = a.left;\n this.top = a.top;\n this.right = a.right;\n this.bottom = a.bottom;\n };\n d.IntRect1.prototype = d.IntRect.prototype;\n d.IntRect4 = function(a, b, c, e) {\n this.left = a;\n this.top = b;\n this.right = c;\n this.bottom = e;\n };\n d.IntRect4.prototype = d.IntRect.prototype;\n d.ClipType = {\n ctIntersection: 0,\n ctUnion: 1,\n ctDifference: 2,\n ctXor: 3\n };\n d.PolyType = {\n ptSubject: 0,\n ptClip: 1\n };\n d.PolyFillType = {\n pftEvenOdd: 0,\n pftNonZero: 1,\n pftPositive: 2,\n pftNegative: 3\n };\n d.JoinType = {\n jtSquare: 0,\n jtRound: 1,\n jtMiter: 2\n };\n d.EndType = {\n etOpenSquare: 0,\n etOpenRound: 1,\n etOpenButt: 2,\n etClosedLine: 3,\n etClosedPolygon: 4\n };\n d.EdgeSide = {\n esLeft: 0,\n esRight: 1\n };\n d.Direction = {\n dRightToLeft: 0,\n dLeftToRight: 1\n };\n d.TEdge = function() {\n this.Bot = new d.IntPoint0();\n this.Curr = new d.IntPoint0();\n this.Top = new d.IntPoint0();\n this.Delta = new d.IntPoint0();\n this.Dx = 0;\n this.PolyTyp = d.PolyType.ptSubject;\n this.Side = d.EdgeSide.esLeft;\n this.OutIdx = this.WindCnt2 = this.WindCnt = this.WindDelta = 0;\n this.PrevInSEL = this.NextInSEL = this.PrevInAEL = this.NextInAEL = this.NextInLML = this.Prev = this.Next = null;\n };\n d.IntersectNode = function() {\n this.Edge2 = this.Edge1 = null;\n this.Pt = new d.IntPoint0();\n };\n d.MyIntersectNodeSort = function() {};\n d.MyIntersectNodeSort.Compare = function(a, b) {\n var c = b.Pt.Y - a.Pt.Y;\n return 0 < c ? 1 : 0 > c ? -1 : 0;\n };\n d.LocalMinima = function() {\n this.Y = 0;\n this.Next = this.RightBound = this.LeftBound = null;\n };\n d.Scanbeam = function() {\n this.Y = 0;\n this.Next = null;\n };\n d.Maxima = function() {\n this.X = 0;\n this.Prev = this.Next = null;\n };\n d.OutRec = function() {\n this.Idx = 0;\n this.IsOpen = this.IsHole = !1;\n this.PolyNode = this.BottomPt = this.Pts = this.FirstLeft = null;\n };\n d.OutPt = function() {\n this.Idx = 0;\n this.Pt = new d.IntPoint0();\n this.Prev = this.Next = null;\n };\n d.Join = function() {\n this.OutPt2 = this.OutPt1 = null;\n this.OffPt = new d.IntPoint0();\n };\n d.ClipperBase = function() {\n this.m_CurrentLM = this.m_MinimaList = null;\n this.m_edges = [];\n this.PreserveCollinear = this.m_HasOpenPaths = this.m_UseFullRange = !1;\n this.m_ActiveEdges = this.m_PolyOuts = this.m_Scanbeam = null;\n };\n d.ClipperBase.horizontal = -9007199254740992;\n d.ClipperBase.Skip = -2;\n d.ClipperBase.Unassigned = -1;\n d.ClipperBase.tolerance = 1e-20;\n d.ClipperBase.loRange = 47453132;\n d.ClipperBase.hiRange = 0xfffffffffffff;\n d.ClipperBase.near_zero = function(a) {\n return a > -d.ClipperBase.tolerance && a < d.ClipperBase.tolerance;\n };\n d.ClipperBase.IsHorizontal = function(a) {\n return 0 === a.Delta.Y;\n };\n d.ClipperBase.prototype.PointIsVertex = function(a, b) {\n var c = b;\n do {\n if (d.IntPoint.op_Equality(c.Pt, a)) return !0;\n c = c.Next;\n }while (c !== b);\n return !1;\n };\n d.ClipperBase.prototype.PointOnLineSegment = function(a, b, c, e) {\n return e ? a.X === b.X && a.Y === b.Y || a.X === c.X && a.Y === c.Y || a.X > b.X === a.X < c.X && a.Y > b.Y === a.Y < c.Y && k.op_Equality(k.Int128Mul(a.X - b.X, c.Y - b.Y), k.Int128Mul(c.X - b.X, a.Y - b.Y)) : a.X === b.X && a.Y === b.Y || a.X === c.X && a.Y === c.Y || a.X > b.X === a.X < c.X && a.Y > b.Y === a.Y < c.Y && (a.X - b.X) * (c.Y - b.Y) === (c.X - b.X) * (a.Y - b.Y);\n };\n d.ClipperBase.prototype.PointOnPolygon = function(a, b, c) {\n for(var e = b;;){\n if (this.PointOnLineSegment(a, e.Pt, e.Next.Pt, c)) return !0;\n e = e.Next;\n if (e === b) break;\n }\n return !1;\n };\n d.ClipperBase.prototype.SlopesEqual = d.ClipperBase.SlopesEqual = function() {\n var a = arguments, b = a.length;\n if (3 === b) {\n b = a[0];\n var c = a[1];\n return (a = a[2]) ? k.op_Equality(k.Int128Mul(b.Delta.Y, c.Delta.X), k.Int128Mul(b.Delta.X, c.Delta.Y)) : d.Cast_Int64(b.Delta.Y * c.Delta.X) === d.Cast_Int64(b.Delta.X * c.Delta.Y);\n }\n if (4 === b) {\n b = a[0];\n c = a[1];\n var e = a[2];\n return (a = a[3]) ? k.op_Equality(k.Int128Mul(b.Y - c.Y, c.X - e.X), k.Int128Mul(b.X - c.X, c.Y - e.Y)) : 0 === d.Cast_Int64((b.Y - c.Y) * (c.X - e.X)) - d.Cast_Int64((b.X - c.X) * (c.Y - e.Y));\n }\n b = a[0];\n c = a[1];\n e = a[2];\n var f = a[3];\n return (a = a[4]) ? k.op_Equality(k.Int128Mul(b.Y - c.Y, e.X - f.X), k.Int128Mul(b.X - c.X, e.Y - f.Y)) : 0 === d.Cast_Int64((b.Y - c.Y) * (e.X - f.X)) - d.Cast_Int64((b.X - c.X) * (e.Y - f.Y));\n };\n d.ClipperBase.SlopesEqual3 = function(a, b, c) {\n return c ? k.op_Equality(k.Int128Mul(a.Delta.Y, b.Delta.X), k.Int128Mul(a.Delta.X, b.Delta.Y)) : d.Cast_Int64(a.Delta.Y * b.Delta.X) === d.Cast_Int64(a.Delta.X * b.Delta.Y);\n };\n d.ClipperBase.SlopesEqual4 = function(a, b, c, e) {\n return e ? k.op_Equality(k.Int128Mul(a.Y - b.Y, b.X - c.X), k.Int128Mul(a.X - b.X, b.Y - c.Y)) : 0 === d.Cast_Int64((a.Y - b.Y) * (b.X - c.X)) - d.Cast_Int64((a.X - b.X) * (b.Y - c.Y));\n };\n d.ClipperBase.SlopesEqual5 = function(a, b, c, e, f) {\n return f ? k.op_Equality(k.Int128Mul(a.Y - b.Y, c.X - e.X), k.Int128Mul(a.X - b.X, c.Y - e.Y)) : 0 === d.Cast_Int64((a.Y - b.Y) * (c.X - e.X)) - d.Cast_Int64((a.X - b.X) * (c.Y - e.Y));\n };\n d.ClipperBase.prototype.Clear = function() {\n this.DisposeLocalMinimaList();\n for(var a = 0, b = this.m_edges.length; a < b; ++a){\n for(var c = 0, e = this.m_edges[a].length; c < e; ++c)this.m_edges[a][c] = null;\n d.Clear(this.m_edges[a]);\n }\n d.Clear(this.m_edges);\n this.m_HasOpenPaths = this.m_UseFullRange = !1;\n };\n d.ClipperBase.prototype.DisposeLocalMinimaList = function() {\n for(; null !== this.m_MinimaList;){\n var a = this.m_MinimaList.Next;\n this.m_MinimaList = null;\n this.m_MinimaList = a;\n }\n this.m_CurrentLM = null;\n };\n d.ClipperBase.prototype.RangeTest = function(a, b) {\n if (b.Value) (a.X > d.ClipperBase.hiRange || a.Y > d.ClipperBase.hiRange || -a.X > d.ClipperBase.hiRange || -a.Y > d.ClipperBase.hiRange) && d.Error(\"Coordinate outside allowed range in RangeTest().\");\n else if (a.X > d.ClipperBase.loRange || a.Y > d.ClipperBase.loRange || -a.X > d.ClipperBase.loRange || -a.Y > d.ClipperBase.loRange) b.Value = !0, this.RangeTest(a, b);\n };\n d.ClipperBase.prototype.InitEdge = function(a, b, c, e) {\n a.Next = b;\n a.Prev = c;\n a.Curr.X = e.X;\n a.Curr.Y = e.Y;\n d.use_xyz && (a.Curr.Z = e.Z);\n a.OutIdx = -1;\n };\n d.ClipperBase.prototype.InitEdge2 = function(a, b) {\n a.Curr.Y >= a.Next.Curr.Y ? (a.Bot.X = a.Curr.X, a.Bot.Y = a.Curr.Y, d.use_xyz && (a.Bot.Z = a.Curr.Z), a.Top.X = a.Next.Curr.X, a.Top.Y = a.Next.Curr.Y, d.use_xyz && (a.Top.Z = a.Next.Curr.Z)) : (a.Top.X = a.Curr.X, a.Top.Y = a.Curr.Y, d.use_xyz && (a.Top.Z = a.Curr.Z), a.Bot.X = a.Next.Curr.X, a.Bot.Y = a.Next.Curr.Y, d.use_xyz && (a.Bot.Z = a.Next.Curr.Z));\n this.SetDx(a);\n a.PolyTyp = b;\n };\n d.ClipperBase.prototype.FindNextLocMin = function(a) {\n for(var b;;){\n for(; d.IntPoint.op_Inequality(a.Bot, a.Prev.Bot) || d.IntPoint.op_Equality(a.Curr, a.Top);)a = a.Next;\n if (a.Dx !== d.ClipperBase.horizontal && a.Prev.Dx !== d.ClipperBase.horizontal) break;\n for(; a.Prev.Dx === d.ClipperBase.horizontal;)a = a.Prev;\n for(b = a; a.Dx === d.ClipperBase.horizontal;)a = a.Next;\n if (a.Top.Y !== a.Prev.Bot.Y) {\n b.Prev.Bot.X < a.Bot.X && (a = b);\n break;\n }\n }\n return a;\n };\n d.ClipperBase.prototype.ProcessBound = function(a, b) {\n var c = a, e;\n if (c.OutIdx === d.ClipperBase.Skip) {\n a = c;\n if (b) {\n for(; a.Top.Y === a.Next.Bot.Y;)a = a.Next;\n for(; a !== c && a.Dx === d.ClipperBase.horizontal;)a = a.Prev;\n } else {\n for(; a.Top.Y === a.Prev.Bot.Y;)a = a.Prev;\n for(; a !== c && a.Dx === d.ClipperBase.horizontal;)a = a.Next;\n }\n if (a === c) c = b ? a.Next : a.Prev;\n else {\n a = b ? c.Next : c.Prev;\n var f = new d.LocalMinima();\n f.Next = null;\n f.Y = a.Bot.Y;\n f.LeftBound = null;\n f.RightBound = a;\n a.WindDelta = 0;\n c = this.ProcessBound(a, b);\n this.InsertLocalMinima(f);\n }\n return c;\n }\n a.Dx === d.ClipperBase.horizontal && (f = b ? a.Prev : a.Next, f.Dx === d.ClipperBase.horizontal ? f.Bot.X !== a.Bot.X && f.Top.X !== a.Bot.X && this.ReverseHorizontal(a) : f.Bot.X !== a.Bot.X && this.ReverseHorizontal(a));\n f = a;\n if (b) {\n for(; c.Top.Y === c.Next.Bot.Y && c.Next.OutIdx !== d.ClipperBase.Skip;)c = c.Next;\n if (c.Dx === d.ClipperBase.horizontal && c.Next.OutIdx !== d.ClipperBase.Skip) {\n for(e = c; e.Prev.Dx === d.ClipperBase.horizontal;)e = e.Prev;\n e.Prev.Top.X > c.Next.Top.X && (c = e.Prev);\n }\n for(; a !== c;)a.NextInLML = a.Next, a.Dx === d.ClipperBase.horizontal && a !== f && a.Bot.X !== a.Prev.Top.X && this.ReverseHorizontal(a), a = a.Next;\n a.Dx === d.ClipperBase.horizontal && a !== f && a.Bot.X !== a.Prev.Top.X && this.ReverseHorizontal(a);\n c = c.Next;\n } else {\n for(; c.Top.Y === c.Prev.Bot.Y && c.Prev.OutIdx !== d.ClipperBase.Skip;)c = c.Prev;\n if (c.Dx === d.ClipperBase.horizontal && c.Prev.OutIdx !== d.ClipperBase.Skip) {\n for(e = c; e.Next.Dx === d.ClipperBase.horizontal;)e = e.Next;\n if (e.Next.Top.X === c.Prev.Top.X || e.Next.Top.X > c.Prev.Top.X) c = e.Next;\n }\n for(; a !== c;)a.NextInLML = a.Prev, a.Dx === d.ClipperBase.horizontal && a !== f && a.Bot.X !== a.Next.Top.X && this.ReverseHorizontal(a), a = a.Prev;\n a.Dx === d.ClipperBase.horizontal && a !== f && a.Bot.X !== a.Next.Top.X && this.ReverseHorizontal(a);\n c = c.Prev;\n }\n return c;\n };\n d.ClipperBase.prototype.AddPath = function(a, b, c) {\n d.use_lines ? c || b !== d.PolyType.ptClip || d.Error(\"AddPath: Open paths must be subject.\") : c || d.Error(\"AddPath: Open paths have been disabled.\");\n var e = a.length - 1;\n if (c) for(; 0 < e && d.IntPoint.op_Equality(a[e], a[0]);)--e;\n for(; 0 < e && d.IntPoint.op_Equality(a[e], a[e - 1]);)--e;\n if (c && 2 > e || !c && 1 > e) return !1;\n for(var f = [], g = 0; g <= e; g++)f.push(new d.TEdge());\n var h = !0;\n f[1].Curr.X = a[1].X;\n f[1].Curr.Y = a[1].Y;\n d.use_xyz && (f[1].Curr.Z = a[1].Z);\n var m = {\n Value: this.m_UseFullRange\n };\n this.RangeTest(a[0], m);\n this.m_UseFullRange = m.Value;\n m.Value = this.m_UseFullRange;\n this.RangeTest(a[e], m);\n this.m_UseFullRange = m.Value;\n this.InitEdge(f[0], f[1], f[e], a[0]);\n this.InitEdge(f[e], f[0], f[e - 1], a[e]);\n for(g = e - 1; 1 <= g; --g)m.Value = this.m_UseFullRange, this.RangeTest(a[g], m), this.m_UseFullRange = m.Value, this.InitEdge(f[g], f[g + 1], f[g - 1], a[g]);\n for(g = a = e = f[0];;)if (a.Curr !== a.Next.Curr || !c && a.Next === e) {\n if (a.Prev === a.Next) break;\n else if (c && d.ClipperBase.SlopesEqual4(a.Prev.Curr, a.Curr, a.Next.Curr, this.m_UseFullRange) && (!this.PreserveCollinear || !this.Pt2IsBetweenPt1AndPt3(a.Prev.Curr, a.Curr, a.Next.Curr))) {\n a === e && (e = a.Next);\n a = this.RemoveEdge(a);\n g = a = a.Prev;\n continue;\n }\n a = a.Next;\n if (a === g || !c && a.Next === e) break;\n } else {\n if (a === a.Next) break;\n a === e && (e = a.Next);\n g = a = this.RemoveEdge(a);\n }\n if (!c && a === a.Next || c && a.Prev === a.Next) return !1;\n c || (this.m_HasOpenPaths = !0, e.Prev.OutIdx = d.ClipperBase.Skip);\n a = e;\n do this.InitEdge2(a, b), a = a.Next, h && a.Curr.Y !== e.Curr.Y && (h = !1);\n while (a !== e);\n if (h) {\n if (c) return !1;\n a.Prev.OutIdx = d.ClipperBase.Skip;\n b = new d.LocalMinima();\n b.Next = null;\n b.Y = a.Bot.Y;\n b.LeftBound = null;\n b.RightBound = a;\n b.RightBound.Side = d.EdgeSide.esRight;\n for(b.RightBound.WindDelta = 0;;){\n a.Bot.X !== a.Prev.Top.X && this.ReverseHorizontal(a);\n if (a.Next.OutIdx === d.ClipperBase.Skip) break;\n a = a.NextInLML = a.Next;\n }\n this.InsertLocalMinima(b);\n this.m_edges.push(f);\n return !0;\n }\n this.m_edges.push(f);\n h = null;\n d.IntPoint.op_Equality(a.Prev.Bot, a.Prev.Top) && (a = a.Next);\n for(;;){\n a = this.FindNextLocMin(a);\n if (a === h) break;\n else null === h && (h = a);\n b = new d.LocalMinima();\n b.Next = null;\n b.Y = a.Bot.Y;\n a.Dx < a.Prev.Dx ? (b.LeftBound = a.Prev, b.RightBound = a, f = !1) : (b.LeftBound = a, b.RightBound = a.Prev, f = !0);\n b.LeftBound.Side = d.EdgeSide.esLeft;\n b.RightBound.Side = d.EdgeSide.esRight;\n b.LeftBound.WindDelta = c ? b.LeftBound.Next === b.RightBound ? -1 : 1 : 0;\n b.RightBound.WindDelta = -b.LeftBound.WindDelta;\n a = this.ProcessBound(b.LeftBound, f);\n a.OutIdx === d.ClipperBase.Skip && (a = this.ProcessBound(a, f));\n e = this.ProcessBound(b.RightBound, !f);\n e.OutIdx === d.ClipperBase.Skip && (e = this.ProcessBound(e, !f));\n b.LeftBound.OutIdx === d.ClipperBase.Skip ? b.LeftBound = null : b.RightBound.OutIdx === d.ClipperBase.Skip && (b.RightBound = null);\n this.InsertLocalMinima(b);\n f || (a = e);\n }\n return !0;\n };\n d.ClipperBase.prototype.AddPaths = function(a, b, c) {\n for(var e = !1, d = 0, g = a.length; d < g; ++d)this.AddPath(a[d], b, c) && (e = !0);\n return e;\n };\n d.ClipperBase.prototype.Pt2IsBetweenPt1AndPt3 = function(a, b, c) {\n return d.IntPoint.op_Equality(a, c) || d.IntPoint.op_Equality(a, b) || d.IntPoint.op_Equality(c, b) ? !1 : a.X !== c.X ? b.X > a.X === b.X < c.X : b.Y > a.Y === b.Y < c.Y;\n };\n d.ClipperBase.prototype.RemoveEdge = function(a) {\n a.Prev.Next = a.Next;\n a.Next.Prev = a.Prev;\n var b = a.Next;\n a.Prev = null;\n return b;\n };\n d.ClipperBase.prototype.SetDx = function(a) {\n a.Delta.X = a.Top.X - a.Bot.X;\n a.Delta.Y = a.Top.Y - a.Bot.Y;\n a.Dx = 0 === a.Delta.Y ? d.ClipperBase.horizontal : a.Delta.X / a.Delta.Y;\n };\n d.ClipperBase.prototype.InsertLocalMinima = function(a) {\n if (null === this.m_MinimaList) this.m_MinimaList = a;\n else if (a.Y >= this.m_MinimaList.Y) a.Next = this.m_MinimaList, this.m_MinimaList = a;\n else {\n for(var b = this.m_MinimaList; null !== b.Next && a.Y < b.Next.Y;)b = b.Next;\n a.Next = b.Next;\n b.Next = a;\n }\n };\n d.ClipperBase.prototype.PopLocalMinima = function(a, b) {\n b.v = this.m_CurrentLM;\n return null !== this.m_CurrentLM && this.m_CurrentLM.Y === a ? (this.m_CurrentLM = this.m_CurrentLM.Next, !0) : !1;\n };\n d.ClipperBase.prototype.ReverseHorizontal = function(a) {\n var b = a.Top.X;\n a.Top.X = a.Bot.X;\n a.Bot.X = b;\n d.use_xyz && (b = a.Top.Z, a.Top.Z = a.Bot.Z, a.Bot.Z = b);\n };\n d.ClipperBase.prototype.Reset = function() {\n this.m_CurrentLM = this.m_MinimaList;\n if (null !== this.m_CurrentLM) {\n this.m_Scanbeam = null;\n for(var a = this.m_MinimaList; null !== a;){\n this.InsertScanbeam(a.Y);\n var b = a.LeftBound;\n null !== b && (b.Curr.X = b.Bot.X, b.Curr.Y = b.Bot.Y, d.use_xyz && (b.Curr.Z = b.Bot.Z), b.OutIdx = d.ClipperBase.Unassigned);\n b = a.RightBound;\n null !== b && (b.Curr.X = b.Bot.X, b.Curr.Y = b.Bot.Y, d.use_xyz && (b.Curr.Z = b.Bot.Z), b.OutIdx = d.ClipperBase.Unassigned);\n a = a.Next;\n }\n this.m_ActiveEdges = null;\n }\n };\n d.ClipperBase.prototype.InsertScanbeam = function(a) {\n if (null === this.m_Scanbeam) this.m_Scanbeam = new d.Scanbeam(), this.m_Scanbeam.Next = null, this.m_Scanbeam.Y = a;\n else if (a > this.m_Scanbeam.Y) {\n var b = new d.Scanbeam();\n b.Y = a;\n b.Next = this.m_Scanbeam;\n this.m_Scanbeam = b;\n } else {\n for(b = this.m_Scanbeam; null !== b.Next && a <= b.Next.Y;)b = b.Next;\n if (a !== b.Y) {\n var c = new d.Scanbeam();\n c.Y = a;\n c.Next = b.Next;\n b.Next = c;\n }\n }\n };\n d.ClipperBase.prototype.PopScanbeam = function(a) {\n if (null === this.m_Scanbeam) return a.v = 0, !1;\n a.v = this.m_Scanbeam.Y;\n this.m_Scanbeam = this.m_Scanbeam.Next;\n return !0;\n };\n d.ClipperBase.prototype.LocalMinimaPending = function() {\n return null !== this.m_CurrentLM;\n };\n d.ClipperBase.prototype.CreateOutRec = function() {\n var a = new d.OutRec();\n a.Idx = d.ClipperBase.Unassigned;\n a.IsHole = !1;\n a.IsOpen = !1;\n a.FirstLeft = null;\n a.Pts = null;\n a.BottomPt = null;\n a.PolyNode = null;\n this.m_PolyOuts.push(a);\n a.Idx = this.m_PolyOuts.length - 1;\n return a;\n };\n d.ClipperBase.prototype.DisposeOutRec = function(a) {\n this.m_PolyOuts[a].Pts = null;\n this.m_PolyOuts[a] = null;\n };\n d.ClipperBase.prototype.UpdateEdgeIntoAEL = function(a) {\n null === a.NextInLML && d.Error(\"UpdateEdgeIntoAEL: invalid call\");\n var b = a.PrevInAEL, c = a.NextInAEL;\n a.NextInLML.OutIdx = a.OutIdx;\n null !== b ? b.NextInAEL = a.NextInLML : this.m_ActiveEdges = a.NextInLML;\n null !== c && (c.PrevInAEL = a.NextInLML);\n a.NextInLML.Side = a.Side;\n a.NextInLML.WindDelta = a.WindDelta;\n a.NextInLML.WindCnt = a.WindCnt;\n a.NextInLML.WindCnt2 = a.WindCnt2;\n a = a.NextInLML;\n a.Curr.X = a.Bot.X;\n a.Curr.Y = a.Bot.Y;\n a.PrevInAEL = b;\n a.NextInAEL = c;\n d.ClipperBase.IsHorizontal(a) || this.InsertScanbeam(a.Top.Y);\n return a;\n };\n d.ClipperBase.prototype.SwapPositionsInAEL = function(a, b) {\n if (a.NextInAEL !== a.PrevInAEL && b.NextInAEL !== b.PrevInAEL) {\n if (a.NextInAEL === b) {\n var c = b.NextInAEL;\n null !== c && (c.PrevInAEL = a);\n var e = a.PrevInAEL;\n null !== e && (e.NextInAEL = b);\n b.PrevInAEL = e;\n b.NextInAEL = a;\n a.PrevInAEL = b;\n a.NextInAEL = c;\n } else b.NextInAEL === a ? (c = a.NextInAEL, null !== c && (c.PrevInAEL = b), e = b.PrevInAEL, null !== e && (e.NextInAEL = a), a.PrevInAEL = e, a.NextInAEL = b, b.PrevInAEL = a, b.NextInAEL = c) : (c = a.NextInAEL, e = a.PrevInAEL, a.NextInAEL = b.NextInAEL, null !== a.NextInAEL && (a.NextInAEL.PrevInAEL = a), a.PrevInAEL = b.PrevInAEL, null !== a.PrevInAEL && (a.PrevInAEL.NextInAEL = a), b.NextInAEL = c, null !== b.NextInAEL && (b.NextInAEL.PrevInAEL = b), b.PrevInAEL = e, null !== b.PrevInAEL && (b.PrevInAEL.NextInAEL = b));\n null === a.PrevInAEL ? this.m_ActiveEdges = a : null === b.PrevInAEL && (this.m_ActiveEdges = b);\n }\n };\n d.ClipperBase.prototype.DeleteFromAEL = function(a) {\n var b = a.PrevInAEL, c = a.NextInAEL;\n if (null !== b || null !== c || a === this.m_ActiveEdges) null !== b ? b.NextInAEL = c : this.m_ActiveEdges = c, null !== c && (c.PrevInAEL = b), a.NextInAEL = null, a.PrevInAEL = null;\n };\n d.Clipper = function(a) {\n \"undefined\" === typeof a && (a = 0);\n this.m_PolyOuts = null;\n this.m_ClipType = d.ClipType.ctIntersection;\n this.m_IntersectNodeComparer = this.m_IntersectList = this.m_SortedEdges = this.m_ActiveEdges = this.m_Maxima = this.m_Scanbeam = null;\n this.m_ExecuteLocked = !1;\n this.m_SubjFillType = this.m_ClipFillType = d.PolyFillType.pftEvenOdd;\n this.m_GhostJoins = this.m_Joins = null;\n this.StrictlySimple = this.ReverseSolution = this.m_UsingPolyTree = !1;\n d.ClipperBase.call(this);\n this.m_SortedEdges = this.m_ActiveEdges = this.m_Maxima = this.m_Scanbeam = null;\n this.m_IntersectList = [];\n this.m_IntersectNodeComparer = d.MyIntersectNodeSort.Compare;\n this.m_UsingPolyTree = this.m_ExecuteLocked = !1;\n this.m_PolyOuts = [];\n this.m_Joins = [];\n this.m_GhostJoins = [];\n this.ReverseSolution = 0 !== (1 & a);\n this.StrictlySimple = 0 !== (2 & a);\n this.PreserveCollinear = 0 !== (4 & a);\n d.use_xyz && (this.ZFillFunction = null);\n };\n d.Clipper.ioReverseSolution = 1;\n d.Clipper.ioStrictlySimple = 2;\n d.Clipper.ioPreserveCollinear = 4;\n d.Clipper.prototype.Clear = function() {\n 0 !== this.m_edges.length && (this.DisposeAllPolyPts(), d.ClipperBase.prototype.Clear.call(this));\n };\n d.Clipper.prototype.InsertMaxima = function(a) {\n var b = new d.Maxima();\n b.X = a;\n if (null === this.m_Maxima) this.m_Maxima = b, this.m_Maxima.Next = null, this.m_Maxima.Prev = null;\n else if (a < this.m_Maxima.X) b.Next = this.m_Maxima, b.Prev = null, this.m_Maxima = b;\n else {\n for(var c = this.m_Maxima; null !== c.Next && a >= c.Next.X;)c = c.Next;\n a !== c.X && (b.Next = c.Next, b.Prev = c, null !== c.Next && (c.Next.Prev = b), c.Next = b);\n }\n };\n d.Clipper.prototype.Execute = function() {\n var a;\n var b = arguments;\n var c = b.length;\n var e = b[1] instanceof d.PolyTree;\n if (4 !== c || e) {\n if (4 === c && e) {\n c = b[0];\n var f = b[1];\n e = b[2];\n b = b[3];\n if (this.m_ExecuteLocked) return !1;\n this.m_ExecuteLocked = !0;\n this.m_SubjFillType = e;\n this.m_ClipFillType = b;\n this.m_ClipType = c;\n this.m_UsingPolyTree = !0;\n try {\n (a = this.ExecuteInternal()) && this.BuildResult2(f);\n } finally{\n this.DisposeAllPolyPts(), this.m_ExecuteLocked = !1;\n }\n return a;\n }\n if (2 === c && !e || 2 === c && e) return c = b[0], f = b[1], this.Execute(c, f, d.PolyFillType.pftEvenOdd, d.PolyFillType.pftEvenOdd);\n } else {\n c = b[0];\n f = b[1];\n e = b[2];\n b = b[3];\n if (this.m_ExecuteLocked) return !1;\n this.m_HasOpenPaths && d.Error(\"Error: PolyTree struct is needed for open path clipping.\");\n this.m_ExecuteLocked = !0;\n d.Clear(f);\n this.m_SubjFillType = e;\n this.m_ClipFillType = b;\n this.m_ClipType = c;\n this.m_UsingPolyTree = !1;\n try {\n (a = this.ExecuteInternal()) && this.BuildResult(f);\n } finally{\n this.DisposeAllPolyPts(), this.m_ExecuteLocked = !1;\n }\n return a;\n }\n };\n d.Clipper.prototype.FixHoleLinkage = function(a) {\n if (null !== a.FirstLeft && (a.IsHole === a.FirstLeft.IsHole || null === a.FirstLeft.Pts)) {\n for(var b = a.FirstLeft; null !== b && (b.IsHole === a.IsHole || null === b.Pts);)b = b.FirstLeft;\n a.FirstLeft = b;\n }\n };\n d.Clipper.prototype.ExecuteInternal = function() {\n try {\n this.Reset();\n this.m_Maxima = this.m_SortedEdges = null;\n var a = {}, b = {};\n if (!this.PopScanbeam(a)) return !1;\n for(this.InsertLocalMinimaIntoAEL(a.v); this.PopScanbeam(b) || this.LocalMinimaPending();){\n this.ProcessHorizontals();\n this.m_GhostJoins.length = 0;\n if (!this.ProcessIntersections(b.v)) return !1;\n this.ProcessEdgesAtTopOfScanbeam(b.v);\n a.v = b.v;\n this.InsertLocalMinimaIntoAEL(a.v);\n }\n var c;\n var e = 0;\n for(c = this.m_PolyOuts.length; e < c; e++){\n var d = this.m_PolyOuts[e];\n null === d.Pts || d.IsOpen || (d.IsHole ^ this.ReverseSolution) == 0 < this.Area$1(d) && this.ReversePolyPtLinks(d.Pts);\n }\n this.JoinCommonEdges();\n e = 0;\n for(c = this.m_PolyOuts.length; e < c; e++)d = this.m_PolyOuts[e], null !== d.Pts && (d.IsOpen ? this.FixupOutPolyline(d) : this.FixupOutPolygon(d));\n this.StrictlySimple && this.DoSimplePolygons();\n return !0;\n } finally{\n this.m_Joins.length = 0, this.m_GhostJoins.length = 0;\n }\n };\n d.Clipper.prototype.DisposeAllPolyPts = function() {\n for(var a = 0, b = this.m_PolyOuts.length; a < b; ++a)this.DisposeOutRec(a);\n d.Clear(this.m_PolyOuts);\n };\n d.Clipper.prototype.AddJoin = function(a, b, c) {\n var e = new d.Join();\n e.OutPt1 = a;\n e.OutPt2 = b;\n e.OffPt.X = c.X;\n e.OffPt.Y = c.Y;\n d.use_xyz && (e.OffPt.Z = c.Z);\n this.m_Joins.push(e);\n };\n d.Clipper.prototype.AddGhostJoin = function(a, b) {\n var c = new d.Join();\n c.OutPt1 = a;\n c.OffPt.X = b.X;\n c.OffPt.Y = b.Y;\n d.use_xyz && (c.OffPt.Z = b.Z);\n this.m_GhostJoins.push(c);\n };\n d.Clipper.prototype.SetZ = function(a, b, c) {\n null !== this.ZFillFunction && 0 === a.Z && null !== this.ZFillFunction && (d.IntPoint.op_Equality(a, b.Bot) ? a.Z = b.Bot.Z : d.IntPoint.op_Equality(a, b.Top) ? a.Z = b.Top.Z : d.IntPoint.op_Equality(a, c.Bot) ? a.Z = c.Bot.Z : d.IntPoint.op_Equality(a, c.Top) ? a.Z = c.Top.Z : this.ZFillFunction(b.Bot, b.Top, c.Bot, c.Top, a));\n };\n d.Clipper.prototype.InsertLocalMinimaIntoAEL = function(a) {\n for(var b, c = {}, e, f; this.PopLocalMinima(a, c);){\n e = c.v.LeftBound;\n f = c.v.RightBound;\n var g = null;\n null === e ? (this.InsertEdgeIntoAEL(f, null), this.SetWindingCount(f), this.IsContributing(f) && (g = this.AddOutPt(f, f.Bot))) : (null === f ? (this.InsertEdgeIntoAEL(e, null), this.SetWindingCount(e), this.IsContributing(e) && (g = this.AddOutPt(e, e.Bot))) : (this.InsertEdgeIntoAEL(e, null), this.InsertEdgeIntoAEL(f, e), this.SetWindingCount(e), f.WindCnt = e.WindCnt, f.WindCnt2 = e.WindCnt2, this.IsContributing(e) && (g = this.AddLocalMinPoly(e, f, e.Bot))), this.InsertScanbeam(e.Top.Y));\n null !== f && (d.ClipperBase.IsHorizontal(f) ? (null !== f.NextInLML && this.InsertScanbeam(f.NextInLML.Top.Y), this.AddEdgeToSEL(f)) : this.InsertScanbeam(f.Top.Y));\n if (null !== e && null !== f) {\n if (null !== g && d.ClipperBase.IsHorizontal(f) && 0 < this.m_GhostJoins.length && 0 !== f.WindDelta) {\n b = 0;\n for(var h = this.m_GhostJoins.length; b < h; b++){\n var m = this.m_GhostJoins[b];\n this.HorzSegmentsOverlap(m.OutPt1.Pt.X, m.OffPt.X, f.Bot.X, f.Top.X) && this.AddJoin(m.OutPt1, g, m.OffPt);\n }\n }\n 0 <= e.OutIdx && null !== e.PrevInAEL && e.PrevInAEL.Curr.X === e.Bot.X && 0 <= e.PrevInAEL.OutIdx && d.ClipperBase.SlopesEqual5(e.PrevInAEL.Curr, e.PrevInAEL.Top, e.Curr, e.Top, this.m_UseFullRange) && 0 !== e.WindDelta && 0 !== e.PrevInAEL.WindDelta && (b = this.AddOutPt(e.PrevInAEL, e.Bot), this.AddJoin(g, b, e.Top));\n if (e.NextInAEL !== f && (0 <= f.OutIdx && 0 <= f.PrevInAEL.OutIdx && d.ClipperBase.SlopesEqual5(f.PrevInAEL.Curr, f.PrevInAEL.Top, f.Curr, f.Top, this.m_UseFullRange) && 0 !== f.WindDelta && 0 !== f.PrevInAEL.WindDelta && (b = this.AddOutPt(f.PrevInAEL, f.Bot), this.AddJoin(g, b, f.Top)), g = e.NextInAEL, null !== g)) for(; g !== f;)this.IntersectEdges(f, g, e.Curr), g = g.NextInAEL;\n }\n }\n };\n d.Clipper.prototype.InsertEdgeIntoAEL = function(a, b) {\n if (null === this.m_ActiveEdges) a.PrevInAEL = null, a.NextInAEL = null, this.m_ActiveEdges = a;\n else if (null === b && this.E2InsertsBeforeE1(this.m_ActiveEdges, a)) a.PrevInAEL = null, a.NextInAEL = this.m_ActiveEdges, this.m_ActiveEdges = this.m_ActiveEdges.PrevInAEL = a;\n else {\n null === b && (b = this.m_ActiveEdges);\n for(; null !== b.NextInAEL && !this.E2InsertsBeforeE1(b.NextInAEL, a);)b = b.NextInAEL;\n a.NextInAEL = b.NextInAEL;\n null !== b.NextInAEL && (b.NextInAEL.PrevInAEL = a);\n a.PrevInAEL = b;\n b.NextInAEL = a;\n }\n };\n d.Clipper.prototype.E2InsertsBeforeE1 = function(a, b) {\n return b.Curr.X === a.Curr.X ? b.Top.Y > a.Top.Y ? b.Top.X < d.Clipper.TopX(a, b.Top.Y) : a.Top.X > d.Clipper.TopX(b, a.Top.Y) : b.Curr.X < a.Curr.X;\n };\n d.Clipper.prototype.IsEvenOddFillType = function(a) {\n return a.PolyTyp === d.PolyType.ptSubject ? this.m_SubjFillType === d.PolyFillType.pftEvenOdd : this.m_ClipFillType === d.PolyFillType.pftEvenOdd;\n };\n d.Clipper.prototype.IsEvenOddAltFillType = function(a) {\n return a.PolyTyp === d.PolyType.ptSubject ? this.m_ClipFillType === d.PolyFillType.pftEvenOdd : this.m_SubjFillType === d.PolyFillType.pftEvenOdd;\n };\n d.Clipper.prototype.IsContributing = function(a) {\n if (a.PolyTyp === d.PolyType.ptSubject) {\n var b = this.m_SubjFillType;\n var c = this.m_ClipFillType;\n } else b = this.m_ClipFillType, c = this.m_SubjFillType;\n switch(b){\n case d.PolyFillType.pftEvenOdd:\n if (0 === a.WindDelta && 1 !== a.WindCnt) return !1;\n break;\n case d.PolyFillType.pftNonZero:\n if (1 !== Math.abs(a.WindCnt)) return !1;\n break;\n case d.PolyFillType.pftPositive:\n if (1 !== a.WindCnt) return !1;\n break;\n default:\n if (-1 !== a.WindCnt) return !1;\n }\n switch(this.m_ClipType){\n case d.ClipType.ctIntersection:\n switch(c){\n case d.PolyFillType.pftEvenOdd:\n case d.PolyFillType.pftNonZero:\n return 0 !== a.WindCnt2;\n case d.PolyFillType.pftPositive:\n return 0 < a.WindCnt2;\n default:\n return 0 > a.WindCnt2;\n }\n case d.ClipType.ctUnion:\n switch(c){\n case d.PolyFillType.pftEvenOdd:\n case d.PolyFillType.pftNonZero:\n return 0 === a.WindCnt2;\n case d.PolyFillType.pftPositive:\n return 0 >= a.WindCnt2;\n default:\n return 0 <= a.WindCnt2;\n }\n case d.ClipType.ctDifference:\n if (a.PolyTyp === d.PolyType.ptSubject) switch(c){\n case d.PolyFillType.pftEvenOdd:\n case d.PolyFillType.pftNonZero:\n return 0 === a.WindCnt2;\n case d.PolyFillType.pftPositive:\n return 0 >= a.WindCnt2;\n default:\n return 0 <= a.WindCnt2;\n }\n else switch(c){\n case d.PolyFillType.pftEvenOdd:\n case d.PolyFillType.pftNonZero:\n return 0 !== a.WindCnt2;\n case d.PolyFillType.pftPositive:\n return 0 < a.WindCnt2;\n default:\n return 0 > a.WindCnt2;\n }\n case d.ClipType.ctXor:\n if (0 === a.WindDelta) switch(c){\n case d.PolyFillType.pftEvenOdd:\n case d.PolyFillType.pftNonZero:\n return 0 === a.WindCnt2;\n case d.PolyFillType.pftPositive:\n return 0 >= a.WindCnt2;\n default:\n return 0 <= a.WindCnt2;\n }\n }\n return !0;\n };\n d.Clipper.prototype.SetWindingCount = function(a) {\n for(var b = a.PrevInAEL; null !== b && (b.PolyTyp !== a.PolyTyp || 0 === b.WindDelta);)b = b.PrevInAEL;\n if (null === b) b = a.PolyTyp === d.PolyType.ptSubject ? this.m_SubjFillType : this.m_ClipFillType, a.WindCnt = 0 === a.WindDelta ? b === d.PolyFillType.pftNegative ? -1 : 1 : a.WindDelta, a.WindCnt2 = 0, b = this.m_ActiveEdges;\n else {\n if (0 === a.WindDelta && this.m_ClipType !== d.ClipType.ctUnion) a.WindCnt = 1;\n else if (this.IsEvenOddFillType(a)) {\n if (0 === a.WindDelta) {\n for(var c = !0, e = b.PrevInAEL; null !== e;)e.PolyTyp === b.PolyTyp && 0 !== e.WindDelta && (c = !c), e = e.PrevInAEL;\n a.WindCnt = c ? 0 : 1;\n } else a.WindCnt = a.WindDelta;\n } else a.WindCnt = 0 > b.WindCnt * b.WindDelta ? 1 < Math.abs(b.WindCnt) ? 0 > b.WindDelta * a.WindDelta ? b.WindCnt : b.WindCnt + a.WindDelta : 0 === a.WindDelta ? 1 : a.WindDelta : 0 === a.WindDelta ? 0 > b.WindCnt ? b.WindCnt - 1 : b.WindCnt + 1 : 0 > b.WindDelta * a.WindDelta ? b.WindCnt : b.WindCnt + a.WindDelta;\n a.WindCnt2 = b.WindCnt2;\n b = b.NextInAEL;\n }\n if (this.IsEvenOddAltFillType(a)) for(; b !== a;)0 !== b.WindDelta && (a.WindCnt2 = 0 === a.WindCnt2 ? 1 : 0), b = b.NextInAEL;\n else for(; b !== a;)a.WindCnt2 += b.WindDelta, b = b.NextInAEL;\n };\n d.Clipper.prototype.AddEdgeToSEL = function(a) {\n null === this.m_SortedEdges ? (this.m_SortedEdges = a, a.PrevInSEL = null, a.NextInSEL = null) : (a.NextInSEL = this.m_SortedEdges, a.PrevInSEL = null, this.m_SortedEdges = this.m_SortedEdges.PrevInSEL = a);\n };\n d.Clipper.prototype.PopEdgeFromSEL = function(a) {\n a.v = this.m_SortedEdges;\n if (null === a.v) return !1;\n var b = a.v;\n this.m_SortedEdges = a.v.NextInSEL;\n null !== this.m_SortedEdges && (this.m_SortedEdges.PrevInSEL = null);\n b.NextInSEL = null;\n b.PrevInSEL = null;\n return !0;\n };\n d.Clipper.prototype.CopyAELToSEL = function() {\n var a = this.m_ActiveEdges;\n for(this.m_SortedEdges = a; null !== a;)a.PrevInSEL = a.PrevInAEL, a = a.NextInSEL = a.NextInAEL;\n };\n d.Clipper.prototype.SwapPositionsInSEL = function(a, b) {\n if (null !== a.NextInSEL || null !== a.PrevInSEL) {\n if (null !== b.NextInSEL || null !== b.PrevInSEL) {\n if (a.NextInSEL === b) {\n var c = b.NextInSEL;\n null !== c && (c.PrevInSEL = a);\n var e = a.PrevInSEL;\n null !== e && (e.NextInSEL = b);\n b.PrevInSEL = e;\n b.NextInSEL = a;\n a.PrevInSEL = b;\n a.NextInSEL = c;\n } else b.NextInSEL === a ? (c = a.NextInSEL, null !== c && (c.PrevInSEL = b), e = b.PrevInSEL, null !== e && (e.NextInSEL = a), a.PrevInSEL = e, a.NextInSEL = b, b.PrevInSEL = a, b.NextInSEL = c) : (c = a.NextInSEL, e = a.PrevInSEL, a.NextInSEL = b.NextInSEL, null !== a.NextInSEL && (a.NextInSEL.PrevInSEL = a), a.PrevInSEL = b.PrevInSEL, null !== a.PrevInSEL && (a.PrevInSEL.NextInSEL = a), b.NextInSEL = c, null !== b.NextInSEL && (b.NextInSEL.PrevInSEL = b), b.PrevInSEL = e, null !== b.PrevInSEL && (b.PrevInSEL.NextInSEL = b));\n null === a.PrevInSEL ? this.m_SortedEdges = a : null === b.PrevInSEL && (this.m_SortedEdges = b);\n }\n }\n };\n d.Clipper.prototype.AddLocalMaxPoly = function(a, b, c) {\n this.AddOutPt(a, c);\n 0 === b.WindDelta && this.AddOutPt(b, c);\n a.OutIdx === b.OutIdx ? (a.OutIdx = -1, b.OutIdx = -1) : a.OutIdx < b.OutIdx ? this.AppendPolygon(a, b) : this.AppendPolygon(b, a);\n };\n d.Clipper.prototype.AddLocalMinPoly = function(a, b, c) {\n if (d.ClipperBase.IsHorizontal(b) || a.Dx > b.Dx) {\n var e = this.AddOutPt(a, c);\n b.OutIdx = a.OutIdx;\n a.Side = d.EdgeSide.esLeft;\n b.Side = d.EdgeSide.esRight;\n var f = a;\n a = f.PrevInAEL === b ? b.PrevInAEL : f.PrevInAEL;\n } else e = this.AddOutPt(b, c), a.OutIdx = b.OutIdx, a.Side = d.EdgeSide.esRight, b.Side = d.EdgeSide.esLeft, f = b, a = f.PrevInAEL === a ? a.PrevInAEL : f.PrevInAEL;\n if (null !== a && 0 <= a.OutIdx && a.Top.Y < c.Y && f.Top.Y < c.Y) {\n b = d.Clipper.TopX(a, c.Y);\n var g = d.Clipper.TopX(f, c.Y);\n b === g && 0 !== f.WindDelta && 0 !== a.WindDelta && d.ClipperBase.SlopesEqual5(new d.IntPoint2(b, c.Y), a.Top, new d.IntPoint2(g, c.Y), f.Top, this.m_UseFullRange) && (c = this.AddOutPt(a, c), this.AddJoin(e, c, f.Top));\n }\n return e;\n };\n d.Clipper.prototype.AddOutPt = function(a, b) {\n if (0 > a.OutIdx) {\n var c = this.CreateOutRec();\n c.IsOpen = 0 === a.WindDelta;\n var e = new d.OutPt();\n c.Pts = e;\n e.Idx = c.Idx;\n e.Pt.X = b.X;\n e.Pt.Y = b.Y;\n d.use_xyz && (e.Pt.Z = b.Z);\n e.Next = e;\n e.Prev = e;\n c.IsOpen || this.SetHoleState(a, c);\n a.OutIdx = c.Idx;\n } else {\n c = this.m_PolyOuts[a.OutIdx];\n var f = c.Pts, g = a.Side === d.EdgeSide.esLeft;\n if (g && d.IntPoint.op_Equality(b, f.Pt)) return f;\n if (!g && d.IntPoint.op_Equality(b, f.Prev.Pt)) return f.Prev;\n e = new d.OutPt();\n e.Idx = c.Idx;\n e.Pt.X = b.X;\n e.Pt.Y = b.Y;\n d.use_xyz && (e.Pt.Z = b.Z);\n e.Next = f;\n e.Prev = f.Prev;\n e.Prev.Next = e;\n f.Prev = e;\n g && (c.Pts = e);\n }\n return e;\n };\n d.Clipper.prototype.GetLastOutPt = function(a) {\n var b = this.m_PolyOuts[a.OutIdx];\n return a.Side === d.EdgeSide.esLeft ? b.Pts : b.Pts.Prev;\n };\n d.Clipper.prototype.SwapPoints = function(a, b) {\n var c = new d.IntPoint1(a.Value);\n a.Value.X = b.Value.X;\n a.Value.Y = b.Value.Y;\n d.use_xyz && (a.Value.Z = b.Value.Z);\n b.Value.X = c.X;\n b.Value.Y = c.Y;\n d.use_xyz && (b.Value.Z = c.Z);\n };\n d.Clipper.prototype.HorzSegmentsOverlap = function(a, b, c, e) {\n if (a > b) {\n var d = a;\n a = b;\n b = d;\n }\n c > e && (d = c, c = e, e = d);\n return a < e && c < b;\n };\n d.Clipper.prototype.SetHoleState = function(a, b) {\n for(var c = a.PrevInAEL, e = null; null !== c;)0 <= c.OutIdx && 0 !== c.WindDelta && (null === e ? e = c : e.OutIdx === c.OutIdx && (e = null)), c = c.PrevInAEL;\n null === e ? (b.FirstLeft = null, b.IsHole = !1) : (b.FirstLeft = this.m_PolyOuts[e.OutIdx], b.IsHole = !b.FirstLeft.IsHole);\n };\n d.Clipper.prototype.GetDx = function(a, b) {\n return a.Y === b.Y ? d.ClipperBase.horizontal : (b.X - a.X) / (b.Y - a.Y);\n };\n d.Clipper.prototype.FirstIsBottomPt = function(a, b) {\n for(var c = a.Prev; d.IntPoint.op_Equality(c.Pt, a.Pt) && c !== a;)c = c.Prev;\n var e = Math.abs(this.GetDx(a.Pt, c.Pt));\n for(c = a.Next; d.IntPoint.op_Equality(c.Pt, a.Pt) && c !== a;)c = c.Next;\n var f = Math.abs(this.GetDx(a.Pt, c.Pt));\n for(c = b.Prev; d.IntPoint.op_Equality(c.Pt, b.Pt) && c !== b;)c = c.Prev;\n var g = Math.abs(this.GetDx(b.Pt, c.Pt));\n for(c = b.Next; d.IntPoint.op_Equality(c.Pt, b.Pt) && c !== b;)c = c.Next;\n c = Math.abs(this.GetDx(b.Pt, c.Pt));\n return Math.max(e, f) === Math.max(g, c) && Math.min(e, f) === Math.min(g, c) ? 0 < this.Area(a) : e >= g && e >= c || f >= g && f >= c;\n };\n d.Clipper.prototype.GetBottomPt = function(a) {\n for(var b = null, c = a.Next; c !== a;)c.Pt.Y > a.Pt.Y ? (a = c, b = null) : c.Pt.Y === a.Pt.Y && c.Pt.X <= a.Pt.X && (c.Pt.X < a.Pt.X ? (b = null, a = c) : c.Next !== a && c.Prev !== a && (b = c)), c = c.Next;\n if (null !== b) for(; b !== c;)for(this.FirstIsBottomPt(c, b) || (a = b), b = b.Next; d.IntPoint.op_Inequality(b.Pt, a.Pt);)b = b.Next;\n return a;\n };\n d.Clipper.prototype.GetLowermostRec = function(a, b) {\n null === a.BottomPt && (a.BottomPt = this.GetBottomPt(a.Pts));\n null === b.BottomPt && (b.BottomPt = this.GetBottomPt(b.Pts));\n var c = a.BottomPt, e = b.BottomPt;\n return c.Pt.Y > e.Pt.Y ? a : c.Pt.Y < e.Pt.Y ? b : c.Pt.X < e.Pt.X ? a : c.Pt.X > e.Pt.X ? b : c.Next === c ? b : e.Next === e ? a : this.FirstIsBottomPt(c, e) ? a : b;\n };\n d.Clipper.prototype.OutRec1RightOfOutRec2 = function(a, b) {\n do if (a = a.FirstLeft, a === b) return !0;\n while (null !== a);\n return !1;\n };\n d.Clipper.prototype.GetOutRec = function(a) {\n for(a = this.m_PolyOuts[a]; a !== this.m_PolyOuts[a.Idx];)a = this.m_PolyOuts[a.Idx];\n return a;\n };\n d.Clipper.prototype.AppendPolygon = function(a, b) {\n var c = this.m_PolyOuts[a.OutIdx], e = this.m_PolyOuts[b.OutIdx];\n var f = this.OutRec1RightOfOutRec2(c, e) ? e : this.OutRec1RightOfOutRec2(e, c) ? c : this.GetLowermostRec(c, e);\n var g = c.Pts, h = g.Prev, m = e.Pts, k = m.Prev;\n a.Side === d.EdgeSide.esLeft ? b.Side === d.EdgeSide.esLeft ? (this.ReversePolyPtLinks(m), m.Next = g, g.Prev = m, h.Next = k, k.Prev = h, c.Pts = k) : (k.Next = g, g.Prev = k, m.Prev = h, h.Next = m, c.Pts = m) : b.Side === d.EdgeSide.esRight ? (this.ReversePolyPtLinks(m), h.Next = k, k.Prev = h, m.Next = g, g.Prev = m) : (h.Next = m, m.Prev = h, g.Prev = k, k.Next = g);\n c.BottomPt = null;\n f === e && (e.FirstLeft !== c && (c.FirstLeft = e.FirstLeft), c.IsHole = e.IsHole);\n e.Pts = null;\n e.BottomPt = null;\n e.FirstLeft = c;\n f = a.OutIdx;\n g = b.OutIdx;\n a.OutIdx = -1;\n b.OutIdx = -1;\n for(h = this.m_ActiveEdges; null !== h;){\n if (h.OutIdx === g) {\n h.OutIdx = f;\n h.Side = a.Side;\n break;\n }\n h = h.NextInAEL;\n }\n e.Idx = c.Idx;\n };\n d.Clipper.prototype.ReversePolyPtLinks = function(a) {\n if (null !== a) {\n var b = a;\n do {\n var c = b.Next;\n b.Next = b.Prev;\n b = b.Prev = c;\n }while (b !== a);\n }\n };\n d.Clipper.SwapSides = function(a, b) {\n var c = a.Side;\n a.Side = b.Side;\n b.Side = c;\n };\n d.Clipper.SwapPolyIndexes = function(a, b) {\n var c = a.OutIdx;\n a.OutIdx = b.OutIdx;\n b.OutIdx = c;\n };\n d.Clipper.prototype.IntersectEdges = function(a, b, c) {\n var e = 0 <= a.OutIdx, f = 0 <= b.OutIdx;\n d.use_xyz && this.SetZ(c, a, b);\n if (!d.use_lines || 0 !== a.WindDelta && 0 !== b.WindDelta) {\n if (a.PolyTyp === b.PolyTyp) {\n if (this.IsEvenOddFillType(a)) {\n var g = a.WindCnt;\n a.WindCnt = b.WindCnt;\n b.WindCnt = g;\n } else a.WindCnt = 0 === a.WindCnt + b.WindDelta ? -a.WindCnt : a.WindCnt + b.WindDelta, b.WindCnt = 0 === b.WindCnt - a.WindDelta ? -b.WindCnt : b.WindCnt - a.WindDelta;\n } else this.IsEvenOddFillType(b) ? a.WindCnt2 = 0 === a.WindCnt2 ? 1 : 0 : a.WindCnt2 += b.WindDelta, this.IsEvenOddFillType(a) ? b.WindCnt2 = 0 === b.WindCnt2 ? 1 : 0 : b.WindCnt2 -= a.WindDelta;\n if (a.PolyTyp === d.PolyType.ptSubject) {\n var h = this.m_SubjFillType;\n var k = this.m_ClipFillType;\n } else h = this.m_ClipFillType, k = this.m_SubjFillType;\n if (b.PolyTyp === d.PolyType.ptSubject) {\n var l = this.m_SubjFillType;\n g = this.m_ClipFillType;\n } else l = this.m_ClipFillType, g = this.m_SubjFillType;\n switch(h){\n case d.PolyFillType.pftPositive:\n h = a.WindCnt;\n break;\n case d.PolyFillType.pftNegative:\n h = -a.WindCnt;\n break;\n default:\n h = Math.abs(a.WindCnt);\n }\n switch(l){\n case d.PolyFillType.pftPositive:\n l = b.WindCnt;\n break;\n case d.PolyFillType.pftNegative:\n l = -b.WindCnt;\n break;\n default:\n l = Math.abs(b.WindCnt);\n }\n if (e && f) 0 !== h && 1 !== h || 0 !== l && 1 !== l || a.PolyTyp !== b.PolyTyp && this.m_ClipType !== d.ClipType.ctXor ? this.AddLocalMaxPoly(a, b, c) : (this.AddOutPt(a, c), this.AddOutPt(b, c), d.Clipper.SwapSides(a, b), d.Clipper.SwapPolyIndexes(a, b));\n else if (e) {\n if (0 === l || 1 === l) this.AddOutPt(a, c), d.Clipper.SwapSides(a, b), d.Clipper.SwapPolyIndexes(a, b);\n } else if (f) {\n if (0 === h || 1 === h) this.AddOutPt(b, c), d.Clipper.SwapSides(a, b), d.Clipper.SwapPolyIndexes(a, b);\n } else if (!(0 !== h && 1 !== h || 0 !== l && 1 !== l)) {\n switch(k){\n case d.PolyFillType.pftPositive:\n e = a.WindCnt2;\n break;\n case d.PolyFillType.pftNegative:\n e = -a.WindCnt2;\n break;\n default:\n e = Math.abs(a.WindCnt2);\n }\n switch(g){\n case d.PolyFillType.pftPositive:\n f = b.WindCnt2;\n break;\n case d.PolyFillType.pftNegative:\n f = -b.WindCnt2;\n break;\n default:\n f = Math.abs(b.WindCnt2);\n }\n if (a.PolyTyp !== b.PolyTyp) this.AddLocalMinPoly(a, b, c);\n else if (1 === h && 1 === l) switch(this.m_ClipType){\n case d.ClipType.ctIntersection:\n 0 < e && 0 < f && this.AddLocalMinPoly(a, b, c);\n break;\n case d.ClipType.ctUnion:\n 0 >= e && 0 >= f && this.AddLocalMinPoly(a, b, c);\n break;\n case d.ClipType.ctDifference:\n (a.PolyTyp === d.PolyType.ptClip && 0 < e && 0 < f || a.PolyTyp === d.PolyType.ptSubject && 0 >= e && 0 >= f) && this.AddLocalMinPoly(a, b, c);\n break;\n case d.ClipType.ctXor:\n this.AddLocalMinPoly(a, b, c);\n }\n else d.Clipper.SwapSides(a, b);\n }\n } else if (0 !== a.WindDelta || 0 !== b.WindDelta) a.PolyTyp === b.PolyTyp && a.WindDelta !== b.WindDelta && this.m_ClipType === d.ClipType.ctUnion ? 0 === a.WindDelta ? f && (this.AddOutPt(a, c), e && (a.OutIdx = -1)) : e && (this.AddOutPt(b, c), f && (b.OutIdx = -1)) : a.PolyTyp !== b.PolyTyp && (0 !== a.WindDelta || 1 !== Math.abs(b.WindCnt) || this.m_ClipType === d.ClipType.ctUnion && 0 !== b.WindCnt2 ? 0 !== b.WindDelta || 1 !== Math.abs(a.WindCnt) || this.m_ClipType === d.ClipType.ctUnion && 0 !== a.WindCnt2 || (this.AddOutPt(b, c), f && (b.OutIdx = -1)) : (this.AddOutPt(a, c), e && (a.OutIdx = -1)));\n };\n d.Clipper.prototype.DeleteFromSEL = function(a) {\n var b = a.PrevInSEL, c = a.NextInSEL;\n if (null !== b || null !== c || a === this.m_SortedEdges) null !== b ? b.NextInSEL = c : this.m_SortedEdges = c, null !== c && (c.PrevInSEL = b), a.NextInSEL = null, a.PrevInSEL = null;\n };\n d.Clipper.prototype.ProcessHorizontals = function() {\n for(var a = {}; this.PopEdgeFromSEL(a);)this.ProcessHorizontal(a.v);\n };\n d.Clipper.prototype.GetHorzDirection = function(a, b) {\n a.Bot.X < a.Top.X ? (b.Left = a.Bot.X, b.Right = a.Top.X, b.Dir = d.Direction.dLeftToRight) : (b.Left = a.Top.X, b.Right = a.Bot.X, b.Dir = d.Direction.dRightToLeft);\n };\n d.Clipper.prototype.ProcessHorizontal = function(a) {\n var b, c = {\n Dir: null,\n Left: null,\n Right: null\n };\n this.GetHorzDirection(a, c);\n var e = c.Dir, f = c.Left;\n c = c.Right;\n for(var g = 0 === a.WindDelta, h = a, k = null; null !== h.NextInLML && d.ClipperBase.IsHorizontal(h.NextInLML);)h = h.NextInLML;\n null === h.NextInLML && (k = this.GetMaximaPair(h));\n var l = this.m_Maxima;\n if (null !== l) {\n if (e === d.Direction.dLeftToRight) {\n for(; null !== l && l.X <= a.Bot.X;)l = l.Next;\n null !== l && l.X >= h.Top.X && (l = null);\n } else {\n for(; null !== l.Next && l.Next.X < a.Bot.X;)l = l.Next;\n l.X <= h.Top.X && (l = null);\n }\n }\n for(var n = null;;){\n for(var r = a === h, p = this.GetNextInAEL(a, e); null !== p;){\n if (null !== l) {\n if (e === d.Direction.dLeftToRight) for(; null !== l && l.X < p.Curr.X;)0 <= a.OutIdx && !g && this.AddOutPt(a, new d.IntPoint2(l.X, a.Bot.Y)), l = l.Next;\n else for(; null !== l && l.X > p.Curr.X;)0 <= a.OutIdx && !g && this.AddOutPt(a, new d.IntPoint2(l.X, a.Bot.Y)), l = l.Prev;\n }\n if (e === d.Direction.dLeftToRight && p.Curr.X > c || e === d.Direction.dRightToLeft && p.Curr.X < f) break;\n if (p.Curr.X === a.Top.X && null !== a.NextInLML && p.Dx < a.NextInLML.Dx) break;\n if (0 <= a.OutIdx && !g) {\n d.use_xyz && (e === d.Direction.dLeftToRight ? this.SetZ(p.Curr, a, p) : this.SetZ(p.Curr, p, a));\n n = this.AddOutPt(a, p.Curr);\n for(b = this.m_SortedEdges; null !== b;){\n if (0 <= b.OutIdx && this.HorzSegmentsOverlap(a.Bot.X, a.Top.X, b.Bot.X, b.Top.X)) {\n var t = this.GetLastOutPt(b);\n this.AddJoin(t, n, b.Top);\n }\n b = b.NextInSEL;\n }\n this.AddGhostJoin(n, a.Bot);\n }\n if (p === k && r) {\n 0 <= a.OutIdx && this.AddLocalMaxPoly(a, k, a.Top);\n this.DeleteFromAEL(a);\n this.DeleteFromAEL(k);\n return;\n }\n e === d.Direction.dLeftToRight ? (t = new d.IntPoint2(p.Curr.X, a.Curr.Y), this.IntersectEdges(a, p, t)) : (t = new d.IntPoint2(p.Curr.X, a.Curr.Y), this.IntersectEdges(p, a, t));\n t = this.GetNextInAEL(p, e);\n this.SwapPositionsInAEL(a, p);\n p = t;\n }\n if (null === a.NextInLML || !d.ClipperBase.IsHorizontal(a.NextInLML)) break;\n a = this.UpdateEdgeIntoAEL(a);\n 0 <= a.OutIdx && this.AddOutPt(a, a.Bot);\n c = {\n Dir: e,\n Left: f,\n Right: c\n };\n this.GetHorzDirection(a, c);\n e = c.Dir;\n f = c.Left;\n c = c.Right;\n }\n if (0 <= a.OutIdx && null === n) {\n n = this.GetLastOutPt(a);\n for(b = this.m_SortedEdges; null !== b;)0 <= b.OutIdx && this.HorzSegmentsOverlap(a.Bot.X, a.Top.X, b.Bot.X, b.Top.X) && (t = this.GetLastOutPt(b), this.AddJoin(t, n, b.Top)), b = b.NextInSEL;\n this.AddGhostJoin(n, a.Top);\n }\n null !== a.NextInLML ? 0 <= a.OutIdx ? (n = this.AddOutPt(a, a.Top), a = this.UpdateEdgeIntoAEL(a), 0 !== a.WindDelta && (e = a.PrevInAEL, t = a.NextInAEL, null !== e && e.Curr.X === a.Bot.X && e.Curr.Y === a.Bot.Y && 0 === e.WindDelta && 0 <= e.OutIdx && e.Curr.Y > e.Top.Y && d.ClipperBase.SlopesEqual3(a, e, this.m_UseFullRange) ? (t = this.AddOutPt(e, a.Bot), this.AddJoin(n, t, a.Top)) : null !== t && t.Curr.X === a.Bot.X && t.Curr.Y === a.Bot.Y && 0 !== t.WindDelta && 0 <= t.OutIdx && t.Curr.Y > t.Top.Y && d.ClipperBase.SlopesEqual3(a, t, this.m_UseFullRange) && (t = this.AddOutPt(t, a.Bot), this.AddJoin(n, t, a.Top)))) : this.UpdateEdgeIntoAEL(a) : (0 <= a.OutIdx && this.AddOutPt(a, a.Top), this.DeleteFromAEL(a));\n };\n d.Clipper.prototype.GetNextInAEL = function(a, b) {\n return b === d.Direction.dLeftToRight ? a.NextInAEL : a.PrevInAEL;\n };\n d.Clipper.prototype.IsMinima = function(a) {\n return null !== a && a.Prev.NextInLML !== a && a.Next.NextInLML !== a;\n };\n d.Clipper.prototype.IsMaxima = function(a, b) {\n return null !== a && a.Top.Y === b && null === a.NextInLML;\n };\n d.Clipper.prototype.IsIntermediate = function(a, b) {\n return a.Top.Y === b && null !== a.NextInLML;\n };\n d.Clipper.prototype.GetMaximaPair = function(a) {\n return d.IntPoint.op_Equality(a.Next.Top, a.Top) && null === a.Next.NextInLML ? a.Next : d.IntPoint.op_Equality(a.Prev.Top, a.Top) && null === a.Prev.NextInLML ? a.Prev : null;\n };\n d.Clipper.prototype.GetMaximaPairEx = function(a) {\n a = this.GetMaximaPair(a);\n return null === a || a.OutIdx === d.ClipperBase.Skip || a.NextInAEL === a.PrevInAEL && !d.ClipperBase.IsHorizontal(a) ? null : a;\n };\n d.Clipper.prototype.ProcessIntersections = function(a) {\n if (null === this.m_ActiveEdges) return !0;\n try {\n this.BuildIntersectList(a);\n if (0 === this.m_IntersectList.length) return !0;\n if (1 === this.m_IntersectList.length || this.FixupIntersectionOrder()) this.ProcessIntersectList();\n else return !1;\n } catch (b) {\n this.m_SortedEdges = null, this.m_IntersectList.length = 0, d.Error(\"ProcessIntersections error\");\n }\n this.m_SortedEdges = null;\n return !0;\n };\n d.Clipper.prototype.BuildIntersectList = function(a) {\n if (null !== this.m_ActiveEdges) {\n var b = this.m_ActiveEdges;\n for(this.m_SortedEdges = b; null !== b;)b.PrevInSEL = b.PrevInAEL, b.NextInSEL = b.NextInAEL, b.Curr.X = d.Clipper.TopX(b, a), b = b.NextInAEL;\n for(var c = !0; c && null !== this.m_SortedEdges;){\n c = !1;\n for(b = this.m_SortedEdges; null !== b.NextInSEL;){\n var e = b.NextInSEL, f = new d.IntPoint0();\n b.Curr.X > e.Curr.X ? (this.IntersectPoint(b, e, f), f.Y < a && (f = new d.IntPoint2(d.Clipper.TopX(b, a), a)), c = new d.IntersectNode(), c.Edge1 = b, c.Edge2 = e, c.Pt.X = f.X, c.Pt.Y = f.Y, d.use_xyz && (c.Pt.Z = f.Z), this.m_IntersectList.push(c), this.SwapPositionsInSEL(b, e), c = !0) : b = e;\n }\n if (null !== b.PrevInSEL) b.PrevInSEL.NextInSEL = null;\n else break;\n }\n this.m_SortedEdges = null;\n }\n };\n d.Clipper.prototype.EdgesAdjacent = function(a) {\n return a.Edge1.NextInSEL === a.Edge2 || a.Edge1.PrevInSEL === a.Edge2;\n };\n d.Clipper.IntersectNodeSort = function(a, b) {\n return b.Pt.Y - a.Pt.Y;\n };\n d.Clipper.prototype.FixupIntersectionOrder = function() {\n this.m_IntersectList.sort(this.m_IntersectNodeComparer);\n this.CopyAELToSEL();\n for(var a = this.m_IntersectList.length, b = 0; b < a; b++){\n if (!this.EdgesAdjacent(this.m_IntersectList[b])) {\n for(var c = b + 1; c < a && !this.EdgesAdjacent(this.m_IntersectList[c]);)c++;\n if (c === a) return !1;\n var e = this.m_IntersectList[b];\n this.m_IntersectList[b] = this.m_IntersectList[c];\n this.m_IntersectList[c] = e;\n }\n this.SwapPositionsInSEL(this.m_IntersectList[b].Edge1, this.m_IntersectList[b].Edge2);\n }\n return !0;\n };\n d.Clipper.prototype.ProcessIntersectList = function() {\n for(var a = 0, b = this.m_IntersectList.length; a < b; a++){\n var c = this.m_IntersectList[a];\n this.IntersectEdges(c.Edge1, c.Edge2, c.Pt);\n this.SwapPositionsInAEL(c.Edge1, c.Edge2);\n }\n this.m_IntersectList.length = 0;\n };\n I = function(a) {\n return 0 > a ? Math.ceil(a - 0.5) : Math.round(a);\n };\n J = function(a) {\n return 0 > a ? Math.ceil(a - 0.5) : Math.floor(a + 0.5);\n };\n K = function(a) {\n return 0 > a ? -Math.round(Math.abs(a)) : Math.round(a);\n };\n L = function(a) {\n if (0 > a) return a -= 0.5, -2147483648 > a ? Math.ceil(a) : a | 0;\n a += 0.5;\n return 2147483647 < a ? Math.floor(a) : a | 0;\n };\n d.Clipper.Round = u ? I : G ? K : Q ? L : J;\n d.Clipper.TopX = function(a, b) {\n return b === a.Top.Y ? a.Top.X : a.Bot.X + d.Clipper.Round(a.Dx * (b - a.Bot.Y));\n };\n d.Clipper.prototype.IntersectPoint = function(a, b, c) {\n c.X = 0;\n c.Y = 0;\n if (a.Dx === b.Dx) c.Y = a.Curr.Y, c.X = d.Clipper.TopX(a, c.Y);\n else {\n if (0 === a.Delta.X) {\n if (c.X = a.Bot.X, d.ClipperBase.IsHorizontal(b)) c.Y = b.Bot.Y;\n else {\n var e = b.Bot.Y - b.Bot.X / b.Dx;\n c.Y = d.Clipper.Round(c.X / b.Dx + e);\n }\n } else if (0 === b.Delta.X) {\n if (c.X = b.Bot.X, d.ClipperBase.IsHorizontal(a)) c.Y = a.Bot.Y;\n else {\n var f = a.Bot.Y - a.Bot.X / a.Dx;\n c.Y = d.Clipper.Round(c.X / a.Dx + f);\n }\n } else {\n f = a.Bot.X - a.Bot.Y * a.Dx;\n e = b.Bot.X - b.Bot.Y * b.Dx;\n var g = (e - f) / (a.Dx - b.Dx);\n c.Y = d.Clipper.Round(g);\n c.X = Math.abs(a.Dx) < Math.abs(b.Dx) ? d.Clipper.Round(a.Dx * g + f) : d.Clipper.Round(b.Dx * g + e);\n }\n if (c.Y < a.Top.Y || c.Y < b.Top.Y) {\n if (a.Top.Y > b.Top.Y) return c.Y = a.Top.Y, c.X = d.Clipper.TopX(b, a.Top.Y), c.X < a.Top.X;\n c.Y = b.Top.Y;\n c.X = Math.abs(a.Dx) < Math.abs(b.Dx) ? d.Clipper.TopX(a, c.Y) : d.Clipper.TopX(b, c.Y);\n }\n c.Y > a.Curr.Y && (c.Y = a.Curr.Y, c.X = Math.abs(a.Dx) > Math.abs(b.Dx) ? d.Clipper.TopX(b, c.Y) : d.Clipper.TopX(a, c.Y));\n }\n };\n d.Clipper.prototype.ProcessEdgesAtTopOfScanbeam = function(a) {\n for(var b, c, e = this.m_ActiveEdges; null !== e;){\n if (c = this.IsMaxima(e, a)) c = this.GetMaximaPairEx(e), c = null === c || !d.ClipperBase.IsHorizontal(c);\n if (c) this.StrictlySimple && this.InsertMaxima(e.Top.X), b = e.PrevInAEL, this.DoMaxima(e), e = null === b ? this.m_ActiveEdges : b.NextInAEL;\n else {\n this.IsIntermediate(e, a) && d.ClipperBase.IsHorizontal(e.NextInLML) ? (e = this.UpdateEdgeIntoAEL(e), 0 <= e.OutIdx && this.AddOutPt(e, e.Bot), this.AddEdgeToSEL(e)) : (e.Curr.X = d.Clipper.TopX(e, a), e.Curr.Y = a);\n d.use_xyz && (e.Curr.Z = e.Top.Y === a ? e.Top.Z : e.Bot.Y === a ? e.Bot.Z : 0);\n if (this.StrictlySimple && (b = e.PrevInAEL, 0 <= e.OutIdx && 0 !== e.WindDelta && null !== b && 0 <= b.OutIdx && b.Curr.X === e.Curr.X && 0 !== b.WindDelta)) {\n var f = new d.IntPoint1(e.Curr);\n d.use_xyz && this.SetZ(f, b, e);\n c = this.AddOutPt(b, f);\n b = this.AddOutPt(e, f);\n this.AddJoin(c, b, f);\n }\n e = e.NextInAEL;\n }\n }\n this.ProcessHorizontals();\n this.m_Maxima = null;\n for(e = this.m_ActiveEdges; null !== e;)this.IsIntermediate(e, a) && (c = null, 0 <= e.OutIdx && (c = this.AddOutPt(e, e.Top)), e = this.UpdateEdgeIntoAEL(e), b = e.PrevInAEL, f = e.NextInAEL, null !== b && b.Curr.X === e.Bot.X && b.Curr.Y === e.Bot.Y && null !== c && 0 <= b.OutIdx && b.Curr.Y === b.Top.Y && d.ClipperBase.SlopesEqual5(e.Curr, e.Top, b.Curr, b.Top, this.m_UseFullRange) && 0 !== e.WindDelta && 0 !== b.WindDelta ? (b = this.AddOutPt(ePrev2, e.Bot), this.AddJoin(c, b, e.Top)) : null !== f && f.Curr.X === e.Bot.X && f.Curr.Y === e.Bot.Y && null !== c && 0 <= f.OutIdx && f.Curr.Y === f.Top.Y && d.ClipperBase.SlopesEqual5(e.Curr, e.Top, f.Curr, f.Top, this.m_UseFullRange) && 0 !== e.WindDelta && 0 !== f.WindDelta && (b = this.AddOutPt(f, e.Bot), this.AddJoin(c, b, e.Top))), e = e.NextInAEL;\n };\n d.Clipper.prototype.DoMaxima = function(a) {\n var b = this.GetMaximaPairEx(a);\n if (null === b) 0 <= a.OutIdx && this.AddOutPt(a, a.Top), this.DeleteFromAEL(a);\n else {\n for(var c = a.NextInAEL; null !== c && c !== b;)this.IntersectEdges(a, c, a.Top), this.SwapPositionsInAEL(a, c), c = a.NextInAEL;\n -1 === a.OutIdx && -1 === b.OutIdx ? (this.DeleteFromAEL(a), this.DeleteFromAEL(b)) : 0 <= a.OutIdx && 0 <= b.OutIdx ? (0 <= a.OutIdx && this.AddLocalMaxPoly(a, b, a.Top), this.DeleteFromAEL(a), this.DeleteFromAEL(b)) : d.use_lines && 0 === a.WindDelta ? (0 <= a.OutIdx && (this.AddOutPt(a, a.Top), a.OutIdx = d.ClipperBase.Unassigned), this.DeleteFromAEL(a), 0 <= b.OutIdx && (this.AddOutPt(b, a.Top), b.OutIdx = d.ClipperBase.Unassigned), this.DeleteFromAEL(b)) : d.Error(\"DoMaxima error\");\n }\n };\n d.Clipper.ReversePaths = function(a) {\n for(var b = 0, c = a.length; b < c; b++)a[b].reverse();\n };\n d.Clipper.Orientation = function(a) {\n return 0 <= d.Clipper.Area(a);\n };\n d.Clipper.prototype.PointCount = function(a) {\n if (null === a) return 0;\n var b = 0, c = a;\n do b++, c = c.Next;\n while (c !== a);\n return b;\n };\n d.Clipper.prototype.BuildResult = function(a) {\n d.Clear(a);\n for(var b = 0, c = this.m_PolyOuts.length; b < c; b++){\n var e = this.m_PolyOuts[b];\n if (null !== e.Pts) {\n e = e.Pts.Prev;\n var f = this.PointCount(e);\n if (!(2 > f)) {\n for(var g = Array(f), h = 0; h < f; h++)g[h] = e.Pt, e = e.Prev;\n a.push(g);\n }\n }\n }\n };\n d.Clipper.prototype.BuildResult2 = function(a) {\n a.Clear();\n for(var b = 0, c = this.m_PolyOuts.length; b < c; b++){\n var e = this.m_PolyOuts[b];\n var f = this.PointCount(e.Pts);\n if (!(e.IsOpen && 2 > f || !e.IsOpen && 3 > f)) {\n this.FixHoleLinkage(e);\n var g = new d.PolyNode();\n a.m_AllPolys.push(g);\n e.PolyNode = g;\n g.m_polygon.length = f;\n e = e.Pts.Prev;\n for(var h = 0; h < f; h++)g.m_polygon[h] = e.Pt, e = e.Prev;\n }\n }\n b = 0;\n for(c = this.m_PolyOuts.length; b < c; b++)e = this.m_PolyOuts[b], null !== e.PolyNode && (e.IsOpen ? (e.PolyNode.IsOpen = !0, a.AddChild(e.PolyNode)) : null !== e.FirstLeft && null !== e.FirstLeft.PolyNode ? e.FirstLeft.PolyNode.AddChild(e.PolyNode) : a.AddChild(e.PolyNode));\n };\n d.Clipper.prototype.FixupOutPolyline = function(a) {\n for(var b = a.Pts, c = b.Prev; b !== c;)if (b = b.Next, d.IntPoint.op_Equality(b.Pt, b.Prev.Pt)) {\n b === c && (c = b.Prev);\n var e = b.Prev;\n e.Next = b.Next;\n b = b.Next.Prev = e;\n }\n b === b.Prev && (a.Pts = null);\n };\n d.Clipper.prototype.FixupOutPolygon = function(a) {\n var b = null;\n a.BottomPt = null;\n for(var c = a.Pts, e = this.PreserveCollinear || this.StrictlySimple;;){\n if (c.Prev === c || c.Prev === c.Next) {\n a.Pts = null;\n return;\n }\n if (d.IntPoint.op_Equality(c.Pt, c.Next.Pt) || d.IntPoint.op_Equality(c.Pt, c.Prev.Pt) || d.ClipperBase.SlopesEqual4(c.Prev.Pt, c.Pt, c.Next.Pt, this.m_UseFullRange) && (!e || !this.Pt2IsBetweenPt1AndPt3(c.Prev.Pt, c.Pt, c.Next.Pt))) b = null, c.Prev.Next = c.Next, c = c.Next.Prev = c.Prev;\n else if (c === b) break;\n else null === b && (b = c), c = c.Next;\n }\n a.Pts = c;\n };\n d.Clipper.prototype.DupOutPt = function(a, b) {\n var c = new d.OutPt();\n c.Pt.X = a.Pt.X;\n c.Pt.Y = a.Pt.Y;\n d.use_xyz && (c.Pt.Z = a.Pt.Z);\n c.Idx = a.Idx;\n b ? (c.Next = a.Next, c.Prev = a, a.Next.Prev = c, a.Next = c) : (c.Prev = a.Prev, c.Next = a, a.Prev.Next = c, a.Prev = c);\n return c;\n };\n d.Clipper.prototype.GetOverlap = function(a, b, c, e, d) {\n a < b ? c < e ? (d.Left = Math.max(a, c), d.Right = Math.min(b, e)) : (d.Left = Math.max(a, e), d.Right = Math.min(b, c)) : c < e ? (d.Left = Math.max(b, c), d.Right = Math.min(a, e)) : (d.Left = Math.max(b, e), d.Right = Math.min(a, c));\n return d.Left < d.Right;\n };\n d.Clipper.prototype.JoinHorz = function(a, b, c, e, f, g) {\n var h = a.Pt.X > b.Pt.X ? d.Direction.dRightToLeft : d.Direction.dLeftToRight;\n e = c.Pt.X > e.Pt.X ? d.Direction.dRightToLeft : d.Direction.dLeftToRight;\n if (h === e) return !1;\n if (h === d.Direction.dLeftToRight) {\n for(; a.Next.Pt.X <= f.X && a.Next.Pt.X >= a.Pt.X && a.Next.Pt.Y === f.Y;)a = a.Next;\n g && a.Pt.X !== f.X && (a = a.Next);\n b = this.DupOutPt(a, !g);\n d.IntPoint.op_Inequality(b.Pt, f) && (a = b, a.Pt.X = f.X, a.Pt.Y = f.Y, d.use_xyz && (a.Pt.Z = f.Z), b = this.DupOutPt(a, !g));\n } else {\n for(; a.Next.Pt.X >= f.X && a.Next.Pt.X <= a.Pt.X && a.Next.Pt.Y === f.Y;)a = a.Next;\n g || a.Pt.X === f.X || (a = a.Next);\n b = this.DupOutPt(a, g);\n d.IntPoint.op_Inequality(b.Pt, f) && (a = b, a.Pt.X = f.X, a.Pt.Y = f.Y, d.use_xyz && (a.Pt.Z = f.Z), b = this.DupOutPt(a, g));\n }\n if (e === d.Direction.dLeftToRight) {\n for(; c.Next.Pt.X <= f.X && c.Next.Pt.X >= c.Pt.X && c.Next.Pt.Y === f.Y;)c = c.Next;\n g && c.Pt.X !== f.X && (c = c.Next);\n e = this.DupOutPt(c, !g);\n d.IntPoint.op_Inequality(e.Pt, f) && (c = e, c.Pt.X = f.X, c.Pt.Y = f.Y, d.use_xyz && (c.Pt.Z = f.Z), e = this.DupOutPt(c, !g));\n } else {\n for(; c.Next.Pt.X >= f.X && c.Next.Pt.X <= c.Pt.X && c.Next.Pt.Y === f.Y;)c = c.Next;\n g || c.Pt.X === f.X || (c = c.Next);\n e = this.DupOutPt(c, g);\n d.IntPoint.op_Inequality(e.Pt, f) && (c = e, c.Pt.X = f.X, c.Pt.Y = f.Y, d.use_xyz && (c.Pt.Z = f.Z), e = this.DupOutPt(c, g));\n }\n h === d.Direction.dLeftToRight === g ? (a.Prev = c, c.Next = a, b.Next = e, e.Prev = b) : (a.Next = c, c.Prev = a, b.Prev = e, e.Next = b);\n return !0;\n };\n d.Clipper.prototype.JoinPoints = function(a, b, c) {\n var e = a.OutPt1, f;\n new d.OutPt();\n var g = a.OutPt2, h;\n new d.OutPt();\n if ((h = a.OutPt1.Pt.Y === a.OffPt.Y) && d.IntPoint.op_Equality(a.OffPt, a.OutPt1.Pt) && d.IntPoint.op_Equality(a.OffPt, a.OutPt2.Pt)) {\n if (b !== c) return !1;\n for(f = a.OutPt1.Next; f !== e && d.IntPoint.op_Equality(f.Pt, a.OffPt);)f = f.Next;\n f = f.Pt.Y > a.OffPt.Y;\n for(h = a.OutPt2.Next; h !== g && d.IntPoint.op_Equality(h.Pt, a.OffPt);)h = h.Next;\n if (f === h.Pt.Y > a.OffPt.Y) return !1;\n f ? (f = this.DupOutPt(e, !1), h = this.DupOutPt(g, !0), e.Prev = g, g.Next = e, f.Next = h, h.Prev = f) : (f = this.DupOutPt(e, !0), h = this.DupOutPt(g, !1), e.Next = g, g.Prev = e, f.Prev = h, h.Next = f);\n a.OutPt1 = e;\n a.OutPt2 = f;\n return !0;\n }\n if (h) {\n for(f = e; e.Prev.Pt.Y === e.Pt.Y && e.Prev !== f && e.Prev !== g;)e = e.Prev;\n for(; f.Next.Pt.Y === f.Pt.Y && f.Next !== e && f.Next !== g;)f = f.Next;\n if (f.Next === e || f.Next === g) return !1;\n for(h = g; g.Prev.Pt.Y === g.Pt.Y && g.Prev !== h && g.Prev !== f;)g = g.Prev;\n for(; h.Next.Pt.Y === h.Pt.Y && h.Next !== g && h.Next !== e;)h = h.Next;\n if (h.Next === g || h.Next === e) return !1;\n c = {\n Left: null,\n Right: null\n };\n if (!this.GetOverlap(e.Pt.X, f.Pt.X, g.Pt.X, h.Pt.X, c)) return !1;\n b = c.Left;\n var k = c.Right;\n c = new d.IntPoint0();\n e.Pt.X >= b && e.Pt.X <= k ? (c.X = e.Pt.X, c.Y = e.Pt.Y, d.use_xyz && (c.Z = e.Pt.Z), b = e.Pt.X > f.Pt.X) : g.Pt.X >= b && g.Pt.X <= k ? (c.X = g.Pt.X, c.Y = g.Pt.Y, d.use_xyz && (c.Z = g.Pt.Z), b = g.Pt.X > h.Pt.X) : f.Pt.X >= b && f.Pt.X <= k ? (c.X = f.Pt.X, c.Y = f.Pt.Y, d.use_xyz && (c.Z = f.Pt.Z), b = f.Pt.X > e.Pt.X) : (c.X = h.Pt.X, c.Y = h.Pt.Y, d.use_xyz && (c.Z = h.Pt.Z), b = h.Pt.X > g.Pt.X);\n a.OutPt1 = e;\n a.OutPt2 = g;\n return this.JoinHorz(e, f, g, h, c, b);\n }\n for(f = e.Next; d.IntPoint.op_Equality(f.Pt, e.Pt) && f !== e;)f = f.Next;\n if (k = f.Pt.Y > e.Pt.Y || !d.ClipperBase.SlopesEqual4(e.Pt, f.Pt, a.OffPt, this.m_UseFullRange)) {\n for(f = e.Prev; d.IntPoint.op_Equality(f.Pt, e.Pt) && f !== e;)f = f.Prev;\n if (f.Pt.Y > e.Pt.Y || !d.ClipperBase.SlopesEqual4(e.Pt, f.Pt, a.OffPt, this.m_UseFullRange)) return !1;\n }\n for(h = g.Next; d.IntPoint.op_Equality(h.Pt, g.Pt) && h !== g;)h = h.Next;\n var l = h.Pt.Y > g.Pt.Y || !d.ClipperBase.SlopesEqual4(g.Pt, h.Pt, a.OffPt, this.m_UseFullRange);\n if (l) {\n for(h = g.Prev; d.IntPoint.op_Equality(h.Pt, g.Pt) && h !== g;)h = h.Prev;\n if (h.Pt.Y > g.Pt.Y || !d.ClipperBase.SlopesEqual4(g.Pt, h.Pt, a.OffPt, this.m_UseFullRange)) return !1;\n }\n if (f === e || h === g || f === h || b === c && k === l) return !1;\n k ? (f = this.DupOutPt(e, !1), h = this.DupOutPt(g, !0), e.Prev = g, g.Next = e, f.Next = h, h.Prev = f) : (f = this.DupOutPt(e, !0), h = this.DupOutPt(g, !1), e.Next = g, g.Prev = e, f.Prev = h, h.Next = f);\n a.OutPt1 = e;\n a.OutPt2 = f;\n return !0;\n };\n d.Clipper.GetBounds = function(a) {\n for(var b = 0, c = a.length; b < c && 0 === a[b].length;)b++;\n if (b === c) return new d.IntRect(0, 0, 0, 0);\n var e = new d.IntRect();\n e.left = a[b][0].X;\n e.right = e.left;\n e.top = a[b][0].Y;\n for(e.bottom = e.top; b < c; b++)for(var f = 0, g = a[b].length; f < g; f++)a[b][f].X < e.left ? e.left = a[b][f].X : a[b][f].X > e.right && (e.right = a[b][f].X), a[b][f].Y < e.top ? e.top = a[b][f].Y : a[b][f].Y > e.bottom && (e.bottom = a[b][f].Y);\n return e;\n };\n d.Clipper.prototype.GetBounds2 = function(a) {\n var b = a, c = new d.IntRect();\n c.left = a.Pt.X;\n c.right = a.Pt.X;\n c.top = a.Pt.Y;\n c.bottom = a.Pt.Y;\n for(a = a.Next; a !== b;)a.Pt.X < c.left && (c.left = a.Pt.X), a.Pt.X > c.right && (c.right = a.Pt.X), a.Pt.Y < c.top && (c.top = a.Pt.Y), a.Pt.Y > c.bottom && (c.bottom = a.Pt.Y), a = a.Next;\n return c;\n };\n d.Clipper.PointInPolygon = function(a, b) {\n var c = 0, e = b.length;\n if (3 > e) return 0;\n for(var d = b[0], g = 1; g <= e; ++g){\n var h = g === e ? b[0] : b[g];\n if (h.Y === a.Y && (h.X === a.X || d.Y === a.Y && h.X > a.X === d.X < a.X)) return -1;\n if (d.Y < a.Y !== h.Y < a.Y) {\n if (d.X >= a.X) {\n if (h.X > a.X) c = 1 - c;\n else {\n var k = (d.X - a.X) * (h.Y - a.Y) - (h.X - a.X) * (d.Y - a.Y);\n if (0 === k) return -1;\n 0 < k === h.Y > d.Y && (c = 1 - c);\n }\n } else if (h.X > a.X) {\n k = (d.X - a.X) * (h.Y - a.Y) - (h.X - a.X) * (d.Y - a.Y);\n if (0 === k) return -1;\n 0 < k === h.Y > d.Y && (c = 1 - c);\n }\n }\n d = h;\n }\n return c;\n };\n d.Clipper.prototype.PointInPolygon = function(a, b) {\n var c = 0, d = b, f = a.X, g = a.Y;\n var h = b.Pt.X;\n var k = b.Pt.Y;\n do {\n b = b.Next;\n var l = b.Pt.X, n = b.Pt.Y;\n if (n === g && (l === f || k === g && l > f === h < f)) return -1;\n if (k < g !== n < g) {\n if (h >= f) {\n if (l > f) c = 1 - c;\n else {\n h = (h - f) * (n - g) - (l - f) * (k - g);\n if (0 === h) return -1;\n 0 < h === n > k && (c = 1 - c);\n }\n } else if (l > f) {\n h = (h - f) * (n - g) - (l - f) * (k - g);\n if (0 === h) return -1;\n 0 < h === n > k && (c = 1 - c);\n }\n }\n h = l;\n k = n;\n }while (d !== b);\n return c;\n };\n d.Clipper.prototype.Poly2ContainsPoly1 = function(a, b) {\n var c = a;\n do {\n var d = this.PointInPolygon(c.Pt, b);\n if (0 <= d) return 0 < d;\n c = c.Next;\n }while (c !== a);\n return !0;\n };\n d.Clipper.prototype.FixupFirstLefts1 = function(a, b) {\n for(var c, e, f = 0, g = this.m_PolyOuts.length; f < g; f++)c = this.m_PolyOuts[f], e = d.Clipper.ParseFirstLeft(c.FirstLeft), null !== c.Pts && e === a && this.Poly2ContainsPoly1(c.Pts, b.Pts) && (c.FirstLeft = b);\n };\n d.Clipper.prototype.FixupFirstLefts2 = function(a, b) {\n for(var c = b.FirstLeft, e, f, g = 0, h = this.m_PolyOuts.length; g < h; g++)if (e = this.m_PolyOuts[g], null !== e.Pts && e !== b && e !== a && (f = d.Clipper.ParseFirstLeft(e.FirstLeft), f === c || f === a || f === b)) {\n if (this.Poly2ContainsPoly1(e.Pts, a.Pts)) e.FirstLeft = a;\n else if (this.Poly2ContainsPoly1(e.Pts, b.Pts)) e.FirstLeft = b;\n else if (e.FirstLeft === a || e.FirstLeft === b) e.FirstLeft = c;\n }\n };\n d.Clipper.prototype.FixupFirstLefts3 = function(a, b) {\n for(var c, e, f = 0, g = this.m_PolyOuts.length; f < g; f++)c = this.m_PolyOuts[f], e = d.Clipper.ParseFirstLeft(c.FirstLeft), null !== c.Pts && e === a && (c.FirstLeft = b);\n };\n d.Clipper.ParseFirstLeft = function(a) {\n for(; null !== a && null === a.Pts;)a = a.FirstLeft;\n return a;\n };\n d.Clipper.prototype.JoinCommonEdges = function() {\n for(var a = 0, b = this.m_Joins.length; a < b; a++){\n var c = this.m_Joins[a], d = this.GetOutRec(c.OutPt1.Idx), f = this.GetOutRec(c.OutPt2.Idx);\n if (null !== d.Pts && null !== f.Pts && !d.IsOpen && !f.IsOpen) {\n var g = d === f ? d : this.OutRec1RightOfOutRec2(d, f) ? f : this.OutRec1RightOfOutRec2(f, d) ? d : this.GetLowermostRec(d, f);\n this.JoinPoints(c, d, f) && (d === f ? (d.Pts = c.OutPt1, d.BottomPt = null, f = this.CreateOutRec(), f.Pts = c.OutPt2, this.UpdateOutPtIdxs(f), this.Poly2ContainsPoly1(f.Pts, d.Pts) ? (f.IsHole = !d.IsHole, f.FirstLeft = d, this.m_UsingPolyTree && this.FixupFirstLefts2(f, d), (f.IsHole ^ this.ReverseSolution) == 0 < this.Area$1(f) && this.ReversePolyPtLinks(f.Pts)) : this.Poly2ContainsPoly1(d.Pts, f.Pts) ? (f.IsHole = d.IsHole, d.IsHole = !f.IsHole, f.FirstLeft = d.FirstLeft, d.FirstLeft = f, this.m_UsingPolyTree && this.FixupFirstLefts2(d, f), (d.IsHole ^ this.ReverseSolution) == 0 < this.Area$1(d) && this.ReversePolyPtLinks(d.Pts)) : (f.IsHole = d.IsHole, f.FirstLeft = d.FirstLeft, this.m_UsingPolyTree && this.FixupFirstLefts1(d, f))) : (f.Pts = null, f.BottomPt = null, f.Idx = d.Idx, d.IsHole = g.IsHole, g === f && (d.FirstLeft = f.FirstLeft), f.FirstLeft = d, this.m_UsingPolyTree && this.FixupFirstLefts3(f, d)));\n }\n }\n };\n d.Clipper.prototype.UpdateOutPtIdxs = function(a) {\n var b = a.Pts;\n do b.Idx = a.Idx, b = b.Prev;\n while (b !== a.Pts);\n };\n d.Clipper.prototype.DoSimplePolygons = function() {\n for(var a = 0; a < this.m_PolyOuts.length;){\n var b = this.m_PolyOuts[a++], c = b.Pts;\n if (null !== c && !b.IsOpen) do {\n for(var e = c.Next; e !== b.Pts;){\n if (d.IntPoint.op_Equality(c.Pt, e.Pt) && e.Next !== c && e.Prev !== c) {\n var f = c.Prev, g = e.Prev;\n c.Prev = g;\n g.Next = c;\n e.Prev = f;\n f.Next = e;\n b.Pts = c;\n f = this.CreateOutRec();\n f.Pts = e;\n this.UpdateOutPtIdxs(f);\n this.Poly2ContainsPoly1(f.Pts, b.Pts) ? (f.IsHole = !b.IsHole, f.FirstLeft = b, this.m_UsingPolyTree && this.FixupFirstLefts2(f, b)) : this.Poly2ContainsPoly1(b.Pts, f.Pts) ? (f.IsHole = b.IsHole, b.IsHole = !f.IsHole, f.FirstLeft = b.FirstLeft, b.FirstLeft = f, this.m_UsingPolyTree && this.FixupFirstLefts2(b, f)) : (f.IsHole = b.IsHole, f.FirstLeft = b.FirstLeft, this.m_UsingPolyTree && this.FixupFirstLefts1(b, f));\n e = c;\n }\n e = e.Next;\n }\n c = c.Next;\n }while (c !== b.Pts);\n }\n };\n d.Clipper.Area = function(a) {\n if (!Array.isArray(a)) return 0;\n var b = a.length;\n if (3 > b) return 0;\n for(var c = 0, d = 0, f = b - 1; d < b; ++d)c += (a[f].X + a[d].X) * (a[f].Y - a[d].Y), f = d;\n return 0.5 * -c;\n };\n d.Clipper.prototype.Area = function(a) {\n var b = a;\n if (null === a) return 0;\n var c = 0;\n do c += (a.Prev.Pt.X + a.Pt.X) * (a.Prev.Pt.Y - a.Pt.Y), a = a.Next;\n while (a !== b);\n return 0.5 * c;\n };\n d.Clipper.prototype.Area$1 = function(a) {\n return this.Area(a.Pts);\n };\n d.Clipper.SimplifyPolygon = function(a, b) {\n var c = [], e = new d.Clipper(0);\n e.StrictlySimple = !0;\n e.AddPath(a, d.PolyType.ptSubject, !0);\n e.Execute(d.ClipType.ctUnion, c, b, b);\n return c;\n };\n d.Clipper.SimplifyPolygons = function(a, b) {\n \"undefined\" === typeof b && (b = d.PolyFillType.pftEvenOdd);\n var c = [], e = new d.Clipper(0);\n e.StrictlySimple = !0;\n e.AddPaths(a, d.PolyType.ptSubject, !0);\n e.Execute(d.ClipType.ctUnion, c, b, b);\n return c;\n };\n d.Clipper.DistanceSqrd = function(a, b) {\n var c = a.X - b.X, d = a.Y - b.Y;\n return c * c + d * d;\n };\n d.Clipper.DistanceFromLineSqrd = function(a, b, c) {\n var d = b.Y - c.Y;\n c = c.X - b.X;\n b = d * b.X + c * b.Y;\n b = d * a.X + c * a.Y - b;\n return b * b / (d * d + c * c);\n };\n d.Clipper.SlopesNearCollinear = function(a, b, c, e) {\n return Math.abs(a.X - b.X) > Math.abs(a.Y - b.Y) ? a.X > b.X === a.X < c.X ? d.Clipper.DistanceFromLineSqrd(a, b, c) < e : b.X > a.X === b.X < c.X ? d.Clipper.DistanceFromLineSqrd(b, a, c) < e : d.Clipper.DistanceFromLineSqrd(c, a, b) < e : a.Y > b.Y === a.Y < c.Y ? d.Clipper.DistanceFromLineSqrd(a, b, c) < e : b.Y > a.Y === b.Y < c.Y ? d.Clipper.DistanceFromLineSqrd(b, a, c) < e : d.Clipper.DistanceFromLineSqrd(c, a, b) < e;\n };\n d.Clipper.PointsAreClose = function(a, b, c) {\n var d = a.X - b.X;\n a = a.Y - b.Y;\n return d * d + a * a <= c;\n };\n d.Clipper.ExcludeOp = function(a) {\n var b = a.Prev;\n b.Next = a.Next;\n a.Next.Prev = b;\n b.Idx = 0;\n return b;\n };\n d.Clipper.CleanPolygon = function(a, b) {\n \"undefined\" === typeof b && (b = 1.415);\n var c = a.length;\n if (0 === c) return [];\n for(var e = Array(c), f = 0; f < c; ++f)e[f] = new d.OutPt();\n for(f = 0; f < c; ++f)e[f].Pt = a[f], e[f].Next = e[(f + 1) % c], e[f].Next.Prev = e[f], e[f].Idx = 0;\n f = b * b;\n for(e = e[0]; 0 === e.Idx && e.Next !== e.Prev;)d.Clipper.PointsAreClose(e.Pt, e.Prev.Pt, f) ? (e = d.Clipper.ExcludeOp(e), c--) : d.Clipper.PointsAreClose(e.Prev.Pt, e.Next.Pt, f) ? (d.Clipper.ExcludeOp(e.Next), e = d.Clipper.ExcludeOp(e), c -= 2) : d.Clipper.SlopesNearCollinear(e.Prev.Pt, e.Pt, e.Next.Pt, f) ? (e = d.Clipper.ExcludeOp(e), c--) : (e.Idx = 1, e = e.Next);\n 3 > c && (c = 0);\n var g = Array(c);\n for(f = 0; f < c; ++f)g[f] = new d.IntPoint1(e.Pt), e = e.Next;\n return g;\n };\n d.Clipper.CleanPolygons = function(a, b) {\n for(var c = Array(a.length), e = 0, f = a.length; e < f; e++)c[e] = d.Clipper.CleanPolygon(a[e], b);\n return c;\n };\n d.Clipper.Minkowski = function(a, b, c, e) {\n e = e ? 1 : 0;\n var f = a.length, g = b.length, h = [];\n if (c) for(c = 0; c < g; c++){\n var k = Array(f);\n for(var l = 0, n = a.length, r = a[l]; l < n; l++, r = a[l])k[l] = new d.IntPoint2(b[c].X + r.X, b[c].Y + r.Y);\n h.push(k);\n }\n else for(c = 0; c < g; c++){\n k = Array(f);\n l = 0;\n n = a.length;\n for(r = a[l]; l < n; l++, r = a[l])k[l] = new d.IntPoint2(b[c].X - r.X, b[c].Y - r.Y);\n h.push(k);\n }\n a = [];\n for(c = 0; c < g - 1 + e; c++)for(l = 0; l < f; l++)b = [], b.push(h[c % g][l % f]), b.push(h[(c + 1) % g][l % f]), b.push(h[(c + 1) % g][(l + 1) % f]), b.push(h[c % g][(l + 1) % f]), d.Clipper.Orientation(b) || b.reverse(), a.push(b);\n return a;\n };\n d.Clipper.MinkowskiSum = function(a, b, c) {\n if (b[0] instanceof Array) {\n var e = b;\n var f = new d.Paths();\n b = new d.Clipper();\n for(var g = 0; g < e.length; ++g){\n var h = d.Clipper.Minkowski(a, e[g], !0, c);\n b.AddPaths(h, d.PolyType.ptSubject, !0);\n c && (h = d.Clipper.TranslatePath(e[g], a[0]), b.AddPath(h, d.PolyType.ptClip, !0));\n }\n b.Execute(d.ClipType.ctUnion, f, d.PolyFillType.pftNonZero, d.PolyFillType.pftNonZero);\n return f;\n }\n e = d.Clipper.Minkowski(a, b, !0, c);\n b = new d.Clipper();\n b.AddPaths(e, d.PolyType.ptSubject, !0);\n b.Execute(d.ClipType.ctUnion, e, d.PolyFillType.pftNonZero, d.PolyFillType.pftNonZero);\n return e;\n };\n d.Clipper.TranslatePath = function(a, b) {\n for(var c = new d.Path(), e = 0; e < a.length; e++)c.push(new d.IntPoint2(a[e].X + b.X, a[e].Y + b.Y));\n return c;\n };\n d.Clipper.MinkowskiDiff = function(a, b) {\n var c = d.Clipper.Minkowski(a, b, !1, !0), e = new d.Clipper();\n e.AddPaths(c, d.PolyType.ptSubject, !0);\n e.Execute(d.ClipType.ctUnion, c, d.PolyFillType.pftNonZero, d.PolyFillType.pftNonZero);\n return c;\n };\n d.Clipper.PolyTreeToPaths = function(a) {\n var b = [];\n d.Clipper.AddPolyNodeToPaths(a, d.Clipper.NodeType.ntAny, b);\n return b;\n };\n d.Clipper.AddPolyNodeToPaths = function(a, b, c) {\n var e = !0;\n switch(b){\n case d.Clipper.NodeType.ntOpen:\n return;\n case d.Clipper.NodeType.ntClosed:\n e = !a.IsOpen;\n }\n 0 < a.m_polygon.length && e && c.push(a.m_polygon);\n e = 0;\n a = a.Childs();\n for(var f = a.length, g = a[e]; e < f; e++, g = a[e])d.Clipper.AddPolyNodeToPaths(g, b, c);\n };\n d.Clipper.OpenPathsFromPolyTree = function(a) {\n for(var b = new d.Paths(), c = 0, e = a.ChildCount(); c < e; c++)a.Childs()[c].IsOpen && b.push(a.Childs()[c].m_polygon);\n return b;\n };\n d.Clipper.ClosedPathsFromPolyTree = function(a) {\n var b = new d.Paths();\n d.Clipper.AddPolyNodeToPaths(a, d.Clipper.NodeType.ntClosed, b);\n return b;\n };\n v(d.Clipper, d.ClipperBase);\n d.Clipper.NodeType = {\n ntAny: 0,\n ntOpen: 1,\n ntClosed: 2\n };\n d.ClipperOffset = function(a, b) {\n \"undefined\" === typeof a && (a = 2);\n \"undefined\" === typeof b && (b = d.ClipperOffset.def_arc_tolerance);\n this.m_destPolys = new d.Paths();\n this.m_srcPoly = new d.Path();\n this.m_destPoly = new d.Path();\n this.m_normals = [];\n this.m_StepsPerRad = this.m_miterLim = this.m_cos = this.m_sin = this.m_sinA = this.m_delta = 0;\n this.m_lowest = new d.IntPoint0();\n this.m_polyNodes = new d.PolyNode();\n this.MiterLimit = a;\n this.ArcTolerance = b;\n this.m_lowest.X = -1;\n };\n d.ClipperOffset.two_pi = 6.28318530717959;\n d.ClipperOffset.def_arc_tolerance = 0.25;\n d.ClipperOffset.prototype.Clear = function() {\n d.Clear(this.m_polyNodes.Childs());\n this.m_lowest.X = -1;\n };\n d.ClipperOffset.Round = d.Clipper.Round;\n d.ClipperOffset.prototype.AddPath = function(a, b, c) {\n var e = a.length - 1;\n if (!(0 > e)) {\n var f = new d.PolyNode();\n f.m_jointype = b;\n f.m_endtype = c;\n if (c === d.EndType.etClosedLine || c === d.EndType.etClosedPolygon) for(; 0 < e && d.IntPoint.op_Equality(a[0], a[e]);)e--;\n f.m_polygon.push(a[0]);\n var g = 0;\n b = 0;\n for(var h = 1; h <= e; h++)d.IntPoint.op_Inequality(f.m_polygon[g], a[h]) && (g++, f.m_polygon.push(a[h]), a[h].Y > f.m_polygon[b].Y || a[h].Y === f.m_polygon[b].Y && a[h].X < f.m_polygon[b].X) && (b = g);\n if (!(c === d.EndType.etClosedPolygon && 2 > g) && (this.m_polyNodes.AddChild(f), c === d.EndType.etClosedPolygon)) {\n if (0 > this.m_lowest.X) this.m_lowest = new d.IntPoint2(this.m_polyNodes.ChildCount() - 1, b);\n else if (a = this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon[this.m_lowest.Y], f.m_polygon[b].Y > a.Y || f.m_polygon[b].Y === a.Y && f.m_polygon[b].X < a.X) this.m_lowest = new d.IntPoint2(this.m_polyNodes.ChildCount() - 1, b);\n }\n }\n };\n d.ClipperOffset.prototype.AddPaths = function(a, b, c) {\n for(var d = 0, f = a.length; d < f; d++)this.AddPath(a[d], b, c);\n };\n d.ClipperOffset.prototype.FixOrientations = function() {\n if (0 <= this.m_lowest.X && !d.Clipper.Orientation(this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon)) for(var a = 0; a < this.m_polyNodes.ChildCount(); a++){\n var b = this.m_polyNodes.Childs()[a];\n (b.m_endtype === d.EndType.etClosedPolygon || b.m_endtype === d.EndType.etClosedLine && d.Clipper.Orientation(b.m_polygon)) && b.m_polygon.reverse();\n }\n else for(a = 0; a < this.m_polyNodes.ChildCount(); a++)b = this.m_polyNodes.Childs()[a], b.m_endtype !== d.EndType.etClosedLine || d.Clipper.Orientation(b.m_polygon) || b.m_polygon.reverse();\n };\n d.ClipperOffset.GetUnitNormal = function(a, b) {\n var c = b.X - a.X, e = b.Y - a.Y;\n if (0 === c && 0 === e) return new d.DoublePoint2(0, 0);\n var f = 1 / Math.sqrt(c * c + e * e);\n return new d.DoublePoint2(e * f, -(c * f));\n };\n d.ClipperOffset.prototype.DoOffset = function(a) {\n var b;\n this.m_destPolys = [];\n this.m_delta = a;\n if (d.ClipperBase.near_zero(a)) for(var c = 0; c < this.m_polyNodes.ChildCount(); c++){\n var e = this.m_polyNodes.Childs()[c];\n e.m_endtype === d.EndType.etClosedPolygon && this.m_destPolys.push(e.m_polygon);\n }\n else {\n this.m_miterLim = 2 < this.MiterLimit ? 2 / (this.MiterLimit * this.MiterLimit) : 0.5;\n var f = 3.14159265358979 / Math.acos(1 - (0 >= this.ArcTolerance ? d.ClipperOffset.def_arc_tolerance : this.ArcTolerance > Math.abs(a) * d.ClipperOffset.def_arc_tolerance ? Math.abs(a) * d.ClipperOffset.def_arc_tolerance : this.ArcTolerance) / Math.abs(a));\n this.m_sin = Math.sin(d.ClipperOffset.two_pi / f);\n this.m_cos = Math.cos(d.ClipperOffset.two_pi / f);\n this.m_StepsPerRad = f / d.ClipperOffset.two_pi;\n 0 > a && (this.m_sin = -this.m_sin);\n for(c = 0; c < this.m_polyNodes.ChildCount(); c++){\n e = this.m_polyNodes.Childs()[c];\n this.m_srcPoly = e.m_polygon;\n var g = this.m_srcPoly.length;\n if (!(0 === g || 0 >= a && (3 > g || e.m_endtype !== d.EndType.etClosedPolygon))) {\n this.m_destPoly = [];\n if (1 === g) {\n if (e.m_jointype === d.JoinType.jtRound) for(g = 1, e = 0, b = 1; b <= f; b++){\n this.m_destPoly.push(new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[0].X + g * a), d.ClipperOffset.Round(this.m_srcPoly[0].Y + e * a)));\n var h = g;\n g = g * this.m_cos - this.m_sin * e;\n e = h * this.m_sin + e * this.m_cos;\n }\n else for(e = g = -1, b = 0; 4 > b; ++b)this.m_destPoly.push(new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[0].X + g * a), d.ClipperOffset.Round(this.m_srcPoly[0].Y + e * a))), 0 > g ? g = 1 : 0 > e ? e = 1 : g = -1;\n } else {\n for(b = this.m_normals.length = 0; b < g - 1; b++)this.m_normals.push(d.ClipperOffset.GetUnitNormal(this.m_srcPoly[b], this.m_srcPoly[b + 1]));\n e.m_endtype === d.EndType.etClosedLine || e.m_endtype === d.EndType.etClosedPolygon ? this.m_normals.push(d.ClipperOffset.GetUnitNormal(this.m_srcPoly[g - 1], this.m_srcPoly[0])) : this.m_normals.push(new d.DoublePoint1(this.m_normals[g - 2]));\n if (e.m_endtype === d.EndType.etClosedPolygon) for(h = g - 1, b = 0; b < g; b++)h = this.OffsetPoint(b, h, e.m_jointype);\n else if (e.m_endtype === d.EndType.etClosedLine) {\n h = g - 1;\n for(b = 0; b < g; b++)h = this.OffsetPoint(b, h, e.m_jointype);\n this.m_destPolys.push(this.m_destPoly);\n this.m_destPoly = [];\n h = this.m_normals[g - 1];\n for(b = g - 1; 0 < b; b--)this.m_normals[b] = new d.DoublePoint2(-this.m_normals[b - 1].X, -this.m_normals[b - 1].Y);\n this.m_normals[0] = new d.DoublePoint2(-h.X, -h.Y);\n h = 0;\n for(b = g - 1; 0 <= b; b--)h = this.OffsetPoint(b, h, e.m_jointype);\n } else {\n h = 0;\n for(b = 1; b < g - 1; ++b)h = this.OffsetPoint(b, h, e.m_jointype);\n e.m_endtype === d.EndType.etOpenButt ? (b = g - 1, h = new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[b].X + this.m_normals[b].X * a), d.ClipperOffset.Round(this.m_srcPoly[b].Y + this.m_normals[b].Y * a)), this.m_destPoly.push(h), h = new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[b].X - this.m_normals[b].X * a), d.ClipperOffset.Round(this.m_srcPoly[b].Y - this.m_normals[b].Y * a)), this.m_destPoly.push(h)) : (b = g - 1, h = g - 2, this.m_sinA = 0, this.m_normals[b] = new d.DoublePoint2(-this.m_normals[b].X, -this.m_normals[b].Y), e.m_endtype === d.EndType.etOpenSquare ? this.DoSquare(b, h) : this.DoRound(b, h));\n for(b = g - 1; 0 < b; b--)this.m_normals[b] = new d.DoublePoint2(-this.m_normals[b - 1].X, -this.m_normals[b - 1].Y);\n this.m_normals[0] = new d.DoublePoint2(-this.m_normals[1].X, -this.m_normals[1].Y);\n h = g - 1;\n for(b = h - 1; 0 < b; --b)h = this.OffsetPoint(b, h, e.m_jointype);\n e.m_endtype === d.EndType.etOpenButt ? (h = new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[0].X - this.m_normals[0].X * a), d.ClipperOffset.Round(this.m_srcPoly[0].Y - this.m_normals[0].Y * a)), this.m_destPoly.push(h), h = new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[0].X + this.m_normals[0].X * a), d.ClipperOffset.Round(this.m_srcPoly[0].Y + this.m_normals[0].Y * a)), this.m_destPoly.push(h)) : (this.m_sinA = 0, e.m_endtype === d.EndType.etOpenSquare ? this.DoSquare(0, 1) : this.DoRound(0, 1));\n }\n }\n this.m_destPolys.push(this.m_destPoly);\n }\n }\n }\n };\n d.ClipperOffset.prototype.Execute = function() {\n var a = arguments;\n if (a[0] instanceof d.PolyTree) {\n var b = a[0];\n var c = a[1];\n b.Clear();\n this.FixOrientations();\n this.DoOffset(c);\n a = new d.Clipper(0);\n a.AddPaths(this.m_destPolys, d.PolyType.ptSubject, !0);\n if (0 < c) a.Execute(d.ClipType.ctUnion, b, d.PolyFillType.pftPositive, d.PolyFillType.pftPositive);\n else {\n var e = d.Clipper.GetBounds(this.m_destPolys);\n c = new d.Path();\n c.push(new d.IntPoint2(e.left - 10, e.bottom + 10));\n c.push(new d.IntPoint2(e.right + 10, e.bottom + 10));\n c.push(new d.IntPoint2(e.right + 10, e.top - 10));\n c.push(new d.IntPoint2(e.left - 10, e.top - 10));\n a.AddPath(c, d.PolyType.ptSubject, !0);\n a.ReverseSolution = !0;\n a.Execute(d.ClipType.ctUnion, b, d.PolyFillType.pftNegative, d.PolyFillType.pftNegative);\n if (1 === b.ChildCount() && 0 < b.Childs()[0].ChildCount()) for(a = b.Childs()[0], b.Childs()[0] = a.Childs()[0], b.Childs()[0].m_Parent = b, c = 1; c < a.ChildCount(); c++)b.AddChild(a.Childs()[c]);\n else b.Clear();\n }\n } else b = a[0], c = a[1], d.Clear(b), this.FixOrientations(), this.DoOffset(c), a = new d.Clipper(0), a.AddPaths(this.m_destPolys, d.PolyType.ptSubject, !0), 0 < c ? a.Execute(d.ClipType.ctUnion, b, d.PolyFillType.pftPositive, d.PolyFillType.pftPositive) : (e = d.Clipper.GetBounds(this.m_destPolys), c = new d.Path(), c.push(new d.IntPoint2(e.left - 10, e.bottom + 10)), c.push(new d.IntPoint2(e.right + 10, e.bottom + 10)), c.push(new d.IntPoint2(e.right + 10, e.top - 10)), c.push(new d.IntPoint2(e.left - 10, e.top - 10)), a.AddPath(c, d.PolyType.ptSubject, !0), a.ReverseSolution = !0, a.Execute(d.ClipType.ctUnion, b, d.PolyFillType.pftNegative, d.PolyFillType.pftNegative), 0 < b.length && b.splice(0, 1));\n };\n d.ClipperOffset.prototype.OffsetPoint = function(a, b, c) {\n this.m_sinA = this.m_normals[b].X * this.m_normals[a].Y - this.m_normals[a].X * this.m_normals[b].Y;\n if (1 > Math.abs(this.m_sinA * this.m_delta)) {\n if (0 < this.m_normals[b].X * this.m_normals[a].X + this.m_normals[a].Y * this.m_normals[b].Y) return this.m_destPoly.push(new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[a].X + this.m_normals[b].X * this.m_delta), d.ClipperOffset.Round(this.m_srcPoly[a].Y + this.m_normals[b].Y * this.m_delta))), b;\n } else 1 < this.m_sinA ? this.m_sinA = 1 : -1 > this.m_sinA && (this.m_sinA = -1);\n if (0 > this.m_sinA * this.m_delta) this.m_destPoly.push(new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[a].X + this.m_normals[b].X * this.m_delta), d.ClipperOffset.Round(this.m_srcPoly[a].Y + this.m_normals[b].Y * this.m_delta))), this.m_destPoly.push(new d.IntPoint1(this.m_srcPoly[a])), this.m_destPoly.push(new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[a].X + this.m_normals[a].X * this.m_delta), d.ClipperOffset.Round(this.m_srcPoly[a].Y + this.m_normals[a].Y * this.m_delta)));\n else switch(c){\n case d.JoinType.jtMiter:\n c = 1 + (this.m_normals[a].X * this.m_normals[b].X + this.m_normals[a].Y * this.m_normals[b].Y);\n c >= this.m_miterLim ? this.DoMiter(a, b, c) : this.DoSquare(a, b);\n break;\n case d.JoinType.jtSquare:\n this.DoSquare(a, b);\n break;\n case d.JoinType.jtRound:\n this.DoRound(a, b);\n }\n return a;\n };\n d.ClipperOffset.prototype.DoSquare = function(a, b) {\n var c = Math.tan(Math.atan2(this.m_sinA, this.m_normals[b].X * this.m_normals[a].X + this.m_normals[b].Y * this.m_normals[a].Y) / 4);\n this.m_destPoly.push(new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[a].X + this.m_delta * (this.m_normals[b].X - this.m_normals[b].Y * c)), d.ClipperOffset.Round(this.m_srcPoly[a].Y + this.m_delta * (this.m_normals[b].Y + this.m_normals[b].X * c))));\n this.m_destPoly.push(new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[a].X + this.m_delta * (this.m_normals[a].X + this.m_normals[a].Y * c)), d.ClipperOffset.Round(this.m_srcPoly[a].Y + this.m_delta * (this.m_normals[a].Y - this.m_normals[a].X * c))));\n };\n d.ClipperOffset.prototype.DoMiter = function(a, b, c) {\n c = this.m_delta / c;\n this.m_destPoly.push(new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[a].X + (this.m_normals[b].X + this.m_normals[a].X) * c), d.ClipperOffset.Round(this.m_srcPoly[a].Y + (this.m_normals[b].Y + this.m_normals[a].Y) * c)));\n };\n d.ClipperOffset.prototype.DoRound = function(a, b) {\n for(var c = Math.max(d.Cast_Int32(d.ClipperOffset.Round(this.m_StepsPerRad * Math.abs(Math.atan2(this.m_sinA, this.m_normals[b].X * this.m_normals[a].X + this.m_normals[b].Y * this.m_normals[a].Y)))), 1), e = this.m_normals[b].X, f = this.m_normals[b].Y, g, h = 0; h < c; ++h)this.m_destPoly.push(new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[a].X + e * this.m_delta), d.ClipperOffset.Round(this.m_srcPoly[a].Y + f * this.m_delta))), g = e, e = e * this.m_cos - this.m_sin * f, f = g * this.m_sin + f * this.m_cos;\n this.m_destPoly.push(new d.IntPoint2(d.ClipperOffset.Round(this.m_srcPoly[a].X + this.m_normals[a].X * this.m_delta), d.ClipperOffset.Round(this.m_srcPoly[a].Y + this.m_normals[a].Y * this.m_delta)));\n };\n d.Error = function(a) {\n try {\n throw Error(a);\n } catch (b) {\n alert(b.message);\n }\n };\n d.JS = {};\n d.JS.AreaOfPolygon = function(a, b) {\n b || (b = 1);\n return d.Clipper.Area(a) / (b * b);\n };\n d.JS.AreaOfPolygons = function(a, b) {\n b || (b = 1);\n for(var c = 0, e = 0; e < a.length; e++)c += d.Clipper.Area(a[e]);\n return c / (b * b);\n };\n d.JS.BoundsOfPath = function(a, b) {\n return d.JS.BoundsOfPaths([\n a\n ], b);\n };\n d.JS.BoundsOfPaths = function(a, b) {\n b || (b = 1);\n var c = d.Clipper.GetBounds(a);\n c.left /= b;\n c.bottom /= b;\n c.right /= b;\n c.top /= b;\n return c;\n };\n d.JS.Clean = function(a, b) {\n if (!(a instanceof Array)) return [];\n var c = a[0] instanceof Array;\n a = d.JS.Clone(a);\n if (\"number\" !== typeof b || null === b) return d.Error(\"Delta is not a number in Clean().\"), a;\n if (0 === a.length || 1 === a.length && 0 === a[0].length || 0 > b) return a;\n c || (a = [\n a\n ]);\n for(var e = a.length, f, g, h, k, l, n, r, p = [], t = 0; t < e; t++)if (g = a[t], f = g.length, 0 !== f) {\n if (3 > f) h = g, p.push(h);\n else {\n h = g;\n k = b * b;\n l = g[0];\n for(r = n = 1; r < f; r++)(g[r].X - l.X) * (g[r].X - l.X) + (g[r].Y - l.Y) * (g[r].Y - l.Y) <= k || (h[n] = g[r], l = g[r], n++);\n l = g[n - 1];\n (g[0].X - l.X) * (g[0].X - l.X) + (g[0].Y - l.Y) * (g[0].Y - l.Y) <= k && n--;\n n < f && h.splice(n, f - n);\n h.length && p.push(h);\n }\n }\n !c && p.length ? p = p[0] : c || 0 !== p.length ? c && 0 === p.length && (p = [\n []\n ]) : p = [];\n return p;\n };\n d.JS.Clone = function(a) {\n if (!(a instanceof Array) || 0 === a.length) return [];\n if (1 === a.length && 0 === a[0].length) return [\n []\n ];\n var b = a[0] instanceof Array;\n b || (a = [\n a\n ]);\n var c = a.length, d, f, g = Array(c);\n for(d = 0; d < c; d++){\n var h = a[d].length;\n var k = Array(h);\n for(f = 0; f < h; f++)k[f] = {\n X: a[d][f].X,\n Y: a[d][f].Y\n };\n g[d] = k;\n }\n b || (g = g[0]);\n return g;\n };\n d.JS.Lighten = function(a, b) {\n if (!(a instanceof Array)) return [];\n if (\"number\" !== typeof b || null === b) return d.Error(\"Tolerance is not a number in Lighten().\"), d.JS.Clone(a);\n if (0 === a.length || 1 === a.length && 0 === a[0].length || 0 > b) return d.JS.Clone(a);\n var c = a[0] instanceof Array;\n c || (a = [\n a\n ]);\n var e, f, g, h = a.length, k = b * b, l = [];\n for(e = 0; e < h; e++){\n var n = a[e];\n var r = n.length;\n if (0 !== r) {\n for(g = 0; 1e6 > g; g++){\n var p = [];\n r = n.length;\n if (n[r - 1].X !== n[0].X || n[r - 1].Y !== n[0].Y) {\n var t = 1;\n n.push({\n X: n[0].X,\n Y: n[0].Y\n });\n r = n.length;\n } else t = 0;\n var u = [];\n for(f = 0; f < r - 2; f++){\n var q = n[f];\n var v = n[f + 1];\n var w = n[f + 2];\n var x = q.X;\n var y = q.Y;\n q = w.X - x;\n var A = w.Y - y;\n if (0 !== q || 0 !== A) {\n var z = ((v.X - x) * q + (v.Y - y) * A) / (q * q + A * A);\n 1 < z ? (x = w.X, y = w.Y) : 0 < z && (x += q * z, y += A * z);\n }\n q = v.X - x;\n A = v.Y - y;\n w = q * q + A * A;\n w <= k && (u[f + 1] = 1, f++);\n }\n p.push({\n X: n[0].X,\n Y: n[0].Y\n });\n for(f = 1; f < r - 1; f++)u[f] || p.push({\n X: n[f].X,\n Y: n[f].Y\n });\n p.push({\n X: n[r - 1].X,\n Y: n[r - 1].Y\n });\n t && n.pop();\n if (u.length) n = p;\n else break;\n }\n r = p.length;\n p[r - 1].X === p[0].X && p[r - 1].Y === p[0].Y && p.pop();\n 2 < p.length && l.push(p);\n }\n }\n c || (l = l[0]);\n \"undefined\" === typeof l && (l = []);\n return l;\n };\n d.JS.PerimeterOfPath = function(a, b, c) {\n if (\"undefined\" === typeof a) return 0;\n var d = Math.sqrt, f = 0, g = a.length;\n if (2 > g) return 0;\n b && (a[g] = a[0], g++);\n for(; --g;){\n var h = a[g];\n var k = h.X;\n h = h.Y;\n var l = a[g - 1];\n var n = l.X;\n l = l.Y;\n f += d((k - n) * (k - n) + (h - l) * (h - l));\n }\n b && a.pop();\n return f / c;\n };\n d.JS.PerimeterOfPaths = function(a, b, c) {\n c || (c = 1);\n for(var e = 0, f = 0; f < a.length; f++)e += d.JS.PerimeterOfPath(a[f], b, c);\n return e;\n };\n d.JS.ScaleDownPath = function(a, b) {\n var c;\n b || (b = 1);\n for(c = a.length; c--;){\n var d = a[c];\n d.X /= b;\n d.Y /= b;\n }\n };\n d.JS.ScaleDownPaths = function(a, b) {\n var c, d;\n b || (b = 1);\n for(c = a.length; c--;)for(d = a[c].length; d--;){\n var f = a[c][d];\n f.X /= b;\n f.Y /= b;\n }\n };\n d.JS.ScaleUpPath = function(a, b) {\n var c, d = Math.round;\n b || (b = 1);\n for(c = a.length; c--;){\n var f = a[c];\n f.X = d(f.X * b);\n f.Y = d(f.Y * b);\n }\n };\n d.JS.ScaleUpPaths = function(a, b) {\n var c, d, f = Math.round;\n b || (b = 1);\n for(c = a.length; c--;)for(d = a[c].length; d--;){\n var g = a[c][d];\n g.X = f(g.X * b);\n g.Y = f(g.Y * b);\n }\n };\n d.ExPolygons = function() {\n return [];\n };\n d.ExPolygon = function() {\n this.holes = this.outer = null;\n };\n d.JS.AddOuterPolyNodeToExPolygons = function(a, b) {\n var c = new d.ExPolygon();\n c.outer = a.Contour();\n var e = a.Childs(), f = e.length;\n c.holes = Array(f);\n var g, h;\n for(g = 0; g < f; g++){\n var k = e[g];\n c.holes[g] = k.Contour();\n var l = 0;\n var n = k.Childs();\n for(h = n.length; l < h; l++)k = n[l], d.JS.AddOuterPolyNodeToExPolygons(k, b);\n }\n b.push(c);\n };\n d.JS.ExPolygonsToPaths = function(a) {\n var b, c, e = new d.Paths();\n var f = 0;\n for(b = a.length; f < b; f++){\n e.push(a[f].outer);\n var g = 0;\n for(c = a[f].holes.length; g < c; g++)e.push(a[f].holes[g]);\n }\n return e;\n };\n d.JS.PolyTreeToExPolygons = function(a) {\n var b = new d.ExPolygons(), c;\n var e = 0;\n var f = a.Childs();\n for(c = f.length; e < c; e++)a = f[e], d.JS.AddOuterPolyNodeToExPolygons(a, b);\n return b;\n };\n})();\n\n\nconst $a8b194ee5ee2de37$var$solidityKeccak256 = (stringTypes, values)=>{\n return (0, $70d1698339832295$export$f8151fce47ad1c35)((0, $c35d3b9dae26c1f3$export$92dace262a9f3722)(stringTypes, values));\n};\nfunction $a8b194ee5ee2de37$var$randomRange(min, max, seed) {\n return parseInt(BigInt(seed) % (BigInt(max) - BigInt(min) + 1n) + BigInt(min));\n}\nconst $a8b194ee5ee2de37$var$urlInfo = window.location.hash.substr(1).split(\"-\");\nlet $a8b194ee5ee2de37$var$tokenId = parseInt($a8b194ee5ee2de37$var$urlInfo[0]);\nlet $a8b194ee5ee2de37$var$backgroundOffset = 0;\nlet $a8b194ee5ee2de37$var$backgroundOverride = typeof window.backgroundOverride !== \"undefined\" ? window.backgroundOverride : $a8b194ee5ee2de37$var$urlInfo.length > 1 ? parseInt($a8b194ee5ee2de37$var$urlInfo[1]) : false;\nif ($a8b194ee5ee2de37$var$backgroundOverride > 3) $a8b194ee5ee2de37$var$backgroundOverride = false;\nif (!$a8b194ee5ee2de37$var$tokenId) $a8b194ee5ee2de37$var$tokenId = Math.floor(Math.random() * 150) + 1;\nconsole.log({\n tokenId: $a8b194ee5ee2de37$var$tokenId\n}); // TODO: remove comments before mainnet\nlet $a8b194ee5ee2de37$var$seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"uint256\"\n], [\n $a8b194ee5ee2de37$var$tokenId\n]);\nif ($a8b194ee5ee2de37$var$tokenId == 1 && $a8b194ee5ee2de37$var$seed !== \"0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6\") throw new Error(\"invalid token id should be 0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6\");\nconst $a8b194ee5ee2de37$var$R = new (0, $b8d51e053fccc1ae$export$a92776769f460054)($a8b194ee5ee2de37$var$seed);\nlet $a8b194ee5ee2de37$var$svg;\nlet $a8b194ee5ee2de37$var$win_w = window.innerWidth;\nlet $a8b194ee5ee2de37$var$win_h = window.innerHeight;\nlet $a8b194ee5ee2de37$var$largestSide = $a8b194ee5ee2de37$var$win_w >= $a8b194ee5ee2de37$var$win_h ? $a8b194ee5ee2de37$var$win_w : $a8b194ee5ee2de37$var$win_h;\nvar $a8b194ee5ee2de37$var$marginFactor = $a8b194ee5ee2de37$var$R.int(3, 10);\nvar $a8b194ee5ee2de37$var$margin = parseInt($a8b194ee5ee2de37$var$largestSide / $a8b194ee5ee2de37$var$marginFactor);\nvar $a8b194ee5ee2de37$var$amount = $a8b194ee5ee2de37$var$R.int(100, 500);\nvar $a8b194ee5ee2de37$var$elWidth = $a8b194ee5ee2de37$var$R.int(2, 300);\nvar $a8b194ee5ee2de37$var$elHeight = $a8b194ee5ee2de37$var$R.int(2, 300);\nvar $a8b194ee5ee2de37$var$angle = $a8b194ee5ee2de37$var$R.int(0, 360);\nconst $a8b194ee5ee2de37$var$showHole = $a8b194ee5ee2de37$var$randomRange(0, 10, $a8b194ee5ee2de37$var$seed) == 0;\nlet $a8b194ee5ee2de37$var$configSeed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n], [\n $a8b194ee5ee2de37$var$seed\n]);\nconst $a8b194ee5ee2de37$var$showRectangles = $a8b194ee5ee2de37$var$showHole || $a8b194ee5ee2de37$var$randomRange(0, 1, $a8b194ee5ee2de37$var$configSeed) == 0;\n$a8b194ee5ee2de37$var$configSeed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n], [\n $a8b194ee5ee2de37$var$configSeed\n]);\nconst $a8b194ee5ee2de37$var$showPolygons = $a8b194ee5ee2de37$var$showHole || !$a8b194ee5ee2de37$var$showRectangles || $a8b194ee5ee2de37$var$randomRange(0, 1, $a8b194ee5ee2de37$var$configSeed) == 0;\n$a8b194ee5ee2de37$var$configSeed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n], [\n $a8b194ee5ee2de37$var$configSeed\n]);\nconst $a8b194ee5ee2de37$var$showGrid = $a8b194ee5ee2de37$var$randomRange(0, 3, $a8b194ee5ee2de37$var$configSeed) == 0;\n$a8b194ee5ee2de37$var$configSeed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n], [\n $a8b194ee5ee2de37$var$configSeed\n]);\nconst $a8b194ee5ee2de37$var$showStar = $a8b194ee5ee2de37$var$randomRange(0, 10, $a8b194ee5ee2de37$var$configSeed) == 0;\n$a8b194ee5ee2de37$var$configSeed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n], [\n $a8b194ee5ee2de37$var$configSeed\n]);\nconst $a8b194ee5ee2de37$var$showFrame = $a8b194ee5ee2de37$var$randomRange(0, 2, $a8b194ee5ee2de37$var$configSeed) == 0;\n$a8b194ee5ee2de37$var$configSeed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n], [\n $a8b194ee5ee2de37$var$configSeed\n]);\nconst $a8b194ee5ee2de37$var$rotateAllRectangles = $a8b194ee5ee2de37$var$randomRange(0, 1, $a8b194ee5ee2de37$var$configSeed) == 0;\nlet $a8b194ee5ee2de37$var$gridVal = $a8b194ee5ee2de37$var$R.int(5, 10);\nlet $a8b194ee5ee2de37$var$gridMargin = $a8b194ee5ee2de37$var$R.int(1, 3);\nlet $a8b194ee5ee2de37$var$gridCLipType = $a8b194ee5ee2de37$var$R.int(0, 2);\nlet $a8b194ee5ee2de37$var$frameAmount = $a8b194ee5ee2de37$var$R.int(4, 50);\n// if (showHole) {\n// showRectangles = true;\n// showPolygons = true;\n// }\nlet $a8b194ee5ee2de37$var$selectionObjectsOrigin = {\n x: $a8b194ee5ee2de37$var$R.int($a8b194ee5ee2de37$var$margin, $a8b194ee5ee2de37$var$win_w - $a8b194ee5ee2de37$var$margin * 2),\n y: $a8b194ee5ee2de37$var$R.int($a8b194ee5ee2de37$var$margin, $a8b194ee5ee2de37$var$win_h - $a8b194ee5ee2de37$var$margin * 2)\n};\nlet $a8b194ee5ee2de37$var$selectionObjects = $a8b194ee5ee2de37$var$generateEmptySelectionObjects();\nlet $a8b194ee5ee2de37$var$polygonObjects = $a8b194ee5ee2de37$var$generatePolygonObjects();\n// window.removeEventListener(\"load\", init); // TODO: try this if init is called many times\nwindow.onload = $a8b194ee5ee2de37$var$init;\nfunction $a8b194ee5ee2de37$var$init() {\n console.log(\"init\"); // TODO: remove before mainnet\n $a8b194ee5ee2de37$var$svg = document.querySelector(\"svg\");\n $a8b194ee5ee2de37$var$svg.onclick = function() {\n $a8b194ee5ee2de37$var$backgroundOffset++;\n $a8b194ee5ee2de37$var$setBg($a8b194ee5ee2de37$var$seed);\n };\n $a8b194ee5ee2de37$var$setBg($a8b194ee5ee2de37$var$seed);\n $a8b194ee5ee2de37$var$renderSelections();\n}\nfunction $a8b194ee5ee2de37$var$generateEmptySelectionObjects() {\n let sa = [];\n for(let i = 0; i < 1000; i++){\n let s = new $a8b194ee5ee2de37$var$SelectionObject();\n sa.push(s);\n }\n return sa;\n}\nfunction $a8b194ee5ee2de37$var$SelectionObject() {\n this.x = 0;\n this.y = 0;\n this.w = 0;\n this.h = 0;\n this.xR = $a8b194ee5ee2de37$var$R.float();\n this.yR = $a8b194ee5ee2de37$var$R.float();\n this.wR = $a8b194ee5ee2de37$var$R.float();\n this.hR = $a8b194ee5ee2de37$var$R.float();\n this.getPath = function() {\n this.marginize();\n let p = [\n [\n {\n X: this.x,\n Y: this.y\n },\n {\n X: this.x + this.w,\n Y: this.y\n },\n {\n X: this.x + this.w,\n Y: this.y + this.h\n },\n {\n X: this.x,\n Y: this.y + this.h\n }\n ]\n ];\n return p;\n };\n this.setValue = function(p, v) {\n this[p] = parseInt(v);\n };\n this.marginize = function() {\n if (this.x + this.w > $a8b194ee5ee2de37$var$win_w) this.x = $a8b194ee5ee2de37$var$win_w - this.w;\n if (this.x < 0) this.x = 0;\n if (this.y + this.h > $a8b194ee5ee2de37$var$win_h) this.y = $a8b194ee5ee2de37$var$win_h - this.h;\n if (this.y < 0) this.y = 0;\n };\n}\nfunction $a8b194ee5ee2de37$var$generatePolygonObjects() {\n let pa = [];\n for(let i = 0; i < 1; i++){\n let p = new $a8b194ee5ee2de37$var$PolygonObject();\n p.createRn();\n pa.push(p);\n }\n return pa;\n}\nfunction $a8b194ee5ee2de37$var$PolygonObject() {\n this.startX = $a8b194ee5ee2de37$var$R.int($a8b194ee5ee2de37$var$margin, $a8b194ee5ee2de37$var$win_w - $a8b194ee5ee2de37$var$margin);\n this.startY = $a8b194ee5ee2de37$var$R.int($a8b194ee5ee2de37$var$margin, $a8b194ee5ee2de37$var$win_h - $a8b194ee5ee2de37$var$margin);\n this.polyLength = $a8b194ee5ee2de37$var$R.int(400, 1000);\n this.stepVar = $a8b194ee5ee2de37$var$R.int(100, 1000);\n this.rnArray = [];\n this.path;\n this.marginVar = $a8b194ee5ee2de37$var$R.int(1, 30);\n this.applyMargin = $a8b194ee5ee2de37$var$R.int(0, 2) == 0 ? false : true;\n this.makePolygon = function() {\n this.path = [\n []\n ];\n let polX = parseInt(this.startX);\n let polY = parseInt(this.startY);\n this.path[0].push({\n X: polX,\n Y: polY\n });\n let expon = Math.round(this.rnArray[0]) == 0 ? false : true;\n for(let i = 0; i < this.polyLength; i++){\n if (expon) {\n polX += -1 * i + parseInt(this.rnArray[i * 2] * 2 * i);\n polY += -1 * i + parseInt(this.rnArray[i * 2 + 1] * 2 * i);\n } else {\n polX += -1 * this.stepVar + this.rnArray[i * 2] * this.stepVar * 2;\n polY += -1 * this.stepVar + this.rnArray[i * 2 + 1] * this.stepVar * 2;\n // -1000 + 0.4 * 1000 * 2 - 1000 + 0.3 * 1000 * 2; // TODO: add this back?\n }\n if (this.applyMargin) {\n polX = this.marginize(polX, \"w\", i);\n polY = this.marginize(polY, \"h\", i);\n }\n this.path[0].push({\n X: polX,\n Y: polY\n });\n }\n this.path[0].push({\n X: parseInt(this.startX),\n Y: parseInt(this.startY)\n });\n };\n this.createRn = function() {\n for(let i = 0; i < this.polyLength * 2; i++)this.rnArray.push($a8b194ee5ee2de37$var$R.float());\n };\n this.marginize = function(pos, dim, i) {\n if (dim == \"w\") {\n if (pos > $a8b194ee5ee2de37$var$win_w - $a8b194ee5ee2de37$var$margin) pos = $a8b194ee5ee2de37$var$win_w - $a8b194ee5ee2de37$var$margin - this.marginVar + parseInt(this.rnArray[i * 2] * this.marginVar * 2);\n else if (pos < $a8b194ee5ee2de37$var$margin) pos = $a8b194ee5ee2de37$var$margin - this.marginVar + parseInt(this.rnArray[i * 2] * this.marginVar * 2);\n } else if (dim == \"h\") {\n if (pos > $a8b194ee5ee2de37$var$win_h - $a8b194ee5ee2de37$var$margin) pos = $a8b194ee5ee2de37$var$win_h - $a8b194ee5ee2de37$var$margin - this.marginVar + parseInt(this.rnArray[i * 2 + 1] * this.marginVar * 2);\n if (pos < $a8b194ee5ee2de37$var$margin) pos = $a8b194ee5ee2de37$var$margin - this.marginVar + parseInt(this.rnArray[i * 2 + 1] * this.marginVar * 2);\n }\n return pos;\n };\n this.getPath = function() {\n return this.path;\n };\n}\nfunction $a8b194ee5ee2de37$var$renderSelections(treatAllAsTrue = false) {\n console.log(\"renderSelections\");\n // let solution_paths;\n let clip_paths;\n let subj_paths = [\n [\n {\n X: $a8b194ee5ee2de37$var$win_w / 2 * -1,\n Y: $a8b194ee5ee2de37$var$win_h / 2\n },\n {\n X: $a8b194ee5ee2de37$var$win_w / 2 * -1 + 1,\n Y: $a8b194ee5ee2de37$var$win_h / 2\n },\n {\n X: $a8b194ee5ee2de37$var$win_w / 2 * -1 + 1,\n Y: $a8b194ee5ee2de37$var$win_h / 2 + 1\n },\n {\n X: $a8b194ee5ee2de37$var$win_w / 2 * -1,\n Y: $a8b194ee5ee2de37$var$win_h / 2 + 1\n }\n ]\n ];\n // rectangles\n if ($a8b194ee5ee2de37$var$showRectangles || treatAllAsTrue) {\n let sx = $a8b194ee5ee2de37$var$selectionObjectsOrigin.x;\n let sy = $a8b194ee5ee2de37$var$selectionObjectsOrigin.y;\n for(let i = 0; i < $a8b194ee5ee2de37$var$amount; i++){\n $a8b194ee5ee2de37$var$selectionObjects[i].setValue(\"w\", 1 + $a8b194ee5ee2de37$var$elWidth * $a8b194ee5ee2de37$var$selectionObjects[i].wR);\n $a8b194ee5ee2de37$var$selectionObjects[i].setValue(\"h\", 1 + $a8b194ee5ee2de37$var$elHeight * $a8b194ee5ee2de37$var$selectionObjects[i].hR);\n $a8b194ee5ee2de37$var$selectionObjects[i].setValue(\"x\", sx);\n $a8b194ee5ee2de37$var$selectionObjects[i].setValue(\"y\", sy);\n sx += 100 - parseInt($a8b194ee5ee2de37$var$selectionObjects[i].xR * 200);\n sy += 100 - parseInt($a8b194ee5ee2de37$var$selectionObjects[i].yR * 200);\n clip_paths = $a8b194ee5ee2de37$var$selectionObjects[i].getPath();\n let angles = $a8b194ee5ee2de37$var$rotateAllRectangles ? $a8b194ee5ee2de37$var$angle : parseInt(360 * $a8b194ee5ee2de37$var$selectionObjects[i].wR);\n clip_paths = $a8b194ee5ee2de37$var$rotatePath(angles, clip_paths);\n subj_paths = $a8b194ee5ee2de37$var$clipPathToAll(subj_paths, clip_paths, \"union\");\n }\n }\n // polygons\n if ($a8b194ee5ee2de37$var$showPolygons || treatAllAsTrue) {\n let poly = $a8b194ee5ee2de37$var$polygonObjects[0];\n poly.makePolygon();\n clip_paths = poly.getPath();\n let fillTypes = [\n (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).PolyFillType.pftNegative,\n (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).PolyFillType.pftPositive\n ];\n const clip_paths_simp = (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).Clipper.SimplifyPolygons(clip_paths, fillTypes[0]);\n subj_paths = $a8b194ee5ee2de37$var$clipPathToAll(subj_paths, clip_paths_simp, \"union\");\n }\n // grid\n if ($a8b194ee5ee2de37$var$showGrid || treatAllAsTrue) {\n let gridSize = $a8b194ee5ee2de37$var$largestSide / $a8b194ee5ee2de37$var$gridVal;\n let clip_paths = [\n []\n ];\n for(let i = 0; i <= $a8b194ee5ee2de37$var$largestSide / gridSize; i++)for(let j = 0; j <= $a8b194ee5ee2de37$var$largestSide / gridSize; j++)clip_paths.push([\n {\n X: i * gridSize + $a8b194ee5ee2de37$var$gridMargin,\n Y: j * gridSize + $a8b194ee5ee2de37$var$gridMargin\n },\n {\n X: i * gridSize + gridSize - $a8b194ee5ee2de37$var$gridMargin,\n Y: j * gridSize + $a8b194ee5ee2de37$var$gridMargin\n },\n {\n X: i * gridSize + gridSize - $a8b194ee5ee2de37$var$gridMargin,\n Y: j * gridSize + gridSize - $a8b194ee5ee2de37$var$gridMargin\n },\n {\n X: i * gridSize + $a8b194ee5ee2de37$var$gridMargin,\n Y: j * gridSize + gridSize - $a8b194ee5ee2de37$var$gridMargin\n }\n ]);\n let clipTypes = [\n \"difference\",\n \"intersection\",\n \"union\"\n ];\n subj_paths = $a8b194ee5ee2de37$var$clipPathToAll(subj_paths, clip_paths, clipTypes[$a8b194ee5ee2de37$var$gridCLipType]);\n }\n // star\n if ($a8b194ee5ee2de37$var$showStar || treatAllAsTrue) {\n let largestSide = $a8b194ee5ee2de37$var$win_w >= $a8b194ee5ee2de37$var$win_h ? $a8b194ee5ee2de37$var$win_w : $a8b194ee5ee2de37$var$win_h;\n let gridSize = largestSide / $a8b194ee5ee2de37$var$gridVal;\n let clip_paths = [\n []\n ];\n for(let i = 0; i <= largestSide / gridSize; i++)for(let j = 0; j <= largestSide / gridSize; j++){\n clip_paths = [\n [\n {\n X: i * gridSize,\n Y: j * gridSize\n },\n {\n X: i + gridSize,\n Y: j\n },\n {\n X: i + gridSize,\n Y: j + gridSize\n },\n {\n X: i,\n Y: j + gridSize\n }\n ]\n ]; //star\n subj_paths = $a8b194ee5ee2de37$var$clipPathToAll(subj_paths, clip_paths, \"union\");\n }\n }\n // frames\n if ($a8b194ee5ee2de37$var$showFrame || treatAllAsTrue) {\n let clip_paths = [\n []\n ];\n for(let i = 0; i < $a8b194ee5ee2de37$var$frameAmount; i += 2){\n let v = i * $a8b194ee5ee2de37$var$R.int(2, 20);\n const clip_path1 = [\n [\n {\n X: v + 10,\n Y: v + 10\n },\n {\n X: $a8b194ee5ee2de37$var$win_w - v - 10,\n Y: v + 10\n },\n {\n X: $a8b194ee5ee2de37$var$win_w - v - 10,\n Y: $a8b194ee5ee2de37$var$win_h - v - 10\n },\n {\n X: v + 10,\n Y: $a8b194ee5ee2de37$var$win_h - v - 10\n }\n ],\n [\n {\n X: v * 2 + 10,\n Y: v * 2 + 10\n },\n {\n X: v + 10,\n Y: v + 10\n }\n ]\n ];\n const clip_path2 = [\n [\n {\n X: v + 20,\n Y: v + 20\n },\n {\n X: $a8b194ee5ee2de37$var$win_w - v - 20,\n Y: v + 20\n },\n {\n X: $a8b194ee5ee2de37$var$win_w - v - 20,\n Y: $a8b194ee5ee2de37$var$win_h - v - 20\n },\n {\n X: v + 20,\n Y: $a8b194ee5ee2de37$var$win_h - v - 20\n },\n {\n X: v + 20,\n Y: v + 20\n }\n ]\n ];\n clip_paths = $a8b194ee5ee2de37$var$clipPathToAll(clip_path1, clip_path2, \"difference\");\n subj_paths = $a8b194ee5ee2de37$var$clipPathToAll(subj_paths, clip_paths, \"union\");\n }\n }\n //viewport clipping\n clip_paths = [\n [\n {\n X: 0,\n Y: 0\n },\n {\n X: $a8b194ee5ee2de37$var$win_w,\n Y: 0\n },\n {\n X: $a8b194ee5ee2de37$var$win_w,\n Y: $a8b194ee5ee2de37$var$win_h\n },\n {\n X: 0,\n Y: $a8b194ee5ee2de37$var$win_h\n }\n ]\n ];\n subj_paths = $a8b194ee5ee2de37$var$clipPathToAll(subj_paths, clip_paths, \"intersection\");\n //center hole\n if ($a8b194ee5ee2de37$var$showHole || treatAllAsTrue) {\n let ch_w = $a8b194ee5ee2de37$var$win_w / 2 + $a8b194ee5ee2de37$var$selectionObjects[0].wR * $a8b194ee5ee2de37$var$margin;\n let ch_h = $a8b194ee5ee2de37$var$win_h / 2 + $a8b194ee5ee2de37$var$selectionObjects[0].hR * $a8b194ee5ee2de37$var$margin;\n let ch_x = ($a8b194ee5ee2de37$var$win_w - ch_w) / 2;\n let ch_y = ($a8b194ee5ee2de37$var$win_h - ch_h) / 2;\n clip_paths = [\n [\n {\n X: ch_x,\n Y: ch_y\n },\n {\n X: ch_x + ch_w,\n Y: ch_y\n },\n {\n X: ch_x + ch_w,\n Y: ch_y + ch_h\n },\n {\n X: ch_x,\n Y: ch_y + ch_h\n }\n ]\n ];\n subj_paths = $a8b194ee5ee2de37$var$clipPathToAll(subj_paths, clip_paths, \"difference\");\n }\n let svgPath = $a8b194ee5ee2de37$var$paths2string(subj_paths);\n // if path empty show all styles\n if (svgPath == \"M0,0\" && !treatAllAsTrue) $a8b194ee5ee2de37$var$renderSelections(true);\n else if (svgPath == \"M0,0\") console.error(`empty path on token ID after setting treatAllAsTrue ${$a8b194ee5ee2de37$var$tokenId}`);\n else document.querySelector(\"#selectionPath\").setAttribute(\"d\", svgPath);\n}\nfunction $a8b194ee5ee2de37$var$clipPathToAll(subj_paths, clip_paths, type) {\n // type: 'intersection', 'union' or 'difference';\n let cpr = new (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).Clipper();\n (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).JS.ScaleUpPaths(subj_paths, 1);\n (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).JS.ScaleUpPaths(clip_paths, 1);\n cpr.AddPaths(subj_paths, (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).PolyType.ptSubject, true);\n cpr.AddPaths(clip_paths, (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).PolyType.ptClip, true);\n let subject_fillType = (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).PolyFillType.pftNonZero;\n let clip_fillType = (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).PolyFillType.pftNonZero;\n const solution_paths = new (0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).Paths();\n type = type.charAt(0).toUpperCase() + type.slice(1);\n cpr.Execute((0, (/*@__PURE__*/$parcel$interopDefault($a0fa327a4f07121a$exports))).ClipType[\"ct\" + type], solution_paths, subject_fillType, clip_fillType);\n return solution_paths;\n}\nfunction $a8b194ee5ee2de37$var$paths2string(paths) {\n let svgpath = \"\", i, j;\n let scale = 1;\n for(i = 0; i < paths.length; i++){\n for(j = 0; j < paths[i].length; j++){\n if (!j) svgpath += \"M\";\n else svgpath += \"L\";\n svgpath += paths[i][j].X / scale + \", \" + paths[i][j].Y / scale;\n }\n svgpath += \"Z\";\n }\n if (svgpath == \"\") svgpath = \"M0,0\";\n return svgpath;\n}\nfunction $a8b194ee5ee2de37$var$rotatePath(angle, path) {\n const pA = [\n path[0][0].X,\n path[0][0].Y\n ];\n const pB = $a8b194ee5ee2de37$var$rotateCoordinate(path[0][0].X, path[0][0].Y, path[0][1].X, path[0][1].Y, angle);\n const pC = $a8b194ee5ee2de37$var$rotateCoordinate(path[0][0].X, path[0][0].Y, path[0][2].X, path[0][2].Y, angle);\n const pD = $a8b194ee5ee2de37$var$rotateCoordinate(path[0][0].X, path[0][0].Y, path[0][3].X, path[0][3].Y, angle);\n let rotatedPath = [\n [\n {\n X: pA[0],\n Y: pA[1]\n },\n {\n X: pB[0],\n Y: pB[1]\n },\n {\n X: pC[0],\n Y: pC[1]\n },\n {\n X: pD[0],\n Y: pD[1]\n }\n ]\n ];\n return rotatedPath;\n}\nfunction $a8b194ee5ee2de37$var$rotateCoordinate(cx, cy, x, y, angle) {\n var radians = Math.PI / 180 * angle, cos = Math.cos(radians), sin = Math.sin(radians), nx = cos * (x - cx) + sin * (y - cy) + cx, ny = cos * (y - cy) - sin * (x - cx) + cy;\n return [\n nx,\n ny\n ];\n}\nfunction $a8b194ee5ee2de37$var$setBg(seed) {\n let solidsArray = [\n \"rgb(123,50,50)\",\n \"rgb(50,123,50)\",\n \"rgb(50,50,123)\"\n ];\n const solidColor = $a8b194ee5ee2de37$var$randomRange(0, 2, seed);\n const solidColorString = solidsArray[solidColor];\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n const solidOverGrad = $a8b194ee5ee2de37$var$randomRange(0, 10, seed) == 0 ? true : false;\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n const grayOverColor = $a8b194ee5ee2de37$var$randomRange(0, 5, seed) == 0 ? true : false;\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n const bgStyleRand = $a8b194ee5ee2de37$var$randomRange(1, 10, seed);\n const totalStyles = 4;\n let bgState = typeof $a8b194ee5ee2de37$var$backgroundOverride !== \"boolean\" ? $a8b194ee5ee2de37$var$backgroundOverride : ((bgStyleRand <= 7 ? 0 : bgStyleRand <= 8 ? 1 : bgStyleRand <= 9 ? 2 : 3) + $a8b194ee5ee2de37$var$backgroundOffset) % totalStyles;\n let finalColor, gradAngle, dark;\n if (bgState == 0) {\n if (solidOverGrad) finalColor = \"background-color: \" + solidColorString;\n else if (grayOverColor) {\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n gradAngle = $a8b194ee5ee2de37$var$randomRange(0, 90, seed);\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n const gray1Val = $a8b194ee5ee2de37$var$randomRange(0, 150, seed);\n const gray1 = `rgb(${gray1Val},${gray1Val},${gray1Val})`;\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n const gray2Val = $a8b194ee5ee2de37$var$randomRange(150, 255, seed);\n const gray2 = `rgb(${gray2Val},${gray2Val},${gray2Val})`;\n finalColor = `background: linear-gradient(${gradAngle}deg, ${gray1} 0%, ${gray2} 100%)`;\n } else {\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n gradAngle = $a8b194ee5ee2de37$var$randomRange(0, 90, seed);\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n dark = $a8b194ee5ee2de37$var$randomRange(100, 150, seed);\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n let color1R = $a8b194ee5ee2de37$var$randomRange(50, dark, seed);\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n let color1G = $a8b194ee5ee2de37$var$randomRange(50, dark, seed);\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n let color1B = $a8b194ee5ee2de37$var$randomRange(50, dark, seed);\n const color1 = `rgb(${color1R},${color1G},${color1B})`;\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n const addOrSubtract = $a8b194ee5ee2de37$var$randomRange(0, 1, seed) == 0 ? true : false;\n seed = $a8b194ee5ee2de37$var$solidityKeccak256([\n \"bytes32\"\n ], [\n seed\n ]);\n const colorOffset = $a8b194ee5ee2de37$var$randomRange(0, 100, seed);\n if (addOrSubtract) {\n color1R = color1R + colorOffset > 255 ? 255 : color1R + colorOffset;\n color1G = color1G + colorOffset > 255 ? 255 : color1G + colorOffset;\n color1B = color1B + colorOffset > 255 ? 255 : color1B + colorOffset;\n } else {\n color1R = color1R - colorOffset < 0 ? 0 : color1R - colorOffset;\n color1G = color1G - colorOffset < 0 ? 0 : color1G - colorOffset;\n color1B = color1B - colorOffset < 0 ? 0 : color1B - colorOffset;\n }\n const color2 = `rgb(${color1R},${color1G},${color1B})`;\n finalColor = `background: linear-gradient(${gradAngle}deg, ${color1} 0%, ${color2} 100%)`;\n }\n } else if (bgState == 1) finalColor = \"background-color: white\";\n else if (bgState == 2) finalColor = \"background-color: black\";\n else finalColor = `background-image: linear-gradient(45deg, #cbcccb 25%, transparent 25%), linear-gradient(-45deg, #cbcccb 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #cbcccb 75%), linear-gradient(-45deg, transparent 75%, #cbcccb 75%);\n background-size: 8px 8px;\n background-position: 0 0, 0 4px, 4px -4px, -4px 0px;`;\n console.log({\n bgState: bgState,\n finalColor: finalColor\n });\n document.getElementsByTagName(\"svg\")[0].style = finalColor;\n}\nlet $a8b194ee5ee2de37$var$resizeTimer;\nwindow.onresize = function() {\n console.log(\"clearTimeout\", $a8b194ee5ee2de37$var$resizeTimer); // TODO: remove before mainnet\n clearTimeout($a8b194ee5ee2de37$var$resizeTimer);\n $a8b194ee5ee2de37$var$resizeTimer = setTimeout($a8b194ee5ee2de37$var$resizeEnded, 500);\n};\nfunction $a8b194ee5ee2de37$var$resizeEnded() {\n console.log(\"resizeEnded\"); // TODO: remove before mainnet\n $a8b194ee5ee2de37$var$win_w = window.innerWidth; // tool width added\n $a8b194ee5ee2de37$var$win_h = window.innerHeight;\n $a8b194ee5ee2de37$var$largestSide = $a8b194ee5ee2de37$var$win_w >= $a8b194ee5ee2de37$var$win_h ? $a8b194ee5ee2de37$var$win_w : $a8b194ee5ee2de37$var$win_h;\n $a8b194ee5ee2de37$var$margin = parseInt($a8b194ee5ee2de37$var$largestSide / $a8b194ee5ee2de37$var$marginFactor);\n $a8b194ee5ee2de37$var$renderSelections();\n}\n\n\n//# sourceMappingURL=selection.js.map\n","import { encodePacked, keccak256 } from \"viem\";\n\nconst solidityKeccak256 = (stringTypes, values) => {\n return keccak256(encodePacked(stringTypes, values));\n};\n\nfunction randomRange(min, max, seed) {\n return parseInt(\n (BigInt(seed) % (BigInt(max) - BigInt(min) + 1n)) + BigInt(min)\n );\n}\n\nconst urlInfo = window.location.hash.substr(1).split(\"-\");\nlet tokenId = parseInt(urlInfo[0]);\nlet backgroundOffset = 0;\nlet backgroundOverride =\n typeof window.backgroundOverride !== \"undefined\"\n ? window.backgroundOverride\n : urlInfo.length > 1\n ? parseInt(urlInfo[1])\n : false;\nif (backgroundOverride > 3) {\n backgroundOverride = false;\n}\nif (!tokenId) {\n tokenId = Math.floor(Math.random() * 150) + 1;\n}\nconsole.log({ tokenId }); // TODO: remove comments before mainnet\n\nlet seed = solidityKeccak256([\"uint256\"], [tokenId]);\nif (\n tokenId == 1 &&\n seed !== \"0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6\"\n) {\n throw new Error(\n \"invalid token id should be \" +\n \"0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6\"\n );\n}\n\nimport { Random } from \"./random.js\";\nconst R = new Random(seed);\n\nimport ClipperLib from \"./clipper.js\";\n\nlet svg;\n\nlet win_w = window.innerWidth;\nlet win_h = window.innerHeight;\n\nlet largestSide = win_w >= win_h ? win_w : win_h;\n\nvar marginFactor = R.int(3, 10);\nvar margin = parseInt(largestSide / marginFactor);\nvar amount = R.int(100, 500);\nvar elWidth = R.int(2, 300);\nvar elHeight = R.int(2, 300);\nvar angle = R.int(0, 360);\n\nconst showHole = randomRange(0, 10, seed) == 0;\n\nlet configSeed = solidityKeccak256([\"bytes32\"], [seed]);\nconst showRectangles = showHole || randomRange(0, 1, configSeed) == 0;\n\nconfigSeed = solidityKeccak256([\"bytes32\"], [configSeed]);\nconst showPolygons =\n showHole || !showRectangles || randomRange(0, 1, configSeed) == 0;\n\nconfigSeed = solidityKeccak256([\"bytes32\"], [configSeed]);\nconst showGrid = randomRange(0, 3, configSeed) == 0;\n\nconfigSeed = solidityKeccak256([\"bytes32\"], [configSeed]);\nconst showStar = randomRange(0, 10, configSeed) == 0;\n\nconfigSeed = solidityKeccak256([\"bytes32\"], [configSeed]);\nconst showFrame = randomRange(0, 2, configSeed) == 0;\n\nconfigSeed = solidityKeccak256([\"bytes32\"], [configSeed]);\nconst rotateAllRectangles = randomRange(0, 1, configSeed) == 0;\n\nlet gridVal = R.int(5, 10);\nlet gridMargin = R.int(1, 3);\nlet gridCLipType = R.int(0, 2);\nlet frameAmount = R.int(4, 50);\n// if (showHole) {\n// showRectangles = true;\n// showPolygons = true;\n// }\n\nlet selectionObjectsOrigin = {\n x: R.int(margin, win_w - margin * 2),\n y: R.int(margin, win_h - margin * 2),\n};\nlet selectionObjects = generateEmptySelectionObjects();\nlet polygonObjects = generatePolygonObjects();\n\n// window.removeEventListener(\"load\", init); // TODO: try this if init is called many times\nwindow.onload = init;\nfunction init() {\n console.log(\"init\"); // TODO: remove before mainnet\n svg = document.querySelector(\"svg\");\n\n svg.onclick = function () {\n backgroundOffset++;\n setBg(seed);\n };\n setBg(seed);\n renderSelections();\n}\n\nfunction generateEmptySelectionObjects() {\n let sa = [];\n for (let i = 0; i < 1000; i++) {\n let s = new SelectionObject();\n sa.push(s);\n }\n return sa;\n}\n\nfunction SelectionObject() {\n this.x = 0;\n this.y = 0;\n this.w = 0;\n this.h = 0;\n this.xR = R.float();\n this.yR = R.float();\n this.wR = R.float();\n this.hR = R.float();\n\n this.getPath = function () {\n this.marginize();\n let p = [\n [\n { X: this.x, Y: this.y },\n { X: this.x + this.w, Y: this.y },\n { X: this.x + this.w, Y: this.y + this.h },\n { X: this.x, Y: this.y + this.h },\n ],\n ];\n return p;\n };\n\n this.setValue = function (p, v) {\n this[p] = parseInt(v);\n };\n\n this.marginize = function () {\n if (this.x + this.w > win_w) {\n this.x = win_w - this.w;\n }\n if (this.x < 0) {\n this.x = 0;\n }\n if (this.y + this.h > win_h) {\n this.y = win_h - this.h;\n }\n if (this.y < 0) {\n this.y = 0;\n }\n };\n}\n\nfunction generatePolygonObjects() {\n let pa = [];\n for (let i = 0; i < 1; i++) {\n let p = new PolygonObject();\n p.createRn();\n pa.push(p);\n }\n return pa;\n}\n\nfunction PolygonObject() {\n this.startX = R.int(margin, win_w - margin);\n this.startY = R.int(margin, win_h - margin);\n this.polyLength = R.int(400, 1000);\n this.stepVar = R.int(100, 1000);\n this.rnArray = [];\n this.path;\n this.marginVar = R.int(1, 30);\n this.applyMargin = R.int(0, 2) == 0 ? false : true;\n\n this.makePolygon = function () {\n this.path = [[]];\n let polX = parseInt(this.startX);\n let polY = parseInt(this.startY);\n this.path[0].push({ X: polX, Y: polY });\n let expon = Math.round(this.rnArray[0]) == 0 ? false : true;\n\n for (let i = 0; i < this.polyLength; i++) {\n if (expon) {\n polX += -1 * i + parseInt(this.rnArray[i * 2] * 2 * i);\n polY += -1 * i + parseInt(this.rnArray[i * 2 + 1] * 2 * i);\n } else {\n polX += -1 * this.stepVar + this.rnArray[i * 2] * this.stepVar * 2;\n polY += -1 * this.stepVar + this.rnArray[i * 2 + 1] * this.stepVar * 2;\n // -1000 + 0.4 * 1000 * 2 - 1000 + 0.3 * 1000 * 2; // TODO: add this back?\n }\n\n if (this.applyMargin) {\n polX = this.marginize(polX, \"w\", i);\n polY = this.marginize(polY, \"h\", i);\n }\n this.path[0].push({ X: polX, Y: polY });\n }\n this.path[0].push({ X: parseInt(this.startX), Y: parseInt(this.startY) });\n };\n\n this.createRn = function () {\n for (let i = 0; i < this.polyLength * 2; i++) {\n this.rnArray.push(R.float());\n }\n };\n\n this.marginize = function (pos, dim, i) {\n if (dim == \"w\") {\n if (pos > win_w - margin) {\n pos =\n win_w -\n margin -\n this.marginVar +\n parseInt(this.rnArray[i * 2] * this.marginVar * 2);\n } else if (pos < margin) {\n pos =\n margin -\n this.marginVar +\n parseInt(this.rnArray[i * 2] * this.marginVar * 2);\n }\n } else if (dim == \"h\") {\n if (pos > win_h - margin) {\n pos =\n win_h -\n margin -\n this.marginVar +\n parseInt(this.rnArray[i * 2 + 1] * this.marginVar * 2);\n }\n if (pos < margin) {\n pos =\n margin -\n this.marginVar +\n parseInt(this.rnArray[i * 2 + 1] * this.marginVar * 2);\n }\n }\n return pos;\n };\n\n this.getPath = function () {\n return this.path;\n };\n}\n\nfunction renderSelections(treatAllAsTrue = false) {\n console.log(\"renderSelections\");\n // let solution_paths;\n let clip_paths;\n let subj_paths = [\n [\n { X: (win_w / 2) * -1, Y: win_h / 2 },\n { X: (win_w / 2) * -1 + 1, Y: win_h / 2 },\n { X: (win_w / 2) * -1 + 1, Y: win_h / 2 + 1 },\n { X: (win_w / 2) * -1, Y: win_h / 2 + 1 },\n ],\n ];\n\n // rectangles\n if (showRectangles || treatAllAsTrue) {\n let sx = selectionObjectsOrigin.x;\n let sy = selectionObjectsOrigin.y;\n\n for (let i = 0; i < amount; i++) {\n selectionObjects[i].setValue(\"w\", 1 + elWidth * selectionObjects[i].wR);\n selectionObjects[i].setValue(\"h\", 1 + elHeight * selectionObjects[i].hR);\n selectionObjects[i].setValue(\"x\", sx);\n selectionObjects[i].setValue(\"y\", sy);\n\n sx += 100 - parseInt(selectionObjects[i].xR * 200);\n sy += 100 - parseInt(selectionObjects[i].yR * 200);\n\n clip_paths = selectionObjects[i].getPath();\n\n let angles = rotateAllRectangles\n ? angle\n : parseInt(360 * selectionObjects[i].wR);\n clip_paths = rotatePath(angles, clip_paths);\n\n subj_paths = clipPathToAll(subj_paths, clip_paths, \"union\");\n }\n }\n\n // polygons\n if (showPolygons || treatAllAsTrue) {\n let poly = polygonObjects[0];\n poly.makePolygon();\n\n clip_paths = poly.getPath();\n let fillTypes = [\n ClipperLib.PolyFillType.pftNegative,\n ClipperLib.PolyFillType.pftPositive,\n ];\n const clip_paths_simp = ClipperLib.Clipper.SimplifyPolygons(\n clip_paths,\n fillTypes[0]\n );\n subj_paths = clipPathToAll(subj_paths, clip_paths_simp, \"union\");\n }\n\n // grid\n if (showGrid || treatAllAsTrue) {\n let gridSize = largestSide / gridVal;\n let clip_paths = [[]];\n for (let i = 0; i <= largestSide / gridSize; i++) {\n for (let j = 0; j <= largestSide / gridSize; j++) {\n clip_paths.push([\n { X: i * gridSize + gridMargin, Y: j * gridSize + gridMargin },\n {\n X: i * gridSize + gridSize - gridMargin,\n Y: j * gridSize + gridMargin,\n },\n {\n X: i * gridSize + gridSize - gridMargin,\n Y: j * gridSize + gridSize - gridMargin,\n },\n {\n X: i * gridSize + gridMargin,\n Y: j * gridSize + gridSize - gridMargin,\n },\n ]);\n\n //clip_paths = [[{X:i*gridSize,Y:j*gridSize},{X:i+gridSize,Y:j},{X:i+gridSize,Y:j+gridSize},{X:i,Y:j+gridSize}]]; //star\n }\n }\n\n let clipTypes = [\"difference\", \"intersection\", \"union\"];\n subj_paths = clipPathToAll(subj_paths, clip_paths, clipTypes[gridCLipType]);\n }\n\n // star\n if (showStar || treatAllAsTrue) {\n let largestSide = win_w >= win_h ? win_w : win_h;\n let gridSize = largestSide / gridVal;\n let clip_paths = [[]];\n for (let i = 0; i <= largestSide / gridSize; i++) {\n for (let j = 0; j <= largestSide / gridSize; j++) {\n clip_paths = [\n [\n { X: i * gridSize, Y: j * gridSize },\n { X: i + gridSize, Y: j },\n { X: i + gridSize, Y: j + gridSize },\n { X: i, Y: j + gridSize },\n ],\n ]; //star\n subj_paths = clipPathToAll(subj_paths, clip_paths, \"union\");\n }\n }\n }\n\n // frames\n if (showFrame || treatAllAsTrue) {\n let clip_paths = [[]];\n for (let i = 0; i < frameAmount; i += 2) {\n let v = i * R.int(2, 20);\n\n const clip_path1 = [\n [\n { X: v + 10, Y: v + 10 },\n { X: win_w - v - 10, Y: v + 10 },\n { X: win_w - v - 10, Y: win_h - v - 10 },\n { X: v + 10, Y: win_h - v - 10 },\n ],\n [\n { X: v * 2 + 10, Y: v * 2 + 10 },\n { X: v + 10, Y: v + 10 },\n ],\n ];\n const clip_path2 = [\n [\n { X: v + 20, Y: v + 20 },\n { X: win_w - v - 20, Y: v + 20 },\n { X: win_w - v - 20, Y: win_h - v - 20 },\n { X: v + 20, Y: win_h - v - 20 },\n { X: v + 20, Y: v + 20 },\n ],\n ];\n clip_paths = clipPathToAll(clip_path1, clip_path2, \"difference\");\n subj_paths = clipPathToAll(subj_paths, clip_paths, \"union\");\n }\n }\n\n //viewport clipping\n clip_paths = [\n [\n { X: 0, Y: 0 },\n { X: win_w, Y: 0 },\n { X: win_w, Y: win_h },\n { X: 0, Y: win_h },\n ],\n ];\n subj_paths = clipPathToAll(subj_paths, clip_paths, \"intersection\");\n\n //center hole\n if (showHole || treatAllAsTrue) {\n let ch_w = win_w / 2 + selectionObjects[0].wR * margin;\n let ch_h = win_h / 2 + selectionObjects[0].hR * margin;\n let ch_x = (win_w - ch_w) / 2;\n let ch_y = (win_h - ch_h) / 2;\n clip_paths = [\n [\n { X: ch_x, Y: ch_y },\n { X: ch_x + ch_w, Y: ch_y },\n { X: ch_x + ch_w, Y: ch_y + ch_h },\n { X: ch_x, Y: ch_y + ch_h },\n ],\n ];\n subj_paths = clipPathToAll(subj_paths, clip_paths, \"difference\");\n }\n\n let svgPath = paths2string(subj_paths);\n\n // if path empty show all styles\n if (svgPath == \"M0,0\" && !treatAllAsTrue) {\n renderSelections(true);\n } else if (svgPath == \"M0,0\") {\n console.error(\n `empty path on token ID after setting treatAllAsTrue ${tokenId}`\n );\n } else {\n document.querySelector(\"#selectionPath\").setAttribute(\"d\", svgPath);\n }\n}\n\nfunction clipPathToAll(subj_paths, clip_paths, type) {\n // type: 'intersection', 'union' or 'difference';\n let cpr = new ClipperLib.Clipper();\n ClipperLib.JS.ScaleUpPaths(subj_paths, 1);\n ClipperLib.JS.ScaleUpPaths(clip_paths, 1);\n cpr.AddPaths(subj_paths, ClipperLib.PolyType.ptSubject, true);\n cpr.AddPaths(clip_paths, ClipperLib.PolyType.ptClip, true);\n\n let subject_fillType = ClipperLib.PolyFillType.pftNonZero;\n let clip_fillType = ClipperLib.PolyFillType.pftNonZero;\n const solution_paths = new ClipperLib.Paths();\n type = type.charAt(0).toUpperCase() + type.slice(1);\n cpr.Execute(\n ClipperLib.ClipType[\"ct\" + type],\n solution_paths,\n subject_fillType,\n clip_fillType\n );\n\n return solution_paths;\n}\n\nfunction paths2string(paths) {\n let svgpath = \"\",\n i,\n j;\n let scale = 1;\n for (i = 0; i < paths.length; i++) {\n for (j = 0; j < paths[i].length; j++) {\n if (!j) svgpath += \"M\";\n else svgpath += \"L\";\n svgpath += paths[i][j].X / scale + \", \" + paths[i][j].Y / scale;\n }\n svgpath += \"Z\";\n }\n if (svgpath == \"\") svgpath = \"M0,0\";\n return svgpath;\n}\n\nfunction rotatePath(angle, path) {\n const pA = [path[0][0].X, path[0][0].Y];\n const pB = rotateCoordinate(\n path[0][0].X,\n path[0][0].Y,\n path[0][1].X,\n path[0][1].Y,\n angle\n );\n const pC = rotateCoordinate(\n path[0][0].X,\n path[0][0].Y,\n path[0][2].X,\n path[0][2].Y,\n angle\n );\n const pD = rotateCoordinate(\n path[0][0].X,\n path[0][0].Y,\n path[0][3].X,\n path[0][3].Y,\n angle\n );\n let rotatedPath = [\n [\n { X: pA[0], Y: pA[1] },\n { X: pB[0], Y: pB[1] },\n { X: pC[0], Y: pC[1] },\n { X: pD[0], Y: pD[1] },\n ],\n ];\n return rotatedPath;\n}\n\nfunction rotateCoordinate(cx, cy, x, y, angle) {\n var radians = (Math.PI / 180) * angle,\n cos = Math.cos(radians),\n sin = Math.sin(radians),\n nx = cos * (x - cx) + sin * (y - cy) + cx,\n ny = cos * (y - cy) - sin * (x - cx) + cy;\n return [nx, ny];\n}\n\nfunction setBg(seed) {\n let solidsArray = [\"rgb(123,50,50)\", \"rgb(50,123,50)\", \"rgb(50,50,123)\"];\n const solidColor = randomRange(0, 2, seed);\n const solidColorString = solidsArray[solidColor];\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n const solidOverGrad = randomRange(0, 10, seed) == 0 ? true : false;\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n const grayOverColor = randomRange(0, 5, seed) == 0 ? true : false;\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n const bgStyleRand = randomRange(1, 10, seed);\n\n const totalStyles = 4;\n let bgState =\n typeof backgroundOverride !== \"boolean\"\n ? backgroundOverride\n : ((bgStyleRand <= 7\n ? 0\n : bgStyleRand <= 8\n ? 1\n : bgStyleRand <= 9\n ? 2\n : 3) +\n backgroundOffset) %\n totalStyles;\n let finalColor, gradAngle, dark;\n if (bgState == 0) {\n if (solidOverGrad) {\n finalColor = \"background-color: \" + solidColorString;\n } else if (grayOverColor) {\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n gradAngle = randomRange(0, 90, seed);\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n const gray1Val = randomRange(0, 150, seed);\n const gray1 = `rgb(${gray1Val},${gray1Val},${gray1Val})`;\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n const gray2Val = randomRange(150, 255, seed);\n const gray2 = `rgb(${gray2Val},${gray2Val},${gray2Val})`;\n finalColor = `background: linear-gradient(${gradAngle}deg, ${gray1} 0%, ${gray2} 100%)`;\n } else {\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n gradAngle = randomRange(0, 90, seed);\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n dark = randomRange(100, 150, seed);\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n let color1R = randomRange(50, dark, seed);\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n let color1G = randomRange(50, dark, seed);\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n let color1B = randomRange(50, dark, seed);\n const color1 = `rgb(${color1R},${color1G},${color1B})`;\n\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n const addOrSubtract = randomRange(0, 1, seed) == 0 ? true : false;\n seed = solidityKeccak256([\"bytes32\"], [seed]);\n const colorOffset = randomRange(0, 100, seed);\n if (addOrSubtract) {\n color1R = color1R + colorOffset > 255 ? 255 : color1R + colorOffset;\n color1G = color1G + colorOffset > 255 ? 255 : color1G + colorOffset;\n color1B = color1B + colorOffset > 255 ? 255 : color1B + colorOffset;\n } else {\n color1R = color1R - colorOffset < 0 ? 0 : color1R - colorOffset;\n color1G = color1G - colorOffset < 0 ? 0 : color1G - colorOffset;\n color1B = color1B - colorOffset < 0 ? 0 : color1B - colorOffset;\n }\n\n const color2 = `rgb(${color1R},${color1G},${color1B})`;\n finalColor = `background: linear-gradient(${gradAngle}deg, ${color1} 0%, ${color2} 100%)`;\n }\n } else if (bgState == 1) {\n finalColor = \"background-color: white\";\n } else if (bgState == 2) {\n finalColor = \"background-color: black\";\n } else {\n finalColor = `background-image: linear-gradient(45deg, #cbcccb 25%, transparent 25%), linear-gradient(-45deg, #cbcccb 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #cbcccb 75%), linear-gradient(-45deg, transparent 75%, #cbcccb 75%);\n background-size: 8px 8px;\n background-position: 0 0, 0 4px, 4px -4px, -4px 0px;`;\n }\n console.log({ bgState, finalColor });\n document.getElementsByTagName(\"svg\")[0].style = finalColor;\n}\n\nlet resizeTimer;\nwindow.onresize = function () {\n console.log(\"clearTimeout\", resizeTimer); // TODO: remove before mainnet\n clearTimeout(resizeTimer);\n resizeTimer = setTimeout(resizeEnded, 500);\n};\n\nfunction resizeEnded() {\n console.log(\"resizeEnded\"); // TODO: remove before mainnet\n win_w = window.innerWidth; // tool width added\n win_h = window.innerHeight;\n largestSide = win_w >= win_h ? win_w : win_h;\n margin = parseInt(largestSide / marginFactor);\n renderSelections();\n}\n","import { AbiEncodingLengthMismatchError, BytesSizeMismatchError, UnsupportedPackedAbiType, } from '../../errors/abi.js';\nimport { InvalidAddressError, } from '../../errors/address.js';\nimport { isAddress } from '../address/isAddress.js';\nimport { concatHex } from '../data/concat.js';\nimport { pad } from '../data/pad.js';\nimport { boolToHex, numberToHex, stringToHex, } from '../encoding/toHex.js';\nimport { arrayRegex, bytesRegex, integerRegex } from '../regex.js';\nexport function encodePacked(types, values) {\n if (types.length !== values.length)\n throw new AbiEncodingLengthMismatchError({\n expectedLength: types.length,\n givenLength: values.length,\n });\n const data = [];\n for (let i = 0; i < types.length; i++) {\n const type = types[i];\n const value = values[i];\n data.push(encode(type, value));\n }\n return concatHex(data);\n}\nfunction encode(type, value, isArray = false) {\n if (type === 'address') {\n const address = value;\n if (!isAddress(address))\n throw new InvalidAddressError({ address });\n return pad(address.toLowerCase(), {\n size: isArray ? 32 : null,\n });\n }\n if (type === 'string')\n return stringToHex(value);\n if (type === 'bytes')\n return value;\n if (type === 'bool')\n return pad(boolToHex(value), { size: isArray ? 32 : 1 });\n const intMatch = type.match(integerRegex);\n if (intMatch) {\n const [_type, baseType, bits = '256'] = intMatch;\n const size = Number.parseInt(bits) / 8;\n return numberToHex(value, {\n size: isArray ? 32 : size,\n signed: baseType === 'int',\n });\n }\n const bytesMatch = type.match(bytesRegex);\n if (bytesMatch) {\n const [_type, size] = bytesMatch;\n if (Number.parseInt(size) !== (value.length - 2) / 2)\n throw new BytesSizeMismatchError({\n expectedSize: Number.parseInt(size),\n givenSize: (value.length - 2) / 2,\n });\n return pad(value, { dir: 'right', size: isArray ? 32 : null });\n }\n const arrayMatch = type.match(arrayRegex);\n if (arrayMatch && Array.isArray(value)) {\n const [_type, childType] = arrayMatch;\n const data = [];\n for (let i = 0; i < value.length; i++) {\n data.push(encode(childType, value[i], true));\n }\n if (data.length === 0)\n return '0x';\n return concatHex(data);\n }\n throw new UnsupportedPackedAbiType(type);\n}\n//# sourceMappingURL=encodePacked.js.map","import type {\n AbiParameterToPrimitiveType,\n AbiType,\n Address,\n SolidityAddress,\n SolidityArrayWithoutTuple,\n SolidityBool,\n SolidityBytes,\n SolidityInt,\n SolidityString,\n} from 'abitype'\n\nimport {\n AbiEncodingLengthMismatchError,\n type AbiEncodingLengthMismatchErrorType,\n BytesSizeMismatchError,\n type BytesSizeMismatchErrorType,\n UnsupportedPackedAbiType,\n} from '../../errors/abi.js'\nimport {\n InvalidAddressError,\n type InvalidAddressErrorType,\n} from '../../errors/address.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport { type IsAddressErrorType, isAddress } from '../address/isAddress.js'\nimport { type ConcatHexErrorType, concatHex } from '../data/concat.js'\nimport { type PadErrorType, pad } from '../data/pad.js'\nimport {\n type BoolToHexErrorType,\n type NumberToHexErrorType,\n type StringToHexErrorType,\n boolToHex,\n numberToHex,\n stringToHex,\n} from '../encoding/toHex.js'\nimport { arrayRegex, bytesRegex, integerRegex } from '../regex.js'\n\ntype PackedAbiType =\n | SolidityAddress\n | SolidityBool\n | SolidityBytes\n | SolidityInt\n | SolidityString\n | SolidityArrayWithoutTuple\n\ntype EncodePackedValues<\n packedAbiTypes extends readonly PackedAbiType[] | readonly unknown[],\n> = {\n [K in keyof packedAbiTypes]: packedAbiTypes[K] extends AbiType\n ? AbiParameterToPrimitiveType<{ type: packedAbiTypes[K] }>\n : unknown\n}\n\nexport type EncodePackedErrorType =\n | AbiEncodingLengthMismatchErrorType\n | ConcatHexErrorType\n | EncodeErrorType\n | ErrorType\n\nexport function encodePacked<\n const packedAbiTypes extends readonly PackedAbiType[] | readonly unknown[],\n>(types: packedAbiTypes, values: EncodePackedValues): Hex {\n if (types.length !== values.length)\n throw new AbiEncodingLengthMismatchError({\n expectedLength: types.length as number,\n givenLength: values.length as number,\n })\n\n const data: Hex[] = []\n for (let i = 0; i < (types as unknown[]).length; i++) {\n const type = types[i]\n const value = values[i]\n data.push(encode(type, value))\n }\n return concatHex(data)\n}\n\ntype EncodeErrorType =\n | BoolToHexErrorType\n | BytesSizeMismatchErrorType\n | InvalidAddressErrorType\n | IsAddressErrorType\n | NumberToHexErrorType\n | PadErrorType\n | StringToHexErrorType\n | UnsupportedPackedAbiType\n | ErrorType\n\nfunction encode(\n type: packedAbiType,\n value: EncodePackedValues<[packedAbiType]>[0],\n isArray = false,\n): Hex {\n if (type === 'address') {\n const address = value as Address\n if (!isAddress(address)) throw new InvalidAddressError({ address })\n return pad(address.toLowerCase() as Hex, {\n size: isArray ? 32 : null,\n }) as Address\n }\n if (type === 'string') return stringToHex(value as string)\n if (type === 'bytes') return value as Hex\n if (type === 'bool')\n return pad(boolToHex(value as boolean), { size: isArray ? 32 : 1 })\n\n const intMatch = (type as string).match(integerRegex)\n if (intMatch) {\n const [_type, baseType, bits = '256'] = intMatch\n const size = Number.parseInt(bits) / 8\n return numberToHex(value as number, {\n size: isArray ? 32 : size,\n signed: baseType === 'int',\n })\n }\n\n const bytesMatch = (type as string).match(bytesRegex)\n if (bytesMatch) {\n const [_type, size] = bytesMatch\n if (Number.parseInt(size) !== ((value as Hex).length - 2) / 2)\n throw new BytesSizeMismatchError({\n expectedSize: Number.parseInt(size),\n givenSize: ((value as Hex).length - 2) / 2,\n })\n return pad(value as Hex, { dir: 'right', size: isArray ? 32 : null }) as Hex\n }\n\n const arrayMatch = (type as string).match(arrayRegex)\n if (arrayMatch && Array.isArray(value)) {\n const [_type, childType] = arrayMatch\n const data: Hex[] = []\n for (let i = 0; i < value.length; i++) {\n data.push(encode(childType, value[i], true))\n }\n if (data.length === 0) return '0x'\n return concatHex(data)\n }\n\n throw new UnsupportedPackedAbiType(type)\n}\n","import { formatAbiItem, formatAbiParams } from '../utils/abi/formatAbiItem.js';\nimport { size } from '../utils/data/size.js';\nimport { BaseError } from './base.js';\nexport class AbiConstructorNotFoundError extends BaseError {\n constructor({ docsPath }) {\n super([\n 'A constructor was not found on the ABI.',\n 'Make sure you are using the correct ABI and that the constructor exists on it.',\n ].join('\\n'), {\n docsPath,\n name: 'AbiConstructorNotFoundError',\n });\n }\n}\nexport class AbiConstructorParamsNotFoundError extends BaseError {\n constructor({ docsPath }) {\n super([\n 'Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.',\n 'Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists.',\n ].join('\\n'), {\n docsPath,\n name: 'AbiConstructorParamsNotFoundError',\n });\n }\n}\nexport class AbiDecodingDataSizeInvalidError extends BaseError {\n constructor({ data, size }) {\n super([\n `Data size of ${size} bytes is invalid.`,\n 'Size must be in increments of 32 bytes (size % 32 === 0).',\n ].join('\\n'), {\n metaMessages: [`Data: ${data} (${size} bytes)`],\n name: 'AbiDecodingDataSizeInvalidError',\n });\n }\n}\nexport class AbiDecodingDataSizeTooSmallError extends BaseError {\n constructor({ data, params, size, }) {\n super([`Data size of ${size} bytes is too small for given parameters.`].join('\\n'), {\n metaMessages: [\n `Params: (${formatAbiParams(params, { includeName: true })})`,\n `Data: ${data} (${size} bytes)`,\n ],\n name: 'AbiDecodingDataSizeTooSmallError',\n });\n Object.defineProperty(this, \"data\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"params\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"size\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.data = data;\n this.params = params;\n this.size = size;\n }\n}\nexport class AbiDecodingZeroDataError extends BaseError {\n constructor() {\n super('Cannot decode zero data (\"0x\") with ABI parameters.', {\n name: 'AbiDecodingZeroDataError',\n });\n }\n}\nexport class AbiEncodingArrayLengthMismatchError extends BaseError {\n constructor({ expectedLength, givenLength, type, }) {\n super([\n `ABI encoding array length mismatch for type ${type}.`,\n `Expected length: ${expectedLength}`,\n `Given length: ${givenLength}`,\n ].join('\\n'), { name: 'AbiEncodingArrayLengthMismatchError' });\n }\n}\nexport class AbiEncodingBytesSizeMismatchError extends BaseError {\n constructor({ expectedSize, value }) {\n super(`Size of bytes \"${value}\" (bytes${size(value)}) does not match expected size (bytes${expectedSize}).`, { name: 'AbiEncodingBytesSizeMismatchError' });\n }\n}\nexport class AbiEncodingLengthMismatchError extends BaseError {\n constructor({ expectedLength, givenLength, }) {\n super([\n 'ABI encoding params/values length mismatch.',\n `Expected length (params): ${expectedLength}`,\n `Given length (values): ${givenLength}`,\n ].join('\\n'), { name: 'AbiEncodingLengthMismatchError' });\n }\n}\nexport class AbiErrorInputsNotFoundError extends BaseError {\n constructor(errorName, { docsPath }) {\n super([\n `Arguments (\\`args\\`) were provided to \"${errorName}\", but \"${errorName}\" on the ABI does not contain any parameters (\\`inputs\\`).`,\n 'Cannot encode error result without knowing what the parameter types are.',\n 'Make sure you are using the correct ABI and that the inputs exist on it.',\n ].join('\\n'), {\n docsPath,\n name: 'AbiErrorInputsNotFoundError',\n });\n }\n}\nexport class AbiErrorNotFoundError extends BaseError {\n constructor(errorName, { docsPath } = {}) {\n super([\n `Error ${errorName ? `\"${errorName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the error exists on it.',\n ].join('\\n'), {\n docsPath,\n name: 'AbiErrorNotFoundError',\n });\n }\n}\nexport class AbiErrorSignatureNotFoundError extends BaseError {\n constructor(signature, { docsPath }) {\n super([\n `Encoded error signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the error exists on it.',\n `You can look up the decoded signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'), {\n docsPath,\n name: 'AbiErrorSignatureNotFoundError',\n });\n Object.defineProperty(this, \"signature\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.signature = signature;\n }\n}\nexport class AbiEventSignatureEmptyTopicsError extends BaseError {\n constructor({ docsPath }) {\n super('Cannot extract event signature from empty topics.', {\n docsPath,\n name: 'AbiEventSignatureEmptyTopicsError',\n });\n }\n}\nexport class AbiEventSignatureNotFoundError extends BaseError {\n constructor(signature, { docsPath }) {\n super([\n `Encoded event signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the event exists on it.',\n `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'), {\n docsPath,\n name: 'AbiEventSignatureNotFoundError',\n });\n }\n}\nexport class AbiEventNotFoundError extends BaseError {\n constructor(eventName, { docsPath } = {}) {\n super([\n `Event ${eventName ? `\"${eventName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the event exists on it.',\n ].join('\\n'), {\n docsPath,\n name: 'AbiEventNotFoundError',\n });\n }\n}\nexport class AbiFunctionNotFoundError extends BaseError {\n constructor(functionName, { docsPath } = {}) {\n super([\n `Function ${functionName ? `\"${functionName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the function exists on it.',\n ].join('\\n'), {\n docsPath,\n name: 'AbiFunctionNotFoundError',\n });\n }\n}\nexport class AbiFunctionOutputsNotFoundError extends BaseError {\n constructor(functionName, { docsPath }) {\n super([\n `Function \"${functionName}\" does not contain any \\`outputs\\` on ABI.`,\n 'Cannot decode function result without knowing what the parameter types are.',\n 'Make sure you are using the correct ABI and that the function exists on it.',\n ].join('\\n'), {\n docsPath,\n name: 'AbiFunctionOutputsNotFoundError',\n });\n }\n}\nexport class AbiFunctionSignatureNotFoundError extends BaseError {\n constructor(signature, { docsPath }) {\n super([\n `Encoded function signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the function exists on it.',\n `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'), {\n docsPath,\n name: 'AbiFunctionSignatureNotFoundError',\n });\n }\n}\nexport class AbiItemAmbiguityError extends BaseError {\n constructor(x, y) {\n super('Found ambiguous types in overloaded ABI items.', {\n metaMessages: [\n `\\`${x.type}\\` in \\`${formatAbiItem(x.abiItem)}\\`, and`,\n `\\`${y.type}\\` in \\`${formatAbiItem(y.abiItem)}\\``,\n '',\n 'These types encode differently and cannot be distinguished at runtime.',\n 'Remove one of the ambiguous items in the ABI.',\n ],\n name: 'AbiItemAmbiguityError',\n });\n }\n}\nexport class BytesSizeMismatchError extends BaseError {\n constructor({ expectedSize, givenSize, }) {\n super(`Expected bytes${expectedSize}, got bytes${givenSize}.`, {\n name: 'BytesSizeMismatchError',\n });\n }\n}\nexport class DecodeLogDataMismatch extends BaseError {\n constructor({ abiItem, data, params, size, }) {\n super([\n `Data size of ${size} bytes is too small for non-indexed event parameters.`,\n ].join('\\n'), {\n metaMessages: [\n `Params: (${formatAbiParams(params, { includeName: true })})`,\n `Data: ${data} (${size} bytes)`,\n ],\n name: 'DecodeLogDataMismatch',\n });\n Object.defineProperty(this, \"abiItem\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"data\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"params\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"size\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.abiItem = abiItem;\n this.data = data;\n this.params = params;\n this.size = size;\n }\n}\nexport class DecodeLogTopicsMismatch extends BaseError {\n constructor({ abiItem, param, }) {\n super([\n `Expected a topic for indexed event parameter${param.name ? ` \"${param.name}\"` : ''} on event \"${formatAbiItem(abiItem, { includeName: true })}\".`,\n ].join('\\n'), { name: 'DecodeLogTopicsMismatch' });\n Object.defineProperty(this, \"abiItem\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.abiItem = abiItem;\n }\n}\nexport class InvalidAbiEncodingTypeError extends BaseError {\n constructor(type, { docsPath }) {\n super([\n `Type \"${type}\" is not a valid encoding type.`,\n 'Please provide a valid ABI type.',\n ].join('\\n'), { docsPath, name: 'InvalidAbiEncodingType' });\n }\n}\nexport class InvalidAbiDecodingTypeError extends BaseError {\n constructor(type, { docsPath }) {\n super([\n `Type \"${type}\" is not a valid decoding type.`,\n 'Please provide a valid ABI type.',\n ].join('\\n'), { docsPath, name: 'InvalidAbiDecodingType' });\n }\n}\nexport class InvalidArrayError extends BaseError {\n constructor(value) {\n super([`Value \"${value}\" is not a valid array.`].join('\\n'), {\n name: 'InvalidArrayError',\n });\n }\n}\nexport class InvalidDefinitionTypeError extends BaseError {\n constructor(type) {\n super([\n `\"${type}\" is not a valid definition type.`,\n 'Valid types: \"function\", \"event\", \"error\"',\n ].join('\\n'), { name: 'InvalidDefinitionTypeError' });\n }\n}\nexport class UnsupportedPackedAbiType extends BaseError {\n constructor(type) {\n super(`Type \"${type}\" is not supported for packed encoding.`, {\n name: 'UnsupportedPackedAbiType',\n });\n }\n}\n//# sourceMappingURL=abi.js.map","import type { Abi, AbiEvent, AbiParameter } from 'abitype'\n\nimport type { Hex } from '../types/misc.js'\nimport { formatAbiItem, formatAbiParams } from '../utils/abi/formatAbiItem.js'\nimport { size } from '../utils/data/size.js'\n\nimport { BaseError } from './base.js'\n\nexport type AbiConstructorNotFoundErrorType = AbiConstructorNotFoundError & {\n name: 'AbiConstructorNotFoundError'\n}\nexport class AbiConstructorNotFoundError extends BaseError {\n constructor({ docsPath }: { docsPath: string }) {\n super(\n [\n 'A constructor was not found on the ABI.',\n 'Make sure you are using the correct ABI and that the constructor exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiConstructorNotFoundError',\n },\n )\n }\n}\n\nexport type AbiConstructorParamsNotFoundErrorType =\n AbiConstructorParamsNotFoundError & {\n name: 'AbiConstructorParamsNotFoundError'\n }\n\nexport class AbiConstructorParamsNotFoundError extends BaseError {\n constructor({ docsPath }: { docsPath: string }) {\n super(\n [\n 'Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.',\n 'Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiConstructorParamsNotFoundError',\n },\n )\n }\n}\n\nexport type AbiDecodingDataSizeInvalidErrorType =\n AbiDecodingDataSizeInvalidError & {\n name: 'AbiDecodingDataSizeInvalidError'\n }\nexport class AbiDecodingDataSizeInvalidError extends BaseError {\n constructor({ data, size }: { data: Hex; size: number }) {\n super(\n [\n `Data size of ${size} bytes is invalid.`,\n 'Size must be in increments of 32 bytes (size % 32 === 0).',\n ].join('\\n'),\n {\n metaMessages: [`Data: ${data} (${size} bytes)`],\n name: 'AbiDecodingDataSizeInvalidError',\n },\n )\n }\n}\n\nexport type AbiDecodingDataSizeTooSmallErrorType =\n AbiDecodingDataSizeTooSmallError & {\n name: 'AbiDecodingDataSizeTooSmallError'\n }\nexport class AbiDecodingDataSizeTooSmallError extends BaseError {\n data: Hex\n params: readonly AbiParameter[]\n size: number\n\n constructor({\n data,\n params,\n size,\n }: { data: Hex; params: readonly AbiParameter[]; size: number }) {\n super(\n [`Data size of ${size} bytes is too small for given parameters.`].join(\n '\\n',\n ),\n {\n metaMessages: [\n `Params: (${formatAbiParams(params, { includeName: true })})`,\n `Data: ${data} (${size} bytes)`,\n ],\n name: 'AbiDecodingDataSizeTooSmallError',\n },\n )\n\n this.data = data\n this.params = params\n this.size = size\n }\n}\n\nexport type AbiDecodingZeroDataErrorType = AbiDecodingZeroDataError & {\n name: 'AbiDecodingZeroDataError'\n}\nexport class AbiDecodingZeroDataError extends BaseError {\n constructor() {\n super('Cannot decode zero data (\"0x\") with ABI parameters.', {\n name: 'AbiDecodingZeroDataError',\n })\n }\n}\n\nexport type AbiEncodingArrayLengthMismatchErrorType =\n AbiEncodingArrayLengthMismatchError & {\n name: 'AbiEncodingArrayLengthMismatchError'\n }\nexport class AbiEncodingArrayLengthMismatchError extends BaseError {\n constructor({\n expectedLength,\n givenLength,\n type,\n }: { expectedLength: number; givenLength: number; type: string }) {\n super(\n [\n `ABI encoding array length mismatch for type ${type}.`,\n `Expected length: ${expectedLength}`,\n `Given length: ${givenLength}`,\n ].join('\\n'),\n { name: 'AbiEncodingArrayLengthMismatchError' },\n )\n }\n}\n\nexport type AbiEncodingBytesSizeMismatchErrorType =\n AbiEncodingBytesSizeMismatchError & {\n name: 'AbiEncodingBytesSizeMismatchError'\n }\nexport class AbiEncodingBytesSizeMismatchError extends BaseError {\n constructor({ expectedSize, value }: { expectedSize: number; value: Hex }) {\n super(\n `Size of bytes \"${value}\" (bytes${size(\n value,\n )}) does not match expected size (bytes${expectedSize}).`,\n { name: 'AbiEncodingBytesSizeMismatchError' },\n )\n }\n}\n\nexport type AbiEncodingLengthMismatchErrorType =\n AbiEncodingLengthMismatchError & {\n name: 'AbiEncodingLengthMismatchError'\n }\nexport class AbiEncodingLengthMismatchError extends BaseError {\n constructor({\n expectedLength,\n givenLength,\n }: { expectedLength: number; givenLength: number }) {\n super(\n [\n 'ABI encoding params/values length mismatch.',\n `Expected length (params): ${expectedLength}`,\n `Given length (values): ${givenLength}`,\n ].join('\\n'),\n { name: 'AbiEncodingLengthMismatchError' },\n )\n }\n}\n\nexport type AbiErrorInputsNotFoundErrorType = AbiErrorInputsNotFoundError & {\n name: 'AbiErrorInputsNotFoundError'\n}\nexport class AbiErrorInputsNotFoundError extends BaseError {\n constructor(errorName: string, { docsPath }: { docsPath: string }) {\n super(\n [\n `Arguments (\\`args\\`) were provided to \"${errorName}\", but \"${errorName}\" on the ABI does not contain any parameters (\\`inputs\\`).`,\n 'Cannot encode error result without knowing what the parameter types are.',\n 'Make sure you are using the correct ABI and that the inputs exist on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiErrorInputsNotFoundError',\n },\n )\n }\n}\n\nexport type AbiErrorNotFoundErrorType = AbiErrorNotFoundError & {\n name: 'AbiErrorNotFoundError'\n}\nexport class AbiErrorNotFoundError extends BaseError {\n constructor(\n errorName?: string | undefined,\n { docsPath }: { docsPath?: string | undefined } = {},\n ) {\n super(\n [\n `Error ${errorName ? `\"${errorName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the error exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiErrorNotFoundError',\n },\n )\n }\n}\n\nexport type AbiErrorSignatureNotFoundErrorType =\n AbiErrorSignatureNotFoundError & {\n name: 'AbiErrorSignatureNotFoundError'\n }\nexport class AbiErrorSignatureNotFoundError extends BaseError {\n signature: Hex\n\n constructor(signature: Hex, { docsPath }: { docsPath: string }) {\n super(\n [\n `Encoded error signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the error exists on it.',\n `You can look up the decoded signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiErrorSignatureNotFoundError',\n },\n )\n this.signature = signature\n }\n}\n\nexport type AbiEventSignatureEmptyTopicsErrorType =\n AbiEventSignatureEmptyTopicsError & {\n name: 'AbiEventSignatureEmptyTopicsError'\n }\nexport class AbiEventSignatureEmptyTopicsError extends BaseError {\n constructor({ docsPath }: { docsPath: string }) {\n super('Cannot extract event signature from empty topics.', {\n docsPath,\n name: 'AbiEventSignatureEmptyTopicsError',\n })\n }\n}\n\nexport type AbiEventSignatureNotFoundErrorType =\n AbiEventSignatureNotFoundError & {\n name: 'AbiEventSignatureNotFoundError'\n }\nexport class AbiEventSignatureNotFoundError extends BaseError {\n constructor(signature: Hex, { docsPath }: { docsPath: string }) {\n super(\n [\n `Encoded event signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the event exists on it.',\n `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiEventSignatureNotFoundError',\n },\n )\n }\n}\n\nexport type AbiEventNotFoundErrorType = AbiEventNotFoundError & {\n name: 'AbiEventNotFoundError'\n}\nexport class AbiEventNotFoundError extends BaseError {\n constructor(\n eventName?: string | undefined,\n { docsPath }: { docsPath?: string | undefined } = {},\n ) {\n super(\n [\n `Event ${eventName ? `\"${eventName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the event exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiEventNotFoundError',\n },\n )\n }\n}\n\nexport type AbiFunctionNotFoundErrorType = AbiFunctionNotFoundError & {\n name: 'AbiFunctionNotFoundError'\n}\nexport class AbiFunctionNotFoundError extends BaseError {\n constructor(\n functionName?: string | undefined,\n { docsPath }: { docsPath?: string | undefined } = {},\n ) {\n super(\n [\n `Function ${functionName ? `\"${functionName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the function exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiFunctionNotFoundError',\n },\n )\n }\n}\n\nexport type AbiFunctionOutputsNotFoundErrorType =\n AbiFunctionOutputsNotFoundError & {\n name: 'AbiFunctionOutputsNotFoundError'\n }\nexport class AbiFunctionOutputsNotFoundError extends BaseError {\n constructor(functionName: string, { docsPath }: { docsPath: string }) {\n super(\n [\n `Function \"${functionName}\" does not contain any \\`outputs\\` on ABI.`,\n 'Cannot decode function result without knowing what the parameter types are.',\n 'Make sure you are using the correct ABI and that the function exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiFunctionOutputsNotFoundError',\n },\n )\n }\n}\n\nexport type AbiFunctionSignatureNotFoundErrorType =\n AbiFunctionSignatureNotFoundError & {\n name: 'AbiFunctionSignatureNotFoundError'\n }\nexport class AbiFunctionSignatureNotFoundError extends BaseError {\n constructor(signature: Hex, { docsPath }: { docsPath: string }) {\n super(\n [\n `Encoded function signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the function exists on it.',\n `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiFunctionSignatureNotFoundError',\n },\n )\n }\n}\n\nexport type AbiItemAmbiguityErrorType = AbiItemAmbiguityError & {\n name: 'AbiItemAmbiguityError'\n}\nexport class AbiItemAmbiguityError extends BaseError {\n constructor(\n x: { abiItem: Abi[number]; type: string },\n y: { abiItem: Abi[number]; type: string },\n ) {\n super('Found ambiguous types in overloaded ABI items.', {\n metaMessages: [\n `\\`${x.type}\\` in \\`${formatAbiItem(x.abiItem)}\\`, and`,\n `\\`${y.type}\\` in \\`${formatAbiItem(y.abiItem)}\\``,\n '',\n 'These types encode differently and cannot be distinguished at runtime.',\n 'Remove one of the ambiguous items in the ABI.',\n ],\n name: 'AbiItemAmbiguityError',\n })\n }\n}\n\nexport type BytesSizeMismatchErrorType = BytesSizeMismatchError & {\n name: 'BytesSizeMismatchError'\n}\nexport class BytesSizeMismatchError extends BaseError {\n constructor({\n expectedSize,\n givenSize,\n }: { expectedSize: number; givenSize: number }) {\n super(`Expected bytes${expectedSize}, got bytes${givenSize}.`, {\n name: 'BytesSizeMismatchError',\n })\n }\n}\n\nexport type DecodeLogDataMismatchErrorType = DecodeLogDataMismatch & {\n name: 'DecodeLogDataMismatch'\n}\nexport class DecodeLogDataMismatch extends BaseError {\n abiItem: AbiEvent\n data: Hex\n params: readonly AbiParameter[]\n size: number\n\n constructor({\n abiItem,\n data,\n params,\n size,\n }: {\n abiItem: AbiEvent\n data: Hex\n params: readonly AbiParameter[]\n size: number\n }) {\n super(\n [\n `Data size of ${size} bytes is too small for non-indexed event parameters.`,\n ].join('\\n'),\n {\n metaMessages: [\n `Params: (${formatAbiParams(params, { includeName: true })})`,\n `Data: ${data} (${size} bytes)`,\n ],\n name: 'DecodeLogDataMismatch',\n },\n )\n\n this.abiItem = abiItem\n this.data = data\n this.params = params\n this.size = size\n }\n}\n\nexport type DecodeLogTopicsMismatchErrorType = DecodeLogTopicsMismatch & {\n name: 'DecodeLogTopicsMismatch'\n}\nexport class DecodeLogTopicsMismatch extends BaseError {\n abiItem: AbiEvent\n\n constructor({\n abiItem,\n param,\n }: {\n abiItem: AbiEvent\n param: AbiParameter & { indexed: boolean }\n }) {\n super(\n [\n `Expected a topic for indexed event parameter${\n param.name ? ` \"${param.name}\"` : ''\n } on event \"${formatAbiItem(abiItem, { includeName: true })}\".`,\n ].join('\\n'),\n { name: 'DecodeLogTopicsMismatch' },\n )\n\n this.abiItem = abiItem\n }\n}\n\nexport type InvalidAbiEncodingTypeErrorType = InvalidAbiEncodingTypeError & {\n name: 'InvalidAbiEncodingTypeError'\n}\nexport class InvalidAbiEncodingTypeError extends BaseError {\n constructor(type: string, { docsPath }: { docsPath: string }) {\n super(\n [\n `Type \"${type}\" is not a valid encoding type.`,\n 'Please provide a valid ABI type.',\n ].join('\\n'),\n { docsPath, name: 'InvalidAbiEncodingType' },\n )\n }\n}\n\nexport type InvalidAbiDecodingTypeErrorType = InvalidAbiDecodingTypeError & {\n name: 'InvalidAbiDecodingTypeError'\n}\nexport class InvalidAbiDecodingTypeError extends BaseError {\n constructor(type: string, { docsPath }: { docsPath: string }) {\n super(\n [\n `Type \"${type}\" is not a valid decoding type.`,\n 'Please provide a valid ABI type.',\n ].join('\\n'),\n { docsPath, name: 'InvalidAbiDecodingType' },\n )\n }\n}\n\nexport type InvalidArrayErrorType = InvalidArrayError & {\n name: 'InvalidArrayError'\n}\nexport class InvalidArrayError extends BaseError {\n constructor(value: unknown) {\n super([`Value \"${value}\" is not a valid array.`].join('\\n'), {\n name: 'InvalidArrayError',\n })\n }\n}\n\nexport type InvalidDefinitionTypeErrorType = InvalidDefinitionTypeError & {\n name: 'InvalidDefinitionTypeError'\n}\nexport class InvalidDefinitionTypeError extends BaseError {\n constructor(type: string) {\n super(\n [\n `\"${type}\" is not a valid definition type.`,\n 'Valid types: \"function\", \"event\", \"error\"',\n ].join('\\n'),\n { name: 'InvalidDefinitionTypeError' },\n )\n }\n}\n\nexport type UnsupportedPackedAbiTypeErrorType = UnsupportedPackedAbiType & {\n name: 'UnsupportedPackedAbiType'\n}\nexport class UnsupportedPackedAbiType extends BaseError {\n constructor(type: unknown) {\n super(`Type \"${type}\" is not supported for packed encoding.`, {\n name: 'UnsupportedPackedAbiType',\n })\n }\n}\n","import { InvalidDefinitionTypeError, } from '../../errors/abi.js';\nexport function formatAbiItem(abiItem, { includeName = false } = {}) {\n if (abiItem.type !== 'function' &&\n abiItem.type !== 'event' &&\n abiItem.type !== 'error')\n throw new InvalidDefinitionTypeError(abiItem.type);\n return `${abiItem.name}(${formatAbiParams(abiItem.inputs, { includeName })})`;\n}\nexport function formatAbiParams(params, { includeName = false } = {}) {\n if (!params)\n return '';\n return params\n .map((param) => formatAbiParam(param, { includeName }))\n .join(includeName ? ', ' : ',');\n}\nfunction formatAbiParam(param, { includeName }) {\n if (param.type.startsWith('tuple')) {\n return `(${formatAbiParams(param.components, { includeName })})${param.type.slice('tuple'.length)}`;\n }\n return param.type + (includeName && param.name ? ` ${param.name}` : '');\n}\n//# sourceMappingURL=formatAbiItem.js.map","import type { AbiParameter } from 'abitype'\n\nimport {\n InvalidDefinitionTypeError,\n type InvalidDefinitionTypeErrorType,\n} from '../../errors/abi.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { AbiItem } from '../../types/contract.js'\n\nexport type FormatAbiItemErrorType =\n | FormatAbiParamsErrorType\n | InvalidDefinitionTypeErrorType\n | ErrorType\n\nexport function formatAbiItem(\n abiItem: AbiItem,\n { includeName = false }: { includeName?: boolean | undefined } = {},\n) {\n if (\n abiItem.type !== 'function' &&\n abiItem.type !== 'event' &&\n abiItem.type !== 'error'\n )\n throw new InvalidDefinitionTypeError(abiItem.type)\n\n return `${abiItem.name}(${formatAbiParams(abiItem.inputs, { includeName })})`\n}\n\nexport type FormatAbiParamsErrorType = ErrorType\n\nexport function formatAbiParams(\n params: readonly AbiParameter[] | undefined,\n { includeName = false }: { includeName?: boolean | undefined } = {},\n): string {\n if (!params) return ''\n return params\n .map((param) => formatAbiParam(param, { includeName }))\n .join(includeName ? ', ' : ',')\n}\n\nexport type FormatAbiParamErrorType = ErrorType\n\nfunction formatAbiParam(\n param: AbiParameter,\n { includeName }: { includeName: boolean },\n): string {\n if (param.type.startsWith('tuple')) {\n return `(${formatAbiParams(\n (param as unknown as { components: AbiParameter[] }).components,\n { includeName },\n )})${param.type.slice('tuple'.length)}`\n }\n return param.type + (includeName && param.name ? ` ${param.name}` : '')\n}\n","import { isHex } from './isHex.js';\n/**\n * @description Retrieves the size of the value (in bytes).\n *\n * @param value The value (hex or byte array) to retrieve the size of.\n * @returns The size of the value (in bytes).\n */\nexport function size(value) {\n if (isHex(value, { strict: false }))\n return Math.ceil((value.length - 2) / 2);\n return value.length;\n}\n//# sourceMappingURL=size.js.map","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\nimport { type IsHexErrorType, isHex } from './isHex.js'\n\nexport type SizeErrorType = IsHexErrorType | ErrorType\n\n/**\n * @description Retrieves the size of the value (in bytes).\n *\n * @param value The value (hex or byte array) to retrieve the size of.\n * @returns The size of the value (in bytes).\n */\nexport function size(value: Hex | ByteArray) {\n if (isHex(value, { strict: false })) return Math.ceil((value.length - 2) / 2)\n return value.length\n}\n","export function isHex(value, { strict = true } = {}) {\n if (!value)\n return false;\n if (typeof value !== 'string')\n return false;\n return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith('0x');\n}\n//# sourceMappingURL=isHex.js.map","import type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\n\nexport type IsHexErrorType = ErrorType\n\nexport function isHex(\n value: unknown,\n { strict = true }: { strict?: boolean | undefined } = {},\n): value is Hex {\n if (!value) return false\n if (typeof value !== 'string') return false\n return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith('0x')\n}\n","import { version } from './version.js';\nlet errorConfig = {\n getDocsUrl: ({ docsBaseUrl, docsPath = '', docsSlug, }) => docsPath\n ? `${docsBaseUrl ?? 'https://viem.sh'}${docsPath}${docsSlug ? `#${docsSlug}` : ''}`\n : undefined,\n version,\n};\nexport function setErrorConfig(config) {\n errorConfig = config;\n}\nexport class BaseError extends Error {\n constructor(shortMessage, args = {}) {\n const details = (() => {\n if (args.cause instanceof BaseError)\n return args.cause.details;\n if (args.cause?.message)\n return args.cause.message;\n return args.details;\n })();\n const docsPath = (() => {\n if (args.cause instanceof BaseError)\n return args.cause.docsPath || args.docsPath;\n return args.docsPath;\n })();\n const docsUrl = errorConfig.getDocsUrl?.({ ...args, docsPath });\n const message = [\n shortMessage || 'An error occurred.',\n '',\n ...(args.metaMessages ? [...args.metaMessages, ''] : []),\n ...(docsUrl ? [`Docs: ${docsUrl}`] : []),\n ...(details ? [`Details: ${details}`] : []),\n ...(errorConfig.version ? [`Version: ${errorConfig.version}`] : []),\n ].join('\\n');\n super(message, args.cause ? { cause: args.cause } : undefined);\n Object.defineProperty(this, \"details\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"docsPath\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"metaMessages\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"shortMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'BaseError'\n });\n this.details = details;\n this.docsPath = docsPath;\n this.metaMessages = args.metaMessages;\n this.name = args.name ?? this.name;\n this.shortMessage = shortMessage;\n this.version = version;\n }\n walk(fn) {\n return walk(this, fn);\n }\n}\nfunction walk(err, fn) {\n if (fn?.(err))\n return err;\n if (err && typeof err === 'object' && 'cause' in err)\n return walk(err.cause, fn);\n return fn ? null : err;\n}\n//# sourceMappingURL=base.js.map","import { version } from './version.js'\n\ntype ErrorConfig = {\n getDocsUrl?: ((args: BaseErrorParameters) => string | undefined) | undefined\n version?: string | undefined\n}\n\nlet errorConfig: ErrorConfig = {\n getDocsUrl: ({\n docsBaseUrl,\n docsPath = '',\n docsSlug,\n }: BaseErrorParameters) =>\n docsPath\n ? `${docsBaseUrl ?? 'https://viem.sh'}${docsPath}${\n docsSlug ? `#${docsSlug}` : ''\n }`\n : undefined,\n version,\n}\n\nexport function setErrorConfig(config: ErrorConfig) {\n errorConfig = config\n}\n\ntype BaseErrorParameters = {\n cause?: BaseError | Error | undefined\n details?: string | undefined\n docsBaseUrl?: string | undefined\n docsPath?: string | undefined\n docsSlug?: string | undefined\n metaMessages?: string[] | undefined\n name?: string | undefined\n}\n\nexport type BaseErrorType = BaseError & { name: 'BaseError' }\nexport class BaseError extends Error {\n details: string\n docsPath?: string | undefined\n metaMessages?: string[] | undefined\n shortMessage: string\n version: string\n\n override name = 'BaseError'\n\n constructor(shortMessage: string, args: BaseErrorParameters = {}) {\n const details = (() => {\n if (args.cause instanceof BaseError) return args.cause.details\n if (args.cause?.message) return args.cause.message\n return args.details!\n })()\n const docsPath = (() => {\n if (args.cause instanceof BaseError)\n return args.cause.docsPath || args.docsPath\n return args.docsPath\n })()\n const docsUrl = errorConfig.getDocsUrl?.({ ...args, docsPath })\n\n const message = [\n shortMessage || 'An error occurred.',\n '',\n ...(args.metaMessages ? [...args.metaMessages, ''] : []),\n ...(docsUrl ? [`Docs: ${docsUrl}`] : []),\n ...(details ? [`Details: ${details}`] : []),\n ...(errorConfig.version ? [`Version: ${errorConfig.version}`] : []),\n ].join('\\n')\n\n super(message, args.cause ? { cause: args.cause } : undefined)\n\n this.details = details\n this.docsPath = docsPath\n this.metaMessages = args.metaMessages\n this.name = args.name ?? this.name\n this.shortMessage = shortMessage\n this.version = version\n }\n\n walk(): Error\n walk(fn: (err: unknown) => boolean): Error | null\n walk(fn?: any): any {\n return walk(this, fn)\n }\n}\n\nfunction walk(\n err: unknown,\n fn?: ((err: unknown) => boolean) | undefined,\n): unknown {\n if (fn?.(err)) return err\n if (err && typeof err === 'object' && 'cause' in err)\n return walk(err.cause, fn)\n return fn ? null : err\n}\n","export const version = '2.21.2';\n//# sourceMappingURL=version.js.map","export const version = '2.21.2'\n","import { BaseError } from './base.js';\nexport class InvalidAddressError extends BaseError {\n constructor({ address }) {\n super(`Address \"${address}\" is invalid.`, {\n metaMessages: [\n '- Address must be a hex value of 20 bytes (40 hex characters).',\n '- Address must match its checksum counterpart.',\n ],\n name: 'InvalidAddressError',\n });\n }\n}\n//# sourceMappingURL=address.js.map","import { BaseError } from './base.js'\n\nexport type InvalidAddressErrorType = InvalidAddressError & {\n name: 'InvalidAddressError'\n}\nexport class InvalidAddressError extends BaseError {\n constructor({ address }: { address: string }) {\n super(`Address \"${address}\" is invalid.`, {\n metaMessages: [\n '- Address must be a hex value of 20 bytes (40 hex characters).',\n '- Address must match its checksum counterpart.',\n ],\n name: 'InvalidAddressError',\n })\n }\n}\n","import { LruMap } from '../lru.js';\nimport { checksumAddress } from './getAddress.js';\nconst addressRegex = /^0x[a-fA-F0-9]{40}$/;\n/** @internal */\nexport const isAddressCache = /*#__PURE__*/ new LruMap(8192);\nexport function isAddress(address, options) {\n const { strict = true } = options ?? {};\n const cacheKey = `${address}.${strict}`;\n if (isAddressCache.has(cacheKey))\n return isAddressCache.get(cacheKey);\n const result = (() => {\n if (!addressRegex.test(address))\n return false;\n if (address.toLowerCase() === address)\n return true;\n if (strict)\n return checksumAddress(address) === address;\n return true;\n })();\n isAddressCache.set(cacheKey, result);\n return result;\n}\n//# sourceMappingURL=isAddress.js.map","import type { Address } from 'abitype'\nimport type { ErrorType } from '../../errors/utils.js'\nimport { LruMap } from '../lru.js'\nimport { checksumAddress } from './getAddress.js'\n\nconst addressRegex = /^0x[a-fA-F0-9]{40}$/\n\n/** @internal */\nexport const isAddressCache = /*#__PURE__*/ new LruMap(8192)\n\nexport type IsAddressOptions = {\n /**\n * Enables strict mode. Whether or not to compare the address against its checksum.\n *\n * @default true\n */\n strict?: boolean | undefined\n}\n\nexport type IsAddressErrorType = ErrorType\n\nexport function isAddress(\n address: string,\n options?: IsAddressOptions | undefined,\n): address is Address {\n const { strict = true } = options ?? {}\n const cacheKey = `${address}.${strict}`\n\n if (isAddressCache.has(cacheKey)) return isAddressCache.get(cacheKey)!\n\n const result = (() => {\n if (!addressRegex.test(address)) return false\n if (address.toLowerCase() === address) return true\n if (strict) return checksumAddress(address as Address) === address\n return true\n })()\n isAddressCache.set(cacheKey, result)\n return result\n}\n","/**\n * Map with a LRU (Least recently used) policy.\n *\n * @link https://en.wikipedia.org/wiki/Cache_replacement_policies#LRU\n */\nexport class LruMap extends Map {\n constructor(size) {\n super();\n Object.defineProperty(this, \"maxSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.maxSize = size;\n }\n set(key, value) {\n super.set(key, value);\n if (this.maxSize && this.size > this.maxSize)\n this.delete(this.keys().next().value);\n return this;\n }\n}\n//# sourceMappingURL=lru.js.map","/**\n * Map with a LRU (Least recently used) policy.\n *\n * @link https://en.wikipedia.org/wiki/Cache_replacement_policies#LRU\n */\nexport class LruMap extends Map {\n maxSize: number\n\n constructor(size: number) {\n super()\n this.maxSize = size\n }\n\n override set(key: string, value: value) {\n super.set(key, value)\n if (this.maxSize && this.size > this.maxSize)\n this.delete(this.keys().next().value)\n return this\n }\n}\n","import { InvalidAddressError } from '../../errors/address.js';\nimport { stringToBytes, } from '../encoding/toBytes.js';\nimport { keccak256 } from '../hash/keccak256.js';\nimport { LruMap } from '../lru.js';\nimport { isAddress } from './isAddress.js';\nconst checksumAddressCache = /*#__PURE__*/ new LruMap(8192);\nexport function checksumAddress(address_, \n/**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */\nchainId) {\n if (checksumAddressCache.has(`${address_}.${chainId}`))\n return checksumAddressCache.get(`${address_}.${chainId}`);\n const hexAddress = chainId\n ? `${chainId}${address_.toLowerCase()}`\n : address_.substring(2).toLowerCase();\n const hash = keccak256(stringToBytes(hexAddress), 'bytes');\n const address = (chainId ? hexAddress.substring(`${chainId}0x`.length) : hexAddress).split('');\n for (let i = 0; i < 40; i += 2) {\n if (hash[i >> 1] >> 4 >= 8 && address[i]) {\n address[i] = address[i].toUpperCase();\n }\n if ((hash[i >> 1] & 0x0f) >= 8 && address[i + 1]) {\n address[i + 1] = address[i + 1].toUpperCase();\n }\n }\n const result = `0x${address.join('')}`;\n checksumAddressCache.set(`${address_}.${chainId}`, result);\n return result;\n}\nexport function getAddress(address, \n/**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */\nchainId) {\n if (!isAddress(address, { strict: false }))\n throw new InvalidAddressError({ address });\n return checksumAddress(address, chainId);\n}\n//# sourceMappingURL=getAddress.js.map","import type { Address } from 'abitype'\n\nimport { InvalidAddressError } from '../../errors/address.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport {\n type StringToBytesErrorType,\n stringToBytes,\n} from '../encoding/toBytes.js'\nimport { type Keccak256ErrorType, keccak256 } from '../hash/keccak256.js'\nimport { LruMap } from '../lru.js'\nimport { type IsAddressErrorType, isAddress } from './isAddress.js'\n\nconst checksumAddressCache = /*#__PURE__*/ new LruMap
(8192)\n\nexport type ChecksumAddressErrorType =\n | Keccak256ErrorType\n | StringToBytesErrorType\n | ErrorType\n\nexport function checksumAddress(\n address_: Address,\n /**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */\n chainId?: number | undefined,\n): Address {\n if (checksumAddressCache.has(`${address_}.${chainId}`))\n return checksumAddressCache.get(`${address_}.${chainId}`)!\n\n const hexAddress = chainId\n ? `${chainId}${address_.toLowerCase()}`\n : address_.substring(2).toLowerCase()\n const hash = keccak256(stringToBytes(hexAddress), 'bytes')\n\n const address = (\n chainId ? hexAddress.substring(`${chainId}0x`.length) : hexAddress\n ).split('')\n for (let i = 0; i < 40; i += 2) {\n if (hash[i >> 1] >> 4 >= 8 && address[i]) {\n address[i] = address[i].toUpperCase()\n }\n if ((hash[i >> 1] & 0x0f) >= 8 && address[i + 1]) {\n address[i + 1] = address[i + 1].toUpperCase()\n }\n }\n\n const result = `0x${address.join('')}` as const\n checksumAddressCache.set(`${address_}.${chainId}`, result)\n return result\n}\n\nexport type GetAddressErrorType =\n | ChecksumAddressErrorType\n | IsAddressErrorType\n | ErrorType\n\nexport function getAddress(\n address: string,\n /**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */\n chainId?: number,\n): Address {\n if (!isAddress(address, { strict: false }))\n throw new InvalidAddressError({ address })\n return checksumAddress(address, chainId)\n}\n","import { BaseError } from '../../errors/base.js';\nimport { isHex } from '../data/isHex.js';\nimport { pad } from '../data/pad.js';\nimport { assertSize } from './fromHex.js';\nimport { numberToHex, } from './toHex.js';\nconst encoder = /*#__PURE__*/ new TextEncoder();\n/**\n * Encodes a UTF-8 string, hex value, bigint, number or boolean to a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes\n * - Example: https://viem.sh/docs/utilities/toBytes#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes('Hello world')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function toBytes(value, opts = {}) {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToBytes(value, opts);\n if (typeof value === 'boolean')\n return boolToBytes(value, opts);\n if (isHex(value))\n return hexToBytes(value, opts);\n return stringToBytes(value, opts);\n}\n/**\n * Encodes a boolean into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#booltobytes\n *\n * @param value Boolean value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true)\n * // Uint8Array([1])\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true, { size: 32 })\n * // Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])\n */\nexport function boolToBytes(value, opts = {}) {\n const bytes = new Uint8Array(1);\n bytes[0] = Number(value);\n if (typeof opts.size === 'number') {\n assertSize(bytes, { size: opts.size });\n return pad(bytes, { size: opts.size });\n }\n return bytes;\n}\n// We use very optimized technique to convert hex string to byte array\nconst charCodeMap = {\n zero: 48,\n nine: 57,\n A: 65,\n F: 70,\n a: 97,\n f: 102,\n};\nfunction charCodeToBase16(char) {\n if (char >= charCodeMap.zero && char <= charCodeMap.nine)\n return char - charCodeMap.zero;\n if (char >= charCodeMap.A && char <= charCodeMap.F)\n return char - (charCodeMap.A - 10);\n if (char >= charCodeMap.a && char <= charCodeMap.f)\n return char - (charCodeMap.a - 10);\n return undefined;\n}\n/**\n * Encodes a hex string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#hextobytes\n *\n * @param hex Hex string to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function hexToBytes(hex_, opts = {}) {\n let hex = hex_;\n if (opts.size) {\n assertSize(hex, { size: opts.size });\n hex = pad(hex, { dir: 'right', size: opts.size });\n }\n let hexString = hex.slice(2);\n if (hexString.length % 2)\n hexString = `0${hexString}`;\n const length = hexString.length / 2;\n const bytes = new Uint8Array(length);\n for (let index = 0, j = 0; index < length; index++) {\n const nibbleLeft = charCodeToBase16(hexString.charCodeAt(j++));\n const nibbleRight = charCodeToBase16(hexString.charCodeAt(j++));\n if (nibbleLeft === undefined || nibbleRight === undefined) {\n throw new BaseError(`Invalid byte sequence (\"${hexString[j - 2]}${hexString[j - 1]}\" in \"${hexString}\").`);\n }\n bytes[index] = nibbleLeft * 16 + nibbleRight;\n }\n return bytes;\n}\n/**\n * Encodes a number into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#numbertobytes\n *\n * @param value Number to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function numberToBytes(value, opts) {\n const hex = numberToHex(value, opts);\n return hexToBytes(hex);\n}\n/**\n * Encodes a UTF-8 string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#stringtobytes\n *\n * @param value String to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 33])\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function stringToBytes(value, opts = {}) {\n const bytes = encoder.encode(value);\n if (typeof opts.size === 'number') {\n assertSize(bytes, { size: opts.size });\n return pad(bytes, { dir: 'right', size: opts.size });\n }\n return bytes;\n}\n//# sourceMappingURL=toBytes.js.map","import { BaseError } from '../../errors/base.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type IsHexErrorType, isHex } from '../data/isHex.js'\nimport { type PadErrorType, pad } from '../data/pad.js'\n\nimport { type AssertSizeErrorType, assertSize } from './fromHex.js'\nimport {\n type NumberToHexErrorType,\n type NumberToHexOpts,\n numberToHex,\n} from './toHex.js'\n\nconst encoder = /*#__PURE__*/ new TextEncoder()\n\nexport type ToBytesParameters = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type ToBytesErrorType =\n | NumberToBytesErrorType\n | BoolToBytesErrorType\n | HexToBytesErrorType\n | StringToBytesErrorType\n | IsHexErrorType\n | ErrorType\n\n/**\n * Encodes a UTF-8 string, hex value, bigint, number or boolean to a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes\n * - Example: https://viem.sh/docs/utilities/toBytes#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes('Hello world')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function toBytes(\n value: string | bigint | number | boolean | Hex,\n opts: ToBytesParameters = {},\n): ByteArray {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToBytes(value, opts)\n if (typeof value === 'boolean') return boolToBytes(value, opts)\n if (isHex(value)) return hexToBytes(value, opts)\n return stringToBytes(value, opts)\n}\n\nexport type BoolToBytesOpts = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type BoolToBytesErrorType =\n | AssertSizeErrorType\n | PadErrorType\n | ErrorType\n\n/**\n * Encodes a boolean into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#booltobytes\n *\n * @param value Boolean value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true)\n * // Uint8Array([1])\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true, { size: 32 })\n * // Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])\n */\nexport function boolToBytes(value: boolean, opts: BoolToBytesOpts = {}) {\n const bytes = new Uint8Array(1)\n bytes[0] = Number(value)\n if (typeof opts.size === 'number') {\n assertSize(bytes, { size: opts.size })\n return pad(bytes, { size: opts.size })\n }\n return bytes\n}\n\n// We use very optimized technique to convert hex string to byte array\nconst charCodeMap = {\n zero: 48,\n nine: 57,\n A: 65,\n F: 70,\n a: 97,\n f: 102,\n} as const\n\nfunction charCodeToBase16(char: number) {\n if (char >= charCodeMap.zero && char <= charCodeMap.nine)\n return char - charCodeMap.zero\n if (char >= charCodeMap.A && char <= charCodeMap.F)\n return char - (charCodeMap.A - 10)\n if (char >= charCodeMap.a && char <= charCodeMap.f)\n return char - (charCodeMap.a - 10)\n return undefined\n}\n\nexport type HexToBytesOpts = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type HexToBytesErrorType = AssertSizeErrorType | PadErrorType | ErrorType\n\n/**\n * Encodes a hex string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#hextobytes\n *\n * @param hex Hex string to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function hexToBytes(hex_: Hex, opts: HexToBytesOpts = {}): ByteArray {\n let hex = hex_\n if (opts.size) {\n assertSize(hex, { size: opts.size })\n hex = pad(hex, { dir: 'right', size: opts.size })\n }\n\n let hexString = hex.slice(2) as string\n if (hexString.length % 2) hexString = `0${hexString}`\n\n const length = hexString.length / 2\n const bytes = new Uint8Array(length)\n for (let index = 0, j = 0; index < length; index++) {\n const nibbleLeft = charCodeToBase16(hexString.charCodeAt(j++))\n const nibbleRight = charCodeToBase16(hexString.charCodeAt(j++))\n if (nibbleLeft === undefined || nibbleRight === undefined) {\n throw new BaseError(\n `Invalid byte sequence (\"${hexString[j - 2]}${\n hexString[j - 1]\n }\" in \"${hexString}\").`,\n )\n }\n bytes[index] = nibbleLeft * 16 + nibbleRight\n }\n return bytes\n}\n\nexport type NumberToBytesErrorType =\n | NumberToHexErrorType\n | HexToBytesErrorType\n | ErrorType\n\n/**\n * Encodes a number into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#numbertobytes\n *\n * @param value Number to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function numberToBytes(\n value: bigint | number,\n opts?: NumberToHexOpts | undefined,\n) {\n const hex = numberToHex(value, opts)\n return hexToBytes(hex)\n}\n\nexport type StringToBytesOpts = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type StringToBytesErrorType =\n | AssertSizeErrorType\n | PadErrorType\n | ErrorType\n\n/**\n * Encodes a UTF-8 string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#stringtobytes\n *\n * @param value String to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 33])\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function stringToBytes(\n value: string,\n opts: StringToBytesOpts = {},\n): ByteArray {\n const bytes = encoder.encode(value)\n if (typeof opts.size === 'number') {\n assertSize(bytes, { size: opts.size })\n return pad(bytes, { dir: 'right', size: opts.size })\n }\n return bytes\n}\n","import { SizeExceedsPaddingSizeError, } from '../../errors/data.js';\nexport function pad(hexOrBytes, { dir, size = 32 } = {}) {\n if (typeof hexOrBytes === 'string')\n return padHex(hexOrBytes, { dir, size });\n return padBytes(hexOrBytes, { dir, size });\n}\nexport function padHex(hex_, { dir, size = 32 } = {}) {\n if (size === null)\n return hex_;\n const hex = hex_.replace('0x', '');\n if (hex.length > size * 2)\n throw new SizeExceedsPaddingSizeError({\n size: Math.ceil(hex.length / 2),\n targetSize: size,\n type: 'hex',\n });\n return `0x${hex[dir === 'right' ? 'padEnd' : 'padStart'](size * 2, '0')}`;\n}\nexport function padBytes(bytes, { dir, size = 32 } = {}) {\n if (size === null)\n return bytes;\n if (bytes.length > size)\n throw new SizeExceedsPaddingSizeError({\n size: bytes.length,\n targetSize: size,\n type: 'bytes',\n });\n const paddedBytes = new Uint8Array(size);\n for (let i = 0; i < size; i++) {\n const padEnd = dir === 'right';\n paddedBytes[padEnd ? i : size - i - 1] =\n bytes[padEnd ? i : bytes.length - i - 1];\n }\n return paddedBytes;\n}\n//# sourceMappingURL=pad.js.map","import {\n SizeExceedsPaddingSizeError,\n type SizeExceedsPaddingSizeErrorType,\n} from '../../errors/data.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\ntype PadOptions = {\n dir?: 'left' | 'right' | undefined\n size?: number | null | undefined\n}\nexport type PadReturnType = value extends Hex\n ? Hex\n : ByteArray\n\nexport type PadErrorType = PadHexErrorType | PadBytesErrorType | ErrorType\n\nexport function pad(\n hexOrBytes: value,\n { dir, size = 32 }: PadOptions = {},\n): PadReturnType {\n if (typeof hexOrBytes === 'string')\n return padHex(hexOrBytes, { dir, size }) as PadReturnType\n return padBytes(hexOrBytes, { dir, size }) as PadReturnType\n}\n\nexport type PadHexErrorType = SizeExceedsPaddingSizeErrorType | ErrorType\n\nexport function padHex(hex_: Hex, { dir, size = 32 }: PadOptions = {}) {\n if (size === null) return hex_\n const hex = hex_.replace('0x', '')\n if (hex.length > size * 2)\n throw new SizeExceedsPaddingSizeError({\n size: Math.ceil(hex.length / 2),\n targetSize: size,\n type: 'hex',\n })\n\n return `0x${hex[dir === 'right' ? 'padEnd' : 'padStart'](\n size * 2,\n '0',\n )}` as Hex\n}\n\nexport type PadBytesErrorType = SizeExceedsPaddingSizeErrorType | ErrorType\n\nexport function padBytes(\n bytes: ByteArray,\n { dir, size = 32 }: PadOptions = {},\n) {\n if (size === null) return bytes\n if (bytes.length > size)\n throw new SizeExceedsPaddingSizeError({\n size: bytes.length,\n targetSize: size,\n type: 'bytes',\n })\n const paddedBytes = new Uint8Array(size)\n for (let i = 0; i < size; i++) {\n const padEnd = dir === 'right'\n paddedBytes[padEnd ? i : size - i - 1] =\n bytes[padEnd ? i : bytes.length - i - 1]\n }\n return paddedBytes\n}\n","import { BaseError } from './base.js';\nexport class SliceOffsetOutOfBoundsError extends BaseError {\n constructor({ offset, position, size, }) {\n super(`Slice ${position === 'start' ? 'starting' : 'ending'} at offset \"${offset}\" is out-of-bounds (size: ${size}).`, { name: 'SliceOffsetOutOfBoundsError' });\n }\n}\nexport class SizeExceedsPaddingSizeError extends BaseError {\n constructor({ size, targetSize, type, }) {\n super(`${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} size (${size}) exceeds padding size (${targetSize}).`, { name: 'SizeExceedsPaddingSizeError' });\n }\n}\nexport class InvalidBytesLengthError extends BaseError {\n constructor({ size, targetSize, type, }) {\n super(`${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} is expected to be ${targetSize} ${type} long, but is ${size} ${type} long.`, { name: 'InvalidBytesLengthError' });\n }\n}\n//# sourceMappingURL=data.js.map","import { BaseError } from './base.js'\n\nexport type SliceOffsetOutOfBoundsErrorType = SliceOffsetOutOfBoundsError & {\n name: 'SliceOffsetOutOfBoundsError'\n}\nexport class SliceOffsetOutOfBoundsError extends BaseError {\n constructor({\n offset,\n position,\n size,\n }: { offset: number; position: 'start' | 'end'; size: number }) {\n super(\n `Slice ${\n position === 'start' ? 'starting' : 'ending'\n } at offset \"${offset}\" is out-of-bounds (size: ${size}).`,\n { name: 'SliceOffsetOutOfBoundsError' },\n )\n }\n}\n\nexport type SizeExceedsPaddingSizeErrorType = SizeExceedsPaddingSizeError & {\n name: 'SizeExceedsPaddingSizeError'\n}\nexport class SizeExceedsPaddingSizeError extends BaseError {\n constructor({\n size,\n targetSize,\n type,\n }: {\n size: number\n targetSize: number\n type: 'hex' | 'bytes'\n }) {\n super(\n `${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} size (${size}) exceeds padding size (${targetSize}).`,\n { name: 'SizeExceedsPaddingSizeError' },\n )\n }\n}\n\nexport type InvalidBytesLengthErrorType = InvalidBytesLengthError & {\n name: 'InvalidBytesLengthError'\n}\nexport class InvalidBytesLengthError extends BaseError {\n constructor({\n size,\n targetSize,\n type,\n }: {\n size: number\n targetSize: number\n type: 'hex' | 'bytes'\n }) {\n super(\n `${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} is expected to be ${targetSize} ${type} long, but is ${size} ${type} long.`,\n { name: 'InvalidBytesLengthError' },\n )\n }\n}\n","import { InvalidHexBooleanError, SizeOverflowError, } from '../../errors/encoding.js';\nimport { size as size_ } from '../data/size.js';\nimport { trim } from '../data/trim.js';\nimport { hexToBytes } from './toBytes.js';\nexport function assertSize(hexOrBytes, { size }) {\n if (size_(hexOrBytes) > size)\n throw new SizeOverflowError({\n givenSize: size_(hexOrBytes),\n maxSize: size,\n });\n}\n/**\n * Decodes a hex string into a string, number, bigint, boolean, or byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex\n * - Example: https://viem.sh/docs/utilities/fromHex#usage\n *\n * @param hex Hex string to decode.\n * @param toOrOpts Type to convert to or options.\n * @returns Decoded value.\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x1a4', 'number')\n * // 420\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c6421', 'string')\n * // 'Hello world'\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * to: 'string'\n * })\n * // 'Hello world'\n */\nexport function fromHex(hex, toOrOpts) {\n const opts = typeof toOrOpts === 'string' ? { to: toOrOpts } : toOrOpts;\n const to = opts.to;\n if (to === 'number')\n return hexToNumber(hex, opts);\n if (to === 'bigint')\n return hexToBigInt(hex, opts);\n if (to === 'string')\n return hexToString(hex, opts);\n if (to === 'boolean')\n return hexToBool(hex, opts);\n return hexToBytes(hex, opts);\n}\n/**\n * Decodes a hex value into a bigint.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobigint\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns BigInt value.\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x1a4', { signed: true })\n * // 420n\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420n\n */\nexport function hexToBigInt(hex, opts = {}) {\n const { signed } = opts;\n if (opts.size)\n assertSize(hex, { size: opts.size });\n const value = BigInt(hex);\n if (!signed)\n return value;\n const size = (hex.length - 2) / 2;\n const max = (1n << (BigInt(size) * 8n - 1n)) - 1n;\n if (value <= max)\n return value;\n return value - BigInt(`0x${'f'.padStart(size * 2, 'f')}`) - 1n;\n}\n/**\n * Decodes a hex value into a boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobool\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Boolean value.\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x01')\n * // true\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x0000000000000000000000000000000000000000000000000000000000000001', { size: 32 })\n * // true\n */\nexport function hexToBool(hex_, opts = {}) {\n let hex = hex_;\n if (opts.size) {\n assertSize(hex, { size: opts.size });\n hex = trim(hex);\n }\n if (trim(hex) === '0x00')\n return false;\n if (trim(hex) === '0x01')\n return true;\n throw new InvalidHexBooleanError(hex);\n}\n/**\n * Decodes a hex string into a number.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextonumber\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Number value.\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToNumber('0x1a4')\n * // 420\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420\n */\nexport function hexToNumber(hex, opts = {}) {\n return Number(hexToBigInt(hex, opts));\n}\n/**\n * Decodes a hex value into a UTF-8 string.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextostring\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns String value.\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c6421')\n * // 'Hello world!'\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * })\n * // 'Hello world'\n */\nexport function hexToString(hex, opts = {}) {\n let bytes = hexToBytes(hex);\n if (opts.size) {\n assertSize(bytes, { size: opts.size });\n bytes = trim(bytes, { dir: 'right' });\n }\n return new TextDecoder().decode(bytes);\n}\n//# sourceMappingURL=fromHex.js.map","import {\n InvalidHexBooleanError,\n type InvalidHexBooleanErrorType,\n SizeOverflowError,\n type SizeOverflowErrorType,\n} from '../../errors/encoding.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type SizeErrorType, size as size_ } from '../data/size.js'\nimport { type TrimErrorType, trim } from '../data/trim.js'\n\nimport { type HexToBytesErrorType, hexToBytes } from './toBytes.js'\n\nexport type AssertSizeErrorType =\n | SizeOverflowErrorType\n | SizeErrorType\n | ErrorType\n\nexport function assertSize(\n hexOrBytes: Hex | ByteArray,\n { size }: { size: number },\n): void {\n if (size_(hexOrBytes) > size)\n throw new SizeOverflowError({\n givenSize: size_(hexOrBytes),\n maxSize: size,\n })\n}\n\nexport type FromHexParameters<\n to extends 'string' | 'bigint' | 'number' | 'bytes' | 'boolean',\n> =\n | to\n | {\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n /** Type to convert to. */\n to: to\n }\n\nexport type FromHexReturnType = to extends 'string'\n ? string\n : to extends 'bigint'\n ? bigint\n : to extends 'number'\n ? number\n : to extends 'bytes'\n ? ByteArray\n : to extends 'boolean'\n ? boolean\n : never\n\nexport type FromHexErrorType =\n | HexToNumberErrorType\n | HexToBigIntErrorType\n | HexToBoolErrorType\n | HexToStringErrorType\n | HexToBytesErrorType\n | ErrorType\n\n/**\n * Decodes a hex string into a string, number, bigint, boolean, or byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex\n * - Example: https://viem.sh/docs/utilities/fromHex#usage\n *\n * @param hex Hex string to decode.\n * @param toOrOpts Type to convert to or options.\n * @returns Decoded value.\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x1a4', 'number')\n * // 420\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c6421', 'string')\n * // 'Hello world'\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * to: 'string'\n * })\n * // 'Hello world'\n */\nexport function fromHex<\n to extends 'string' | 'bigint' | 'number' | 'bytes' | 'boolean',\n>(hex: Hex, toOrOpts: FromHexParameters): FromHexReturnType {\n const opts = typeof toOrOpts === 'string' ? { to: toOrOpts } : toOrOpts\n const to = opts.to\n\n if (to === 'number') return hexToNumber(hex, opts) as FromHexReturnType\n if (to === 'bigint') return hexToBigInt(hex, opts) as FromHexReturnType\n if (to === 'string') return hexToString(hex, opts) as FromHexReturnType\n if (to === 'boolean') return hexToBool(hex, opts) as FromHexReturnType\n return hexToBytes(hex, opts) as FromHexReturnType\n}\n\nexport type HexToBigIntOpts = {\n /** Whether or not the number of a signed representation. */\n signed?: boolean | undefined\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n}\n\nexport type HexToBigIntErrorType = AssertSizeErrorType | ErrorType\n\n/**\n * Decodes a hex value into a bigint.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobigint\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns BigInt value.\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x1a4', { signed: true })\n * // 420n\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420n\n */\nexport function hexToBigInt(hex: Hex, opts: HexToBigIntOpts = {}): bigint {\n const { signed } = opts\n\n if (opts.size) assertSize(hex, { size: opts.size })\n\n const value = BigInt(hex)\n if (!signed) return value\n\n const size = (hex.length - 2) / 2\n const max = (1n << (BigInt(size) * 8n - 1n)) - 1n\n if (value <= max) return value\n\n return value - BigInt(`0x${'f'.padStart(size * 2, 'f')}`) - 1n\n}\n\nexport type HexToBoolOpts = {\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n}\n\nexport type HexToBoolErrorType =\n | AssertSizeErrorType\n | InvalidHexBooleanErrorType\n | TrimErrorType\n | ErrorType\n\n/**\n * Decodes a hex value into a boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobool\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Boolean value.\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x01')\n * // true\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x0000000000000000000000000000000000000000000000000000000000000001', { size: 32 })\n * // true\n */\nexport function hexToBool(hex_: Hex, opts: HexToBoolOpts = {}): boolean {\n let hex = hex_\n if (opts.size) {\n assertSize(hex, { size: opts.size })\n hex = trim(hex)\n }\n if (trim(hex) === '0x00') return false\n if (trim(hex) === '0x01') return true\n throw new InvalidHexBooleanError(hex)\n}\n\nexport type HexToNumberOpts = HexToBigIntOpts\n\nexport type HexToNumberErrorType = HexToBigIntErrorType | ErrorType\n\n/**\n * Decodes a hex string into a number.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextonumber\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Number value.\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToNumber('0x1a4')\n * // 420\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420\n */\nexport function hexToNumber(hex: Hex, opts: HexToNumberOpts = {}): number {\n return Number(hexToBigInt(hex, opts))\n}\n\nexport type HexToStringOpts = {\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n}\n\nexport type HexToStringErrorType =\n | AssertSizeErrorType\n | HexToBytesErrorType\n | TrimErrorType\n | ErrorType\n\n/**\n * Decodes a hex value into a UTF-8 string.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextostring\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns String value.\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c6421')\n * // 'Hello world!'\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * })\n * // 'Hello world'\n */\nexport function hexToString(hex: Hex, opts: HexToStringOpts = {}): string {\n let bytes = hexToBytes(hex)\n if (opts.size) {\n assertSize(bytes, { size: opts.size })\n bytes = trim(bytes, { dir: 'right' })\n }\n return new TextDecoder().decode(bytes)\n}\n","import { BaseError } from './base.js';\nexport class IntegerOutOfRangeError extends BaseError {\n constructor({ max, min, signed, size, value, }) {\n super(`Number \"${value}\" is not in safe ${size ? `${size * 8}-bit ${signed ? 'signed' : 'unsigned'} ` : ''}integer range ${max ? `(${min} to ${max})` : `(above ${min})`}`, { name: 'IntegerOutOfRangeError' });\n }\n}\nexport class InvalidBytesBooleanError extends BaseError {\n constructor(bytes) {\n super(`Bytes value \"${bytes}\" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`, {\n name: 'InvalidBytesBooleanError',\n });\n }\n}\nexport class InvalidHexBooleanError extends BaseError {\n constructor(hex) {\n super(`Hex value \"${hex}\" is not a valid boolean. The hex value must be \"0x0\" (false) or \"0x1\" (true).`, { name: 'InvalidHexBooleanError' });\n }\n}\nexport class InvalidHexValueError extends BaseError {\n constructor(value) {\n super(`Hex value \"${value}\" is an odd length (${value.length}). It must be an even length.`, { name: 'InvalidHexValueError' });\n }\n}\nexport class SizeOverflowError extends BaseError {\n constructor({ givenSize, maxSize }) {\n super(`Size cannot exceed ${maxSize} bytes. Given size: ${givenSize} bytes.`, { name: 'SizeOverflowError' });\n }\n}\n//# sourceMappingURL=encoding.js.map","import type { ByteArray, Hex } from '../types/misc.js'\n\nimport { BaseError } from './base.js'\n\nexport type IntegerOutOfRangeErrorType = IntegerOutOfRangeError & {\n name: 'IntegerOutOfRangeError'\n}\nexport class IntegerOutOfRangeError extends BaseError {\n constructor({\n max,\n min,\n signed,\n size,\n value,\n }: {\n max?: string | undefined\n min: string\n signed?: boolean | undefined\n size?: number | undefined\n value: string\n }) {\n super(\n `Number \"${value}\" is not in safe ${\n size ? `${size * 8}-bit ${signed ? 'signed' : 'unsigned'} ` : ''\n }integer range ${max ? `(${min} to ${max})` : `(above ${min})`}`,\n { name: 'IntegerOutOfRangeError' },\n )\n }\n}\n\nexport type InvalidBytesBooleanErrorType = InvalidBytesBooleanError & {\n name: 'InvalidBytesBooleanError'\n}\nexport class InvalidBytesBooleanError extends BaseError {\n constructor(bytes: ByteArray) {\n super(\n `Bytes value \"${bytes}\" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`,\n {\n name: 'InvalidBytesBooleanError',\n },\n )\n }\n}\n\nexport type InvalidHexBooleanErrorType = InvalidHexBooleanError & {\n name: 'InvalidHexBooleanError'\n}\nexport class InvalidHexBooleanError extends BaseError {\n constructor(hex: Hex) {\n super(\n `Hex value \"${hex}\" is not a valid boolean. The hex value must be \"0x0\" (false) or \"0x1\" (true).`,\n { name: 'InvalidHexBooleanError' },\n )\n }\n}\n\nexport type InvalidHexValueErrorType = InvalidHexValueError & {\n name: 'InvalidHexValueError'\n}\nexport class InvalidHexValueError extends BaseError {\n constructor(value: Hex) {\n super(\n `Hex value \"${value}\" is an odd length (${value.length}). It must be an even length.`,\n { name: 'InvalidHexValueError' },\n )\n }\n}\n\nexport type SizeOverflowErrorType = SizeOverflowError & {\n name: 'SizeOverflowError'\n}\nexport class SizeOverflowError extends BaseError {\n constructor({ givenSize, maxSize }: { givenSize: number; maxSize: number }) {\n super(\n `Size cannot exceed ${maxSize} bytes. Given size: ${givenSize} bytes.`,\n { name: 'SizeOverflowError' },\n )\n }\n}\n","export function trim(hexOrBytes, { dir = 'left' } = {}) {\n let data = typeof hexOrBytes === 'string' ? hexOrBytes.replace('0x', '') : hexOrBytes;\n let sliceLength = 0;\n for (let i = 0; i < data.length - 1; i++) {\n if (data[dir === 'left' ? i : data.length - i - 1].toString() === '0')\n sliceLength++;\n else\n break;\n }\n data =\n dir === 'left'\n ? data.slice(sliceLength)\n : data.slice(0, data.length - sliceLength);\n if (typeof hexOrBytes === 'string') {\n if (data.length === 1 && dir === 'right')\n data = `${data}0`;\n return `0x${data.length % 2 === 1 ? `0${data}` : data}`;\n }\n return data;\n}\n//# sourceMappingURL=trim.js.map","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\ntype TrimOptions = {\n dir?: 'left' | 'right' | undefined\n}\nexport type TrimReturnType = value extends Hex\n ? Hex\n : ByteArray\n\nexport type TrimErrorType = ErrorType\n\nexport function trim(\n hexOrBytes: value,\n { dir = 'left' }: TrimOptions = {},\n): TrimReturnType {\n let data: any =\n typeof hexOrBytes === 'string' ? hexOrBytes.replace('0x', '') : hexOrBytes\n\n let sliceLength = 0\n for (let i = 0; i < data.length - 1; i++) {\n if (data[dir === 'left' ? i : data.length - i - 1].toString() === '0')\n sliceLength++\n else break\n }\n data =\n dir === 'left'\n ? data.slice(sliceLength)\n : data.slice(0, data.length - sliceLength)\n\n if (typeof hexOrBytes === 'string') {\n if (data.length === 1 && dir === 'right') data = `${data}0`\n return `0x${\n data.length % 2 === 1 ? `0${data}` : data\n }` as TrimReturnType\n }\n return data as TrimReturnType\n}\n","import { IntegerOutOfRangeError, } from '../../errors/encoding.js';\nimport { pad } from '../data/pad.js';\nimport { assertSize } from './fromHex.js';\nconst hexes = /*#__PURE__*/ Array.from({ length: 256 }, (_v, i) => i.toString(16).padStart(2, '0'));\n/**\n * Encodes a string, number, bigint, or ByteArray into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex\n * - Example: https://viem.sh/docs/utilities/toHex#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world')\n * // '0x48656c6c6f20776f726c6421'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex(420)\n * // '0x1a4'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world', { size: 32 })\n * // '0x48656c6c6f20776f726c64210000000000000000000000000000000000000000'\n */\nexport function toHex(value, opts = {}) {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToHex(value, opts);\n if (typeof value === 'string') {\n return stringToHex(value, opts);\n }\n if (typeof value === 'boolean')\n return boolToHex(value, opts);\n return bytesToHex(value, opts);\n}\n/**\n * Encodes a boolean into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#booltohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true)\n * // '0x1'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(false)\n * // '0x0'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true, { size: 32 })\n * // '0x0000000000000000000000000000000000000000000000000000000000000001'\n */\nexport function boolToHex(value, opts = {}) {\n const hex = `0x${Number(value)}`;\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size });\n return pad(hex, { size: opts.size });\n }\n return hex;\n}\n/**\n * Encodes a bytes array into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#bytestohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]), { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function bytesToHex(value, opts = {}) {\n let string = '';\n for (let i = 0; i < value.length; i++) {\n string += hexes[value[i]];\n }\n const hex = `0x${string}`;\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size });\n return pad(hex, { dir: 'right', size: opts.size });\n }\n return hex;\n}\n/**\n * Encodes a number or bigint into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#numbertohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420)\n * // '0x1a4'\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420, { size: 32 })\n * // '0x00000000000000000000000000000000000000000000000000000000000001a4'\n */\nexport function numberToHex(value_, opts = {}) {\n const { signed, size } = opts;\n const value = BigInt(value_);\n let maxValue;\n if (size) {\n if (signed)\n maxValue = (1n << (BigInt(size) * 8n - 1n)) - 1n;\n else\n maxValue = 2n ** (BigInt(size) * 8n) - 1n;\n }\n else if (typeof value_ === 'number') {\n maxValue = BigInt(Number.MAX_SAFE_INTEGER);\n }\n const minValue = typeof maxValue === 'bigint' && signed ? -maxValue - 1n : 0;\n if ((maxValue && value > maxValue) || value < minValue) {\n const suffix = typeof value_ === 'bigint' ? 'n' : '';\n throw new IntegerOutOfRangeError({\n max: maxValue ? `${maxValue}${suffix}` : undefined,\n min: `${minValue}${suffix}`,\n signed,\n size,\n value: `${value_}${suffix}`,\n });\n }\n const hex = `0x${(signed && value < 0\n ? (1n << BigInt(size * 8)) + BigInt(value)\n : value).toString(16)}`;\n if (size)\n return pad(hex, { size });\n return hex;\n}\nconst encoder = /*#__PURE__*/ new TextEncoder();\n/**\n * Encodes a UTF-8 string into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#stringtohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!')\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!', { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function stringToHex(value_, opts = {}) {\n const value = encoder.encode(value_);\n return bytesToHex(value, opts);\n}\n//# sourceMappingURL=toHex.js.map","import {\n IntegerOutOfRangeError,\n type IntegerOutOfRangeErrorType,\n} from '../../errors/encoding.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type PadErrorType, pad } from '../data/pad.js'\n\nimport { type AssertSizeErrorType, assertSize } from './fromHex.js'\n\nconst hexes = /*#__PURE__*/ Array.from({ length: 256 }, (_v, i) =>\n i.toString(16).padStart(2, '0'),\n)\n\nexport type ToHexParameters = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type ToHexErrorType =\n | BoolToHexErrorType\n | BytesToHexErrorType\n | NumberToHexErrorType\n | StringToHexErrorType\n | ErrorType\n\n/**\n * Encodes a string, number, bigint, or ByteArray into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex\n * - Example: https://viem.sh/docs/utilities/toHex#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world')\n * // '0x48656c6c6f20776f726c6421'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex(420)\n * // '0x1a4'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world', { size: 32 })\n * // '0x48656c6c6f20776f726c64210000000000000000000000000000000000000000'\n */\nexport function toHex(\n value: string | number | bigint | boolean | ByteArray,\n opts: ToHexParameters = {},\n): Hex {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToHex(value, opts)\n if (typeof value === 'string') {\n return stringToHex(value, opts)\n }\n if (typeof value === 'boolean') return boolToHex(value, opts)\n return bytesToHex(value, opts)\n}\n\nexport type BoolToHexOpts = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type BoolToHexErrorType = AssertSizeErrorType | PadErrorType | ErrorType\n\n/**\n * Encodes a boolean into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#booltohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true)\n * // '0x1'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(false)\n * // '0x0'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true, { size: 32 })\n * // '0x0000000000000000000000000000000000000000000000000000000000000001'\n */\nexport function boolToHex(value: boolean, opts: BoolToHexOpts = {}): Hex {\n const hex: Hex = `0x${Number(value)}`\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size })\n return pad(hex, { size: opts.size })\n }\n return hex\n}\n\nexport type BytesToHexOpts = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type BytesToHexErrorType = AssertSizeErrorType | PadErrorType | ErrorType\n\n/**\n * Encodes a bytes array into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#bytestohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]), { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function bytesToHex(value: ByteArray, opts: BytesToHexOpts = {}): Hex {\n let string = ''\n for (let i = 0; i < value.length; i++) {\n string += hexes[value[i]]\n }\n const hex = `0x${string}` as const\n\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size })\n return pad(hex, { dir: 'right', size: opts.size })\n }\n return hex\n}\n\nexport type NumberToHexOpts =\n | {\n /** Whether or not the number of a signed representation. */\n signed?: boolean | undefined\n /** The size (in bytes) of the output hex value. */\n size: number\n }\n | {\n signed?: undefined\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n }\n\nexport type NumberToHexErrorType =\n | IntegerOutOfRangeErrorType\n | PadErrorType\n | ErrorType\n\n/**\n * Encodes a number or bigint into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#numbertohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420)\n * // '0x1a4'\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420, { size: 32 })\n * // '0x00000000000000000000000000000000000000000000000000000000000001a4'\n */\nexport function numberToHex(\n value_: number | bigint,\n opts: NumberToHexOpts = {},\n): Hex {\n const { signed, size } = opts\n\n const value = BigInt(value_)\n\n let maxValue: bigint | number | undefined\n if (size) {\n if (signed) maxValue = (1n << (BigInt(size) * 8n - 1n)) - 1n\n else maxValue = 2n ** (BigInt(size) * 8n) - 1n\n } else if (typeof value_ === 'number') {\n maxValue = BigInt(Number.MAX_SAFE_INTEGER)\n }\n\n const minValue = typeof maxValue === 'bigint' && signed ? -maxValue - 1n : 0\n\n if ((maxValue && value > maxValue) || value < minValue) {\n const suffix = typeof value_ === 'bigint' ? 'n' : ''\n throw new IntegerOutOfRangeError({\n max: maxValue ? `${maxValue}${suffix}` : undefined,\n min: `${minValue}${suffix}`,\n signed,\n size,\n value: `${value_}${suffix}`,\n })\n }\n\n const hex = `0x${(signed && value < 0\n ? (1n << BigInt(size * 8)) + BigInt(value)\n : value\n ).toString(16)}` as Hex\n if (size) return pad(hex, { size }) as Hex\n return hex\n}\n\nexport type StringToHexOpts = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type StringToHexErrorType = BytesToHexErrorType | ErrorType\n\nconst encoder = /*#__PURE__*/ new TextEncoder()\n\n/**\n * Encodes a UTF-8 string into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#stringtohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!')\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!', { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function stringToHex(value_: string, opts: StringToHexOpts = {}): Hex {\n const value = encoder.encode(value_)\n return bytesToHex(value, opts)\n}\n","import { keccak_256 } from '@noble/hashes/sha3';\nimport { isHex } from '../data/isHex.js';\nimport { toBytes } from '../encoding/toBytes.js';\nimport { toHex } from '../encoding/toHex.js';\nexport function keccak256(value, to_) {\n const to = to_ || 'hex';\n const bytes = keccak_256(isHex(value, { strict: false }) ? toBytes(value) : value);\n if (to === 'bytes')\n return bytes;\n return toHex(bytes);\n}\n//# sourceMappingURL=keccak256.js.map","import { keccak_256 } from '@noble/hashes/sha3'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type IsHexErrorType, isHex } from '../data/isHex.js'\nimport { type ToBytesErrorType, toBytes } from '../encoding/toBytes.js'\nimport { type ToHexErrorType, toHex } from '../encoding/toHex.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type Keccak256Hash =\n | (to extends 'bytes' ? ByteArray : never)\n | (to extends 'hex' ? Hex : never)\n\nexport type Keccak256ErrorType =\n | IsHexErrorType\n | ToBytesErrorType\n | ToHexErrorType\n | ErrorType\n\nexport function keccak256(\n value: Hex | ByteArray,\n to_?: to | undefined,\n): Keccak256Hash {\n const to = to_ || 'hex'\n const bytes = keccak_256(\n isHex(value, { strict: false }) ? toBytes(value) : value,\n )\n if (to === 'bytes') return bytes as Keccak256Hash\n return toHex(bytes) as Keccak256Hash\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shake256 = exports.shake128 = exports.keccak_512 = exports.keccak_384 = exports.keccak_256 = exports.keccak_224 = exports.sha3_512 = exports.sha3_384 = exports.sha3_256 = exports.sha3_224 = exports.Keccak = exports.keccakP = void 0;\nconst _assert_js_1 = require(\"./_assert.js\");\nconst _u64_js_1 = require(\"./_u64.js\");\nconst utils_js_1 = require(\"./utils.js\");\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ (0, _u64_js_1.split)(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? (0, _u64_js_1.rotlBH)(h, l, s) : (0, _u64_js_1.rotlSH)(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? (0, _u64_js_1.rotlBL)(h, l, s) : (0, _u64_js_1.rotlSL)(h, l, s));\n// Same as keccakf1600, but allows to skip some rounds\nfunction keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\nexports.keccakP = keccakP;\nclass Keccak extends utils_js_1.Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n (0, _assert_js_1.number)(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = (0, utils_js_1.u32)(this.state);\n }\n keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n (0, _assert_js_1.exists)(this);\n const { blockLen, state } = this;\n data = (0, utils_js_1.toBytes)(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n (0, _assert_js_1.exists)(this, false);\n (0, _assert_js_1.bytes)(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n (0, _assert_js_1.number)(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n (0, _assert_js_1.output)(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nexports.Keccak = Keccak;\nconst gen = (suffix, blockLen, outputLen) => (0, utils_js_1.wrapConstructor)(() => new Keccak(blockLen, suffix, outputLen));\nexports.sha3_224 = gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexports.sha3_256 = gen(0x06, 136, 256 / 8);\nexports.sha3_384 = gen(0x06, 104, 384 / 8);\nexports.sha3_512 = gen(0x06, 72, 512 / 8);\nexports.keccak_224 = gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexports.keccak_256 = gen(0x01, 136, 256 / 8);\nexports.keccak_384 = gen(0x01, 104, 384 / 8);\nexports.keccak_512 = gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => (0, utils_js_1.wrapXOFConstructorWithOpts)((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\nexports.shake128 = genShake(0x1f, 168, 128 / 8);\nexports.shake256 = genShake(0x1f, 136, 256 / 8);\n//# sourceMappingURL=sha3.js.map","import { bytes, exists, number, output } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport {\n Hash,\n u32,\n Input,\n toBytes,\n wrapConstructor,\n wrapXOFConstructorWithOpts,\n HashXOF,\n} from './utils.js';\n\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA]: [number[], number[], bigint[]] = [[], [], []];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n) t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h: number, l: number, s: number) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h: number, l: number, s: number) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s: Uint32Array, rounds: number = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++) B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++) B[x] = s[y + x];\n for (let x = 0; x < 10; x++) s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\n\nexport class Keccak extends Hash implements HashXOF {\n protected state: Uint8Array;\n protected pos = 0;\n protected posOut = 0;\n protected finished = false;\n protected state32: Uint32Array;\n protected destroyed = false;\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(\n public blockLen: number,\n public suffix: number,\n public outputLen: number,\n protected enableXOF = false,\n protected rounds: number = 24\n ) {\n super();\n // Can be passed from user as dkLen\n number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n protected keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data: Input) {\n exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++) state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen) this.keccak();\n }\n return this;\n }\n protected finish() {\n if (this.finished) return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1) this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n protected writeInto(out: Uint8Array): Uint8Array {\n exists(this, false);\n bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len; ) {\n if (this.posOut >= blockLen) this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out: Uint8Array): Uint8Array {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF) throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes: number): Uint8Array {\n number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out: Uint8Array) {\n output(out, this);\n if (this.finished) throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to?: Keccak): Keccak {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to ||= new Keccak(blockLen, suffix, outputLen, enableXOF, rounds);\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\n\nconst gen = (suffix: number, blockLen: number, outputLen: number) =>\n wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\n\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\n\nexport type ShakeOpts = { dkLen?: number };\n\nconst genShake = (suffix: number, blockLen: number, outputLen: number) =>\n wrapXOFConstructorWithOpts, ShakeOpts>(\n (opts: ShakeOpts = {}) =>\n new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true)\n );\n\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.output = exports.exists = exports.hash = exports.bytes = exports.bool = exports.number = void 0;\nfunction number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nexports.number = number;\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nexports.bool = bool;\nfunction bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nexports.bytes = bytes;\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nexports.hash = hash;\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nexports.exists = exists;\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexports.output = output;\nconst assert = { number, bool, bytes, hash, exists, output };\nexports.default = assert;\n//# sourceMappingURL=_assert.js.map","function number(n: number) {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error(`Wrong positive integer: ${n}`);\n}\n\nfunction bool(b: boolean) {\n if (typeof b !== 'boolean') throw new Error(`Expected boolean, not ${b}`);\n}\n\nfunction bytes(b: Uint8Array | undefined, ...lengths: number[]) {\n if (!(b instanceof Uint8Array)) throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\n\ntype Hash = {\n (data: Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create: any;\n};\nfunction hash(hash: Hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\n\nfunction exists(instance: any, checkFinished = true) {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\nfunction output(out: any, instance: any) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\n\nexport { number, bool, bytes, hash, exists, output };\n\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.add5L = exports.add5H = exports.add4H = exports.add4L = exports.add3H = exports.add3L = exports.add = exports.rotlBL = exports.rotlBH = exports.rotlSL = exports.rotlSH = exports.rotr32L = exports.rotr32H = exports.rotrBL = exports.rotrBH = exports.rotrSL = exports.rotrSH = exports.shrSL = exports.shrSH = exports.toBig = exports.split = exports.fromBig = void 0;\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nexports.fromBig = fromBig;\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nexports.split = split;\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\nexports.toBig = toBig;\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nexports.shrSH = shrSH;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\nexports.shrSL = shrSL;\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nexports.rotrSH = rotrSH;\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\nexports.rotrSL = rotrSL;\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nexports.rotrBH = rotrBH;\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\nexports.rotrBL = rotrBL;\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nexports.rotr32H = rotr32H;\nconst rotr32L = (h, _l) => h;\nexports.rotr32L = rotr32L;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nexports.rotlSH = rotlSH;\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\nexports.rotlSL = rotlSL;\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nexports.rotlBH = rotlBH;\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\nexports.rotlBL = rotlBL;\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\nexports.add = add;\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nexports.add3L = add3L;\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nexports.add3H = add3H;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nexports.add4L = add4L;\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nexports.add4H = add4H;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nexports.add5L = add5L;\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\nexports.add5H = add5H;\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexports.default = u64;\n//# sourceMappingURL=_u64.js.map","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n: bigint, le = false) {\n if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number) => h >>> s;\nconst shrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number) => l;\nconst rotr32L = (h: number, _l: number) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number) => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah: number, Al: number, Bh: number, Bl: number) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number) =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number) =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","\"use strict\";\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.randomBytes = exports.wrapXOFConstructorWithOpts = exports.wrapConstructorWithOpts = exports.wrapConstructor = exports.checkOpts = exports.Hash = exports.concatBytes = exports.toBytes = exports.utf8ToBytes = exports.asyncLoop = exports.nextTick = exports.hexToBytes = exports.bytesToHex = exports.isLE = exports.rotr = exports.createView = exports.u32 = exports.u8 = void 0;\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nconst crypto_1 = require(\"@noble/hashes/crypto\");\nconst u8a = (a) => a instanceof Uint8Array;\n// Cast array to different type\nconst u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexports.u8 = u8;\nconst u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\nexports.u32 = u32;\n// Cast array to view\nconst createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\nexports.createView = createView;\n// The rotate right (circular right shift) operation for uint32\nconst rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\nexports.rotr = rotr;\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexports.isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!exports.isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nfunction bytesToHex(bytes) {\n if (!u8a(bytes))\n throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\nexports.bytesToHex = bytesToHex;\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2)\n throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nexports.hexToBytes = hexToBytes;\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nconst nextTick = async () => { };\nexports.nextTick = nextTick;\n// Returns control to thread each 'tick' ms to avoid blocking\nasync function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await (0, exports.nextTick)();\n ts += diff;\n }\n}\nexports.asyncLoop = asyncLoop;\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nfunction utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\nexports.utf8ToBytes = utf8ToBytes;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nfunction toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!u8a(data))\n throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\nexports.toBytes = toBytes;\n/**\n * Copies several Uint8Arrays into one.\n */\nfunction concatBytes(...arrays) {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a))\n throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\nexports.concatBytes = concatBytes;\n// For runtime check if class implements interface\nclass Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nexports.Hash = Hash;\nconst toStr = {}.toString;\nfunction checkOpts(defaults, opts) {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexports.checkOpts = checkOpts;\nfunction wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexports.wrapConstructor = wrapConstructor;\nfunction wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexports.wrapConstructorWithOpts = wrapConstructorWithOpts;\nfunction wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexports.wrapXOFConstructorWithOpts = wrapXOFConstructorWithOpts;\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nfunction randomBytes(bytesLength = 32) {\n if (crypto_1.crypto && typeof crypto_1.crypto.getRandomValues === 'function') {\n return crypto_1.crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\nexports.randomBytes = randomBytes;\n//# sourceMappingURL=utils.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\nconst u8a = (a: any): a is Uint8Array => a instanceof Uint8Array;\n// Cast array to different type\nexport const u8 = (arr: TypedArray) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr: TypedArray) =>\n new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n\n// Cast array to view\nexport const createView = (arr: TypedArray) =>\n new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word: number, shift: number) => (word << (32 - shift)) | (word >>> shift);\n\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE) throw new Error('Non little-endian hardware is not supported');\n\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n if (!u8a(bytes)) throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const len = hex.length;\n if (len % 2) throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n const array = new Uint8Array(len / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0) throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => {};\n\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters: number, tick: number, cb: (i: number) => void) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\nexport type Input = Uint8Array | string;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n if (!u8a(data)) throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n let pad = 0; // walk through each item, ensure they have proper type\n arrays.forEach((a) => {\n if (!u8a(a)) throw new Error('Uint8Array expected');\n r.set(a, pad);\n pad += a.length;\n });\n return r;\n}\n\n// For runtime check if class implements interface\nexport abstract class Hash> {\n abstract blockLen: number; // Bytes per block\n abstract outputLen: number; // Bytes in output\n abstract update(buf: Input): this;\n // Writes digest into buf\n abstract digestInto(buf: Uint8Array): void;\n abstract digest(): Uint8Array;\n /**\n * Resets internal state. Makes Hash instance unusable.\n * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n * by user, they will need to manually call `destroy()` when zeroing is necessary.\n */\n abstract destroy(): void;\n /**\n * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n * when no options are passed.\n * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n * There are no guarantees for clean-up because it's impossible in JS.\n */\n abstract _cloneInto(to?: T): T;\n // Safe version that clones internal state\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF> = Hash & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\nconst toStr = {}.toString;\ntype EmptyObj = {};\nexport function checkOpts(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\nexport type CHash = ReturnType;\n\nexport function wrapConstructor>(hashCons: () => Hash) {\n const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\n\nexport function wrapConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => Hash\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\nexport function wrapXOFConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => HashXOF\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.crypto = void 0;\nexports.crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// See utils.ts for details.\ndeclare const globalThis: Record | undefined;\nexport const crypto =\n typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n","export function concat(values) {\n if (typeof values[0] === 'string')\n return concatHex(values);\n return concatBytes(values);\n}\nexport function concatBytes(values) {\n let length = 0;\n for (const arr of values) {\n length += arr.length;\n }\n const result = new Uint8Array(length);\n let offset = 0;\n for (const arr of values) {\n result.set(arr, offset);\n offset += arr.length;\n }\n return result;\n}\nexport function concatHex(values) {\n return `0x${values.reduce((acc, x) => acc + x.replace('0x', ''), '')}`;\n}\n//# sourceMappingURL=concat.js.map","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\nexport type ConcatReturnType = value extends Hex\n ? Hex\n : ByteArray\n\nexport type ConcatErrorType =\n | ConcatBytesErrorType\n | ConcatHexErrorType\n | ErrorType\n\nexport function concat(\n values: readonly value[],\n): ConcatReturnType {\n if (typeof values[0] === 'string')\n return concatHex(values as readonly Hex[]) as ConcatReturnType\n return concatBytes(values as readonly ByteArray[]) as ConcatReturnType\n}\n\nexport type ConcatBytesErrorType = ErrorType\n\nexport function concatBytes(values: readonly ByteArray[]): ByteArray {\n let length = 0\n for (const arr of values) {\n length += arr.length\n }\n const result = new Uint8Array(length)\n let offset = 0\n for (const arr of values) {\n result.set(arr, offset)\n offset += arr.length\n }\n return result\n}\n\nexport type ConcatHexErrorType = ErrorType\n\nexport function concatHex(values: readonly Hex[]): Hex {\n return `0x${(values as Hex[]).reduce(\n (acc, x) => acc + x.replace('0x', ''),\n '',\n )}`\n}\n","export const arrayRegex = /^(.*)\\[([0-9]*)\\]$/;\n// `bytes`: binary type of `M` bytes, `0 < M <= 32`\n// https://regexr.com/6va55\nexport const bytesRegex = /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/;\n// `(u)int`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`\n// https://regexr.com/6v8hp\nexport const integerRegex = /^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;\n//# sourceMappingURL=regex.js.map","export const arrayRegex = /^(.*)\\[([0-9]*)\\]$/\n\n// `bytes`: binary type of `M` bytes, `0 < M <= 32`\n// https://regexr.com/6va55\nexport const bytesRegex = /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/\n\n// `(u)int`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`\n// https://regexr.com/6v8hp\nexport const integerRegex =\n /^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/\n","export class Random {\n constructor(hash) {\n this.useA = false;\n let sfc32 = function (uint128Hex) {\n let a = parseInt(uint128Hex.substr(0, 8), 16);\n let b = parseInt(uint128Hex.substr(8, 8), 16);\n let c = parseInt(uint128Hex.substr(16, 8), 16);\n let d = parseInt(uint128Hex.substr(24, 8), 16);\n return function () {\n a |= 0;\n b |= 0;\n c |= 0;\n d |= 0;\n let t = (((a + b) | 0) + d) | 0;\n d = (d + 1) | 0;\n a = b ^ (b >>> 9);\n b = (c + (c << 3)) | 0;\n c = (c << 21) | (c >>> 11);\n c = (c + t) | 0;\n return (t >>> 0) / 4294967296;\n };\n };\n this.prngA = new sfc32(hash.substr(2, 32));\n this.prngB = new sfc32(hash.substr(34, 32));\n for (let i = 0; i < 1e6; i += 2) {\n this.prngA();\n this.prngB();\n }\n }\n\n float() {\n this.useA = !this.useA;\n return this.useA ? this.prngA() : this.prngB();\n }\n\n int(a = 0, b = 1) {\n return Math.round(a + this.float() * (b - a));\n }\n\n bell(b = 1, inv) {\n let u = 0,\n v = 0;\n while (u === 0) u = this.float(); //Converting [0,1) to (0,1)\n while (v === 0) v = this.float();\n let num = Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v);\n num = num / 10.0 + 0.5; // Translate to 0 -> 1\n if (num > 1 || num < 0) return this.bell(inv); // resample between 0 and 1\n\n if (inv) {\n if (num >= 0 && num < 0.5) {\n num += 0.5;\n } else {\n num -= 0.5;\n }\n }\n return Math.round(num * b);\n }\n}\n","(function () {\n function k(a, b, c) {\n d.biginteger_used = 1;\n null != a &&\n (\"number\" == typeof a && \"undefined\" == typeof b\n ? this.fromInt(a)\n : \"number\" == typeof a\n ? this.fromNumber(a, b, c)\n : null == b && \"string\" != typeof a\n ? this.fromString(a, 256)\n : this.fromString(a, b));\n }\n function q() {\n return new k(null, void 0, void 0);\n }\n function R(a, b, c, e, d, g) {\n for (; 0 <= --g; ) {\n var f = b * this[a++] + c[e] + d;\n d = Math.floor(f / 67108864);\n c[e++] = f & 67108863;\n }\n return d;\n }\n function S(a, b, c, e, d, g) {\n var f = b & 32767;\n for (b >>= 15; 0 <= --g; ) {\n var m = this[a] & 32767,\n k = this[a++] >> 15,\n n = b * m + k * f;\n m = f * m + ((n & 32767) << 15) + c[e] + (d & 1073741823);\n d = (m >>> 30) + (n >>> 15) + b * k + (d >>> 30);\n c[e++] = m & 1073741823;\n }\n return d;\n }\n function T(a, b, c, e, d, g) {\n var f = b & 16383;\n for (b >>= 14; 0 <= --g; ) {\n var m = this[a] & 16383,\n k = this[a++] >> 14,\n n = b * m + k * f;\n m = f * m + ((n & 16383) << 14) + c[e] + d;\n d = (m >> 28) + (n >> 14) + b * k;\n c[e++] = m & 268435455;\n }\n return d;\n }\n function M(a, b) {\n var c = E[a.charCodeAt(b)];\n return null == c ? -1 : c;\n }\n function y(a) {\n var b = q();\n b.fromInt(a);\n return b;\n }\n function F(a) {\n var b = 1,\n c;\n 0 != (c = a >>> 16) && ((a = c), (b += 16));\n 0 != (c = a >> 8) && ((a = c), (b += 8));\n 0 != (c = a >> 4) && ((a = c), (b += 4));\n 0 != (c = a >> 2) && ((a = c), (b += 2));\n 0 != a >> 1 && (b += 1);\n return b;\n }\n function z(a) {\n this.m = a;\n }\n function B(a) {\n this.m = a;\n this.mp = a.invDigit();\n this.mpl = this.mp & 32767;\n this.mph = this.mp >> 15;\n this.um = (1 << (a.DB - 15)) - 1;\n this.mt2 = 2 * a.t;\n }\n function U(a, b) {\n return a & b;\n }\n function H(a, b) {\n return a | b;\n }\n function N(a, b) {\n return a ^ b;\n }\n function O(a, b) {\n return a & ~b;\n }\n function D() {}\n function P(a) {\n return a;\n }\n function C(a) {\n this.r2 = q();\n this.q3 = q();\n k.ONE.dlShiftTo(2 * a.t, this.r2);\n this.mu = this.r2.divide(a);\n this.m = a;\n }\n var d = { version: \"6.4.2.2\", use_lines: !0, use_xyz: !1 },\n G = !1;\n \"undefined\" !== typeof module && module.exports\n ? ((module.exports = d), (G = !0))\n : \"undefined\" !== typeof document\n ? (window.ClipperLib = d)\n : (self.ClipperLib = d);\n if (G) {\n var u = \"chrome\";\n var v = \"Netscape\";\n } else\n (u = navigator.userAgent.toString().toLowerCase()), (v = navigator.appName);\n var I = -1 != u.indexOf(\"chrome\") && -1 == u.indexOf(\"chromium\") ? 1 : 0;\n G = -1 != u.indexOf(\"chromium\") ? 1 : 0;\n var Q =\n -1 != u.indexOf(\"safari\") &&\n -1 == u.indexOf(\"chrome\") &&\n -1 == u.indexOf(\"chromium\")\n ? 1\n : 0;\n var J = -1 != u.indexOf(\"firefox\") ? 1 : 0;\n u.indexOf(\"firefox/17\");\n u.indexOf(\"firefox/15\");\n u.indexOf(\"firefox/3\");\n var K = -1 != u.indexOf(\"opera\") ? 1 : 0;\n u.indexOf(\"msie 10\");\n u.indexOf(\"msie 9\");\n var L = -1 != u.indexOf(\"msie 8\") ? 1 : 0;\n var V = -1 != u.indexOf(\"msie 7\") ? 1 : 0;\n u = -1 != u.indexOf(\"msie \") ? 1 : 0;\n d.biginteger_used = null;\n \"Microsoft Internet Explorer\" == v\n ? ((k.prototype.am = S), (v = 30))\n : \"Netscape\" != v\n ? ((k.prototype.am = R), (v = 26))\n : ((k.prototype.am = T), (v = 28));\n k.prototype.DB = v;\n k.prototype.DM = (1 << v) - 1;\n k.prototype.DV = 1 << v;\n k.prototype.FV = Math.pow(2, 52);\n k.prototype.F1 = 52 - v;\n k.prototype.F2 = 2 * v - 52;\n var E = [],\n x;\n v = 48;\n for (x = 0; 9 >= x; ++x) E[v++] = x;\n v = 97;\n for (x = 10; 36 > x; ++x) E[v++] = x;\n v = 65;\n for (x = 10; 36 > x; ++x) E[v++] = x;\n z.prototype.convert = function (a) {\n return 0 > a.s || 0 <= a.compareTo(this.m) ? a.mod(this.m) : a;\n };\n z.prototype.revert = function (a) {\n return a;\n };\n z.prototype.reduce = function (a) {\n a.divRemTo(this.m, null, a);\n };\n z.prototype.mulTo = function (a, b, c) {\n a.multiplyTo(b, c);\n this.reduce(c);\n };\n z.prototype.sqrTo = function (a, b) {\n a.squareTo(b);\n this.reduce(b);\n };\n B.prototype.convert = function (a) {\n var b = q();\n a.abs().dlShiftTo(this.m.t, b);\n b.divRemTo(this.m, null, b);\n 0 > a.s && 0 < b.compareTo(k.ZERO) && this.m.subTo(b, b);\n return b;\n };\n B.prototype.revert = function (a) {\n var b = q();\n a.copyTo(b);\n this.reduce(b);\n return b;\n };\n B.prototype.reduce = function (a) {\n for (; a.t <= this.mt2; ) a[a.t++] = 0;\n for (var b = 0; b < this.m.t; ++b) {\n var c = a[b] & 32767,\n e =\n (c * this.mpl +\n (((c * this.mph + (a[b] >> 15) * this.mpl) & this.um) << 15)) &\n a.DM;\n c = b + this.m.t;\n for (a[c] += this.m.am(0, e, a, b, 0, this.m.t); a[c] >= a.DV; )\n (a[c] -= a.DV), a[++c]++;\n }\n a.clamp();\n a.drShiftTo(this.m.t, a);\n 0 <= a.compareTo(this.m) && a.subTo(this.m, a);\n };\n B.prototype.mulTo = function (a, b, c) {\n a.multiplyTo(b, c);\n this.reduce(c);\n };\n B.prototype.sqrTo = function (a, b) {\n a.squareTo(b);\n this.reduce(b);\n };\n k.prototype.copyTo = function (a) {\n for (var b = this.t - 1; 0 <= b; --b) a[b] = this[b];\n a.t = this.t;\n a.s = this.s;\n };\n k.prototype.fromInt = function (a) {\n this.t = 1;\n this.s = 0 > a ? -1 : 0;\n 0 < a ? (this[0] = a) : -1 > a ? (this[0] = a + this.DV) : (this.t = 0);\n };\n k.prototype.fromString = function (a, b) {\n if (16 == b) var c = 4;\n else if (8 == b) c = 3;\n else if (256 == b) c = 8;\n else if (2 == b) c = 1;\n else if (32 == b) c = 5;\n else if (4 == b) c = 2;\n else {\n this.fromRadix(a, b);\n return;\n }\n this.s = this.t = 0;\n for (var e = a.length, d = !1, g = 0; 0 <= --e; ) {\n var h = 8 == c ? a[e] & 255 : M(a, e);\n 0 > h\n ? \"-\" == a.charAt(e) && (d = !0)\n : ((d = !1),\n 0 == g\n ? (this[this.t++] = h)\n : g + c > this.DB\n ? ((this[this.t - 1] |= (h & ((1 << (this.DB - g)) - 1)) << g),\n (this[this.t++] = h >> (this.DB - g)))\n : (this[this.t - 1] |= h << g),\n (g += c),\n g >= this.DB && (g -= this.DB));\n }\n 8 == c &&\n 0 != (a[0] & 128) &&\n ((this.s = -1),\n 0 < g && (this[this.t - 1] |= ((1 << (this.DB - g)) - 1) << g));\n this.clamp();\n d && k.ZERO.subTo(this, this);\n };\n k.prototype.clamp = function () {\n for (var a = this.s & this.DM; 0 < this.t && this[this.t - 1] == a; )\n --this.t;\n };\n k.prototype.dlShiftTo = function (a, b) {\n var c;\n for (c = this.t - 1; 0 <= c; --c) b[c + a] = this[c];\n for (c = a - 1; 0 <= c; --c) b[c] = 0;\n b.t = this.t + a;\n b.s = this.s;\n };\n k.prototype.drShiftTo = function (a, b) {\n for (var c = a; c < this.t; ++c) b[c - a] = this[c];\n b.t = Math.max(this.t - a, 0);\n b.s = this.s;\n };\n k.prototype.lShiftTo = function (a, b) {\n var c = a % this.DB,\n e = this.DB - c,\n d = (1 << e) - 1,\n g = Math.floor(a / this.DB),\n h = (this.s << c) & this.DM,\n m;\n for (m = this.t - 1; 0 <= m; --m)\n (b[m + g + 1] = (this[m] >> e) | h), (h = (this[m] & d) << c);\n for (m = g - 1; 0 <= m; --m) b[m] = 0;\n b[g] = h;\n b.t = this.t + g + 1;\n b.s = this.s;\n b.clamp();\n };\n k.prototype.rShiftTo = function (a, b) {\n b.s = this.s;\n var c = Math.floor(a / this.DB);\n if (c >= this.t) b.t = 0;\n else {\n var e = a % this.DB,\n d = this.DB - e,\n g = (1 << e) - 1;\n b[0] = this[c] >> e;\n for (var h = c + 1; h < this.t; ++h)\n (b[h - c - 1] |= (this[h] & g) << d), (b[h - c] = this[h] >> e);\n 0 < e && (b[this.t - c - 1] |= (this.s & g) << d);\n b.t = this.t - c;\n b.clamp();\n }\n };\n k.prototype.subTo = function (a, b) {\n for (var c = 0, e = 0, d = Math.min(a.t, this.t); c < d; )\n (e += this[c] - a[c]), (b[c++] = e & this.DM), (e >>= this.DB);\n if (a.t < this.t) {\n for (e -= a.s; c < this.t; )\n (e += this[c]), (b[c++] = e & this.DM), (e >>= this.DB);\n e += this.s;\n } else {\n for (e += this.s; c < a.t; )\n (e -= a[c]), (b[c++] = e & this.DM), (e >>= this.DB);\n e -= a.s;\n }\n b.s = 0 > e ? -1 : 0;\n -1 > e ? (b[c++] = this.DV + e) : 0 < e && (b[c++] = e);\n b.t = c;\n b.clamp();\n };\n k.prototype.multiplyTo = function (a, b) {\n var c = this.abs(),\n e = a.abs(),\n d = c.t;\n for (b.t = d + e.t; 0 <= --d; ) b[d] = 0;\n for (d = 0; d < e.t; ++d) b[d + c.t] = c.am(0, e[d], b, d, 0, c.t);\n b.s = 0;\n b.clamp();\n this.s != a.s && k.ZERO.subTo(b, b);\n };\n k.prototype.squareTo = function (a) {\n for (var b = this.abs(), c = (a.t = 2 * b.t); 0 <= --c; ) a[c] = 0;\n for (c = 0; c < b.t - 1; ++c) {\n var e = b.am(c, b[c], a, 2 * c, 0, 1);\n (a[c + b.t] += b.am(c + 1, 2 * b[c], a, 2 * c + 1, e, b.t - c - 1)) >=\n b.DV && ((a[c + b.t] -= b.DV), (a[c + b.t + 1] = 1));\n }\n 0 < a.t && (a[a.t - 1] += b.am(c, b[c], a, 2 * c, 0, 1));\n a.s = 0;\n a.clamp();\n };\n k.prototype.divRemTo = function (a, b, c) {\n var e = a.abs();\n if (!(0 >= e.t)) {\n var d = this.abs();\n if (d.t < e.t) null != b && b.fromInt(0), null != c && this.copyTo(c);\n else {\n null == c && (c = q());\n var g = q(),\n h = this.s;\n a = a.s;\n var m = this.DB - F(e[e.t - 1]);\n 0 < m\n ? (e.lShiftTo(m, g), d.lShiftTo(m, c))\n : (e.copyTo(g), d.copyTo(c));\n e = g.t;\n d = g[e - 1];\n if (0 != d) {\n var l = d * (1 << this.F1) + (1 < e ? g[e - 2] >> this.F2 : 0),\n n = this.FV / l;\n l = (1 << this.F1) / l;\n var r = 1 << this.F2,\n p = c.t,\n t = p - e,\n u = null == b ? q() : b;\n g.dlShiftTo(t, u);\n 0 <= c.compareTo(u) && ((c[c.t++] = 1), c.subTo(u, c));\n k.ONE.dlShiftTo(e, u);\n for (u.subTo(g, g); g.t < e; ) g[g.t++] = 0;\n for (; 0 <= --t; ) {\n var v =\n c[--p] == d ? this.DM : Math.floor(c[p] * n + (c[p - 1] + r) * l);\n if ((c[p] += g.am(0, v, c, t, 0, e)) < v)\n for (g.dlShiftTo(t, u), c.subTo(u, c); c[p] < --v; )\n c.subTo(u, c);\n }\n null != b && (c.drShiftTo(e, b), h != a && k.ZERO.subTo(b, b));\n c.t = e;\n c.clamp();\n 0 < m && c.rShiftTo(m, c);\n 0 > h && k.ZERO.subTo(c, c);\n }\n }\n }\n };\n k.prototype.invDigit = function () {\n if (1 > this.t) return 0;\n var a = this[0];\n if (0 == (a & 1)) return 0;\n var b = a & 3;\n b = (b * (2 - (a & 15) * b)) & 15;\n b = (b * (2 - (a & 255) * b)) & 255;\n b = (b * (2 - (((a & 65535) * b) & 65535))) & 65535;\n b = (b * (2 - ((a * b) % this.DV))) % this.DV;\n return 0 < b ? this.DV - b : -b;\n };\n k.prototype.isEven = function () {\n return 0 == (0 < this.t ? this[0] & 1 : this.s);\n };\n k.prototype.exp = function (a, b) {\n if (4294967295 < a || 1 > a) return k.ONE;\n var c = q(),\n e = q(),\n d = b.convert(this),\n g = F(a) - 1;\n for (d.copyTo(c); 0 <= --g; )\n if ((b.sqrTo(c, e), 0 < (a & (1 << g)))) b.mulTo(e, d, c);\n else {\n var h = c;\n c = e;\n e = h;\n }\n return b.revert(c);\n };\n k.prototype.toString = function (a) {\n if (0 > this.s) return \"-\" + this.negate().toString(a);\n if (16 == a) a = 4;\n else if (8 == a) a = 3;\n else if (2 == a) a = 1;\n else if (32 == a) a = 5;\n else if (4 == a) a = 2;\n else return this.toRadix(a);\n var b = (1 << a) - 1,\n c,\n e = !1,\n d = \"\",\n g = this.t,\n h = this.DB - ((g * this.DB) % a);\n if (0 < g--)\n for (\n h < this.DB &&\n 0 < (c = this[g] >> h) &&\n ((e = !0), (d = \"0123456789abcdefghijklmnopqrstuvwxyz\".charAt(c)));\n 0 <= g;\n\n )\n h < a\n ? ((c = (this[g] & ((1 << h) - 1)) << (a - h)),\n (c |= this[--g] >> (h += this.DB - a)))\n : ((c = (this[g] >> (h -= a)) & b), 0 >= h && ((h += this.DB), --g)),\n 0 < c && (e = !0),\n e && (d += \"0123456789abcdefghijklmnopqrstuvwxyz\".charAt(c));\n return e ? d : \"0\";\n };\n k.prototype.negate = function () {\n var a = q();\n k.ZERO.subTo(this, a);\n return a;\n };\n k.prototype.abs = function () {\n return 0 > this.s ? this.negate() : this;\n };\n k.prototype.compareTo = function (a) {\n var b = this.s - a.s;\n if (0 != b) return b;\n var c = this.t;\n b = c - a.t;\n if (0 != b) return 0 > this.s ? -b : b;\n for (; 0 <= --c; ) if (0 != (b = this[c] - a[c])) return b;\n return 0;\n };\n k.prototype.bitLength = function () {\n return 0 >= this.t\n ? 0\n : this.DB * (this.t - 1) + F(this[this.t - 1] ^ (this.s & this.DM));\n };\n k.prototype.mod = function (a) {\n var b = q();\n this.abs().divRemTo(a, null, b);\n 0 > this.s && 0 < b.compareTo(k.ZERO) && a.subTo(b, b);\n return b;\n };\n k.prototype.modPowInt = function (a, b) {\n var c = 256 > a || b.isEven() ? new z(b) : new B(b);\n return this.exp(a, c);\n };\n k.ZERO = y(0);\n k.ONE = y(1);\n D.prototype.convert = P;\n D.prototype.revert = P;\n D.prototype.mulTo = function (a, b, c) {\n a.multiplyTo(b, c);\n };\n D.prototype.sqrTo = function (a, b) {\n a.squareTo(b);\n };\n C.prototype.convert = function (a) {\n if (0 > a.s || a.t > 2 * this.m.t) return a.mod(this.m);\n if (0 > a.compareTo(this.m)) return a;\n var b = q();\n a.copyTo(b);\n this.reduce(b);\n return b;\n };\n C.prototype.revert = function (a) {\n return a;\n };\n C.prototype.reduce = function (a) {\n a.drShiftTo(this.m.t - 1, this.r2);\n a.t > this.m.t + 1 && ((a.t = this.m.t + 1), a.clamp());\n this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3);\n for (\n this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2);\n 0 > a.compareTo(this.r2);\n\n )\n a.dAddOffset(1, this.m.t + 1);\n for (a.subTo(this.r2, a); 0 <= a.compareTo(this.m); ) a.subTo(this.m, a);\n };\n C.prototype.mulTo = function (a, b, c) {\n a.multiplyTo(b, c);\n this.reduce(c);\n };\n C.prototype.sqrTo = function (a, b) {\n a.squareTo(b);\n this.reduce(b);\n };\n var w = [\n 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67,\n 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149,\n 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229,\n 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313,\n 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409,\n 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499,\n 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601,\n 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691,\n 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809,\n 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907,\n 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997,\n ],\n W = 67108864 / w[w.length - 1];\n k.prototype.chunkSize = function (a) {\n return Math.floor((Math.LN2 * this.DB) / Math.log(a));\n };\n k.prototype.toRadix = function (a) {\n null == a && (a = 10);\n if (0 == this.signum() || 2 > a || 36 < a) return \"0\";\n var b = this.chunkSize(a);\n b = Math.pow(a, b);\n var c = y(b),\n e = q(),\n d = q(),\n g = \"\";\n for (this.divRemTo(c, e, d); 0 < e.signum(); )\n (g = (b + d.intValue()).toString(a).substr(1) + g), e.divRemTo(c, e, d);\n return d.intValue().toString(a) + g;\n };\n k.prototype.fromRadix = function (a, b) {\n this.fromInt(0);\n null == b && (b = 10);\n for (\n var c = this.chunkSize(b),\n e = Math.pow(b, c),\n d = !1,\n g = 0,\n h = 0,\n m = 0;\n m < a.length;\n ++m\n ) {\n var l = M(a, m);\n 0 > l\n ? \"-\" == a.charAt(m) && 0 == this.signum() && (d = !0)\n : ((h = b * h + l),\n ++g >= c && (this.dMultiply(e), this.dAddOffset(h, 0), (h = g = 0)));\n }\n 0 < g && (this.dMultiply(Math.pow(b, g)), this.dAddOffset(h, 0));\n d && k.ZERO.subTo(this, this);\n };\n k.prototype.fromNumber = function (a, b, c) {\n if (\"number\" == typeof b)\n if (2 > a) this.fromInt(1);\n else\n for (\n this.fromNumber(a, c),\n this.testBit(a - 1) ||\n this.bitwiseTo(k.ONE.shiftLeft(a - 1), H, this),\n this.isEven() && this.dAddOffset(1, 0);\n !this.isProbablePrime(b);\n\n )\n this.dAddOffset(2, 0),\n this.bitLength() > a && this.subTo(k.ONE.shiftLeft(a - 1), this);\n else {\n c = [];\n var e = a & 7;\n c.length = (a >> 3) + 1;\n b.nextBytes(c);\n c[0] = 0 < e ? c[0] & ((1 << e) - 1) : 0;\n this.fromString(c, 256);\n }\n };\n k.prototype.bitwiseTo = function (a, b, c) {\n var e,\n d = Math.min(a.t, this.t);\n for (e = 0; e < d; ++e) c[e] = b(this[e], a[e]);\n if (a.t < this.t) {\n var g = a.s & this.DM;\n for (e = d; e < this.t; ++e) c[e] = b(this[e], g);\n c.t = this.t;\n } else {\n g = this.s & this.DM;\n for (e = d; e < a.t; ++e) c[e] = b(g, a[e]);\n c.t = a.t;\n }\n c.s = b(this.s, a.s);\n c.clamp();\n };\n k.prototype.changeBit = function (a, b) {\n var c = k.ONE.shiftLeft(a);\n this.bitwiseTo(c, b, c);\n return c;\n };\n k.prototype.addTo = function (a, b) {\n for (var c = 0, e = 0, d = Math.min(a.t, this.t); c < d; )\n (e += this[c] + a[c]), (b[c++] = e & this.DM), (e >>= this.DB);\n if (a.t < this.t) {\n for (e += a.s; c < this.t; )\n (e += this[c]), (b[c++] = e & this.DM), (e >>= this.DB);\n e += this.s;\n } else {\n for (e += this.s; c < a.t; )\n (e += a[c]), (b[c++] = e & this.DM), (e >>= this.DB);\n e += a.s;\n }\n b.s = 0 > e ? -1 : 0;\n 0 < e ? (b[c++] = e) : -1 > e && (b[c++] = this.DV + e);\n b.t = c;\n b.clamp();\n };\n k.prototype.dMultiply = function (a) {\n this[this.t] = this.am(0, a - 1, this, 0, 0, this.t);\n ++this.t;\n this.clamp();\n };\n k.prototype.dAddOffset = function (a, b) {\n if (0 != a) {\n for (; this.t <= b; ) this[this.t++] = 0;\n for (this[b] += a; this[b] >= this.DV; )\n (this[b] -= this.DV), ++b >= this.t && (this[this.t++] = 0), ++this[b];\n }\n };\n k.prototype.multiplyLowerTo = function (a, b, c) {\n var e = Math.min(this.t + a.t, b);\n c.s = 0;\n for (c.t = e; 0 < e; ) c[--e] = 0;\n var d;\n for (d = c.t - this.t; e < d; ++e)\n c[e + this.t] = this.am(0, a[e], c, e, 0, this.t);\n for (d = Math.min(a.t, b); e < d; ++e) this.am(0, a[e], c, e, 0, b - e);\n c.clamp();\n };\n k.prototype.multiplyUpperTo = function (a, b, c) {\n --b;\n var e = (c.t = this.t + a.t - b);\n for (c.s = 0; 0 <= --e; ) c[e] = 0;\n for (e = Math.max(b - this.t, 0); e < a.t; ++e)\n c[this.t + e - b] = this.am(b - e, a[e], c, 0, 0, this.t + e - b);\n c.clamp();\n c.drShiftTo(1, c);\n };\n k.prototype.modInt = function (a) {\n if (0 >= a) return 0;\n var b = this.DV % a,\n c = 0 > this.s ? a - 1 : 0;\n if (0 < this.t)\n if (0 == b) c = this[0] % a;\n else for (var e = this.t - 1; 0 <= e; --e) c = (b * c + this[e]) % a;\n return c;\n };\n k.prototype.millerRabin = function (a) {\n var b = this.subtract(k.ONE),\n c = b.getLowestSetBit();\n if (0 >= c) return !1;\n var e = b.shiftRight(c);\n a = (a + 1) >> 1;\n a > w.length && (a = w.length);\n for (var d = q(), g = 0; g < a; ++g) {\n d.fromInt(w[Math.floor(Math.random() * w.length)]);\n var h = d.modPow(e, this);\n if (0 != h.compareTo(k.ONE) && 0 != h.compareTo(b)) {\n for (var m = 1; m++ < c && 0 != h.compareTo(b); )\n if (((h = h.modPowInt(2, this)), 0 == h.compareTo(k.ONE))) return !1;\n if (0 != h.compareTo(b)) return !1;\n }\n }\n return !0;\n };\n k.prototype.clone = function () {\n var a = q();\n this.copyTo(a);\n return a;\n };\n k.prototype.intValue = function () {\n if (0 > this.s) {\n if (1 == this.t) return this[0] - this.DV;\n if (0 == this.t) return -1;\n } else {\n if (1 == this.t) return this[0];\n if (0 == this.t) return 0;\n }\n return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0];\n };\n k.prototype.byteValue = function () {\n return 0 == this.t ? this.s : (this[0] << 24) >> 24;\n };\n k.prototype.shortValue = function () {\n return 0 == this.t ? this.s : (this[0] << 16) >> 16;\n };\n k.prototype.signum = function () {\n return 0 > this.s\n ? -1\n : 0 >= this.t || (1 == this.t && 0 >= this[0])\n ? 0\n : 1;\n };\n k.prototype.toByteArray = function () {\n var a = this.t,\n b = [];\n b[0] = this.s;\n var c = this.DB - ((a * this.DB) % 8),\n e,\n d = 0;\n if (0 < a--)\n for (\n c < this.DB &&\n (e = this[a] >> c) != (this.s & this.DM) >> c &&\n (b[d++] = e | (this.s << (this.DB - c)));\n 0 <= a;\n\n )\n if (\n (8 > c\n ? ((e = (this[a] & ((1 << c) - 1)) << (8 - c)),\n (e |= this[--a] >> (c += this.DB - 8)))\n : ((e = (this[a] >> (c -= 8)) & 255),\n 0 >= c && ((c += this.DB), --a)),\n 0 != (e & 128) && (e |= -256),\n 0 == d && (this.s & 128) != (e & 128) && ++d,\n 0 < d || e != this.s)\n )\n b[d++] = e;\n return b;\n };\n k.prototype.equals = function (a) {\n return 0 == this.compareTo(a);\n };\n k.prototype.min = function (a) {\n return 0 > this.compareTo(a) ? this : a;\n };\n k.prototype.max = function (a) {\n return 0 < this.compareTo(a) ? this : a;\n };\n k.prototype.and = function (a) {\n var b = q();\n this.bitwiseTo(a, U, b);\n return b;\n };\n k.prototype.or = function (a) {\n var b = q();\n this.bitwiseTo(a, H, b);\n return b;\n };\n k.prototype.xor = function (a) {\n var b = q();\n this.bitwiseTo(a, N, b);\n return b;\n };\n k.prototype.andNot = function (a) {\n var b = q();\n this.bitwiseTo(a, O, b);\n return b;\n };\n k.prototype.not = function () {\n for (var a = q(), b = 0; b < this.t; ++b) a[b] = this.DM & ~this[b];\n a.t = this.t;\n a.s = ~this.s;\n return a;\n };\n k.prototype.shiftLeft = function (a) {\n var b = q();\n 0 > a ? this.rShiftTo(-a, b) : this.lShiftTo(a, b);\n return b;\n };\n k.prototype.shiftRight = function (a) {\n var b = q();\n 0 > a ? this.lShiftTo(-a, b) : this.rShiftTo(a, b);\n return b;\n };\n k.prototype.getLowestSetBit = function () {\n for (var a = 0; a < this.t; ++a)\n if (0 != this[a]) {\n var b = a * this.DB;\n a = this[a];\n if (0 == a) a = -1;\n else {\n var c = 0;\n 0 == (a & 65535) && ((a >>= 16), (c += 16));\n 0 == (a & 255) && ((a >>= 8), (c += 8));\n 0 == (a & 15) && ((a >>= 4), (c += 4));\n 0 == (a & 3) && ((a >>= 2), (c += 2));\n 0 == (a & 1) && ++c;\n a = c;\n }\n return b + a;\n }\n return 0 > this.s ? this.t * this.DB : -1;\n };\n k.prototype.bitCount = function () {\n for (var a = 0, b = this.s & this.DM, c = 0; c < this.t; ++c) {\n for (var e = this[c] ^ b, d = 0; 0 != e; ) (e &= e - 1), ++d;\n a += d;\n }\n return a;\n };\n k.prototype.testBit = function (a) {\n var b = Math.floor(a / this.DB);\n return b >= this.t ? 0 != this.s : 0 != (this[b] & (1 << a % this.DB));\n };\n k.prototype.setBit = function (a) {\n return this.changeBit(a, H);\n };\n k.prototype.clearBit = function (a) {\n return this.changeBit(a, O);\n };\n k.prototype.flipBit = function (a) {\n return this.changeBit(a, N);\n };\n k.prototype.add = function (a) {\n var b = q();\n this.addTo(a, b);\n return b;\n };\n k.prototype.subtract = function (a) {\n var b = q();\n this.subTo(a, b);\n return b;\n };\n k.prototype.multiply = function (a) {\n var b = q();\n this.multiplyTo(a, b);\n return b;\n };\n k.prototype.divide = function (a) {\n var b = q();\n this.divRemTo(a, b, null);\n return b;\n };\n k.prototype.remainder = function (a) {\n var b = q();\n this.divRemTo(a, null, b);\n return b;\n };\n k.prototype.divideAndRemainder = function (a) {\n var b = q(),\n c = q();\n this.divRemTo(a, b, c);\n return [b, c];\n };\n k.prototype.modPow = function (a, b) {\n var c = a.bitLength(),\n e = y(1);\n if (0 >= c) return e;\n var d = 18 > c ? 1 : 48 > c ? 3 : 144 > c ? 4 : 768 > c ? 5 : 6;\n var g = 8 > c ? new z(b) : b.isEven() ? new C(b) : new B(b);\n var h = [],\n m = 3,\n k = d - 1,\n n = (1 << d) - 1;\n h[1] = g.convert(this);\n if (1 < d)\n for (c = q(), g.sqrTo(h[1], c); m <= n; )\n (h[m] = q()), g.mulTo(c, h[m - 2], h[m]), (m += 2);\n var r = a.t - 1,\n p = !0,\n t = q();\n for (c = F(a[r]) - 1; 0 <= r; ) {\n if (c >= k) var u = (a[r] >> (c - k)) & n;\n else\n (u = (a[r] & ((1 << (c + 1)) - 1)) << (k - c)),\n 0 < r && (u |= a[r - 1] >> (this.DB + c - k));\n for (m = d; 0 == (u & 1); ) (u >>= 1), --m;\n 0 > (c -= m) && ((c += this.DB), --r);\n if (p) h[u].copyTo(e), (p = !1);\n else {\n for (; 1 < m; ) g.sqrTo(e, t), g.sqrTo(t, e), (m -= 2);\n 0 < m ? g.sqrTo(e, t) : ((m = e), (e = t), (t = m));\n g.mulTo(t, h[u], e);\n }\n for (; 0 <= r && 0 == (a[r] & (1 << c)); )\n g.sqrTo(e, t),\n (m = e),\n (e = t),\n (t = m),\n 0 > --c && ((c = this.DB - 1), --r);\n }\n return g.revert(e);\n };\n k.prototype.modInverse = function (a) {\n var b = a.isEven();\n if ((this.isEven() && b) || 0 == a.signum()) return k.ZERO;\n for (\n var c = a.clone(),\n e = this.clone(),\n d = y(1),\n g = y(0),\n h = y(0),\n m = y(1);\n 0 != c.signum();\n\n ) {\n for (; c.isEven(); )\n c.rShiftTo(1, c),\n b\n ? ((d.isEven() && g.isEven()) || (d.addTo(this, d), g.subTo(a, g)),\n d.rShiftTo(1, d))\n : g.isEven() || g.subTo(a, g),\n g.rShiftTo(1, g);\n for (; e.isEven(); )\n e.rShiftTo(1, e),\n b\n ? ((h.isEven() && m.isEven()) || (h.addTo(this, h), m.subTo(a, m)),\n h.rShiftTo(1, h))\n : m.isEven() || m.subTo(a, m),\n m.rShiftTo(1, m);\n 0 <= c.compareTo(e)\n ? (c.subTo(e, c), b && d.subTo(h, d), g.subTo(m, g))\n : (e.subTo(c, e), b && h.subTo(d, h), m.subTo(g, m));\n }\n if (0 != e.compareTo(k.ONE)) return k.ZERO;\n if (0 <= m.compareTo(a)) return m.subtract(a);\n if (0 > m.signum()) m.addTo(a, m);\n else return m;\n return 0 > m.signum() ? m.add(a) : m;\n };\n k.prototype.pow = function (a) {\n return this.exp(a, new D());\n };\n k.prototype.gcd = function (a) {\n var b = 0 > this.s ? this.negate() : this.clone();\n a = 0 > a.s ? a.negate() : a.clone();\n if (0 > b.compareTo(a)) {\n var c = b;\n b = a;\n a = c;\n }\n c = b.getLowestSetBit();\n var e = a.getLowestSetBit();\n if (0 > e) return b;\n c < e && (e = c);\n 0 < e && (b.rShiftTo(e, b), a.rShiftTo(e, a));\n for (; 0 < b.signum(); )\n 0 < (c = b.getLowestSetBit()) && b.rShiftTo(c, b),\n 0 < (c = a.getLowestSetBit()) && a.rShiftTo(c, a),\n 0 <= b.compareTo(a)\n ? (b.subTo(a, b), b.rShiftTo(1, b))\n : (a.subTo(b, a), a.rShiftTo(1, a));\n 0 < e && a.lShiftTo(e, a);\n return a;\n };\n k.prototype.isProbablePrime = function (a) {\n var b,\n c = this.abs();\n if (1 == c.t && c[0] <= w[w.length - 1]) {\n for (b = 0; b < w.length; ++b) if (c[0] == w[b]) return !0;\n return !1;\n }\n if (c.isEven()) return !1;\n for (b = 1; b < w.length; ) {\n for (var e = w[b], d = b + 1; d < w.length && e < W; ) e *= w[d++];\n for (e = c.modInt(e); b < d; ) if (0 == e % w[b++]) return !1;\n }\n return c.millerRabin(a);\n };\n k.prototype.square = function () {\n var a = q();\n this.squareTo(a);\n return a;\n };\n k.prototype.IsNegative = function () {\n return -1 == this.compareTo(k.ZERO) ? !0 : !1;\n };\n k.op_Equality = function (a, b) {\n return 0 == a.compareTo(b) ? !0 : !1;\n };\n k.op_Inequality = function (a, b) {\n return 0 != a.compareTo(b) ? !0 : !1;\n };\n k.op_GreaterThan = function (a, b) {\n return 0 < a.compareTo(b) ? !0 : !1;\n };\n k.op_LessThan = function (a, b) {\n return 0 > a.compareTo(b) ? !0 : !1;\n };\n k.op_Addition = function (a, b) {\n return new k(a, void 0, void 0).add(new k(b, void 0, void 0));\n };\n k.op_Subtraction = function (a, b) {\n return new k(a, void 0, void 0).subtract(new k(b, void 0, void 0));\n };\n k.Int128Mul = function (a, b) {\n return new k(a, void 0, void 0).multiply(new k(b, void 0, void 0));\n };\n k.op_Division = function (a, b) {\n return a.divide(b);\n };\n k.prototype.ToDouble = function () {\n return parseFloat(this.toString());\n };\n v = function (a, b) {\n var c;\n if (\"undefined\" === typeof Object.getOwnPropertyNames)\n for (c in b.prototype) {\n if (\n \"undefined\" === typeof a.prototype[c] ||\n a.prototype[c] === Object.prototype[c]\n )\n a.prototype[c] = b.prototype[c];\n }\n else\n for (\n var e = Object.getOwnPropertyNames(b.prototype), d = 0;\n d < e.length;\n d++\n )\n \"undefined\" ===\n typeof Object.getOwnPropertyDescriptor(a.prototype, e[d]) &&\n Object.defineProperty(\n a.prototype,\n e[d],\n Object.getOwnPropertyDescriptor(b.prototype, e[d])\n );\n for (c in b) \"undefined\" === typeof a[c] && (a[c] = b[c]);\n a.$baseCtor = b;\n };\n d.Path = function () {\n return [];\n };\n d.Path.prototype.push = Array.prototype.push;\n d.Paths = function () {\n return [];\n };\n d.Paths.prototype.push = Array.prototype.push;\n d.DoublePoint = function () {\n var a = arguments;\n this.Y = this.X = 0;\n 1 === a.length\n ? ((this.X = a[0].X), (this.Y = a[0].Y))\n : 2 === a.length && ((this.X = a[0]), (this.Y = a[1]));\n };\n d.DoublePoint0 = function () {\n this.Y = this.X = 0;\n };\n d.DoublePoint0.prototype = d.DoublePoint.prototype;\n d.DoublePoint1 = function (a) {\n this.X = a.X;\n this.Y = a.Y;\n };\n d.DoublePoint1.prototype = d.DoublePoint.prototype;\n d.DoublePoint2 = function (a, b) {\n this.X = a;\n this.Y = b;\n };\n d.DoublePoint2.prototype = d.DoublePoint.prototype;\n d.PolyNode = function () {\n this.m_Parent = null;\n this.m_polygon = new d.Path();\n this.m_endtype = this.m_jointype = this.m_Index = 0;\n this.m_Childs = [];\n this.IsOpen = !1;\n };\n d.PolyNode.prototype.IsHoleNode = function () {\n for (var a = !0, b = this.m_Parent; null !== b; )\n (a = !a), (b = b.m_Parent);\n return a;\n };\n d.PolyNode.prototype.ChildCount = function () {\n return this.m_Childs.length;\n };\n d.PolyNode.prototype.Contour = function () {\n return this.m_polygon;\n };\n d.PolyNode.prototype.AddChild = function (a) {\n var b = this.m_Childs.length;\n this.m_Childs.push(a);\n a.m_Parent = this;\n a.m_Index = b;\n };\n d.PolyNode.prototype.GetNext = function () {\n return 0 < this.m_Childs.length\n ? this.m_Childs[0]\n : this.GetNextSiblingUp();\n };\n d.PolyNode.prototype.GetNextSiblingUp = function () {\n return null === this.m_Parent\n ? null\n : this.m_Index === this.m_Parent.m_Childs.length - 1\n ? this.m_Parent.GetNextSiblingUp()\n : this.m_Parent.m_Childs[this.m_Index + 1];\n };\n d.PolyNode.prototype.Childs = function () {\n return this.m_Childs;\n };\n d.PolyNode.prototype.Parent = function () {\n return this.m_Parent;\n };\n d.PolyNode.prototype.IsHole = function () {\n return this.IsHoleNode();\n };\n d.PolyTree = function () {\n this.m_AllPolys = [];\n d.PolyNode.call(this);\n };\n d.PolyTree.prototype.Clear = function () {\n for (var a = 0, b = this.m_AllPolys.length; a < b; a++)\n this.m_AllPolys[a] = null;\n this.m_AllPolys.length = 0;\n this.m_Childs.length = 0;\n };\n d.PolyTree.prototype.GetFirst = function () {\n return 0 < this.m_Childs.length ? this.m_Childs[0] : null;\n };\n d.PolyTree.prototype.Total = function () {\n var a = this.m_AllPolys.length;\n 0 < a && this.m_Childs[0] !== this.m_AllPolys[0] && a--;\n return a;\n };\n v(d.PolyTree, d.PolyNode);\n d.Math_Abs_Int64 =\n d.Math_Abs_Int32 =\n d.Math_Abs_Double =\n function (a) {\n return Math.abs(a);\n };\n d.Math_Max_Int32_Int32 = function (a, b) {\n return Math.max(a, b);\n };\n d.Cast_Int32 =\n u || K || Q\n ? function (a) {\n return a | 0;\n }\n : function (a) {\n return ~~a;\n };\n \"undefined\" === typeof Number.toInteger && (Number.toInteger = null);\n d.Cast_Int64 = I\n ? function (a) {\n return -2147483648 > a || 2147483647 < a\n ? 0 > a\n ? Math.ceil(a)\n : Math.floor(a)\n : ~~a;\n }\n : J && \"function\" === typeof Number.toInteger\n ? function (a) {\n return Number.toInteger(a);\n }\n : V || L\n ? function (a) {\n return parseInt(a, 10);\n }\n : u\n ? function (a) {\n return -2147483648 > a || 2147483647 < a\n ? 0 > a\n ? Math.ceil(a)\n : Math.floor(a)\n : a | 0;\n }\n : function (a) {\n return 0 > a ? Math.ceil(a) : Math.floor(a);\n };\n d.Clear = function (a) {\n a.length = 0;\n };\n d.PI = 3.141592653589793;\n d.PI2 = 6.283185307179586;\n d.IntPoint = function () {\n var a = arguments;\n var b = a.length;\n this.Y = this.X = 0;\n d.use_xyz\n ? ((this.Z = 0),\n 3 === b\n ? ((this.X = a[0]), (this.Y = a[1]), (this.Z = a[2]))\n : 2 === b\n ? ((this.X = a[0]), (this.Y = a[1]), (this.Z = 0))\n : 1 === b\n ? a[0] instanceof d.DoublePoint\n ? ((a = a[0]),\n (this.X = d.Clipper.Round(a.X)),\n (this.Y = d.Clipper.Round(a.Y)),\n (this.Z = 0))\n : ((a = a[0]),\n \"undefined\" === typeof a.Z && (a.Z = 0),\n (this.X = a.X),\n (this.Y = a.Y),\n (this.Z = a.Z))\n : (this.Z = this.Y = this.X = 0))\n : 2 === b\n ? ((this.X = a[0]), (this.Y = a[1]))\n : 1 === b\n ? a[0] instanceof d.DoublePoint\n ? ((a = a[0]),\n (this.X = d.Clipper.Round(a.X)),\n (this.Y = d.Clipper.Round(a.Y)))\n : ((a = a[0]), (this.X = a.X), (this.Y = a.Y))\n : (this.Y = this.X = 0);\n };\n d.IntPoint.op_Equality = function (a, b) {\n return a.X === b.X && a.Y === b.Y;\n };\n d.IntPoint.op_Inequality = function (a, b) {\n return a.X !== b.X || a.Y !== b.Y;\n };\n d.IntPoint0 = function () {\n this.Y = this.X = 0;\n d.use_xyz && (this.Z = 0);\n };\n d.IntPoint0.prototype = d.IntPoint.prototype;\n d.IntPoint1 = function (a) {\n this.X = a.X;\n this.Y = a.Y;\n d.use_xyz && (this.Z = \"undefined\" === typeof a.Z ? 0 : a.Z);\n };\n d.IntPoint1.prototype = d.IntPoint.prototype;\n d.IntPoint1dp = function (a) {\n this.X = d.Clipper.Round(a.X);\n this.Y = d.Clipper.Round(a.Y);\n d.use_xyz && (this.Z = 0);\n };\n d.IntPoint1dp.prototype = d.IntPoint.prototype;\n d.IntPoint2 = function (a, b, c) {\n this.X = a;\n this.Y = b;\n d.use_xyz && (this.Z = \"undefined\" === typeof c ? 0 : c);\n };\n d.IntPoint2.prototype = d.IntPoint.prototype;\n d.IntRect = function () {\n var a = arguments,\n b = a.length;\n 4 === b\n ? ((this.left = a[0]),\n (this.top = a[1]),\n (this.right = a[2]),\n (this.bottom = a[3]))\n : 1 === b\n ? ((a = a[0]),\n (this.left = a.left),\n (this.top = a.top),\n (this.right = a.right),\n (this.bottom = a.bottom))\n : (this.bottom = this.right = this.top = this.left = 0);\n };\n d.IntRect0 = function () {\n this.bottom = this.right = this.top = this.left = 0;\n };\n d.IntRect0.prototype = d.IntRect.prototype;\n d.IntRect1 = function (a) {\n this.left = a.left;\n this.top = a.top;\n this.right = a.right;\n this.bottom = a.bottom;\n };\n d.IntRect1.prototype = d.IntRect.prototype;\n d.IntRect4 = function (a, b, c, e) {\n this.left = a;\n this.top = b;\n this.right = c;\n this.bottom = e;\n };\n d.IntRect4.prototype = d.IntRect.prototype;\n d.ClipType = { ctIntersection: 0, ctUnion: 1, ctDifference: 2, ctXor: 3 };\n d.PolyType = { ptSubject: 0, ptClip: 1 };\n d.PolyFillType = {\n pftEvenOdd: 0,\n pftNonZero: 1,\n pftPositive: 2,\n pftNegative: 3,\n };\n d.JoinType = { jtSquare: 0, jtRound: 1, jtMiter: 2 };\n d.EndType = {\n etOpenSquare: 0,\n etOpenRound: 1,\n etOpenButt: 2,\n etClosedLine: 3,\n etClosedPolygon: 4,\n };\n d.EdgeSide = { esLeft: 0, esRight: 1 };\n d.Direction = { dRightToLeft: 0, dLeftToRight: 1 };\n d.TEdge = function () {\n this.Bot = new d.IntPoint0();\n this.Curr = new d.IntPoint0();\n this.Top = new d.IntPoint0();\n this.Delta = new d.IntPoint0();\n this.Dx = 0;\n this.PolyTyp = d.PolyType.ptSubject;\n this.Side = d.EdgeSide.esLeft;\n this.OutIdx = this.WindCnt2 = this.WindCnt = this.WindDelta = 0;\n this.PrevInSEL =\n this.NextInSEL =\n this.PrevInAEL =\n this.NextInAEL =\n this.NextInLML =\n this.Prev =\n this.Next =\n null;\n };\n d.IntersectNode = function () {\n this.Edge2 = this.Edge1 = null;\n this.Pt = new d.IntPoint0();\n };\n d.MyIntersectNodeSort = function () {};\n d.MyIntersectNodeSort.Compare = function (a, b) {\n var c = b.Pt.Y - a.Pt.Y;\n return 0 < c ? 1 : 0 > c ? -1 : 0;\n };\n d.LocalMinima = function () {\n this.Y = 0;\n this.Next = this.RightBound = this.LeftBound = null;\n };\n d.Scanbeam = function () {\n this.Y = 0;\n this.Next = null;\n };\n d.Maxima = function () {\n this.X = 0;\n this.Prev = this.Next = null;\n };\n d.OutRec = function () {\n this.Idx = 0;\n this.IsOpen = this.IsHole = !1;\n this.PolyNode = this.BottomPt = this.Pts = this.FirstLeft = null;\n };\n d.OutPt = function () {\n this.Idx = 0;\n this.Pt = new d.IntPoint0();\n this.Prev = this.Next = null;\n };\n d.Join = function () {\n this.OutPt2 = this.OutPt1 = null;\n this.OffPt = new d.IntPoint0();\n };\n d.ClipperBase = function () {\n this.m_CurrentLM = this.m_MinimaList = null;\n this.m_edges = [];\n this.PreserveCollinear = this.m_HasOpenPaths = this.m_UseFullRange = !1;\n this.m_ActiveEdges = this.m_PolyOuts = this.m_Scanbeam = null;\n };\n d.ClipperBase.horizontal = -9007199254740992;\n d.ClipperBase.Skip = -2;\n d.ClipperBase.Unassigned = -1;\n d.ClipperBase.tolerance = 1e-20;\n d.ClipperBase.loRange = 47453132;\n d.ClipperBase.hiRange = 0xfffffffffffff;\n d.ClipperBase.near_zero = function (a) {\n return a > -d.ClipperBase.tolerance && a < d.ClipperBase.tolerance;\n };\n d.ClipperBase.IsHorizontal = function (a) {\n return 0 === a.Delta.Y;\n };\n d.ClipperBase.prototype.PointIsVertex = function (a, b) {\n var c = b;\n do {\n if (d.IntPoint.op_Equality(c.Pt, a)) return !0;\n c = c.Next;\n } while (c !== b);\n return !1;\n };\n d.ClipperBase.prototype.PointOnLineSegment = function (a, b, c, e) {\n return e\n ? (a.X === b.X && a.Y === b.Y) ||\n (a.X === c.X && a.Y === c.Y) ||\n (a.X > b.X === a.X < c.X &&\n a.Y > b.Y === a.Y < c.Y &&\n k.op_Equality(\n k.Int128Mul(a.X - b.X, c.Y - b.Y),\n k.Int128Mul(c.X - b.X, a.Y - b.Y)\n ))\n : (a.X === b.X && a.Y === b.Y) ||\n (a.X === c.X && a.Y === c.Y) ||\n (a.X > b.X === a.X < c.X &&\n a.Y > b.Y === a.Y < c.Y &&\n (a.X - b.X) * (c.Y - b.Y) === (c.X - b.X) * (a.Y - b.Y));\n };\n d.ClipperBase.prototype.PointOnPolygon = function (a, b, c) {\n for (var e = b; ; ) {\n if (this.PointOnLineSegment(a, e.Pt, e.Next.Pt, c)) return !0;\n e = e.Next;\n if (e === b) break;\n }\n return !1;\n };\n d.ClipperBase.prototype.SlopesEqual = d.ClipperBase.SlopesEqual =\n function () {\n var a = arguments,\n b = a.length;\n if (3 === b) {\n b = a[0];\n var c = a[1];\n return (a = a[2])\n ? k.op_Equality(\n k.Int128Mul(b.Delta.Y, c.Delta.X),\n k.Int128Mul(b.Delta.X, c.Delta.Y)\n )\n : d.Cast_Int64(b.Delta.Y * c.Delta.X) ===\n d.Cast_Int64(b.Delta.X * c.Delta.Y);\n }\n if (4 === b) {\n b = a[0];\n c = a[1];\n var e = a[2];\n return (a = a[3])\n ? k.op_Equality(\n k.Int128Mul(b.Y - c.Y, c.X - e.X),\n k.Int128Mul(b.X - c.X, c.Y - e.Y)\n )\n : 0 ===\n d.Cast_Int64((b.Y - c.Y) * (c.X - e.X)) -\n d.Cast_Int64((b.X - c.X) * (c.Y - e.Y));\n }\n b = a[0];\n c = a[1];\n e = a[2];\n var f = a[3];\n return (a = a[4])\n ? k.op_Equality(\n k.Int128Mul(b.Y - c.Y, e.X - f.X),\n k.Int128Mul(b.X - c.X, e.Y - f.Y)\n )\n : 0 ===\n d.Cast_Int64((b.Y - c.Y) * (e.X - f.X)) -\n d.Cast_Int64((b.X - c.X) * (e.Y - f.Y));\n };\n d.ClipperBase.SlopesEqual3 = function (a, b, c) {\n return c\n ? k.op_Equality(\n k.Int128Mul(a.Delta.Y, b.Delta.X),\n k.Int128Mul(a.Delta.X, b.Delta.Y)\n )\n : d.Cast_Int64(a.Delta.Y * b.Delta.X) ===\n d.Cast_Int64(a.Delta.X * b.Delta.Y);\n };\n d.ClipperBase.SlopesEqual4 = function (a, b, c, e) {\n return e\n ? k.op_Equality(\n k.Int128Mul(a.Y - b.Y, b.X - c.X),\n k.Int128Mul(a.X - b.X, b.Y - c.Y)\n )\n : 0 ===\n d.Cast_Int64((a.Y - b.Y) * (b.X - c.X)) -\n d.Cast_Int64((a.X - b.X) * (b.Y - c.Y));\n };\n d.ClipperBase.SlopesEqual5 = function (a, b, c, e, f) {\n return f\n ? k.op_Equality(\n k.Int128Mul(a.Y - b.Y, c.X - e.X),\n k.Int128Mul(a.X - b.X, c.Y - e.Y)\n )\n : 0 ===\n d.Cast_Int64((a.Y - b.Y) * (c.X - e.X)) -\n d.Cast_Int64((a.X - b.X) * (c.Y - e.Y));\n };\n d.ClipperBase.prototype.Clear = function () {\n this.DisposeLocalMinimaList();\n for (var a = 0, b = this.m_edges.length; a < b; ++a) {\n for (var c = 0, e = this.m_edges[a].length; c < e; ++c)\n this.m_edges[a][c] = null;\n d.Clear(this.m_edges[a]);\n }\n d.Clear(this.m_edges);\n this.m_HasOpenPaths = this.m_UseFullRange = !1;\n };\n d.ClipperBase.prototype.DisposeLocalMinimaList = function () {\n for (; null !== this.m_MinimaList; ) {\n var a = this.m_MinimaList.Next;\n this.m_MinimaList = null;\n this.m_MinimaList = a;\n }\n this.m_CurrentLM = null;\n };\n d.ClipperBase.prototype.RangeTest = function (a, b) {\n if (b.Value)\n (a.X > d.ClipperBase.hiRange ||\n a.Y > d.ClipperBase.hiRange ||\n -a.X > d.ClipperBase.hiRange ||\n -a.Y > d.ClipperBase.hiRange) &&\n d.Error(\"Coordinate outside allowed range in RangeTest().\");\n else if (\n a.X > d.ClipperBase.loRange ||\n a.Y > d.ClipperBase.loRange ||\n -a.X > d.ClipperBase.loRange ||\n -a.Y > d.ClipperBase.loRange\n )\n (b.Value = !0), this.RangeTest(a, b);\n };\n d.ClipperBase.prototype.InitEdge = function (a, b, c, e) {\n a.Next = b;\n a.Prev = c;\n a.Curr.X = e.X;\n a.Curr.Y = e.Y;\n d.use_xyz && (a.Curr.Z = e.Z);\n a.OutIdx = -1;\n };\n d.ClipperBase.prototype.InitEdge2 = function (a, b) {\n a.Curr.Y >= a.Next.Curr.Y\n ? ((a.Bot.X = a.Curr.X),\n (a.Bot.Y = a.Curr.Y),\n d.use_xyz && (a.Bot.Z = a.Curr.Z),\n (a.Top.X = a.Next.Curr.X),\n (a.Top.Y = a.Next.Curr.Y),\n d.use_xyz && (a.Top.Z = a.Next.Curr.Z))\n : ((a.Top.X = a.Curr.X),\n (a.Top.Y = a.Curr.Y),\n d.use_xyz && (a.Top.Z = a.Curr.Z),\n (a.Bot.X = a.Next.Curr.X),\n (a.Bot.Y = a.Next.Curr.Y),\n d.use_xyz && (a.Bot.Z = a.Next.Curr.Z));\n this.SetDx(a);\n a.PolyTyp = b;\n };\n d.ClipperBase.prototype.FindNextLocMin = function (a) {\n for (var b; ; ) {\n for (\n ;\n d.IntPoint.op_Inequality(a.Bot, a.Prev.Bot) ||\n d.IntPoint.op_Equality(a.Curr, a.Top);\n\n )\n a = a.Next;\n if (\n a.Dx !== d.ClipperBase.horizontal &&\n a.Prev.Dx !== d.ClipperBase.horizontal\n )\n break;\n for (; a.Prev.Dx === d.ClipperBase.horizontal; ) a = a.Prev;\n for (b = a; a.Dx === d.ClipperBase.horizontal; ) a = a.Next;\n if (a.Top.Y !== a.Prev.Bot.Y) {\n b.Prev.Bot.X < a.Bot.X && (a = b);\n break;\n }\n }\n return a;\n };\n d.ClipperBase.prototype.ProcessBound = function (a, b) {\n var c = a,\n e;\n if (c.OutIdx === d.ClipperBase.Skip) {\n a = c;\n if (b) {\n for (; a.Top.Y === a.Next.Bot.Y; ) a = a.Next;\n for (; a !== c && a.Dx === d.ClipperBase.horizontal; ) a = a.Prev;\n } else {\n for (; a.Top.Y === a.Prev.Bot.Y; ) a = a.Prev;\n for (; a !== c && a.Dx === d.ClipperBase.horizontal; ) a = a.Next;\n }\n if (a === c) c = b ? a.Next : a.Prev;\n else {\n a = b ? c.Next : c.Prev;\n var f = new d.LocalMinima();\n f.Next = null;\n f.Y = a.Bot.Y;\n f.LeftBound = null;\n f.RightBound = a;\n a.WindDelta = 0;\n c = this.ProcessBound(a, b);\n this.InsertLocalMinima(f);\n }\n return c;\n }\n a.Dx === d.ClipperBase.horizontal &&\n ((f = b ? a.Prev : a.Next),\n f.Dx === d.ClipperBase.horizontal\n ? f.Bot.X !== a.Bot.X &&\n f.Top.X !== a.Bot.X &&\n this.ReverseHorizontal(a)\n : f.Bot.X !== a.Bot.X && this.ReverseHorizontal(a));\n f = a;\n if (b) {\n for (; c.Top.Y === c.Next.Bot.Y && c.Next.OutIdx !== d.ClipperBase.Skip; )\n c = c.Next;\n if (\n c.Dx === d.ClipperBase.horizontal &&\n c.Next.OutIdx !== d.ClipperBase.Skip\n ) {\n for (e = c; e.Prev.Dx === d.ClipperBase.horizontal; ) e = e.Prev;\n e.Prev.Top.X > c.Next.Top.X && (c = e.Prev);\n }\n for (; a !== c; )\n (a.NextInLML = a.Next),\n a.Dx === d.ClipperBase.horizontal &&\n a !== f &&\n a.Bot.X !== a.Prev.Top.X &&\n this.ReverseHorizontal(a),\n (a = a.Next);\n a.Dx === d.ClipperBase.horizontal &&\n a !== f &&\n a.Bot.X !== a.Prev.Top.X &&\n this.ReverseHorizontal(a);\n c = c.Next;\n } else {\n for (; c.Top.Y === c.Prev.Bot.Y && c.Prev.OutIdx !== d.ClipperBase.Skip; )\n c = c.Prev;\n if (\n c.Dx === d.ClipperBase.horizontal &&\n c.Prev.OutIdx !== d.ClipperBase.Skip\n ) {\n for (e = c; e.Next.Dx === d.ClipperBase.horizontal; ) e = e.Next;\n if (e.Next.Top.X === c.Prev.Top.X || e.Next.Top.X > c.Prev.Top.X)\n c = e.Next;\n }\n for (; a !== c; )\n (a.NextInLML = a.Prev),\n a.Dx === d.ClipperBase.horizontal &&\n a !== f &&\n a.Bot.X !== a.Next.Top.X &&\n this.ReverseHorizontal(a),\n (a = a.Prev);\n a.Dx === d.ClipperBase.horizontal &&\n a !== f &&\n a.Bot.X !== a.Next.Top.X &&\n this.ReverseHorizontal(a);\n c = c.Prev;\n }\n return c;\n };\n d.ClipperBase.prototype.AddPath = function (a, b, c) {\n d.use_lines\n ? c ||\n b !== d.PolyType.ptClip ||\n d.Error(\"AddPath: Open paths must be subject.\")\n : c || d.Error(\"AddPath: Open paths have been disabled.\");\n var e = a.length - 1;\n if (c) for (; 0 < e && d.IntPoint.op_Equality(a[e], a[0]); ) --e;\n for (; 0 < e && d.IntPoint.op_Equality(a[e], a[e - 1]); ) --e;\n if ((c && 2 > e) || (!c && 1 > e)) return !1;\n for (var f = [], g = 0; g <= e; g++) f.push(new d.TEdge());\n var h = !0;\n f[1].Curr.X = a[1].X;\n f[1].Curr.Y = a[1].Y;\n d.use_xyz && (f[1].Curr.Z = a[1].Z);\n var m = { Value: this.m_UseFullRange };\n this.RangeTest(a[0], m);\n this.m_UseFullRange = m.Value;\n m.Value = this.m_UseFullRange;\n this.RangeTest(a[e], m);\n this.m_UseFullRange = m.Value;\n this.InitEdge(f[0], f[1], f[e], a[0]);\n this.InitEdge(f[e], f[0], f[e - 1], a[e]);\n for (g = e - 1; 1 <= g; --g)\n (m.Value = this.m_UseFullRange),\n this.RangeTest(a[g], m),\n (this.m_UseFullRange = m.Value),\n this.InitEdge(f[g], f[g + 1], f[g - 1], a[g]);\n for (g = a = e = f[0]; ; )\n if (a.Curr !== a.Next.Curr || (!c && a.Next === e)) {\n if (a.Prev === a.Next) break;\n else if (\n c &&\n d.ClipperBase.SlopesEqual4(\n a.Prev.Curr,\n a.Curr,\n a.Next.Curr,\n this.m_UseFullRange\n ) &&\n (!this.PreserveCollinear ||\n !this.Pt2IsBetweenPt1AndPt3(a.Prev.Curr, a.Curr, a.Next.Curr))\n ) {\n a === e && (e = a.Next);\n a = this.RemoveEdge(a);\n g = a = a.Prev;\n continue;\n }\n a = a.Next;\n if (a === g || (!c && a.Next === e)) break;\n } else {\n if (a === a.Next) break;\n a === e && (e = a.Next);\n g = a = this.RemoveEdge(a);\n }\n if ((!c && a === a.Next) || (c && a.Prev === a.Next)) return !1;\n c || ((this.m_HasOpenPaths = !0), (e.Prev.OutIdx = d.ClipperBase.Skip));\n a = e;\n do\n this.InitEdge2(a, b),\n (a = a.Next),\n h && a.Curr.Y !== e.Curr.Y && (h = !1);\n while (a !== e);\n if (h) {\n if (c) return !1;\n a.Prev.OutIdx = d.ClipperBase.Skip;\n b = new d.LocalMinima();\n b.Next = null;\n b.Y = a.Bot.Y;\n b.LeftBound = null;\n b.RightBound = a;\n b.RightBound.Side = d.EdgeSide.esRight;\n for (b.RightBound.WindDelta = 0; ; ) {\n a.Bot.X !== a.Prev.Top.X && this.ReverseHorizontal(a);\n if (a.Next.OutIdx === d.ClipperBase.Skip) break;\n a = a.NextInLML = a.Next;\n }\n this.InsertLocalMinima(b);\n this.m_edges.push(f);\n return !0;\n }\n this.m_edges.push(f);\n h = null;\n d.IntPoint.op_Equality(a.Prev.Bot, a.Prev.Top) && (a = a.Next);\n for (;;) {\n a = this.FindNextLocMin(a);\n if (a === h) break;\n else null === h && (h = a);\n b = new d.LocalMinima();\n b.Next = null;\n b.Y = a.Bot.Y;\n a.Dx < a.Prev.Dx\n ? ((b.LeftBound = a.Prev), (b.RightBound = a), (f = !1))\n : ((b.LeftBound = a), (b.RightBound = a.Prev), (f = !0));\n b.LeftBound.Side = d.EdgeSide.esLeft;\n b.RightBound.Side = d.EdgeSide.esRight;\n b.LeftBound.WindDelta = c\n ? b.LeftBound.Next === b.RightBound\n ? -1\n : 1\n : 0;\n b.RightBound.WindDelta = -b.LeftBound.WindDelta;\n a = this.ProcessBound(b.LeftBound, f);\n a.OutIdx === d.ClipperBase.Skip && (a = this.ProcessBound(a, f));\n e = this.ProcessBound(b.RightBound, !f);\n e.OutIdx === d.ClipperBase.Skip && (e = this.ProcessBound(e, !f));\n b.LeftBound.OutIdx === d.ClipperBase.Skip\n ? (b.LeftBound = null)\n : b.RightBound.OutIdx === d.ClipperBase.Skip && (b.RightBound = null);\n this.InsertLocalMinima(b);\n f || (a = e);\n }\n return !0;\n };\n d.ClipperBase.prototype.AddPaths = function (a, b, c) {\n for (var e = !1, d = 0, g = a.length; d < g; ++d)\n this.AddPath(a[d], b, c) && (e = !0);\n return e;\n };\n d.ClipperBase.prototype.Pt2IsBetweenPt1AndPt3 = function (a, b, c) {\n return d.IntPoint.op_Equality(a, c) ||\n d.IntPoint.op_Equality(a, b) ||\n d.IntPoint.op_Equality(c, b)\n ? !1\n : a.X !== c.X\n ? b.X > a.X === b.X < c.X\n : b.Y > a.Y === b.Y < c.Y;\n };\n d.ClipperBase.prototype.RemoveEdge = function (a) {\n a.Prev.Next = a.Next;\n a.Next.Prev = a.Prev;\n var b = a.Next;\n a.Prev = null;\n return b;\n };\n d.ClipperBase.prototype.SetDx = function (a) {\n a.Delta.X = a.Top.X - a.Bot.X;\n a.Delta.Y = a.Top.Y - a.Bot.Y;\n a.Dx = 0 === a.Delta.Y ? d.ClipperBase.horizontal : a.Delta.X / a.Delta.Y;\n };\n d.ClipperBase.prototype.InsertLocalMinima = function (a) {\n if (null === this.m_MinimaList) this.m_MinimaList = a;\n else if (a.Y >= this.m_MinimaList.Y)\n (a.Next = this.m_MinimaList), (this.m_MinimaList = a);\n else {\n for (var b = this.m_MinimaList; null !== b.Next && a.Y < b.Next.Y; )\n b = b.Next;\n a.Next = b.Next;\n b.Next = a;\n }\n };\n d.ClipperBase.prototype.PopLocalMinima = function (a, b) {\n b.v = this.m_CurrentLM;\n return null !== this.m_CurrentLM && this.m_CurrentLM.Y === a\n ? ((this.m_CurrentLM = this.m_CurrentLM.Next), !0)\n : !1;\n };\n d.ClipperBase.prototype.ReverseHorizontal = function (a) {\n var b = a.Top.X;\n a.Top.X = a.Bot.X;\n a.Bot.X = b;\n d.use_xyz && ((b = a.Top.Z), (a.Top.Z = a.Bot.Z), (a.Bot.Z = b));\n };\n d.ClipperBase.prototype.Reset = function () {\n this.m_CurrentLM = this.m_MinimaList;\n if (null !== this.m_CurrentLM) {\n this.m_Scanbeam = null;\n for (var a = this.m_MinimaList; null !== a; ) {\n this.InsertScanbeam(a.Y);\n var b = a.LeftBound;\n null !== b &&\n ((b.Curr.X = b.Bot.X),\n (b.Curr.Y = b.Bot.Y),\n d.use_xyz && (b.Curr.Z = b.Bot.Z),\n (b.OutIdx = d.ClipperBase.Unassigned));\n b = a.RightBound;\n null !== b &&\n ((b.Curr.X = b.Bot.X),\n (b.Curr.Y = b.Bot.Y),\n d.use_xyz && (b.Curr.Z = b.Bot.Z),\n (b.OutIdx = d.ClipperBase.Unassigned));\n a = a.Next;\n }\n this.m_ActiveEdges = null;\n }\n };\n d.ClipperBase.prototype.InsertScanbeam = function (a) {\n if (null === this.m_Scanbeam)\n (this.m_Scanbeam = new d.Scanbeam()),\n (this.m_Scanbeam.Next = null),\n (this.m_Scanbeam.Y = a);\n else if (a > this.m_Scanbeam.Y) {\n var b = new d.Scanbeam();\n b.Y = a;\n b.Next = this.m_Scanbeam;\n this.m_Scanbeam = b;\n } else {\n for (b = this.m_Scanbeam; null !== b.Next && a <= b.Next.Y; ) b = b.Next;\n if (a !== b.Y) {\n var c = new d.Scanbeam();\n c.Y = a;\n c.Next = b.Next;\n b.Next = c;\n }\n }\n };\n d.ClipperBase.prototype.PopScanbeam = function (a) {\n if (null === this.m_Scanbeam) return (a.v = 0), !1;\n a.v = this.m_Scanbeam.Y;\n this.m_Scanbeam = this.m_Scanbeam.Next;\n return !0;\n };\n d.ClipperBase.prototype.LocalMinimaPending = function () {\n return null !== this.m_CurrentLM;\n };\n d.ClipperBase.prototype.CreateOutRec = function () {\n var a = new d.OutRec();\n a.Idx = d.ClipperBase.Unassigned;\n a.IsHole = !1;\n a.IsOpen = !1;\n a.FirstLeft = null;\n a.Pts = null;\n a.BottomPt = null;\n a.PolyNode = null;\n this.m_PolyOuts.push(a);\n a.Idx = this.m_PolyOuts.length - 1;\n return a;\n };\n d.ClipperBase.prototype.DisposeOutRec = function (a) {\n this.m_PolyOuts[a].Pts = null;\n this.m_PolyOuts[a] = null;\n };\n d.ClipperBase.prototype.UpdateEdgeIntoAEL = function (a) {\n null === a.NextInLML && d.Error(\"UpdateEdgeIntoAEL: invalid call\");\n var b = a.PrevInAEL,\n c = a.NextInAEL;\n a.NextInLML.OutIdx = a.OutIdx;\n null !== b\n ? (b.NextInAEL = a.NextInLML)\n : (this.m_ActiveEdges = a.NextInLML);\n null !== c && (c.PrevInAEL = a.NextInLML);\n a.NextInLML.Side = a.Side;\n a.NextInLML.WindDelta = a.WindDelta;\n a.NextInLML.WindCnt = a.WindCnt;\n a.NextInLML.WindCnt2 = a.WindCnt2;\n a = a.NextInLML;\n a.Curr.X = a.Bot.X;\n a.Curr.Y = a.Bot.Y;\n a.PrevInAEL = b;\n a.NextInAEL = c;\n d.ClipperBase.IsHorizontal(a) || this.InsertScanbeam(a.Top.Y);\n return a;\n };\n d.ClipperBase.prototype.SwapPositionsInAEL = function (a, b) {\n if (a.NextInAEL !== a.PrevInAEL && b.NextInAEL !== b.PrevInAEL) {\n if (a.NextInAEL === b) {\n var c = b.NextInAEL;\n null !== c && (c.PrevInAEL = a);\n var e = a.PrevInAEL;\n null !== e && (e.NextInAEL = b);\n b.PrevInAEL = e;\n b.NextInAEL = a;\n a.PrevInAEL = b;\n a.NextInAEL = c;\n } else\n b.NextInAEL === a\n ? ((c = a.NextInAEL),\n null !== c && (c.PrevInAEL = b),\n (e = b.PrevInAEL),\n null !== e && (e.NextInAEL = a),\n (a.PrevInAEL = e),\n (a.NextInAEL = b),\n (b.PrevInAEL = a),\n (b.NextInAEL = c))\n : ((c = a.NextInAEL),\n (e = a.PrevInAEL),\n (a.NextInAEL = b.NextInAEL),\n null !== a.NextInAEL && (a.NextInAEL.PrevInAEL = a),\n (a.PrevInAEL = b.PrevInAEL),\n null !== a.PrevInAEL && (a.PrevInAEL.NextInAEL = a),\n (b.NextInAEL = c),\n null !== b.NextInAEL && (b.NextInAEL.PrevInAEL = b),\n (b.PrevInAEL = e),\n null !== b.PrevInAEL && (b.PrevInAEL.NextInAEL = b));\n null === a.PrevInAEL\n ? (this.m_ActiveEdges = a)\n : null === b.PrevInAEL && (this.m_ActiveEdges = b);\n }\n };\n d.ClipperBase.prototype.DeleteFromAEL = function (a) {\n var b = a.PrevInAEL,\n c = a.NextInAEL;\n if (null !== b || null !== c || a === this.m_ActiveEdges)\n null !== b ? (b.NextInAEL = c) : (this.m_ActiveEdges = c),\n null !== c && (c.PrevInAEL = b),\n (a.NextInAEL = null),\n (a.PrevInAEL = null);\n };\n d.Clipper = function (a) {\n \"undefined\" === typeof a && (a = 0);\n this.m_PolyOuts = null;\n this.m_ClipType = d.ClipType.ctIntersection;\n this.m_IntersectNodeComparer =\n this.m_IntersectList =\n this.m_SortedEdges =\n this.m_ActiveEdges =\n this.m_Maxima =\n this.m_Scanbeam =\n null;\n this.m_ExecuteLocked = !1;\n this.m_SubjFillType = this.m_ClipFillType = d.PolyFillType.pftEvenOdd;\n this.m_GhostJoins = this.m_Joins = null;\n this.StrictlySimple = this.ReverseSolution = this.m_UsingPolyTree = !1;\n d.ClipperBase.call(this);\n this.m_SortedEdges =\n this.m_ActiveEdges =\n this.m_Maxima =\n this.m_Scanbeam =\n null;\n this.m_IntersectList = [];\n this.m_IntersectNodeComparer = d.MyIntersectNodeSort.Compare;\n this.m_UsingPolyTree = this.m_ExecuteLocked = !1;\n this.m_PolyOuts = [];\n this.m_Joins = [];\n this.m_GhostJoins = [];\n this.ReverseSolution = 0 !== (1 & a);\n this.StrictlySimple = 0 !== (2 & a);\n this.PreserveCollinear = 0 !== (4 & a);\n d.use_xyz && (this.ZFillFunction = null);\n };\n d.Clipper.ioReverseSolution = 1;\n d.Clipper.ioStrictlySimple = 2;\n d.Clipper.ioPreserveCollinear = 4;\n d.Clipper.prototype.Clear = function () {\n 0 !== this.m_edges.length &&\n (this.DisposeAllPolyPts(), d.ClipperBase.prototype.Clear.call(this));\n };\n d.Clipper.prototype.InsertMaxima = function (a) {\n var b = new d.Maxima();\n b.X = a;\n if (null === this.m_Maxima)\n (this.m_Maxima = b),\n (this.m_Maxima.Next = null),\n (this.m_Maxima.Prev = null);\n else if (a < this.m_Maxima.X)\n (b.Next = this.m_Maxima), (b.Prev = null), (this.m_Maxima = b);\n else {\n for (var c = this.m_Maxima; null !== c.Next && a >= c.Next.X; )\n c = c.Next;\n a !== c.X &&\n ((b.Next = c.Next),\n (b.Prev = c),\n null !== c.Next && (c.Next.Prev = b),\n (c.Next = b));\n }\n };\n d.Clipper.prototype.Execute = function () {\n var a;\n var b = arguments;\n var c = b.length;\n var e = b[1] instanceof d.PolyTree;\n if (4 !== c || e) {\n if (4 === c && e) {\n c = b[0];\n var f = b[1];\n e = b[2];\n b = b[3];\n if (this.m_ExecuteLocked) return !1;\n this.m_ExecuteLocked = !0;\n this.m_SubjFillType = e;\n this.m_ClipFillType = b;\n this.m_ClipType = c;\n this.m_UsingPolyTree = !0;\n try {\n (a = this.ExecuteInternal()) && this.BuildResult2(f);\n } finally {\n this.DisposeAllPolyPts(), (this.m_ExecuteLocked = !1);\n }\n return a;\n }\n if ((2 === c && !e) || (2 === c && e))\n return (\n (c = b[0]),\n (f = b[1]),\n this.Execute(\n c,\n f,\n d.PolyFillType.pftEvenOdd,\n d.PolyFillType.pftEvenOdd\n )\n );\n } else {\n c = b[0];\n f = b[1];\n e = b[2];\n b = b[3];\n if (this.m_ExecuteLocked) return !1;\n this.m_HasOpenPaths &&\n d.Error(\"Error: PolyTree struct is needed for open path clipping.\");\n this.m_ExecuteLocked = !0;\n d.Clear(f);\n this.m_SubjFillType = e;\n this.m_ClipFillType = b;\n this.m_ClipType = c;\n this.m_UsingPolyTree = !1;\n try {\n (a = this.ExecuteInternal()) && this.BuildResult(f);\n } finally {\n this.DisposeAllPolyPts(), (this.m_ExecuteLocked = !1);\n }\n return a;\n }\n };\n d.Clipper.prototype.FixHoleLinkage = function (a) {\n if (\n null !== a.FirstLeft &&\n (a.IsHole === a.FirstLeft.IsHole || null === a.FirstLeft.Pts)\n ) {\n for (\n var b = a.FirstLeft;\n null !== b && (b.IsHole === a.IsHole || null === b.Pts);\n\n )\n b = b.FirstLeft;\n a.FirstLeft = b;\n }\n };\n d.Clipper.prototype.ExecuteInternal = function () {\n try {\n this.Reset();\n this.m_Maxima = this.m_SortedEdges = null;\n var a = {},\n b = {};\n if (!this.PopScanbeam(a)) return !1;\n for (\n this.InsertLocalMinimaIntoAEL(a.v);\n this.PopScanbeam(b) || this.LocalMinimaPending();\n\n ) {\n this.ProcessHorizontals();\n this.m_GhostJoins.length = 0;\n if (!this.ProcessIntersections(b.v)) return !1;\n this.ProcessEdgesAtTopOfScanbeam(b.v);\n a.v = b.v;\n this.InsertLocalMinimaIntoAEL(a.v);\n }\n var c;\n var e = 0;\n for (c = this.m_PolyOuts.length; e < c; e++) {\n var d = this.m_PolyOuts[e];\n null === d.Pts ||\n d.IsOpen ||\n ((d.IsHole ^ this.ReverseSolution) == 0 < this.Area$1(d) &&\n this.ReversePolyPtLinks(d.Pts));\n }\n this.JoinCommonEdges();\n e = 0;\n for (c = this.m_PolyOuts.length; e < c; e++)\n (d = this.m_PolyOuts[e]),\n null !== d.Pts &&\n (d.IsOpen ? this.FixupOutPolyline(d) : this.FixupOutPolygon(d));\n this.StrictlySimple && this.DoSimplePolygons();\n return !0;\n } finally {\n (this.m_Joins.length = 0), (this.m_GhostJoins.length = 0);\n }\n };\n d.Clipper.prototype.DisposeAllPolyPts = function () {\n for (var a = 0, b = this.m_PolyOuts.length; a < b; ++a)\n this.DisposeOutRec(a);\n d.Clear(this.m_PolyOuts);\n };\n d.Clipper.prototype.AddJoin = function (a, b, c) {\n var e = new d.Join();\n e.OutPt1 = a;\n e.OutPt2 = b;\n e.OffPt.X = c.X;\n e.OffPt.Y = c.Y;\n d.use_xyz && (e.OffPt.Z = c.Z);\n this.m_Joins.push(e);\n };\n d.Clipper.prototype.AddGhostJoin = function (a, b) {\n var c = new d.Join();\n c.OutPt1 = a;\n c.OffPt.X = b.X;\n c.OffPt.Y = b.Y;\n d.use_xyz && (c.OffPt.Z = b.Z);\n this.m_GhostJoins.push(c);\n };\n d.Clipper.prototype.SetZ = function (a, b, c) {\n null !== this.ZFillFunction &&\n 0 === a.Z &&\n null !== this.ZFillFunction &&\n (d.IntPoint.op_Equality(a, b.Bot)\n ? (a.Z = b.Bot.Z)\n : d.IntPoint.op_Equality(a, b.Top)\n ? (a.Z = b.Top.Z)\n : d.IntPoint.op_Equality(a, c.Bot)\n ? (a.Z = c.Bot.Z)\n : d.IntPoint.op_Equality(a, c.Top)\n ? (a.Z = c.Top.Z)\n : this.ZFillFunction(b.Bot, b.Top, c.Bot, c.Top, a));\n };\n d.Clipper.prototype.InsertLocalMinimaIntoAEL = function (a) {\n for (var b, c = {}, e, f; this.PopLocalMinima(a, c); ) {\n e = c.v.LeftBound;\n f = c.v.RightBound;\n var g = null;\n null === e\n ? (this.InsertEdgeIntoAEL(f, null),\n this.SetWindingCount(f),\n this.IsContributing(f) && (g = this.AddOutPt(f, f.Bot)))\n : (null === f\n ? (this.InsertEdgeIntoAEL(e, null),\n this.SetWindingCount(e),\n this.IsContributing(e) && (g = this.AddOutPt(e, e.Bot)))\n : (this.InsertEdgeIntoAEL(e, null),\n this.InsertEdgeIntoAEL(f, e),\n this.SetWindingCount(e),\n (f.WindCnt = e.WindCnt),\n (f.WindCnt2 = e.WindCnt2),\n this.IsContributing(e) &&\n (g = this.AddLocalMinPoly(e, f, e.Bot))),\n this.InsertScanbeam(e.Top.Y));\n null !== f &&\n (d.ClipperBase.IsHorizontal(f)\n ? (null !== f.NextInLML && this.InsertScanbeam(f.NextInLML.Top.Y),\n this.AddEdgeToSEL(f))\n : this.InsertScanbeam(f.Top.Y));\n if (null !== e && null !== f) {\n if (\n null !== g &&\n d.ClipperBase.IsHorizontal(f) &&\n 0 < this.m_GhostJoins.length &&\n 0 !== f.WindDelta\n ) {\n b = 0;\n for (var h = this.m_GhostJoins.length; b < h; b++) {\n var m = this.m_GhostJoins[b];\n this.HorzSegmentsOverlap(\n m.OutPt1.Pt.X,\n m.OffPt.X,\n f.Bot.X,\n f.Top.X\n ) && this.AddJoin(m.OutPt1, g, m.OffPt);\n }\n }\n 0 <= e.OutIdx &&\n null !== e.PrevInAEL &&\n e.PrevInAEL.Curr.X === e.Bot.X &&\n 0 <= e.PrevInAEL.OutIdx &&\n d.ClipperBase.SlopesEqual5(\n e.PrevInAEL.Curr,\n e.PrevInAEL.Top,\n e.Curr,\n e.Top,\n this.m_UseFullRange\n ) &&\n 0 !== e.WindDelta &&\n 0 !== e.PrevInAEL.WindDelta &&\n ((b = this.AddOutPt(e.PrevInAEL, e.Bot)), this.AddJoin(g, b, e.Top));\n if (\n e.NextInAEL !== f &&\n (0 <= f.OutIdx &&\n 0 <= f.PrevInAEL.OutIdx &&\n d.ClipperBase.SlopesEqual5(\n f.PrevInAEL.Curr,\n f.PrevInAEL.Top,\n f.Curr,\n f.Top,\n this.m_UseFullRange\n ) &&\n 0 !== f.WindDelta &&\n 0 !== f.PrevInAEL.WindDelta &&\n ((b = this.AddOutPt(f.PrevInAEL, f.Bot)),\n this.AddJoin(g, b, f.Top)),\n (g = e.NextInAEL),\n null !== g)\n )\n for (; g !== f; )\n this.IntersectEdges(f, g, e.Curr), (g = g.NextInAEL);\n }\n }\n };\n d.Clipper.prototype.InsertEdgeIntoAEL = function (a, b) {\n if (null === this.m_ActiveEdges)\n (a.PrevInAEL = null), (a.NextInAEL = null), (this.m_ActiveEdges = a);\n else if (null === b && this.E2InsertsBeforeE1(this.m_ActiveEdges, a))\n (a.PrevInAEL = null),\n (a.NextInAEL = this.m_ActiveEdges),\n (this.m_ActiveEdges = this.m_ActiveEdges.PrevInAEL = a);\n else {\n null === b && (b = this.m_ActiveEdges);\n for (; null !== b.NextInAEL && !this.E2InsertsBeforeE1(b.NextInAEL, a); )\n b = b.NextInAEL;\n a.NextInAEL = b.NextInAEL;\n null !== b.NextInAEL && (b.NextInAEL.PrevInAEL = a);\n a.PrevInAEL = b;\n b.NextInAEL = a;\n }\n };\n d.Clipper.prototype.E2InsertsBeforeE1 = function (a, b) {\n return b.Curr.X === a.Curr.X\n ? b.Top.Y > a.Top.Y\n ? b.Top.X < d.Clipper.TopX(a, b.Top.Y)\n : a.Top.X > d.Clipper.TopX(b, a.Top.Y)\n : b.Curr.X < a.Curr.X;\n };\n d.Clipper.prototype.IsEvenOddFillType = function (a) {\n return a.PolyTyp === d.PolyType.ptSubject\n ? this.m_SubjFillType === d.PolyFillType.pftEvenOdd\n : this.m_ClipFillType === d.PolyFillType.pftEvenOdd;\n };\n d.Clipper.prototype.IsEvenOddAltFillType = function (a) {\n return a.PolyTyp === d.PolyType.ptSubject\n ? this.m_ClipFillType === d.PolyFillType.pftEvenOdd\n : this.m_SubjFillType === d.PolyFillType.pftEvenOdd;\n };\n d.Clipper.prototype.IsContributing = function (a) {\n if (a.PolyTyp === d.PolyType.ptSubject) {\n var b = this.m_SubjFillType;\n var c = this.m_ClipFillType;\n } else (b = this.m_ClipFillType), (c = this.m_SubjFillType);\n switch (b) {\n case d.PolyFillType.pftEvenOdd:\n if (0 === a.WindDelta && 1 !== a.WindCnt) return !1;\n break;\n case d.PolyFillType.pftNonZero:\n if (1 !== Math.abs(a.WindCnt)) return !1;\n break;\n case d.PolyFillType.pftPositive:\n if (1 !== a.WindCnt) return !1;\n break;\n default:\n if (-1 !== a.WindCnt) return !1;\n }\n switch (this.m_ClipType) {\n case d.ClipType.ctIntersection:\n switch (c) {\n case d.PolyFillType.pftEvenOdd:\n case d.PolyFillType.pftNonZero:\n return 0 !== a.WindCnt2;\n case d.PolyFillType.pftPositive:\n return 0 < a.WindCnt2;\n default:\n return 0 > a.WindCnt2;\n }\n case d.ClipType.ctUnion:\n switch (c) {\n case d.PolyFillType.pftEvenOdd:\n case d.PolyFillType.pftNonZero:\n return 0 === a.WindCnt2;\n case d.PolyFillType.pftPositive:\n return 0 >= a.WindCnt2;\n default:\n return 0 <= a.WindCnt2;\n }\n case d.ClipType.ctDifference:\n if (a.PolyTyp === d.PolyType.ptSubject)\n switch (c) {\n case d.PolyFillType.pftEvenOdd:\n case d.PolyFillType.pftNonZero:\n return 0 === a.WindCnt2;\n case d.PolyFillType.pftPositive:\n return 0 >= a.WindCnt2;\n default:\n return 0 <= a.WindCnt2;\n }\n else\n switch (c) {\n case d.PolyFillType.pftEvenOdd:\n case d.PolyFillType.pftNonZero:\n return 0 !== a.WindCnt2;\n case d.PolyFillType.pftPositive:\n return 0 < a.WindCnt2;\n default:\n return 0 > a.WindCnt2;\n }\n case d.ClipType.ctXor:\n if (0 === a.WindDelta)\n switch (c) {\n case d.PolyFillType.pftEvenOdd:\n case d.PolyFillType.pftNonZero:\n return 0 === a.WindCnt2;\n case d.PolyFillType.pftPositive:\n return 0 >= a.WindCnt2;\n default:\n return 0 <= a.WindCnt2;\n }\n }\n return !0;\n };\n d.Clipper.prototype.SetWindingCount = function (a) {\n for (\n var b = a.PrevInAEL;\n null !== b && (b.PolyTyp !== a.PolyTyp || 0 === b.WindDelta);\n\n )\n b = b.PrevInAEL;\n if (null === b)\n (b =\n a.PolyTyp === d.PolyType.ptSubject\n ? this.m_SubjFillType\n : this.m_ClipFillType),\n (a.WindCnt =\n 0 === a.WindDelta\n ? b === d.PolyFillType.pftNegative\n ? -1\n : 1\n : a.WindDelta),\n (a.WindCnt2 = 0),\n (b = this.m_ActiveEdges);\n else {\n if (0 === a.WindDelta && this.m_ClipType !== d.ClipType.ctUnion)\n a.WindCnt = 1;\n else if (this.IsEvenOddFillType(a))\n if (0 === a.WindDelta) {\n for (var c = !0, e = b.PrevInAEL; null !== e; )\n e.PolyTyp === b.PolyTyp && 0 !== e.WindDelta && (c = !c),\n (e = e.PrevInAEL);\n a.WindCnt = c ? 0 : 1;\n } else a.WindCnt = a.WindDelta;\n else\n a.WindCnt =\n 0 > b.WindCnt * b.WindDelta\n ? 1 < Math.abs(b.WindCnt)\n ? 0 > b.WindDelta * a.WindDelta\n ? b.WindCnt\n : b.WindCnt + a.WindDelta\n : 0 === a.WindDelta\n ? 1\n : a.WindDelta\n : 0 === a.WindDelta\n ? 0 > b.WindCnt\n ? b.WindCnt - 1\n : b.WindCnt + 1\n : 0 > b.WindDelta * a.WindDelta\n ? b.WindCnt\n : b.WindCnt + a.WindDelta;\n a.WindCnt2 = b.WindCnt2;\n b = b.NextInAEL;\n }\n if (this.IsEvenOddAltFillType(a))\n for (; b !== a; )\n 0 !== b.WindDelta && (a.WindCnt2 = 0 === a.WindCnt2 ? 1 : 0),\n (b = b.NextInAEL);\n else for (; b !== a; ) (a.WindCnt2 += b.WindDelta), (b = b.NextInAEL);\n };\n d.Clipper.prototype.AddEdgeToSEL = function (a) {\n null === this.m_SortedEdges\n ? ((this.m_SortedEdges = a), (a.PrevInSEL = null), (a.NextInSEL = null))\n : ((a.NextInSEL = this.m_SortedEdges),\n (a.PrevInSEL = null),\n (this.m_SortedEdges = this.m_SortedEdges.PrevInSEL = a));\n };\n d.Clipper.prototype.PopEdgeFromSEL = function (a) {\n a.v = this.m_SortedEdges;\n if (null === a.v) return !1;\n var b = a.v;\n this.m_SortedEdges = a.v.NextInSEL;\n null !== this.m_SortedEdges && (this.m_SortedEdges.PrevInSEL = null);\n b.NextInSEL = null;\n b.PrevInSEL = null;\n return !0;\n };\n d.Clipper.prototype.CopyAELToSEL = function () {\n var a = this.m_ActiveEdges;\n for (this.m_SortedEdges = a; null !== a; )\n (a.PrevInSEL = a.PrevInAEL), (a = a.NextInSEL = a.NextInAEL);\n };\n d.Clipper.prototype.SwapPositionsInSEL = function (a, b) {\n if (null !== a.NextInSEL || null !== a.PrevInSEL)\n if (null !== b.NextInSEL || null !== b.PrevInSEL) {\n if (a.NextInSEL === b) {\n var c = b.NextInSEL;\n null !== c && (c.PrevInSEL = a);\n var e = a.PrevInSEL;\n null !== e && (e.NextInSEL = b);\n b.PrevInSEL = e;\n b.NextInSEL = a;\n a.PrevInSEL = b;\n a.NextInSEL = c;\n } else\n b.NextInSEL === a\n ? ((c = a.NextInSEL),\n null !== c && (c.PrevInSEL = b),\n (e = b.PrevInSEL),\n null !== e && (e.NextInSEL = a),\n (a.PrevInSEL = e),\n (a.NextInSEL = b),\n (b.PrevInSEL = a),\n (b.NextInSEL = c))\n : ((c = a.NextInSEL),\n (e = a.PrevInSEL),\n (a.NextInSEL = b.NextInSEL),\n null !== a.NextInSEL && (a.NextInSEL.PrevInSEL = a),\n (a.PrevInSEL = b.PrevInSEL),\n null !== a.PrevInSEL && (a.PrevInSEL.NextInSEL = a),\n (b.NextInSEL = c),\n null !== b.NextInSEL && (b.NextInSEL.PrevInSEL = b),\n (b.PrevInSEL = e),\n null !== b.PrevInSEL && (b.PrevInSEL.NextInSEL = b));\n null === a.PrevInSEL\n ? (this.m_SortedEdges = a)\n : null === b.PrevInSEL && (this.m_SortedEdges = b);\n }\n };\n d.Clipper.prototype.AddLocalMaxPoly = function (a, b, c) {\n this.AddOutPt(a, c);\n 0 === b.WindDelta && this.AddOutPt(b, c);\n a.OutIdx === b.OutIdx\n ? ((a.OutIdx = -1), (b.OutIdx = -1))\n : a.OutIdx < b.OutIdx\n ? this.AppendPolygon(a, b)\n : this.AppendPolygon(b, a);\n };\n d.Clipper.prototype.AddLocalMinPoly = function (a, b, c) {\n if (d.ClipperBase.IsHorizontal(b) || a.Dx > b.Dx) {\n var e = this.AddOutPt(a, c);\n b.OutIdx = a.OutIdx;\n a.Side = d.EdgeSide.esLeft;\n b.Side = d.EdgeSide.esRight;\n var f = a;\n a = f.PrevInAEL === b ? b.PrevInAEL : f.PrevInAEL;\n } else\n (e = this.AddOutPt(b, c)),\n (a.OutIdx = b.OutIdx),\n (a.Side = d.EdgeSide.esRight),\n (b.Side = d.EdgeSide.esLeft),\n (f = b),\n (a = f.PrevInAEL === a ? a.PrevInAEL : f.PrevInAEL);\n if (null !== a && 0 <= a.OutIdx && a.Top.Y < c.Y && f.Top.Y < c.Y) {\n b = d.Clipper.TopX(a, c.Y);\n var g = d.Clipper.TopX(f, c.Y);\n b === g &&\n 0 !== f.WindDelta &&\n 0 !== a.WindDelta &&\n d.ClipperBase.SlopesEqual5(\n new d.IntPoint2(b, c.Y),\n a.Top,\n new d.IntPoint2(g, c.Y),\n f.Top,\n this.m_UseFullRange\n ) &&\n ((c = this.AddOutPt(a, c)), this.AddJoin(e, c, f.Top));\n }\n return e;\n };\n d.Clipper.prototype.AddOutPt = function (a, b) {\n if (0 > a.OutIdx) {\n var c = this.CreateOutRec();\n c.IsOpen = 0 === a.WindDelta;\n var e = new d.OutPt();\n c.Pts = e;\n e.Idx = c.Idx;\n e.Pt.X = b.X;\n e.Pt.Y = b.Y;\n d.use_xyz && (e.Pt.Z = b.Z);\n e.Next = e;\n e.Prev = e;\n c.IsOpen || this.SetHoleState(a, c);\n a.OutIdx = c.Idx;\n } else {\n c = this.m_PolyOuts[a.OutIdx];\n var f = c.Pts,\n g = a.Side === d.EdgeSide.esLeft;\n if (g && d.IntPoint.op_Equality(b, f.Pt)) return f;\n if (!g && d.IntPoint.op_Equality(b, f.Prev.Pt)) return f.Prev;\n e = new d.OutPt();\n e.Idx = c.Idx;\n e.Pt.X = b.X;\n e.Pt.Y = b.Y;\n d.use_xyz && (e.Pt.Z = b.Z);\n e.Next = f;\n e.Prev = f.Prev;\n e.Prev.Next = e;\n f.Prev = e;\n g && (c.Pts = e);\n }\n return e;\n };\n d.Clipper.prototype.GetLastOutPt = function (a) {\n var b = this.m_PolyOuts[a.OutIdx];\n return a.Side === d.EdgeSide.esLeft ? b.Pts : b.Pts.Prev;\n };\n d.Clipper.prototype.SwapPoints = function (a, b) {\n var c = new d.IntPoint1(a.Value);\n a.Value.X = b.Value.X;\n a.Value.Y = b.Value.Y;\n d.use_xyz && (a.Value.Z = b.Value.Z);\n b.Value.X = c.X;\n b.Value.Y = c.Y;\n d.use_xyz && (b.Value.Z = c.Z);\n };\n d.Clipper.prototype.HorzSegmentsOverlap = function (a, b, c, e) {\n if (a > b) {\n var d = a;\n a = b;\n b = d;\n }\n c > e && ((d = c), (c = e), (e = d));\n return a < e && c < b;\n };\n d.Clipper.prototype.SetHoleState = function (a, b) {\n for (var c = a.PrevInAEL, e = null; null !== c; )\n 0 <= c.OutIdx &&\n 0 !== c.WindDelta &&\n (null === e ? (e = c) : e.OutIdx === c.OutIdx && (e = null)),\n (c = c.PrevInAEL);\n null === e\n ? ((b.FirstLeft = null), (b.IsHole = !1))\n : ((b.FirstLeft = this.m_PolyOuts[e.OutIdx]),\n (b.IsHole = !b.FirstLeft.IsHole));\n };\n d.Clipper.prototype.GetDx = function (a, b) {\n return a.Y === b.Y ? d.ClipperBase.horizontal : (b.X - a.X) / (b.Y - a.Y);\n };\n d.Clipper.prototype.FirstIsBottomPt = function (a, b) {\n for (var c = a.Prev; d.IntPoint.op_Equality(c.Pt, a.Pt) && c !== a; )\n c = c.Prev;\n var e = Math.abs(this.GetDx(a.Pt, c.Pt));\n for (c = a.Next; d.IntPoint.op_Equality(c.Pt, a.Pt) && c !== a; )\n c = c.Next;\n var f = Math.abs(this.GetDx(a.Pt, c.Pt));\n for (c = b.Prev; d.IntPoint.op_Equality(c.Pt, b.Pt) && c !== b; )\n c = c.Prev;\n var g = Math.abs(this.GetDx(b.Pt, c.Pt));\n for (c = b.Next; d.IntPoint.op_Equality(c.Pt, b.Pt) && c !== b; )\n c = c.Next;\n c = Math.abs(this.GetDx(b.Pt, c.Pt));\n return Math.max(e, f) === Math.max(g, c) &&\n Math.min(e, f) === Math.min(g, c)\n ? 0 < this.Area(a)\n : (e >= g && e >= c) || (f >= g && f >= c);\n };\n d.Clipper.prototype.GetBottomPt = function (a) {\n for (var b = null, c = a.Next; c !== a; )\n c.Pt.Y > a.Pt.Y\n ? ((a = c), (b = null))\n : c.Pt.Y === a.Pt.Y &&\n c.Pt.X <= a.Pt.X &&\n (c.Pt.X < a.Pt.X\n ? ((b = null), (a = c))\n : c.Next !== a && c.Prev !== a && (b = c)),\n (c = c.Next);\n if (null !== b)\n for (; b !== c; )\n for (\n this.FirstIsBottomPt(c, b) || (a = b), b = b.Next;\n d.IntPoint.op_Inequality(b.Pt, a.Pt);\n\n )\n b = b.Next;\n return a;\n };\n d.Clipper.prototype.GetLowermostRec = function (a, b) {\n null === a.BottomPt && (a.BottomPt = this.GetBottomPt(a.Pts));\n null === b.BottomPt && (b.BottomPt = this.GetBottomPt(b.Pts));\n var c = a.BottomPt,\n e = b.BottomPt;\n return c.Pt.Y > e.Pt.Y\n ? a\n : c.Pt.Y < e.Pt.Y\n ? b\n : c.Pt.X < e.Pt.X\n ? a\n : c.Pt.X > e.Pt.X\n ? b\n : c.Next === c\n ? b\n : e.Next === e\n ? a\n : this.FirstIsBottomPt(c, e)\n ? a\n : b;\n };\n d.Clipper.prototype.OutRec1RightOfOutRec2 = function (a, b) {\n do if (((a = a.FirstLeft), a === b)) return !0;\n while (null !== a);\n return !1;\n };\n d.Clipper.prototype.GetOutRec = function (a) {\n for (a = this.m_PolyOuts[a]; a !== this.m_PolyOuts[a.Idx]; )\n a = this.m_PolyOuts[a.Idx];\n return a;\n };\n d.Clipper.prototype.AppendPolygon = function (a, b) {\n var c = this.m_PolyOuts[a.OutIdx],\n e = this.m_PolyOuts[b.OutIdx];\n var f = this.OutRec1RightOfOutRec2(c, e)\n ? e\n : this.OutRec1RightOfOutRec2(e, c)\n ? c\n : this.GetLowermostRec(c, e);\n var g = c.Pts,\n h = g.Prev,\n m = e.Pts,\n k = m.Prev;\n a.Side === d.EdgeSide.esLeft\n ? b.Side === d.EdgeSide.esLeft\n ? (this.ReversePolyPtLinks(m),\n (m.Next = g),\n (g.Prev = m),\n (h.Next = k),\n (k.Prev = h),\n (c.Pts = k))\n : ((k.Next = g), (g.Prev = k), (m.Prev = h), (h.Next = m), (c.Pts = m))\n : b.Side === d.EdgeSide.esRight\n ? (this.ReversePolyPtLinks(m),\n (h.Next = k),\n (k.Prev = h),\n (m.Next = g),\n (g.Prev = m))\n : ((h.Next = m), (m.Prev = h), (g.Prev = k), (k.Next = g));\n c.BottomPt = null;\n f === e &&\n (e.FirstLeft !== c && (c.FirstLeft = e.FirstLeft), (c.IsHole = e.IsHole));\n e.Pts = null;\n e.BottomPt = null;\n e.FirstLeft = c;\n f = a.OutIdx;\n g = b.OutIdx;\n a.OutIdx = -1;\n b.OutIdx = -1;\n for (h = this.m_ActiveEdges; null !== h; ) {\n if (h.OutIdx === g) {\n h.OutIdx = f;\n h.Side = a.Side;\n break;\n }\n h = h.NextInAEL;\n }\n e.Idx = c.Idx;\n };\n d.Clipper.prototype.ReversePolyPtLinks = function (a) {\n if (null !== a) {\n var b = a;\n do {\n var c = b.Next;\n b.Next = b.Prev;\n b = b.Prev = c;\n } while (b !== a);\n }\n };\n d.Clipper.SwapSides = function (a, b) {\n var c = a.Side;\n a.Side = b.Side;\n b.Side = c;\n };\n d.Clipper.SwapPolyIndexes = function (a, b) {\n var c = a.OutIdx;\n a.OutIdx = b.OutIdx;\n b.OutIdx = c;\n };\n d.Clipper.prototype.IntersectEdges = function (a, b, c) {\n var e = 0 <= a.OutIdx,\n f = 0 <= b.OutIdx;\n d.use_xyz && this.SetZ(c, a, b);\n if (!d.use_lines || (0 !== a.WindDelta && 0 !== b.WindDelta)) {\n if (a.PolyTyp === b.PolyTyp)\n if (this.IsEvenOddFillType(a)) {\n var g = a.WindCnt;\n a.WindCnt = b.WindCnt;\n b.WindCnt = g;\n } else\n (a.WindCnt =\n 0 === a.WindCnt + b.WindDelta\n ? -a.WindCnt\n : a.WindCnt + b.WindDelta),\n (b.WindCnt =\n 0 === b.WindCnt - a.WindDelta\n ? -b.WindCnt\n : b.WindCnt - a.WindDelta);\n else\n this.IsEvenOddFillType(b)\n ? (a.WindCnt2 = 0 === a.WindCnt2 ? 1 : 0)\n : (a.WindCnt2 += b.WindDelta),\n this.IsEvenOddFillType(a)\n ? (b.WindCnt2 = 0 === b.WindCnt2 ? 1 : 0)\n : (b.WindCnt2 -= a.WindDelta);\n if (a.PolyTyp === d.PolyType.ptSubject) {\n var h = this.m_SubjFillType;\n var k = this.m_ClipFillType;\n } else (h = this.m_ClipFillType), (k = this.m_SubjFillType);\n if (b.PolyTyp === d.PolyType.ptSubject) {\n var l = this.m_SubjFillType;\n g = this.m_ClipFillType;\n } else (l = this.m_ClipFillType), (g = this.m_SubjFillType);\n switch (h) {\n case d.PolyFillType.pftPositive:\n h = a.WindCnt;\n break;\n case d.PolyFillType.pftNegative:\n h = -a.WindCnt;\n break;\n default:\n h = Math.abs(a.WindCnt);\n }\n switch (l) {\n case d.PolyFillType.pftPositive:\n l = b.WindCnt;\n break;\n case d.PolyFillType.pftNegative:\n l = -b.WindCnt;\n break;\n default:\n l = Math.abs(b.WindCnt);\n }\n if (e && f)\n (0 !== h && 1 !== h) ||\n (0 !== l && 1 !== l) ||\n (a.PolyTyp !== b.PolyTyp && this.m_ClipType !== d.ClipType.ctXor)\n ? this.AddLocalMaxPoly(a, b, c)\n : (this.AddOutPt(a, c),\n this.AddOutPt(b, c),\n d.Clipper.SwapSides(a, b),\n d.Clipper.SwapPolyIndexes(a, b));\n else if (e) {\n if (0 === l || 1 === l)\n this.AddOutPt(a, c),\n d.Clipper.SwapSides(a, b),\n d.Clipper.SwapPolyIndexes(a, b);\n } else if (f) {\n if (0 === h || 1 === h)\n this.AddOutPt(b, c),\n d.Clipper.SwapSides(a, b),\n d.Clipper.SwapPolyIndexes(a, b);\n } else if (!((0 !== h && 1 !== h) || (0 !== l && 1 !== l))) {\n switch (k) {\n case d.PolyFillType.pftPositive:\n e = a.WindCnt2;\n break;\n case d.PolyFillType.pftNegative:\n e = -a.WindCnt2;\n break;\n default:\n e = Math.abs(a.WindCnt2);\n }\n switch (g) {\n case d.PolyFillType.pftPositive:\n f = b.WindCnt2;\n break;\n case d.PolyFillType.pftNegative:\n f = -b.WindCnt2;\n break;\n default:\n f = Math.abs(b.WindCnt2);\n }\n if (a.PolyTyp !== b.PolyTyp) this.AddLocalMinPoly(a, b, c);\n else if (1 === h && 1 === l)\n switch (this.m_ClipType) {\n case d.ClipType.ctIntersection:\n 0 < e && 0 < f && this.AddLocalMinPoly(a, b, c);\n break;\n case d.ClipType.ctUnion:\n 0 >= e && 0 >= f && this.AddLocalMinPoly(a, b, c);\n break;\n case d.ClipType.ctDifference:\n ((a.PolyTyp === d.PolyType.ptClip && 0 < e && 0 < f) ||\n (a.PolyTyp === d.PolyType.ptSubject && 0 >= e && 0 >= f)) &&\n this.AddLocalMinPoly(a, b, c);\n break;\n case d.ClipType.ctXor:\n this.AddLocalMinPoly(a, b, c);\n }\n else d.Clipper.SwapSides(a, b);\n }\n } else if (0 !== a.WindDelta || 0 !== b.WindDelta)\n a.PolyTyp === b.PolyTyp &&\n a.WindDelta !== b.WindDelta &&\n this.m_ClipType === d.ClipType.ctUnion\n ? 0 === a.WindDelta\n ? f && (this.AddOutPt(a, c), e && (a.OutIdx = -1))\n : e && (this.AddOutPt(b, c), f && (b.OutIdx = -1))\n : a.PolyTyp !== b.PolyTyp &&\n (0 !== a.WindDelta ||\n 1 !== Math.abs(b.WindCnt) ||\n (this.m_ClipType === d.ClipType.ctUnion && 0 !== b.WindCnt2)\n ? 0 !== b.WindDelta ||\n 1 !== Math.abs(a.WindCnt) ||\n (this.m_ClipType === d.ClipType.ctUnion && 0 !== a.WindCnt2) ||\n (this.AddOutPt(b, c), f && (b.OutIdx = -1))\n : (this.AddOutPt(a, c), e && (a.OutIdx = -1)));\n };\n d.Clipper.prototype.DeleteFromSEL = function (a) {\n var b = a.PrevInSEL,\n c = a.NextInSEL;\n if (null !== b || null !== c || a === this.m_SortedEdges)\n null !== b ? (b.NextInSEL = c) : (this.m_SortedEdges = c),\n null !== c && (c.PrevInSEL = b),\n (a.NextInSEL = null),\n (a.PrevInSEL = null);\n };\n d.Clipper.prototype.ProcessHorizontals = function () {\n for (var a = {}; this.PopEdgeFromSEL(a); ) this.ProcessHorizontal(a.v);\n };\n d.Clipper.prototype.GetHorzDirection = function (a, b) {\n a.Bot.X < a.Top.X\n ? ((b.Left = a.Bot.X),\n (b.Right = a.Top.X),\n (b.Dir = d.Direction.dLeftToRight))\n : ((b.Left = a.Top.X),\n (b.Right = a.Bot.X),\n (b.Dir = d.Direction.dRightToLeft));\n };\n d.Clipper.prototype.ProcessHorizontal = function (a) {\n var b,\n c = { Dir: null, Left: null, Right: null };\n this.GetHorzDirection(a, c);\n var e = c.Dir,\n f = c.Left;\n c = c.Right;\n for (\n var g = 0 === a.WindDelta, h = a, k = null;\n null !== h.NextInLML && d.ClipperBase.IsHorizontal(h.NextInLML);\n\n )\n h = h.NextInLML;\n null === h.NextInLML && (k = this.GetMaximaPair(h));\n var l = this.m_Maxima;\n if (null !== l)\n if (e === d.Direction.dLeftToRight) {\n for (; null !== l && l.X <= a.Bot.X; ) l = l.Next;\n null !== l && l.X >= h.Top.X && (l = null);\n } else {\n for (; null !== l.Next && l.Next.X < a.Bot.X; ) l = l.Next;\n l.X <= h.Top.X && (l = null);\n }\n for (var n = null; ; ) {\n for (var r = a === h, p = this.GetNextInAEL(a, e); null !== p; ) {\n if (null !== l)\n if (e === d.Direction.dLeftToRight)\n for (; null !== l && l.X < p.Curr.X; )\n 0 <= a.OutIdx &&\n !g &&\n this.AddOutPt(a, new d.IntPoint2(l.X, a.Bot.Y)),\n (l = l.Next);\n else\n for (; null !== l && l.X > p.Curr.X; )\n 0 <= a.OutIdx &&\n !g &&\n this.AddOutPt(a, new d.IntPoint2(l.X, a.Bot.Y)),\n (l = l.Prev);\n if (\n (e === d.Direction.dLeftToRight && p.Curr.X > c) ||\n (e === d.Direction.dRightToLeft && p.Curr.X < f)\n )\n break;\n if (\n p.Curr.X === a.Top.X &&\n null !== a.NextInLML &&\n p.Dx < a.NextInLML.Dx\n )\n break;\n if (0 <= a.OutIdx && !g) {\n d.use_xyz &&\n (e === d.Direction.dLeftToRight\n ? this.SetZ(p.Curr, a, p)\n : this.SetZ(p.Curr, p, a));\n n = this.AddOutPt(a, p.Curr);\n for (b = this.m_SortedEdges; null !== b; ) {\n if (\n 0 <= b.OutIdx &&\n this.HorzSegmentsOverlap(a.Bot.X, a.Top.X, b.Bot.X, b.Top.X)\n ) {\n var t = this.GetLastOutPt(b);\n this.AddJoin(t, n, b.Top);\n }\n b = b.NextInSEL;\n }\n this.AddGhostJoin(n, a.Bot);\n }\n if (p === k && r) {\n 0 <= a.OutIdx && this.AddLocalMaxPoly(a, k, a.Top);\n this.DeleteFromAEL(a);\n this.DeleteFromAEL(k);\n return;\n }\n e === d.Direction.dLeftToRight\n ? ((t = new d.IntPoint2(p.Curr.X, a.Curr.Y)),\n this.IntersectEdges(a, p, t))\n : ((t = new d.IntPoint2(p.Curr.X, a.Curr.Y)),\n this.IntersectEdges(p, a, t));\n t = this.GetNextInAEL(p, e);\n this.SwapPositionsInAEL(a, p);\n p = t;\n }\n if (null === a.NextInLML || !d.ClipperBase.IsHorizontal(a.NextInLML))\n break;\n a = this.UpdateEdgeIntoAEL(a);\n 0 <= a.OutIdx && this.AddOutPt(a, a.Bot);\n c = { Dir: e, Left: f, Right: c };\n this.GetHorzDirection(a, c);\n e = c.Dir;\n f = c.Left;\n c = c.Right;\n }\n if (0 <= a.OutIdx && null === n) {\n n = this.GetLastOutPt(a);\n for (b = this.m_SortedEdges; null !== b; )\n 0 <= b.OutIdx &&\n this.HorzSegmentsOverlap(a.Bot.X, a.Top.X, b.Bot.X, b.Top.X) &&\n ((t = this.GetLastOutPt(b)), this.AddJoin(t, n, b.Top)),\n (b = b.NextInSEL);\n this.AddGhostJoin(n, a.Top);\n }\n null !== a.NextInLML\n ? 0 <= a.OutIdx\n ? ((n = this.AddOutPt(a, a.Top)),\n (a = this.UpdateEdgeIntoAEL(a)),\n 0 !== a.WindDelta &&\n ((e = a.PrevInAEL),\n (t = a.NextInAEL),\n null !== e &&\n e.Curr.X === a.Bot.X &&\n e.Curr.Y === a.Bot.Y &&\n 0 === e.WindDelta &&\n 0 <= e.OutIdx &&\n e.Curr.Y > e.Top.Y &&\n d.ClipperBase.SlopesEqual3(a, e, this.m_UseFullRange)\n ? ((t = this.AddOutPt(e, a.Bot)), this.AddJoin(n, t, a.Top))\n : null !== t &&\n t.Curr.X === a.Bot.X &&\n t.Curr.Y === a.Bot.Y &&\n 0 !== t.WindDelta &&\n 0 <= t.OutIdx &&\n t.Curr.Y > t.Top.Y &&\n d.ClipperBase.SlopesEqual3(a, t, this.m_UseFullRange) &&\n ((t = this.AddOutPt(t, a.Bot)), this.AddJoin(n, t, a.Top))))\n : this.UpdateEdgeIntoAEL(a)\n : (0 <= a.OutIdx && this.AddOutPt(a, a.Top), this.DeleteFromAEL(a));\n };\n d.Clipper.prototype.GetNextInAEL = function (a, b) {\n return b === d.Direction.dLeftToRight ? a.NextInAEL : a.PrevInAEL;\n };\n d.Clipper.prototype.IsMinima = function (a) {\n return null !== a && a.Prev.NextInLML !== a && a.Next.NextInLML !== a;\n };\n d.Clipper.prototype.IsMaxima = function (a, b) {\n return null !== a && a.Top.Y === b && null === a.NextInLML;\n };\n d.Clipper.prototype.IsIntermediate = function (a, b) {\n return a.Top.Y === b && null !== a.NextInLML;\n };\n d.Clipper.prototype.GetMaximaPair = function (a) {\n return d.IntPoint.op_Equality(a.Next.Top, a.Top) &&\n null === a.Next.NextInLML\n ? a.Next\n : d.IntPoint.op_Equality(a.Prev.Top, a.Top) && null === a.Prev.NextInLML\n ? a.Prev\n : null;\n };\n d.Clipper.prototype.GetMaximaPairEx = function (a) {\n a = this.GetMaximaPair(a);\n return null === a ||\n a.OutIdx === d.ClipperBase.Skip ||\n (a.NextInAEL === a.PrevInAEL && !d.ClipperBase.IsHorizontal(a))\n ? null\n : a;\n };\n d.Clipper.prototype.ProcessIntersections = function (a) {\n if (null === this.m_ActiveEdges) return !0;\n try {\n this.BuildIntersectList(a);\n if (0 === this.m_IntersectList.length) return !0;\n if (1 === this.m_IntersectList.length || this.FixupIntersectionOrder())\n this.ProcessIntersectList();\n else return !1;\n } catch (b) {\n (this.m_SortedEdges = null),\n (this.m_IntersectList.length = 0),\n d.Error(\"ProcessIntersections error\");\n }\n this.m_SortedEdges = null;\n return !0;\n };\n d.Clipper.prototype.BuildIntersectList = function (a) {\n if (null !== this.m_ActiveEdges) {\n var b = this.m_ActiveEdges;\n for (this.m_SortedEdges = b; null !== b; )\n (b.PrevInSEL = b.PrevInAEL),\n (b.NextInSEL = b.NextInAEL),\n (b.Curr.X = d.Clipper.TopX(b, a)),\n (b = b.NextInAEL);\n for (var c = !0; c && null !== this.m_SortedEdges; ) {\n c = !1;\n for (b = this.m_SortedEdges; null !== b.NextInSEL; ) {\n var e = b.NextInSEL,\n f = new d.IntPoint0();\n b.Curr.X > e.Curr.X\n ? (this.IntersectPoint(b, e, f),\n f.Y < a && (f = new d.IntPoint2(d.Clipper.TopX(b, a), a)),\n (c = new d.IntersectNode()),\n (c.Edge1 = b),\n (c.Edge2 = e),\n (c.Pt.X = f.X),\n (c.Pt.Y = f.Y),\n d.use_xyz && (c.Pt.Z = f.Z),\n this.m_IntersectList.push(c),\n this.SwapPositionsInSEL(b, e),\n (c = !0))\n : (b = e);\n }\n if (null !== b.PrevInSEL) b.PrevInSEL.NextInSEL = null;\n else break;\n }\n this.m_SortedEdges = null;\n }\n };\n d.Clipper.prototype.EdgesAdjacent = function (a) {\n return a.Edge1.NextInSEL === a.Edge2 || a.Edge1.PrevInSEL === a.Edge2;\n };\n d.Clipper.IntersectNodeSort = function (a, b) {\n return b.Pt.Y - a.Pt.Y;\n };\n d.Clipper.prototype.FixupIntersectionOrder = function () {\n this.m_IntersectList.sort(this.m_IntersectNodeComparer);\n this.CopyAELToSEL();\n for (var a = this.m_IntersectList.length, b = 0; b < a; b++) {\n if (!this.EdgesAdjacent(this.m_IntersectList[b])) {\n for (\n var c = b + 1;\n c < a && !this.EdgesAdjacent(this.m_IntersectList[c]);\n\n )\n c++;\n if (c === a) return !1;\n var e = this.m_IntersectList[b];\n this.m_IntersectList[b] = this.m_IntersectList[c];\n this.m_IntersectList[c] = e;\n }\n this.SwapPositionsInSEL(\n this.m_IntersectList[b].Edge1,\n this.m_IntersectList[b].Edge2\n );\n }\n return !0;\n };\n d.Clipper.prototype.ProcessIntersectList = function () {\n for (var a = 0, b = this.m_IntersectList.length; a < b; a++) {\n var c = this.m_IntersectList[a];\n this.IntersectEdges(c.Edge1, c.Edge2, c.Pt);\n this.SwapPositionsInAEL(c.Edge1, c.Edge2);\n }\n this.m_IntersectList.length = 0;\n };\n I = function (a) {\n return 0 > a ? Math.ceil(a - 0.5) : Math.round(a);\n };\n J = function (a) {\n return 0 > a ? Math.ceil(a - 0.5) : Math.floor(a + 0.5);\n };\n K = function (a) {\n return 0 > a ? -Math.round(Math.abs(a)) : Math.round(a);\n };\n L = function (a) {\n if (0 > a) return (a -= 0.5), -2147483648 > a ? Math.ceil(a) : a | 0;\n a += 0.5;\n return 2147483647 < a ? Math.floor(a) : a | 0;\n };\n d.Clipper.Round = u ? I : G ? K : Q ? L : J;\n d.Clipper.TopX = function (a, b) {\n return b === a.Top.Y\n ? a.Top.X\n : a.Bot.X + d.Clipper.Round(a.Dx * (b - a.Bot.Y));\n };\n d.Clipper.prototype.IntersectPoint = function (a, b, c) {\n c.X = 0;\n c.Y = 0;\n if (a.Dx === b.Dx) (c.Y = a.Curr.Y), (c.X = d.Clipper.TopX(a, c.Y));\n else {\n if (0 === a.Delta.X)\n if (((c.X = a.Bot.X), d.ClipperBase.IsHorizontal(b))) c.Y = b.Bot.Y;\n else {\n var e = b.Bot.Y - b.Bot.X / b.Dx;\n c.Y = d.Clipper.Round(c.X / b.Dx + e);\n }\n else if (0 === b.Delta.X)\n if (((c.X = b.Bot.X), d.ClipperBase.IsHorizontal(a))) c.Y = a.Bot.Y;\n else {\n var f = a.Bot.Y - a.Bot.X / a.Dx;\n c.Y = d.Clipper.Round(c.X / a.Dx + f);\n }\n else {\n f = a.Bot.X - a.Bot.Y * a.Dx;\n e = b.Bot.X - b.Bot.Y * b.Dx;\n var g = (e - f) / (a.Dx - b.Dx);\n c.Y = d.Clipper.Round(g);\n c.X =\n Math.abs(a.Dx) < Math.abs(b.Dx)\n ? d.Clipper.Round(a.Dx * g + f)\n : d.Clipper.Round(b.Dx * g + e);\n }\n if (c.Y < a.Top.Y || c.Y < b.Top.Y) {\n if (a.Top.Y > b.Top.Y)\n return (\n (c.Y = a.Top.Y), (c.X = d.Clipper.TopX(b, a.Top.Y)), c.X < a.Top.X\n );\n c.Y = b.Top.Y;\n c.X =\n Math.abs(a.Dx) < Math.abs(b.Dx)\n ? d.Clipper.TopX(a, c.Y)\n : d.Clipper.TopX(b, c.Y);\n }\n c.Y > a.Curr.Y &&\n ((c.Y = a.Curr.Y),\n (c.X =\n Math.abs(a.Dx) > Math.abs(b.Dx)\n ? d.Clipper.TopX(b, c.Y)\n : d.Clipper.TopX(a, c.Y)));\n }\n };\n d.Clipper.prototype.ProcessEdgesAtTopOfScanbeam = function (a) {\n for (var b, c, e = this.m_ActiveEdges; null !== e; ) {\n if ((c = this.IsMaxima(e, a)))\n (c = this.GetMaximaPairEx(e)),\n (c = null === c || !d.ClipperBase.IsHorizontal(c));\n if (c)\n this.StrictlySimple && this.InsertMaxima(e.Top.X),\n (b = e.PrevInAEL),\n this.DoMaxima(e),\n (e = null === b ? this.m_ActiveEdges : b.NextInAEL);\n else {\n this.IsIntermediate(e, a) && d.ClipperBase.IsHorizontal(e.NextInLML)\n ? ((e = this.UpdateEdgeIntoAEL(e)),\n 0 <= e.OutIdx && this.AddOutPt(e, e.Bot),\n this.AddEdgeToSEL(e))\n : ((e.Curr.X = d.Clipper.TopX(e, a)), (e.Curr.Y = a));\n d.use_xyz &&\n (e.Curr.Z = e.Top.Y === a ? e.Top.Z : e.Bot.Y === a ? e.Bot.Z : 0);\n if (\n this.StrictlySimple &&\n ((b = e.PrevInAEL),\n 0 <= e.OutIdx &&\n 0 !== e.WindDelta &&\n null !== b &&\n 0 <= b.OutIdx &&\n b.Curr.X === e.Curr.X &&\n 0 !== b.WindDelta)\n ) {\n var f = new d.IntPoint1(e.Curr);\n d.use_xyz && this.SetZ(f, b, e);\n c = this.AddOutPt(b, f);\n b = this.AddOutPt(e, f);\n this.AddJoin(c, b, f);\n }\n e = e.NextInAEL;\n }\n }\n this.ProcessHorizontals();\n this.m_Maxima = null;\n for (e = this.m_ActiveEdges; null !== e; )\n this.IsIntermediate(e, a) &&\n ((c = null),\n 0 <= e.OutIdx && (c = this.AddOutPt(e, e.Top)),\n (e = this.UpdateEdgeIntoAEL(e)),\n (b = e.PrevInAEL),\n (f = e.NextInAEL),\n null !== b &&\n b.Curr.X === e.Bot.X &&\n b.Curr.Y === e.Bot.Y &&\n null !== c &&\n 0 <= b.OutIdx &&\n b.Curr.Y === b.Top.Y &&\n d.ClipperBase.SlopesEqual5(\n e.Curr,\n e.Top,\n b.Curr,\n b.Top,\n this.m_UseFullRange\n ) &&\n 0 !== e.WindDelta &&\n 0 !== b.WindDelta\n ? ((b = this.AddOutPt(ePrev2, e.Bot)), this.AddJoin(c, b, e.Top))\n : null !== f &&\n f.Curr.X === e.Bot.X &&\n f.Curr.Y === e.Bot.Y &&\n null !== c &&\n 0 <= f.OutIdx &&\n f.Curr.Y === f.Top.Y &&\n d.ClipperBase.SlopesEqual5(\n e.Curr,\n e.Top,\n f.Curr,\n f.Top,\n this.m_UseFullRange\n ) &&\n 0 !== e.WindDelta &&\n 0 !== f.WindDelta &&\n ((b = this.AddOutPt(f, e.Bot)), this.AddJoin(c, b, e.Top))),\n (e = e.NextInAEL);\n };\n d.Clipper.prototype.DoMaxima = function (a) {\n var b = this.GetMaximaPairEx(a);\n if (null === b)\n 0 <= a.OutIdx && this.AddOutPt(a, a.Top), this.DeleteFromAEL(a);\n else {\n for (var c = a.NextInAEL; null !== c && c !== b; )\n this.IntersectEdges(a, c, a.Top),\n this.SwapPositionsInAEL(a, c),\n (c = a.NextInAEL);\n -1 === a.OutIdx && -1 === b.OutIdx\n ? (this.DeleteFromAEL(a), this.DeleteFromAEL(b))\n : 0 <= a.OutIdx && 0 <= b.OutIdx\n ? (0 <= a.OutIdx && this.AddLocalMaxPoly(a, b, a.Top),\n this.DeleteFromAEL(a),\n this.DeleteFromAEL(b))\n : d.use_lines && 0 === a.WindDelta\n ? (0 <= a.OutIdx &&\n (this.AddOutPt(a, a.Top),\n (a.OutIdx = d.ClipperBase.Unassigned)),\n this.DeleteFromAEL(a),\n 0 <= b.OutIdx &&\n (this.AddOutPt(b, a.Top),\n (b.OutIdx = d.ClipperBase.Unassigned)),\n this.DeleteFromAEL(b))\n : d.Error(\"DoMaxima error\");\n }\n };\n d.Clipper.ReversePaths = function (a) {\n for (var b = 0, c = a.length; b < c; b++) a[b].reverse();\n };\n d.Clipper.Orientation = function (a) {\n return 0 <= d.Clipper.Area(a);\n };\n d.Clipper.prototype.PointCount = function (a) {\n if (null === a) return 0;\n var b = 0,\n c = a;\n do b++, (c = c.Next);\n while (c !== a);\n return b;\n };\n d.Clipper.prototype.BuildResult = function (a) {\n d.Clear(a);\n for (var b = 0, c = this.m_PolyOuts.length; b < c; b++) {\n var e = this.m_PolyOuts[b];\n if (null !== e.Pts) {\n e = e.Pts.Prev;\n var f = this.PointCount(e);\n if (!(2 > f)) {\n for (var g = Array(f), h = 0; h < f; h++) (g[h] = e.Pt), (e = e.Prev);\n a.push(g);\n }\n }\n }\n };\n d.Clipper.prototype.BuildResult2 = function (a) {\n a.Clear();\n for (var b = 0, c = this.m_PolyOuts.length; b < c; b++) {\n var e = this.m_PolyOuts[b];\n var f = this.PointCount(e.Pts);\n if (!((e.IsOpen && 2 > f) || (!e.IsOpen && 3 > f))) {\n this.FixHoleLinkage(e);\n var g = new d.PolyNode();\n a.m_AllPolys.push(g);\n e.PolyNode = g;\n g.m_polygon.length = f;\n e = e.Pts.Prev;\n for (var h = 0; h < f; h++) (g.m_polygon[h] = e.Pt), (e = e.Prev);\n }\n }\n b = 0;\n for (c = this.m_PolyOuts.length; b < c; b++)\n (e = this.m_PolyOuts[b]),\n null !== e.PolyNode &&\n (e.IsOpen\n ? ((e.PolyNode.IsOpen = !0), a.AddChild(e.PolyNode))\n : null !== e.FirstLeft && null !== e.FirstLeft.PolyNode\n ? e.FirstLeft.PolyNode.AddChild(e.PolyNode)\n : a.AddChild(e.PolyNode));\n };\n d.Clipper.prototype.FixupOutPolyline = function (a) {\n for (var b = a.Pts, c = b.Prev; b !== c; )\n if (((b = b.Next), d.IntPoint.op_Equality(b.Pt, b.Prev.Pt))) {\n b === c && (c = b.Prev);\n var e = b.Prev;\n e.Next = b.Next;\n b = b.Next.Prev = e;\n }\n b === b.Prev && (a.Pts = null);\n };\n d.Clipper.prototype.FixupOutPolygon = function (a) {\n var b = null;\n a.BottomPt = null;\n for (var c = a.Pts, e = this.PreserveCollinear || this.StrictlySimple; ; ) {\n if (c.Prev === c || c.Prev === c.Next) {\n a.Pts = null;\n return;\n }\n if (\n d.IntPoint.op_Equality(c.Pt, c.Next.Pt) ||\n d.IntPoint.op_Equality(c.Pt, c.Prev.Pt) ||\n (d.ClipperBase.SlopesEqual4(\n c.Prev.Pt,\n c.Pt,\n c.Next.Pt,\n this.m_UseFullRange\n ) &&\n (!e || !this.Pt2IsBetweenPt1AndPt3(c.Prev.Pt, c.Pt, c.Next.Pt)))\n )\n (b = null), (c.Prev.Next = c.Next), (c = c.Next.Prev = c.Prev);\n else if (c === b) break;\n else null === b && (b = c), (c = c.Next);\n }\n a.Pts = c;\n };\n d.Clipper.prototype.DupOutPt = function (a, b) {\n var c = new d.OutPt();\n c.Pt.X = a.Pt.X;\n c.Pt.Y = a.Pt.Y;\n d.use_xyz && (c.Pt.Z = a.Pt.Z);\n c.Idx = a.Idx;\n b\n ? ((c.Next = a.Next), (c.Prev = a), (a.Next.Prev = c), (a.Next = c))\n : ((c.Prev = a.Prev), (c.Next = a), (a.Prev.Next = c), (a.Prev = c));\n return c;\n };\n d.Clipper.prototype.GetOverlap = function (a, b, c, e, d) {\n a < b\n ? c < e\n ? ((d.Left = Math.max(a, c)), (d.Right = Math.min(b, e)))\n : ((d.Left = Math.max(a, e)), (d.Right = Math.min(b, c)))\n : c < e\n ? ((d.Left = Math.max(b, c)), (d.Right = Math.min(a, e)))\n : ((d.Left = Math.max(b, e)), (d.Right = Math.min(a, c)));\n return d.Left < d.Right;\n };\n d.Clipper.prototype.JoinHorz = function (a, b, c, e, f, g) {\n var h =\n a.Pt.X > b.Pt.X ? d.Direction.dRightToLeft : d.Direction.dLeftToRight;\n e = c.Pt.X > e.Pt.X ? d.Direction.dRightToLeft : d.Direction.dLeftToRight;\n if (h === e) return !1;\n if (h === d.Direction.dLeftToRight) {\n for (\n ;\n a.Next.Pt.X <= f.X && a.Next.Pt.X >= a.Pt.X && a.Next.Pt.Y === f.Y;\n\n )\n a = a.Next;\n g && a.Pt.X !== f.X && (a = a.Next);\n b = this.DupOutPt(a, !g);\n d.IntPoint.op_Inequality(b.Pt, f) &&\n ((a = b),\n (a.Pt.X = f.X),\n (a.Pt.Y = f.Y),\n d.use_xyz && (a.Pt.Z = f.Z),\n (b = this.DupOutPt(a, !g)));\n } else {\n for (\n ;\n a.Next.Pt.X >= f.X && a.Next.Pt.X <= a.Pt.X && a.Next.Pt.Y === f.Y;\n\n )\n a = a.Next;\n g || a.Pt.X === f.X || (a = a.Next);\n b = this.DupOutPt(a, g);\n d.IntPoint.op_Inequality(b.Pt, f) &&\n ((a = b),\n (a.Pt.X = f.X),\n (a.Pt.Y = f.Y),\n d.use_xyz && (a.Pt.Z = f.Z),\n (b = this.DupOutPt(a, g)));\n }\n if (e === d.Direction.dLeftToRight) {\n for (\n ;\n c.Next.Pt.X <= f.X && c.Next.Pt.X >= c.Pt.X && c.Next.Pt.Y === f.Y;\n\n )\n c = c.Next;\n g && c.Pt.X !== f.X && (c = c.Next);\n e = this.DupOutPt(c, !g);\n d.IntPoint.op_Inequality(e.Pt, f) &&\n ((c = e),\n (c.Pt.X = f.X),\n (c.Pt.Y = f.Y),\n d.use_xyz && (c.Pt.Z = f.Z),\n (e = this.DupOutPt(c, !g)));\n } else {\n for (\n ;\n c.Next.Pt.X >= f.X && c.Next.Pt.X <= c.Pt.X && c.Next.Pt.Y === f.Y;\n\n )\n c = c.Next;\n g || c.Pt.X === f.X || (c = c.Next);\n e = this.DupOutPt(c, g);\n d.IntPoint.op_Inequality(e.Pt, f) &&\n ((c = e),\n (c.Pt.X = f.X),\n (c.Pt.Y = f.Y),\n d.use_xyz && (c.Pt.Z = f.Z),\n (e = this.DupOutPt(c, g)));\n }\n (h === d.Direction.dLeftToRight) === g\n ? ((a.Prev = c), (c.Next = a), (b.Next = e), (e.Prev = b))\n : ((a.Next = c), (c.Prev = a), (b.Prev = e), (e.Next = b));\n return !0;\n };\n d.Clipper.prototype.JoinPoints = function (a, b, c) {\n var e = a.OutPt1,\n f;\n new d.OutPt();\n var g = a.OutPt2,\n h;\n new d.OutPt();\n if (\n (h = a.OutPt1.Pt.Y === a.OffPt.Y) &&\n d.IntPoint.op_Equality(a.OffPt, a.OutPt1.Pt) &&\n d.IntPoint.op_Equality(a.OffPt, a.OutPt2.Pt)\n ) {\n if (b !== c) return !1;\n for (\n f = a.OutPt1.Next;\n f !== e && d.IntPoint.op_Equality(f.Pt, a.OffPt);\n\n )\n f = f.Next;\n f = f.Pt.Y > a.OffPt.Y;\n for (\n h = a.OutPt2.Next;\n h !== g && d.IntPoint.op_Equality(h.Pt, a.OffPt);\n\n )\n h = h.Next;\n if (f === h.Pt.Y > a.OffPt.Y) return !1;\n f\n ? ((f = this.DupOutPt(e, !1)),\n (h = this.DupOutPt(g, !0)),\n (e.Prev = g),\n (g.Next = e),\n (f.Next = h),\n (h.Prev = f))\n : ((f = this.DupOutPt(e, !0)),\n (h = this.DupOutPt(g, !1)),\n (e.Next = g),\n (g.Prev = e),\n (f.Prev = h),\n (h.Next = f));\n a.OutPt1 = e;\n a.OutPt2 = f;\n return !0;\n }\n if (h) {\n for (f = e; e.Prev.Pt.Y === e.Pt.Y && e.Prev !== f && e.Prev !== g; )\n e = e.Prev;\n for (; f.Next.Pt.Y === f.Pt.Y && f.Next !== e && f.Next !== g; )\n f = f.Next;\n if (f.Next === e || f.Next === g) return !1;\n for (h = g; g.Prev.Pt.Y === g.Pt.Y && g.Prev !== h && g.Prev !== f; )\n g = g.Prev;\n for (; h.Next.Pt.Y === h.Pt.Y && h.Next !== g && h.Next !== e; )\n h = h.Next;\n if (h.Next === g || h.Next === e) return !1;\n c = { Left: null, Right: null };\n if (!this.GetOverlap(e.Pt.X, f.Pt.X, g.Pt.X, h.Pt.X, c)) return !1;\n b = c.Left;\n var k = c.Right;\n c = new d.IntPoint0();\n e.Pt.X >= b && e.Pt.X <= k\n ? ((c.X = e.Pt.X),\n (c.Y = e.Pt.Y),\n d.use_xyz && (c.Z = e.Pt.Z),\n (b = e.Pt.X > f.Pt.X))\n : g.Pt.X >= b && g.Pt.X <= k\n ? ((c.X = g.Pt.X),\n (c.Y = g.Pt.Y),\n d.use_xyz && (c.Z = g.Pt.Z),\n (b = g.Pt.X > h.Pt.X))\n : f.Pt.X >= b && f.Pt.X <= k\n ? ((c.X = f.Pt.X),\n (c.Y = f.Pt.Y),\n d.use_xyz && (c.Z = f.Pt.Z),\n (b = f.Pt.X > e.Pt.X))\n : ((c.X = h.Pt.X),\n (c.Y = h.Pt.Y),\n d.use_xyz && (c.Z = h.Pt.Z),\n (b = h.Pt.X > g.Pt.X));\n a.OutPt1 = e;\n a.OutPt2 = g;\n return this.JoinHorz(e, f, g, h, c, b);\n }\n for (f = e.Next; d.IntPoint.op_Equality(f.Pt, e.Pt) && f !== e; )\n f = f.Next;\n if (\n (k =\n f.Pt.Y > e.Pt.Y ||\n !d.ClipperBase.SlopesEqual4(e.Pt, f.Pt, a.OffPt, this.m_UseFullRange))\n ) {\n for (f = e.Prev; d.IntPoint.op_Equality(f.Pt, e.Pt) && f !== e; )\n f = f.Prev;\n if (\n f.Pt.Y > e.Pt.Y ||\n !d.ClipperBase.SlopesEqual4(e.Pt, f.Pt, a.OffPt, this.m_UseFullRange)\n )\n return !1;\n }\n for (h = g.Next; d.IntPoint.op_Equality(h.Pt, g.Pt) && h !== g; )\n h = h.Next;\n var l =\n h.Pt.Y > g.Pt.Y ||\n !d.ClipperBase.SlopesEqual4(g.Pt, h.Pt, a.OffPt, this.m_UseFullRange);\n if (l) {\n for (h = g.Prev; d.IntPoint.op_Equality(h.Pt, g.Pt) && h !== g; )\n h = h.Prev;\n if (\n h.Pt.Y > g.Pt.Y ||\n !d.ClipperBase.SlopesEqual4(g.Pt, h.Pt, a.OffPt, this.m_UseFullRange)\n )\n return !1;\n }\n if (f === e || h === g || f === h || (b === c && k === l)) return !1;\n k\n ? ((f = this.DupOutPt(e, !1)),\n (h = this.DupOutPt(g, !0)),\n (e.Prev = g),\n (g.Next = e),\n (f.Next = h),\n (h.Prev = f))\n : ((f = this.DupOutPt(e, !0)),\n (h = this.DupOutPt(g, !1)),\n (e.Next = g),\n (g.Prev = e),\n (f.Prev = h),\n (h.Next = f));\n a.OutPt1 = e;\n a.OutPt2 = f;\n return !0;\n };\n d.Clipper.GetBounds = function (a) {\n for (var b = 0, c = a.length; b < c && 0 === a[b].length; ) b++;\n if (b === c) return new d.IntRect(0, 0, 0, 0);\n var e = new d.IntRect();\n e.left = a[b][0].X;\n e.right = e.left;\n e.top = a[b][0].Y;\n for (e.bottom = e.top; b < c; b++)\n for (var f = 0, g = a[b].length; f < g; f++)\n a[b][f].X < e.left\n ? (e.left = a[b][f].X)\n : a[b][f].X > e.right && (e.right = a[b][f].X),\n a[b][f].Y < e.top\n ? (e.top = a[b][f].Y)\n : a[b][f].Y > e.bottom && (e.bottom = a[b][f].Y);\n return e;\n };\n d.Clipper.prototype.GetBounds2 = function (a) {\n var b = a,\n c = new d.IntRect();\n c.left = a.Pt.X;\n c.right = a.Pt.X;\n c.top = a.Pt.Y;\n c.bottom = a.Pt.Y;\n for (a = a.Next; a !== b; )\n a.Pt.X < c.left && (c.left = a.Pt.X),\n a.Pt.X > c.right && (c.right = a.Pt.X),\n a.Pt.Y < c.top && (c.top = a.Pt.Y),\n a.Pt.Y > c.bottom && (c.bottom = a.Pt.Y),\n (a = a.Next);\n return c;\n };\n d.Clipper.PointInPolygon = function (a, b) {\n var c = 0,\n e = b.length;\n if (3 > e) return 0;\n for (var d = b[0], g = 1; g <= e; ++g) {\n var h = g === e ? b[0] : b[g];\n if (\n h.Y === a.Y &&\n (h.X === a.X || (d.Y === a.Y && h.X > a.X === d.X < a.X))\n )\n return -1;\n if (d.Y < a.Y !== h.Y < a.Y)\n if (d.X >= a.X)\n if (h.X > a.X) c = 1 - c;\n else {\n var k = (d.X - a.X) * (h.Y - a.Y) - (h.X - a.X) * (d.Y - a.Y);\n if (0 === k) return -1;\n 0 < k === h.Y > d.Y && (c = 1 - c);\n }\n else if (h.X > a.X) {\n k = (d.X - a.X) * (h.Y - a.Y) - (h.X - a.X) * (d.Y - a.Y);\n if (0 === k) return -1;\n 0 < k === h.Y > d.Y && (c = 1 - c);\n }\n d = h;\n }\n return c;\n };\n d.Clipper.prototype.PointInPolygon = function (a, b) {\n var c = 0,\n d = b,\n f = a.X,\n g = a.Y;\n var h = b.Pt.X;\n var k = b.Pt.Y;\n do {\n b = b.Next;\n var l = b.Pt.X,\n n = b.Pt.Y;\n if (n === g && (l === f || (k === g && l > f === h < f))) return -1;\n if (k < g !== n < g)\n if (h >= f)\n if (l > f) c = 1 - c;\n else {\n h = (h - f) * (n - g) - (l - f) * (k - g);\n if (0 === h) return -1;\n 0 < h === n > k && (c = 1 - c);\n }\n else if (l > f) {\n h = (h - f) * (n - g) - (l - f) * (k - g);\n if (0 === h) return -1;\n 0 < h === n > k && (c = 1 - c);\n }\n h = l;\n k = n;\n } while (d !== b);\n return c;\n };\n d.Clipper.prototype.Poly2ContainsPoly1 = function (a, b) {\n var c = a;\n do {\n var d = this.PointInPolygon(c.Pt, b);\n if (0 <= d) return 0 < d;\n c = c.Next;\n } while (c !== a);\n return !0;\n };\n d.Clipper.prototype.FixupFirstLefts1 = function (a, b) {\n for (var c, e, f = 0, g = this.m_PolyOuts.length; f < g; f++)\n (c = this.m_PolyOuts[f]),\n (e = d.Clipper.ParseFirstLeft(c.FirstLeft)),\n null !== c.Pts &&\n e === a &&\n this.Poly2ContainsPoly1(c.Pts, b.Pts) &&\n (c.FirstLeft = b);\n };\n d.Clipper.prototype.FixupFirstLefts2 = function (a, b) {\n for (\n var c = b.FirstLeft, e, f, g = 0, h = this.m_PolyOuts.length;\n g < h;\n g++\n )\n if (\n ((e = this.m_PolyOuts[g]),\n null !== e.Pts &&\n e !== b &&\n e !== a &&\n ((f = d.Clipper.ParseFirstLeft(e.FirstLeft)),\n f === c || f === a || f === b))\n )\n if (this.Poly2ContainsPoly1(e.Pts, a.Pts)) e.FirstLeft = a;\n else if (this.Poly2ContainsPoly1(e.Pts, b.Pts)) e.FirstLeft = b;\n else if (e.FirstLeft === a || e.FirstLeft === b) e.FirstLeft = c;\n };\n d.Clipper.prototype.FixupFirstLefts3 = function (a, b) {\n for (var c, e, f = 0, g = this.m_PolyOuts.length; f < g; f++)\n (c = this.m_PolyOuts[f]),\n (e = d.Clipper.ParseFirstLeft(c.FirstLeft)),\n null !== c.Pts && e === a && (c.FirstLeft = b);\n };\n d.Clipper.ParseFirstLeft = function (a) {\n for (; null !== a && null === a.Pts; ) a = a.FirstLeft;\n return a;\n };\n d.Clipper.prototype.JoinCommonEdges = function () {\n for (var a = 0, b = this.m_Joins.length; a < b; a++) {\n var c = this.m_Joins[a],\n d = this.GetOutRec(c.OutPt1.Idx),\n f = this.GetOutRec(c.OutPt2.Idx);\n if (null !== d.Pts && null !== f.Pts && !d.IsOpen && !f.IsOpen) {\n var g =\n d === f\n ? d\n : this.OutRec1RightOfOutRec2(d, f)\n ? f\n : this.OutRec1RightOfOutRec2(f, d)\n ? d\n : this.GetLowermostRec(d, f);\n this.JoinPoints(c, d, f) &&\n (d === f\n ? ((d.Pts = c.OutPt1),\n (d.BottomPt = null),\n (f = this.CreateOutRec()),\n (f.Pts = c.OutPt2),\n this.UpdateOutPtIdxs(f),\n this.Poly2ContainsPoly1(f.Pts, d.Pts)\n ? ((f.IsHole = !d.IsHole),\n (f.FirstLeft = d),\n this.m_UsingPolyTree && this.FixupFirstLefts2(f, d),\n (f.IsHole ^ this.ReverseSolution) == 0 < this.Area$1(f) &&\n this.ReversePolyPtLinks(f.Pts))\n : this.Poly2ContainsPoly1(d.Pts, f.Pts)\n ? ((f.IsHole = d.IsHole),\n (d.IsHole = !f.IsHole),\n (f.FirstLeft = d.FirstLeft),\n (d.FirstLeft = f),\n this.m_UsingPolyTree && this.FixupFirstLefts2(d, f),\n (d.IsHole ^ this.ReverseSolution) == 0 < this.Area$1(d) &&\n this.ReversePolyPtLinks(d.Pts))\n : ((f.IsHole = d.IsHole),\n (f.FirstLeft = d.FirstLeft),\n this.m_UsingPolyTree && this.FixupFirstLefts1(d, f)))\n : ((f.Pts = null),\n (f.BottomPt = null),\n (f.Idx = d.Idx),\n (d.IsHole = g.IsHole),\n g === f && (d.FirstLeft = f.FirstLeft),\n (f.FirstLeft = d),\n this.m_UsingPolyTree && this.FixupFirstLefts3(f, d)));\n }\n }\n };\n d.Clipper.prototype.UpdateOutPtIdxs = function (a) {\n var b = a.Pts;\n do (b.Idx = a.Idx), (b = b.Prev);\n while (b !== a.Pts);\n };\n d.Clipper.prototype.DoSimplePolygons = function () {\n for (var a = 0; a < this.m_PolyOuts.length; ) {\n var b = this.m_PolyOuts[a++],\n c = b.Pts;\n if (null !== c && !b.IsOpen) {\n do {\n for (var e = c.Next; e !== b.Pts; ) {\n if (\n d.IntPoint.op_Equality(c.Pt, e.Pt) &&\n e.Next !== c &&\n e.Prev !== c\n ) {\n var f = c.Prev,\n g = e.Prev;\n c.Prev = g;\n g.Next = c;\n e.Prev = f;\n f.Next = e;\n b.Pts = c;\n f = this.CreateOutRec();\n f.Pts = e;\n this.UpdateOutPtIdxs(f);\n this.Poly2ContainsPoly1(f.Pts, b.Pts)\n ? ((f.IsHole = !b.IsHole),\n (f.FirstLeft = b),\n this.m_UsingPolyTree && this.FixupFirstLefts2(f, b))\n : this.Poly2ContainsPoly1(b.Pts, f.Pts)\n ? ((f.IsHole = b.IsHole),\n (b.IsHole = !f.IsHole),\n (f.FirstLeft = b.FirstLeft),\n (b.FirstLeft = f),\n this.m_UsingPolyTree && this.FixupFirstLefts2(b, f))\n : ((f.IsHole = b.IsHole),\n (f.FirstLeft = b.FirstLeft),\n this.m_UsingPolyTree && this.FixupFirstLefts1(b, f));\n e = c;\n }\n e = e.Next;\n }\n c = c.Next;\n } while (c !== b.Pts);\n }\n }\n };\n d.Clipper.Area = function (a) {\n if (!Array.isArray(a)) return 0;\n var b = a.length;\n if (3 > b) return 0;\n for (var c = 0, d = 0, f = b - 1; d < b; ++d)\n (c += (a[f].X + a[d].X) * (a[f].Y - a[d].Y)), (f = d);\n return 0.5 * -c;\n };\n d.Clipper.prototype.Area = function (a) {\n var b = a;\n if (null === a) return 0;\n var c = 0;\n do (c += (a.Prev.Pt.X + a.Pt.X) * (a.Prev.Pt.Y - a.Pt.Y)), (a = a.Next);\n while (a !== b);\n return 0.5 * c;\n };\n d.Clipper.prototype.Area$1 = function (a) {\n return this.Area(a.Pts);\n };\n d.Clipper.SimplifyPolygon = function (a, b) {\n var c = [],\n e = new d.Clipper(0);\n e.StrictlySimple = !0;\n e.AddPath(a, d.PolyType.ptSubject, !0);\n e.Execute(d.ClipType.ctUnion, c, b, b);\n return c;\n };\n d.Clipper.SimplifyPolygons = function (a, b) {\n \"undefined\" === typeof b && (b = d.PolyFillType.pftEvenOdd);\n var c = [],\n e = new d.Clipper(0);\n e.StrictlySimple = !0;\n e.AddPaths(a, d.PolyType.ptSubject, !0);\n e.Execute(d.ClipType.ctUnion, c, b, b);\n return c;\n };\n d.Clipper.DistanceSqrd = function (a, b) {\n var c = a.X - b.X,\n d = a.Y - b.Y;\n return c * c + d * d;\n };\n d.Clipper.DistanceFromLineSqrd = function (a, b, c) {\n var d = b.Y - c.Y;\n c = c.X - b.X;\n b = d * b.X + c * b.Y;\n b = d * a.X + c * a.Y - b;\n return (b * b) / (d * d + c * c);\n };\n d.Clipper.SlopesNearCollinear = function (a, b, c, e) {\n return Math.abs(a.X - b.X) > Math.abs(a.Y - b.Y)\n ? a.X > b.X === a.X < c.X\n ? d.Clipper.DistanceFromLineSqrd(a, b, c) < e\n : b.X > a.X === b.X < c.X\n ? d.Clipper.DistanceFromLineSqrd(b, a, c) < e\n : d.Clipper.DistanceFromLineSqrd(c, a, b) < e\n : a.Y > b.Y === a.Y < c.Y\n ? d.Clipper.DistanceFromLineSqrd(a, b, c) < e\n : b.Y > a.Y === b.Y < c.Y\n ? d.Clipper.DistanceFromLineSqrd(b, a, c) < e\n : d.Clipper.DistanceFromLineSqrd(c, a, b) < e;\n };\n d.Clipper.PointsAreClose = function (a, b, c) {\n var d = a.X - b.X;\n a = a.Y - b.Y;\n return d * d + a * a <= c;\n };\n d.Clipper.ExcludeOp = function (a) {\n var b = a.Prev;\n b.Next = a.Next;\n a.Next.Prev = b;\n b.Idx = 0;\n return b;\n };\n d.Clipper.CleanPolygon = function (a, b) {\n \"undefined\" === typeof b && (b = 1.415);\n var c = a.length;\n if (0 === c) return [];\n for (var e = Array(c), f = 0; f < c; ++f) e[f] = new d.OutPt();\n for (f = 0; f < c; ++f)\n (e[f].Pt = a[f]),\n (e[f].Next = e[(f + 1) % c]),\n (e[f].Next.Prev = e[f]),\n (e[f].Idx = 0);\n f = b * b;\n for (e = e[0]; 0 === e.Idx && e.Next !== e.Prev; )\n d.Clipper.PointsAreClose(e.Pt, e.Prev.Pt, f)\n ? ((e = d.Clipper.ExcludeOp(e)), c--)\n : d.Clipper.PointsAreClose(e.Prev.Pt, e.Next.Pt, f)\n ? (d.Clipper.ExcludeOp(e.Next),\n (e = d.Clipper.ExcludeOp(e)),\n (c -= 2))\n : d.Clipper.SlopesNearCollinear(e.Prev.Pt, e.Pt, e.Next.Pt, f)\n ? ((e = d.Clipper.ExcludeOp(e)), c--)\n : ((e.Idx = 1), (e = e.Next));\n 3 > c && (c = 0);\n var g = Array(c);\n for (f = 0; f < c; ++f) (g[f] = new d.IntPoint1(e.Pt)), (e = e.Next);\n return g;\n };\n d.Clipper.CleanPolygons = function (a, b) {\n for (var c = Array(a.length), e = 0, f = a.length; e < f; e++)\n c[e] = d.Clipper.CleanPolygon(a[e], b);\n return c;\n };\n d.Clipper.Minkowski = function (a, b, c, e) {\n e = e ? 1 : 0;\n var f = a.length,\n g = b.length,\n h = [];\n if (c)\n for (c = 0; c < g; c++) {\n var k = Array(f);\n for (var l = 0, n = a.length, r = a[l]; l < n; l++, r = a[l])\n k[l] = new d.IntPoint2(b[c].X + r.X, b[c].Y + r.Y);\n h.push(k);\n }\n else\n for (c = 0; c < g; c++) {\n k = Array(f);\n l = 0;\n n = a.length;\n for (r = a[l]; l < n; l++, r = a[l])\n k[l] = new d.IntPoint2(b[c].X - r.X, b[c].Y - r.Y);\n h.push(k);\n }\n a = [];\n for (c = 0; c < g - 1 + e; c++)\n for (l = 0; l < f; l++)\n (b = []),\n b.push(h[c % g][l % f]),\n b.push(h[(c + 1) % g][l % f]),\n b.push(h[(c + 1) % g][(l + 1) % f]),\n b.push(h[c % g][(l + 1) % f]),\n d.Clipper.Orientation(b) || b.reverse(),\n a.push(b);\n return a;\n };\n d.Clipper.MinkowskiSum = function (a, b, c) {\n if (b[0] instanceof Array) {\n var e = b;\n var f = new d.Paths();\n b = new d.Clipper();\n for (var g = 0; g < e.length; ++g) {\n var h = d.Clipper.Minkowski(a, e[g], !0, c);\n b.AddPaths(h, d.PolyType.ptSubject, !0);\n c &&\n ((h = d.Clipper.TranslatePath(e[g], a[0])),\n b.AddPath(h, d.PolyType.ptClip, !0));\n }\n b.Execute(\n d.ClipType.ctUnion,\n f,\n d.PolyFillType.pftNonZero,\n d.PolyFillType.pftNonZero\n );\n return f;\n }\n e = d.Clipper.Minkowski(a, b, !0, c);\n b = new d.Clipper();\n b.AddPaths(e, d.PolyType.ptSubject, !0);\n b.Execute(\n d.ClipType.ctUnion,\n e,\n d.PolyFillType.pftNonZero,\n d.PolyFillType.pftNonZero\n );\n return e;\n };\n d.Clipper.TranslatePath = function (a, b) {\n for (var c = new d.Path(), e = 0; e < a.length; e++)\n c.push(new d.IntPoint2(a[e].X + b.X, a[e].Y + b.Y));\n return c;\n };\n d.Clipper.MinkowskiDiff = function (a, b) {\n var c = d.Clipper.Minkowski(a, b, !1, !0),\n e = new d.Clipper();\n e.AddPaths(c, d.PolyType.ptSubject, !0);\n e.Execute(\n d.ClipType.ctUnion,\n c,\n d.PolyFillType.pftNonZero,\n d.PolyFillType.pftNonZero\n );\n return c;\n };\n d.Clipper.PolyTreeToPaths = function (a) {\n var b = [];\n d.Clipper.AddPolyNodeToPaths(a, d.Clipper.NodeType.ntAny, b);\n return b;\n };\n d.Clipper.AddPolyNodeToPaths = function (a, b, c) {\n var e = !0;\n switch (b) {\n case d.Clipper.NodeType.ntOpen:\n return;\n case d.Clipper.NodeType.ntClosed:\n e = !a.IsOpen;\n }\n 0 < a.m_polygon.length && e && c.push(a.m_polygon);\n e = 0;\n a = a.Childs();\n for (var f = a.length, g = a[e]; e < f; e++, g = a[e])\n d.Clipper.AddPolyNodeToPaths(g, b, c);\n };\n d.Clipper.OpenPathsFromPolyTree = function (a) {\n for (var b = new d.Paths(), c = 0, e = a.ChildCount(); c < e; c++)\n a.Childs()[c].IsOpen && b.push(a.Childs()[c].m_polygon);\n return b;\n };\n d.Clipper.ClosedPathsFromPolyTree = function (a) {\n var b = new d.Paths();\n d.Clipper.AddPolyNodeToPaths(a, d.Clipper.NodeType.ntClosed, b);\n return b;\n };\n v(d.Clipper, d.ClipperBase);\n d.Clipper.NodeType = { ntAny: 0, ntOpen: 1, ntClosed: 2 };\n d.ClipperOffset = function (a, b) {\n \"undefined\" === typeof a && (a = 2);\n \"undefined\" === typeof b && (b = d.ClipperOffset.def_arc_tolerance);\n this.m_destPolys = new d.Paths();\n this.m_srcPoly = new d.Path();\n this.m_destPoly = new d.Path();\n this.m_normals = [];\n this.m_StepsPerRad =\n this.m_miterLim =\n this.m_cos =\n this.m_sin =\n this.m_sinA =\n this.m_delta =\n 0;\n this.m_lowest = new d.IntPoint0();\n this.m_polyNodes = new d.PolyNode();\n this.MiterLimit = a;\n this.ArcTolerance = b;\n this.m_lowest.X = -1;\n };\n d.ClipperOffset.two_pi = 6.28318530717959;\n d.ClipperOffset.def_arc_tolerance = 0.25;\n d.ClipperOffset.prototype.Clear = function () {\n d.Clear(this.m_polyNodes.Childs());\n this.m_lowest.X = -1;\n };\n d.ClipperOffset.Round = d.Clipper.Round;\n d.ClipperOffset.prototype.AddPath = function (a, b, c) {\n var e = a.length - 1;\n if (!(0 > e)) {\n var f = new d.PolyNode();\n f.m_jointype = b;\n f.m_endtype = c;\n if (c === d.EndType.etClosedLine || c === d.EndType.etClosedPolygon)\n for (; 0 < e && d.IntPoint.op_Equality(a[0], a[e]); ) e--;\n f.m_polygon.push(a[0]);\n var g = 0;\n b = 0;\n for (var h = 1; h <= e; h++)\n d.IntPoint.op_Inequality(f.m_polygon[g], a[h]) &&\n (g++,\n f.m_polygon.push(a[h]),\n a[h].Y > f.m_polygon[b].Y ||\n (a[h].Y === f.m_polygon[b].Y && a[h].X < f.m_polygon[b].X)) &&\n (b = g);\n if (\n !(c === d.EndType.etClosedPolygon && 2 > g) &&\n (this.m_polyNodes.AddChild(f), c === d.EndType.etClosedPolygon)\n )\n if (0 > this.m_lowest.X)\n this.m_lowest = new d.IntPoint2(this.m_polyNodes.ChildCount() - 1, b);\n else if (\n ((a =\n this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon[\n this.m_lowest.Y\n ]),\n f.m_polygon[b].Y > a.Y ||\n (f.m_polygon[b].Y === a.Y && f.m_polygon[b].X < a.X))\n )\n this.m_lowest = new d.IntPoint2(this.m_polyNodes.ChildCount() - 1, b);\n }\n };\n d.ClipperOffset.prototype.AddPaths = function (a, b, c) {\n for (var d = 0, f = a.length; d < f; d++) this.AddPath(a[d], b, c);\n };\n d.ClipperOffset.prototype.FixOrientations = function () {\n if (\n 0 <= this.m_lowest.X &&\n !d.Clipper.Orientation(\n this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon\n )\n )\n for (var a = 0; a < this.m_polyNodes.ChildCount(); a++) {\n var b = this.m_polyNodes.Childs()[a];\n (b.m_endtype === d.EndType.etClosedPolygon ||\n (b.m_endtype === d.EndType.etClosedLine &&\n d.Clipper.Orientation(b.m_polygon))) &&\n b.m_polygon.reverse();\n }\n else\n for (a = 0; a < this.m_polyNodes.ChildCount(); a++)\n (b = this.m_polyNodes.Childs()[a]),\n b.m_endtype !== d.EndType.etClosedLine ||\n d.Clipper.Orientation(b.m_polygon) ||\n b.m_polygon.reverse();\n };\n d.ClipperOffset.GetUnitNormal = function (a, b) {\n var c = b.X - a.X,\n e = b.Y - a.Y;\n if (0 === c && 0 === e) return new d.DoublePoint2(0, 0);\n var f = 1 / Math.sqrt(c * c + e * e);\n return new d.DoublePoint2(e * f, -(c * f));\n };\n d.ClipperOffset.prototype.DoOffset = function (a) {\n var b;\n this.m_destPolys = [];\n this.m_delta = a;\n if (d.ClipperBase.near_zero(a))\n for (var c = 0; c < this.m_polyNodes.ChildCount(); c++) {\n var e = this.m_polyNodes.Childs()[c];\n e.m_endtype === d.EndType.etClosedPolygon &&\n this.m_destPolys.push(e.m_polygon);\n }\n else {\n this.m_miterLim =\n 2 < this.MiterLimit ? 2 / (this.MiterLimit * this.MiterLimit) : 0.5;\n var f =\n 3.14159265358979 /\n Math.acos(\n 1 -\n (0 >= this.ArcTolerance\n ? d.ClipperOffset.def_arc_tolerance\n : this.ArcTolerance >\n Math.abs(a) * d.ClipperOffset.def_arc_tolerance\n ? Math.abs(a) * d.ClipperOffset.def_arc_tolerance\n : this.ArcTolerance) /\n Math.abs(a)\n );\n this.m_sin = Math.sin(d.ClipperOffset.two_pi / f);\n this.m_cos = Math.cos(d.ClipperOffset.two_pi / f);\n this.m_StepsPerRad = f / d.ClipperOffset.two_pi;\n 0 > a && (this.m_sin = -this.m_sin);\n for (c = 0; c < this.m_polyNodes.ChildCount(); c++) {\n e = this.m_polyNodes.Childs()[c];\n this.m_srcPoly = e.m_polygon;\n var g = this.m_srcPoly.length;\n if (\n !(\n 0 === g ||\n (0 >= a && (3 > g || e.m_endtype !== d.EndType.etClosedPolygon))\n )\n ) {\n this.m_destPoly = [];\n if (1 === g)\n if (e.m_jointype === d.JoinType.jtRound)\n for (g = 1, e = 0, b = 1; b <= f; b++) {\n this.m_destPoly.push(\n new d.IntPoint2(\n d.ClipperOffset.Round(this.m_srcPoly[0].X + g * a),\n d.ClipperOffset.Round(this.m_srcPoly[0].Y + e * a)\n )\n );\n var h = g;\n g = g * this.m_cos - this.m_sin * e;\n e = h * this.m_sin + e * this.m_cos;\n }\n else\n for (e = g = -1, b = 0; 4 > b; ++b)\n this.m_destPoly.push(\n new d.IntPoint2(\n d.ClipperOffset.Round(this.m_srcPoly[0].X + g * a),\n d.ClipperOffset.Round(this.m_srcPoly[0].Y + e * a)\n )\n ),\n 0 > g ? (g = 1) : 0 > e ? (e = 1) : (g = -1);\n else {\n for (b = this.m_normals.length = 0; b < g - 1; b++)\n this.m_normals.push(\n d.ClipperOffset.GetUnitNormal(\n this.m_srcPoly[b],\n this.m_srcPoly[b + 1]\n )\n );\n e.m_endtype === d.EndType.etClosedLine ||\n e.m_endtype === d.EndType.etClosedPolygon\n ? this.m_normals.push(\n d.ClipperOffset.GetUnitNormal(\n this.m_srcPoly[g - 1],\n this.m_srcPoly[0]\n )\n )\n : this.m_normals.push(new d.DoublePoint1(this.m_normals[g - 2]));\n if (e.m_endtype === d.EndType.etClosedPolygon)\n for (h = g - 1, b = 0; b < g; b++)\n h = this.OffsetPoint(b, h, e.m_jointype);\n else if (e.m_endtype === d.EndType.etClosedLine) {\n h = g - 1;\n for (b = 0; b < g; b++) h = this.OffsetPoint(b, h, e.m_jointype);\n this.m_destPolys.push(this.m_destPoly);\n this.m_destPoly = [];\n h = this.m_normals[g - 1];\n for (b = g - 1; 0 < b; b--)\n this.m_normals[b] = new d.DoublePoint2(\n -this.m_normals[b - 1].X,\n -this.m_normals[b - 1].Y\n );\n this.m_normals[0] = new d.DoublePoint2(-h.X, -h.Y);\n h = 0;\n for (b = g - 1; 0 <= b; b--)\n h = this.OffsetPoint(b, h, e.m_jointype);\n } else {\n h = 0;\n for (b = 1; b < g - 1; ++b)\n h = this.OffsetPoint(b, h, e.m_jointype);\n e.m_endtype === d.EndType.etOpenButt\n ? ((b = g - 1),\n (h = new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[b].X + this.m_normals[b].X * a\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[b].Y + this.m_normals[b].Y * a\n )\n )),\n this.m_destPoly.push(h),\n (h = new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[b].X - this.m_normals[b].X * a\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[b].Y - this.m_normals[b].Y * a\n )\n )),\n this.m_destPoly.push(h))\n : ((b = g - 1),\n (h = g - 2),\n (this.m_sinA = 0),\n (this.m_normals[b] = new d.DoublePoint2(\n -this.m_normals[b].X,\n -this.m_normals[b].Y\n )),\n e.m_endtype === d.EndType.etOpenSquare\n ? this.DoSquare(b, h)\n : this.DoRound(b, h));\n for (b = g - 1; 0 < b; b--)\n this.m_normals[b] = new d.DoublePoint2(\n -this.m_normals[b - 1].X,\n -this.m_normals[b - 1].Y\n );\n this.m_normals[0] = new d.DoublePoint2(\n -this.m_normals[1].X,\n -this.m_normals[1].Y\n );\n h = g - 1;\n for (b = h - 1; 0 < b; --b)\n h = this.OffsetPoint(b, h, e.m_jointype);\n e.m_endtype === d.EndType.etOpenButt\n ? ((h = new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[0].X - this.m_normals[0].X * a\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[0].Y - this.m_normals[0].Y * a\n )\n )),\n this.m_destPoly.push(h),\n (h = new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[0].X + this.m_normals[0].X * a\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[0].Y + this.m_normals[0].Y * a\n )\n )),\n this.m_destPoly.push(h))\n : ((this.m_sinA = 0),\n e.m_endtype === d.EndType.etOpenSquare\n ? this.DoSquare(0, 1)\n : this.DoRound(0, 1));\n }\n }\n this.m_destPolys.push(this.m_destPoly);\n }\n }\n }\n };\n d.ClipperOffset.prototype.Execute = function () {\n var a = arguments;\n if (a[0] instanceof d.PolyTree) {\n var b = a[0];\n var c = a[1];\n b.Clear();\n this.FixOrientations();\n this.DoOffset(c);\n a = new d.Clipper(0);\n a.AddPaths(this.m_destPolys, d.PolyType.ptSubject, !0);\n if (0 < c)\n a.Execute(\n d.ClipType.ctUnion,\n b,\n d.PolyFillType.pftPositive,\n d.PolyFillType.pftPositive\n );\n else {\n var e = d.Clipper.GetBounds(this.m_destPolys);\n c = new d.Path();\n c.push(new d.IntPoint2(e.left - 10, e.bottom + 10));\n c.push(new d.IntPoint2(e.right + 10, e.bottom + 10));\n c.push(new d.IntPoint2(e.right + 10, e.top - 10));\n c.push(new d.IntPoint2(e.left - 10, e.top - 10));\n a.AddPath(c, d.PolyType.ptSubject, !0);\n a.ReverseSolution = !0;\n a.Execute(\n d.ClipType.ctUnion,\n b,\n d.PolyFillType.pftNegative,\n d.PolyFillType.pftNegative\n );\n if (1 === b.ChildCount() && 0 < b.Childs()[0].ChildCount())\n for (\n a = b.Childs()[0],\n b.Childs()[0] = a.Childs()[0],\n b.Childs()[0].m_Parent = b,\n c = 1;\n c < a.ChildCount();\n c++\n )\n b.AddChild(a.Childs()[c]);\n else b.Clear();\n }\n } else\n (b = a[0]),\n (c = a[1]),\n d.Clear(b),\n this.FixOrientations(),\n this.DoOffset(c),\n (a = new d.Clipper(0)),\n a.AddPaths(this.m_destPolys, d.PolyType.ptSubject, !0),\n 0 < c\n ? a.Execute(\n d.ClipType.ctUnion,\n b,\n d.PolyFillType.pftPositive,\n d.PolyFillType.pftPositive\n )\n : ((e = d.Clipper.GetBounds(this.m_destPolys)),\n (c = new d.Path()),\n c.push(new d.IntPoint2(e.left - 10, e.bottom + 10)),\n c.push(new d.IntPoint2(e.right + 10, e.bottom + 10)),\n c.push(new d.IntPoint2(e.right + 10, e.top - 10)),\n c.push(new d.IntPoint2(e.left - 10, e.top - 10)),\n a.AddPath(c, d.PolyType.ptSubject, !0),\n (a.ReverseSolution = !0),\n a.Execute(\n d.ClipType.ctUnion,\n b,\n d.PolyFillType.pftNegative,\n d.PolyFillType.pftNegative\n ),\n 0 < b.length && b.splice(0, 1));\n };\n d.ClipperOffset.prototype.OffsetPoint = function (a, b, c) {\n this.m_sinA =\n this.m_normals[b].X * this.m_normals[a].Y -\n this.m_normals[a].X * this.m_normals[b].Y;\n if (1 > Math.abs(this.m_sinA * this.m_delta)) {\n if (\n 0 <\n this.m_normals[b].X * this.m_normals[a].X +\n this.m_normals[a].Y * this.m_normals[b].Y\n )\n return (\n this.m_destPoly.push(\n new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[a].X + this.m_normals[b].X * this.m_delta\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[a].Y + this.m_normals[b].Y * this.m_delta\n )\n )\n ),\n b\n );\n } else\n 1 < this.m_sinA\n ? (this.m_sinA = 1)\n : -1 > this.m_sinA && (this.m_sinA = -1);\n if (0 > this.m_sinA * this.m_delta)\n this.m_destPoly.push(\n new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[a].X + this.m_normals[b].X * this.m_delta\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[a].Y + this.m_normals[b].Y * this.m_delta\n )\n )\n ),\n this.m_destPoly.push(new d.IntPoint1(this.m_srcPoly[a])),\n this.m_destPoly.push(\n new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[a].X + this.m_normals[a].X * this.m_delta\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[a].Y + this.m_normals[a].Y * this.m_delta\n )\n )\n );\n else\n switch (c) {\n case d.JoinType.jtMiter:\n c =\n 1 +\n (this.m_normals[a].X * this.m_normals[b].X +\n this.m_normals[a].Y * this.m_normals[b].Y);\n c >= this.m_miterLim ? this.DoMiter(a, b, c) : this.DoSquare(a, b);\n break;\n case d.JoinType.jtSquare:\n this.DoSquare(a, b);\n break;\n case d.JoinType.jtRound:\n this.DoRound(a, b);\n }\n return a;\n };\n d.ClipperOffset.prototype.DoSquare = function (a, b) {\n var c = Math.tan(\n Math.atan2(\n this.m_sinA,\n this.m_normals[b].X * this.m_normals[a].X +\n this.m_normals[b].Y * this.m_normals[a].Y\n ) / 4\n );\n this.m_destPoly.push(\n new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[a].X +\n this.m_delta * (this.m_normals[b].X - this.m_normals[b].Y * c)\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[a].Y +\n this.m_delta * (this.m_normals[b].Y + this.m_normals[b].X * c)\n )\n )\n );\n this.m_destPoly.push(\n new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[a].X +\n this.m_delta * (this.m_normals[a].X + this.m_normals[a].Y * c)\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[a].Y +\n this.m_delta * (this.m_normals[a].Y - this.m_normals[a].X * c)\n )\n )\n );\n };\n d.ClipperOffset.prototype.DoMiter = function (a, b, c) {\n c = this.m_delta / c;\n this.m_destPoly.push(\n new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[a].X + (this.m_normals[b].X + this.m_normals[a].X) * c\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[a].Y + (this.m_normals[b].Y + this.m_normals[a].Y) * c\n )\n )\n );\n };\n d.ClipperOffset.prototype.DoRound = function (a, b) {\n for (\n var c = Math.max(\n d.Cast_Int32(\n d.ClipperOffset.Round(\n this.m_StepsPerRad *\n Math.abs(\n Math.atan2(\n this.m_sinA,\n this.m_normals[b].X * this.m_normals[a].X +\n this.m_normals[b].Y * this.m_normals[a].Y\n )\n )\n )\n ),\n 1\n ),\n e = this.m_normals[b].X,\n f = this.m_normals[b].Y,\n g,\n h = 0;\n h < c;\n ++h\n )\n this.m_destPoly.push(\n new d.IntPoint2(\n d.ClipperOffset.Round(this.m_srcPoly[a].X + e * this.m_delta),\n d.ClipperOffset.Round(this.m_srcPoly[a].Y + f * this.m_delta)\n )\n ),\n (g = e),\n (e = e * this.m_cos - this.m_sin * f),\n (f = g * this.m_sin + f * this.m_cos);\n this.m_destPoly.push(\n new d.IntPoint2(\n d.ClipperOffset.Round(\n this.m_srcPoly[a].X + this.m_normals[a].X * this.m_delta\n ),\n d.ClipperOffset.Round(\n this.m_srcPoly[a].Y + this.m_normals[a].Y * this.m_delta\n )\n )\n );\n };\n d.Error = function (a) {\n try {\n throw Error(a);\n } catch (b) {\n alert(b.message);\n }\n };\n d.JS = {};\n d.JS.AreaOfPolygon = function (a, b) {\n b || (b = 1);\n return d.Clipper.Area(a) / (b * b);\n };\n d.JS.AreaOfPolygons = function (a, b) {\n b || (b = 1);\n for (var c = 0, e = 0; e < a.length; e++) c += d.Clipper.Area(a[e]);\n return c / (b * b);\n };\n d.JS.BoundsOfPath = function (a, b) {\n return d.JS.BoundsOfPaths([a], b);\n };\n d.JS.BoundsOfPaths = function (a, b) {\n b || (b = 1);\n var c = d.Clipper.GetBounds(a);\n c.left /= b;\n c.bottom /= b;\n c.right /= b;\n c.top /= b;\n return c;\n };\n d.JS.Clean = function (a, b) {\n if (!(a instanceof Array)) return [];\n var c = a[0] instanceof Array;\n a = d.JS.Clone(a);\n if (\"number\" !== typeof b || null === b)\n return d.Error(\"Delta is not a number in Clean().\"), a;\n if (0 === a.length || (1 === a.length && 0 === a[0].length) || 0 > b)\n return a;\n c || (a = [a]);\n for (var e = a.length, f, g, h, k, l, n, r, p = [], t = 0; t < e; t++)\n if (((g = a[t]), (f = g.length), 0 !== f))\n if (3 > f) (h = g), p.push(h);\n else {\n h = g;\n k = b * b;\n l = g[0];\n for (r = n = 1; r < f; r++)\n (g[r].X - l.X) * (g[r].X - l.X) + (g[r].Y - l.Y) * (g[r].Y - l.Y) <=\n k || ((h[n] = g[r]), (l = g[r]), n++);\n l = g[n - 1];\n (g[0].X - l.X) * (g[0].X - l.X) + (g[0].Y - l.Y) * (g[0].Y - l.Y) <=\n k && n--;\n n < f && h.splice(n, f - n);\n h.length && p.push(h);\n }\n !c && p.length\n ? (p = p[0])\n : c || 0 !== p.length\n ? c && 0 === p.length && (p = [[]])\n : (p = []);\n return p;\n };\n d.JS.Clone = function (a) {\n if (!(a instanceof Array) || 0 === a.length) return [];\n if (1 === a.length && 0 === a[0].length) return [[]];\n var b = a[0] instanceof Array;\n b || (a = [a]);\n var c = a.length,\n d,\n f,\n g = Array(c);\n for (d = 0; d < c; d++) {\n var h = a[d].length;\n var k = Array(h);\n for (f = 0; f < h; f++) k[f] = { X: a[d][f].X, Y: a[d][f].Y };\n g[d] = k;\n }\n b || (g = g[0]);\n return g;\n };\n d.JS.Lighten = function (a, b) {\n if (!(a instanceof Array)) return [];\n if (\"number\" !== typeof b || null === b)\n return d.Error(\"Tolerance is not a number in Lighten().\"), d.JS.Clone(a);\n if (0 === a.length || (1 === a.length && 0 === a[0].length) || 0 > b)\n return d.JS.Clone(a);\n var c = a[0] instanceof Array;\n c || (a = [a]);\n var e,\n f,\n g,\n h = a.length,\n k = b * b,\n l = [];\n for (e = 0; e < h; e++) {\n var n = a[e];\n var r = n.length;\n if (0 !== r) {\n for (g = 0; 1e6 > g; g++) {\n var p = [];\n r = n.length;\n if (n[r - 1].X !== n[0].X || n[r - 1].Y !== n[0].Y) {\n var t = 1;\n n.push({ X: n[0].X, Y: n[0].Y });\n r = n.length;\n } else t = 0;\n var u = [];\n for (f = 0; f < r - 2; f++) {\n var q = n[f];\n var v = n[f + 1];\n var w = n[f + 2];\n var x = q.X;\n var y = q.Y;\n q = w.X - x;\n var A = w.Y - y;\n if (0 !== q || 0 !== A) {\n var z = ((v.X - x) * q + (v.Y - y) * A) / (q * q + A * A);\n 1 < z\n ? ((x = w.X), (y = w.Y))\n : 0 < z && ((x += q * z), (y += A * z));\n }\n q = v.X - x;\n A = v.Y - y;\n w = q * q + A * A;\n w <= k && ((u[f + 1] = 1), f++);\n }\n p.push({ X: n[0].X, Y: n[0].Y });\n for (f = 1; f < r - 1; f++) u[f] || p.push({ X: n[f].X, Y: n[f].Y });\n p.push({ X: n[r - 1].X, Y: n[r - 1].Y });\n t && n.pop();\n if (u.length) n = p;\n else break;\n }\n r = p.length;\n p[r - 1].X === p[0].X && p[r - 1].Y === p[0].Y && p.pop();\n 2 < p.length && l.push(p);\n }\n }\n c || (l = l[0]);\n \"undefined\" === typeof l && (l = []);\n return l;\n };\n d.JS.PerimeterOfPath = function (a, b, c) {\n if (\"undefined\" === typeof a) return 0;\n var d = Math.sqrt,\n f = 0,\n g = a.length;\n if (2 > g) return 0;\n b && ((a[g] = a[0]), g++);\n for (; --g; ) {\n var h = a[g];\n var k = h.X;\n h = h.Y;\n var l = a[g - 1];\n var n = l.X;\n l = l.Y;\n f += d((k - n) * (k - n) + (h - l) * (h - l));\n }\n b && a.pop();\n return f / c;\n };\n d.JS.PerimeterOfPaths = function (a, b, c) {\n c || (c = 1);\n for (var e = 0, f = 0; f < a.length; f++)\n e += d.JS.PerimeterOfPath(a[f], b, c);\n return e;\n };\n d.JS.ScaleDownPath = function (a, b) {\n var c;\n b || (b = 1);\n for (c = a.length; c--; ) {\n var d = a[c];\n d.X /= b;\n d.Y /= b;\n }\n };\n d.JS.ScaleDownPaths = function (a, b) {\n var c, d;\n b || (b = 1);\n for (c = a.length; c--; )\n for (d = a[c].length; d--; ) {\n var f = a[c][d];\n f.X /= b;\n f.Y /= b;\n }\n };\n d.JS.ScaleUpPath = function (a, b) {\n var c,\n d = Math.round;\n b || (b = 1);\n for (c = a.length; c--; ) {\n var f = a[c];\n f.X = d(f.X * b);\n f.Y = d(f.Y * b);\n }\n };\n d.JS.ScaleUpPaths = function (a, b) {\n var c,\n d,\n f = Math.round;\n b || (b = 1);\n for (c = a.length; c--; )\n for (d = a[c].length; d--; ) {\n var g = a[c][d];\n g.X = f(g.X * b);\n g.Y = f(g.Y * b);\n }\n };\n d.ExPolygons = function () {\n return [];\n };\n d.ExPolygon = function () {\n this.holes = this.outer = null;\n };\n d.JS.AddOuterPolyNodeToExPolygons = function (a, b) {\n var c = new d.ExPolygon();\n c.outer = a.Contour();\n var e = a.Childs(),\n f = e.length;\n c.holes = Array(f);\n var g, h;\n for (g = 0; g < f; g++) {\n var k = e[g];\n c.holes[g] = k.Contour();\n var l = 0;\n var n = k.Childs();\n for (h = n.length; l < h; l++)\n (k = n[l]), d.JS.AddOuterPolyNodeToExPolygons(k, b);\n }\n b.push(c);\n };\n d.JS.ExPolygonsToPaths = function (a) {\n var b,\n c,\n e = new d.Paths();\n var f = 0;\n for (b = a.length; f < b; f++) {\n e.push(a[f].outer);\n var g = 0;\n for (c = a[f].holes.length; g < c; g++) e.push(a[f].holes[g]);\n }\n return e;\n };\n d.JS.PolyTreeToExPolygons = function (a) {\n var b = new d.ExPolygons(),\n c;\n var e = 0;\n var f = a.Childs();\n for (c = f.length; e < c; e++)\n (a = f[e]), d.JS.AddOuterPolyNodeToExPolygons(a, b);\n return b;\n };\n})();\n"],"names":["$a8b194ee5ee2de37$var$resizeTimer","$parcel$interopDefault","a","__esModule","default","$d440cba9eebbb8de$export$8a9b6341a7c96bc","value","strict","test","startsWith","$c972e44f440b9af9$export$346677f925de839c","Math","ceil","length","$266a83479ddcca51$export$83d89fbfd8236492","$99d887ad91c984c6$var$errorConfig","getDocsUrl","docsBaseUrl","docsPath","docsSlug","undefined","version","$99d887ad91c984c6$export$a490eb03cb7a0a5e","Error","constructor","shortMessage","args","details","cause","message","docsUrl","metaMessages","join","Object","defineProperty","enumerable","configurable","writable","name","walk","fn","$99d887ad91c984c6$var$walk","err","$5b122542bf87f4b6$export$20737d495bb13c2d","expectedLength","givenLength","$5b122542bf87f4b6$export$a0eb884ede5c87eb","expectedSize","givenSize","$5b122542bf87f4b6$export$a16541e2fe420ef1","type","$223c6c44c48560e0$export$66c44d927ffead98","address","$113b826c68452f61$export$fcb3b6cad79d7e3a","Map","size","maxSize","set","key","delete","keys","next","$22d4c2005867f2d3$export$70445dc308a7f3d5","targetSize","charAt","toUpperCase","slice","toLowerCase","$98fd51879b3ecb59$export$5d04458e2a6c373e","hexOrBytes","dir","$98fd51879b3ecb59$export$1bcd51c0fce8ee55","hex_","hex","replace","$98fd51879b3ecb59$export$4c6b868113605df3","bytes","paddedBytes","Uint8Array","i","padEnd","$6bc7cb07282b4ef9$export$47d164a8071229a9","max","min","signed","$6bc7cb07282b4ef9$export$beb44ed4f8747d0e","$48b086097357245b$export$2af489edb7fa35fe","$f004194a770c7248$var$hexes","Array","from","_v","toString","padStart","$f004194a770c7248$export$b5c95dec4f62ef7a","opts","Number","$f004194a770c7248$export$58b867e287a802c8","string","$f004194a770c7248$export$4e87185b7ecfeec4","value_","maxValue","BigInt","MAX_SAFE_INTEGER","minValue","suffix","$f004194a770c7248$var$encoder","TextEncoder","$f004194a770c7248$export$551c48dea6f88e6d","encode","$551a23ba4e8afae7$var$encoder","$551a23ba4e8afae7$var$charCodeMap","zero","nine","A","F","f","$551a23ba4e8afae7$var$charCodeToBase16","char","$551a23ba4e8afae7$export$31c96b9df38bc8d4","hexString","index","j","nibbleLeft","charCodeAt","nibbleRight","$551a23ba4e8afae7$export$c8dd6bc66a63753c","$c8edf0fd0cb8f896$exports","shake256","shake128","keccak_512","keccak_384","keccak_256","keccak_224","sha3_512","sha3_384","sha3_256","sha3_224","Keccak","keccakP","$fc6ec5653e91d6e4$exports","$fc6ec5653e91d6e4$var$number","n","isSafeInteger","$fc6ec5653e91d6e4$var$bool","b","$fc6ec5653e91d6e4$var$bytes","lengths","includes","$fc6ec5653e91d6e4$var$hash","hash","create","outputLen","blockLen","$fc6ec5653e91d6e4$var$exists","instance","checkFinished","destroyed","finished","$fc6ec5653e91d6e4$var$output","out","output","exists","bool","number","$15c2007833b0fa11$exports","add5L","add5H","add4H","add4L","add3H","add3L","add","rotlBL","rotlBH","rotlSL","rotlSH","rotr32L","rotr32H","rotrBL","rotrBH","rotrSL","rotrSH","shrSL","shrSH","toBig","split","fromBig","$15c2007833b0fa11$var$U32_MASK64","$15c2007833b0fa11$var$_32n","$15c2007833b0fa11$var$fromBig","le","h","l","$15c2007833b0fa11$var$split","lst","Ah","Uint32Array","Al","$15c2007833b0fa11$var$toBig","$15c2007833b0fa11$var$shrSH","_l","s","$15c2007833b0fa11$var$shrSL","$15c2007833b0fa11$var$rotrSH","$15c2007833b0fa11$var$rotrSL","$15c2007833b0fa11$var$rotrBH","$15c2007833b0fa11$var$rotrBL","$15c2007833b0fa11$var$rotr32H","_h","$15c2007833b0fa11$var$rotr32L","$15c2007833b0fa11$var$rotlSH","$15c2007833b0fa11$var$rotlSL","$15c2007833b0fa11$var$rotlBH","$15c2007833b0fa11$var$rotlBL","$15c2007833b0fa11$var$add","Bh","Bl","$15c2007833b0fa11$var$add3L","Cl","$15c2007833b0fa11$var$add3H","low","Ch","$15c2007833b0fa11$var$add4L","Dl","$15c2007833b0fa11$var$add4H","Dh","$15c2007833b0fa11$var$add5L","El","$15c2007833b0fa11$var$add5H","Eh","$7a81f263a7d1b628$exports","randomBytes","wrapXOFConstructorWithOpts","wrapConstructorWithOpts","wrapConstructor","checkOpts","Hash","concatBytes","toBytes","utf8ToBytes","asyncLoop","nextTick","hexToBytes","bytesToHex","isLE","rotr","createView","u32","u8","$00e8c55746711c4b$exports","crypto","globalThis","$7a81f263a7d1b628$var$u8a","arr","buffer","byteOffset","byteLength","floor","DataView","word","shift","$7a81f263a7d1b628$var$hexes","_","len","array","byte","parseInt","isNaN","$7a81f263a7d1b628$var$nextTick","$7a81f263a7d1b628$var$asyncLoop","iters","tick","cb","ts","Date","now","diff","$7a81f263a7d1b628$var$utf8ToBytes","str","$7a81f263a7d1b628$var$toBytes","data","arrays","r","reduce","sum","pad","forEach","clone","_cloneInto","$7a81f263a7d1b628$var$toStr","defaults","call","assign","hashCons","hashC","msg","update","digest","tmp","bytesLength","getRandomValues","$c8edf0fd0cb8f896$var$SHA3_PI","$c8edf0fd0cb8f896$var$SHA3_ROTL","$c8edf0fd0cb8f896$var$_SHA3_IOTA","$c8edf0fd0cb8f896$var$_0n","$c8edf0fd0cb8f896$var$_1n","$c8edf0fd0cb8f896$var$_2n","$c8edf0fd0cb8f896$var$_7n","$c8edf0fd0cb8f896$var$_256n","$c8edf0fd0cb8f896$var$_0x71n","round","R","x","y","push","t","$c8edf0fd0cb8f896$var$SHA3_IOTA_H","$c8edf0fd0cb8f896$var$SHA3_IOTA_L","$c8edf0fd0cb8f896$var$rotlH","$c8edf0fd0cb8f896$var$rotlL","$c8edf0fd0cb8f896$var$keccakP","rounds","B","idx1","idx0","B0","B1","Th","Tl","curH","curL","PI","fill","$c8edf0fd0cb8f896$var$Keccak","enableXOF","pos","posOut","state","state32","keccak","take","finish","writeInto","bufferOut","subarray","xofInto","xof","digestInto","destroy","to","$c8edf0fd0cb8f896$var$gen","$c8edf0fd0cb8f896$var$genShake","dkLen","$70d1698339832295$export$f8151fce47ad1c35","to_","$551a23ba4e8afae7$export$771517697a68241","$74c3746ba4e98114$var$checksumAddressCache","$0220c738ddd72734$var$addressRegex","$0220c738ddd72734$export$ef83598cc5072ce","$f97a6a403efe1d42$export$f6cc0b64b5a999af","values","acc","$ac26bfea216b911d$export$6cd562aaf6380f0e","$ac26bfea216b911d$export$94d7303c0d9f263a","$ac26bfea216b911d$export$45902cc189596eef","$a0fa327a4f07121a$exports","k","c","d","biginteger_used","fromInt","fromNumber","fromString","q","M","E","z","m","mp","invDigit","mpl","mph","um","DB","mt2","U","H","N","O","D","P","C","r2","q3","ONE","dlShiftTo","mu","divide","use_lines","use_xyz","G","document","window","ClipperLib","self","u","v","navigator","userAgent","appName","I","indexOf","Q","J","K","L","V","prototype","am","e","g","DM","DV","FV","F1","F2","convert","compareTo","mod","revert","divRemTo","mulTo","multiplyTo","sqrTo","squareTo","abs","ZERO","subTo","copyTo","clamp","drShiftTo","fromRadix","lShiftTo","rShiftTo","p","isEven","exp","negate","toRadix","bitLength","modPowInt","multiplyUpperTo","multiplyLowerTo","dAddOffset","w","W","chunkSize","LN2","log","signum","pow","intValue","substr","dMultiply","testBit","bitwiseTo","shiftLeft","isProbablePrime","nextBytes","changeBit","addTo","modInt","millerRabin","subtract","getLowestSetBit","shiftRight","random","modPow","byteValue","shortValue","toByteArray","equals","and","or","xor","andNot","not","bitCount","setBit","clearBit","flipBit","multiply","remainder","divideAndRemainder","modInverse","gcd","square","IsNegative","op_Equality","op_Inequality","op_GreaterThan","op_LessThan","op_Addition","op_Subtraction","Int128Mul","op_Division","ToDouble","parseFloat","getOwnPropertyNames","getOwnPropertyDescriptor","$baseCtor","Path","Paths","DoublePoint","arguments","Y","X","DoublePoint0","DoublePoint1","DoublePoint2","PolyNode","m_Parent","m_polygon","m_endtype","m_jointype","m_Index","m_Childs","IsOpen","IsHoleNode","ChildCount","Contour","AddChild","GetNext","GetNextSiblingUp","Childs","Parent","IsHole","PolyTree","m_AllPolys","Clear","GetFirst","Total","Math_Abs_Int64","Math_Abs_Int32","Math_Abs_Double","Math_Max_Int32_Int32","Cast_Int32","toInteger","Cast_Int64","PI2","IntPoint","Z","Clipper","Round","IntPoint0","IntPoint1","IntPoint1dp","IntPoint2","IntRect","left","top","right","bottom","IntRect0","IntRect1","IntRect4","ClipType","ctIntersection","ctUnion","ctDifference","ctXor","PolyType","ptSubject","ptClip","PolyFillType","pftEvenOdd","pftNonZero","pftPositive","pftNegative","JoinType","jtSquare","jtRound","jtMiter","EndType","etOpenSquare","etOpenRound","etOpenButt","etClosedLine","etClosedPolygon","EdgeSide","esLeft","esRight","Direction","dRightToLeft","dLeftToRight","TEdge","Bot","Curr","Top","Delta","Dx","PolyTyp","Side","OutIdx","WindCnt2","WindCnt","WindDelta","PrevInSEL","NextInSEL","PrevInAEL","NextInAEL","NextInLML","Prev","Next","IntersectNode","Edge2","Edge1","Pt","MyIntersectNodeSort","Compare","LocalMinima","RightBound","LeftBound","Scanbeam","Maxima","OutRec","Idx","BottomPt","Pts","FirstLeft","OutPt","Join","OutPt2","OutPt1","OffPt","ClipperBase","m_CurrentLM","m_MinimaList","m_edges","PreserveCollinear","m_HasOpenPaths","m_UseFullRange","m_ActiveEdges","m_PolyOuts","m_Scanbeam","horizontal","Skip","Unassigned","tolerance","loRange","hiRange","near_zero","IsHorizontal","PointIsVertex","PointOnLineSegment","PointOnPolygon","SlopesEqual","SlopesEqual3","SlopesEqual4","SlopesEqual5","DisposeLocalMinimaList","RangeTest","Value","InitEdge","InitEdge2","SetDx","FindNextLocMin","ProcessBound","InsertLocalMinima","ReverseHorizontal","AddPath","RemoveEdge","Pt2IsBetweenPt1AndPt3","AddPaths","PopLocalMinima","Reset","InsertScanbeam","PopScanbeam","LocalMinimaPending","CreateOutRec","DisposeOutRec","UpdateEdgeIntoAEL","SwapPositionsInAEL","DeleteFromAEL","m_ClipType","m_IntersectNodeComparer","m_IntersectList","m_SortedEdges","m_Maxima","m_ExecuteLocked","m_SubjFillType","m_ClipFillType","m_GhostJoins","m_Joins","StrictlySimple","ReverseSolution","m_UsingPolyTree","ZFillFunction","ioReverseSolution","ioStrictlySimple","ioPreserveCollinear","DisposeAllPolyPts","InsertMaxima","Execute","ExecuteInternal","BuildResult2","BuildResult","FixHoleLinkage","InsertLocalMinimaIntoAEL","ProcessHorizontals","ProcessIntersections","ProcessEdgesAtTopOfScanbeam","Area$1","ReversePolyPtLinks","JoinCommonEdges","FixupOutPolyline","FixupOutPolygon","DoSimplePolygons","AddJoin","AddGhostJoin","SetZ","InsertEdgeIntoAEL","SetWindingCount","IsContributing","AddOutPt","AddLocalMinPoly","AddEdgeToSEL","HorzSegmentsOverlap","IntersectEdges","E2InsertsBeforeE1","TopX","IsEvenOddFillType","IsEvenOddAltFillType","PopEdgeFromSEL","CopyAELToSEL","SwapPositionsInSEL","AddLocalMaxPoly","AppendPolygon","SetHoleState","GetLastOutPt","SwapPoints","GetDx","FirstIsBottomPt","Area","GetBottomPt","GetLowermostRec","OutRec1RightOfOutRec2","GetOutRec","SwapSides","SwapPolyIndexes","DeleteFromSEL","ProcessHorizontal","GetHorzDirection","Left","Right","Dir","GetMaximaPair","GetNextInAEL","IsMinima","IsMaxima","IsIntermediate","GetMaximaPairEx","BuildIntersectList","FixupIntersectionOrder","ProcessIntersectList","IntersectPoint","EdgesAdjacent","IntersectNodeSort","sort","DoMaxima","ePrev2","ReversePaths","reverse","Orientation","PointCount","DupOutPt","GetOverlap","JoinHorz","JoinPoints","GetBounds","GetBounds2","PointInPolygon","Poly2ContainsPoly1","FixupFirstLefts1","ParseFirstLeft","FixupFirstLefts2","FixupFirstLefts3","UpdateOutPtIdxs","isArray","SimplifyPolygon","SimplifyPolygons","DistanceSqrd","DistanceFromLineSqrd","SlopesNearCollinear","PointsAreClose","ExcludeOp","CleanPolygon","CleanPolygons","Minkowski","MinkowskiSum","TranslatePath","MinkowskiDiff","PolyTreeToPaths","AddPolyNodeToPaths","NodeType","ntAny","ntOpen","ntClosed","OpenPathsFromPolyTree","ClosedPathsFromPolyTree","ClipperOffset","def_arc_tolerance","m_destPolys","m_srcPoly","m_destPoly","m_normals","m_StepsPerRad","m_miterLim","m_cos","m_sin","m_sinA","m_delta","m_lowest","m_polyNodes","MiterLimit","ArcTolerance","two_pi","FixOrientations","GetUnitNormal","sqrt","DoOffset","acos","sin","cos","OffsetPoint","DoSquare","DoRound","splice","DoMiter","tan","atan2","alert","JS","AreaOfPolygon","AreaOfPolygons","BoundsOfPath","BoundsOfPaths","Clean","Clone","Lighten","pop","PerimeterOfPath","PerimeterOfPaths","ScaleDownPath","ScaleDownPaths","ScaleUpPath","ScaleUpPaths","ExPolygons","ExPolygon","holes","outer","AddOuterPolyNodeToExPolygons","ExPolygonsToPaths","PolyTreeToExPolygons","$a8b194ee5ee2de37$var$solidityKeccak256","stringTypes","types","$c35d3b9dae26c1f3$var$encode","options","cacheKey","has","get","result","address_","chainId","hexAddress","substring","intMatch","match","_type","baseType","bits","bytesMatch","arrayMatch","childType","$a8b194ee5ee2de37$var$randomRange","seed","$a8b194ee5ee2de37$var$urlInfo","location","$a8b194ee5ee2de37$var$tokenId","$a8b194ee5ee2de37$var$backgroundOffset","$a8b194ee5ee2de37$var$backgroundOverride","backgroundOverride","console","tokenId","$a8b194ee5ee2de37$var$seed","$a8b194ee5ee2de37$var$R","useA","sfc32","uint128Hex","prngA","prngB","float","int","bell","inv","num","$a8b194ee5ee2de37$var$win_w","innerWidth","$a8b194ee5ee2de37$var$win_h","innerHeight","$a8b194ee5ee2de37$var$largestSide","$a8b194ee5ee2de37$var$marginFactor","$a8b194ee5ee2de37$var$margin","$a8b194ee5ee2de37$var$amount","$a8b194ee5ee2de37$var$elWidth","$a8b194ee5ee2de37$var$elHeight","$a8b194ee5ee2de37$var$angle","$a8b194ee5ee2de37$var$showHole","$a8b194ee5ee2de37$var$configSeed","$a8b194ee5ee2de37$var$showRectangles","$a8b194ee5ee2de37$var$showPolygons","$a8b194ee5ee2de37$var$showGrid","$a8b194ee5ee2de37$var$showStar","$a8b194ee5ee2de37$var$showFrame","$a8b194ee5ee2de37$var$rotateAllRectangles","$a8b194ee5ee2de37$var$gridVal","$a8b194ee5ee2de37$var$gridMargin","$a8b194ee5ee2de37$var$gridCLipType","$a8b194ee5ee2de37$var$frameAmount","$a8b194ee5ee2de37$var$selectionObjectsOrigin","$a8b194ee5ee2de37$var$selectionObjects","$a8b194ee5ee2de37$var$generateEmptySelectionObjects","sa","$a8b194ee5ee2de37$var$SelectionObject","$a8b194ee5ee2de37$var$polygonObjects","$a8b194ee5ee2de37$var$generatePolygonObjects","pa","$a8b194ee5ee2de37$var$PolygonObject","createRn","xR","yR","wR","hR","getPath","marginize","setValue","startX","startY","polyLength","stepVar","rnArray","path","marginVar","applyMargin","makePolygon","polX","polY","expon","dim","$a8b194ee5ee2de37$var$renderSelections","treatAllAsTrue","clip_paths","subj_paths","sx","sy","$a8b194ee5ee2de37$var$clipPathToAll","$a8b194ee5ee2de37$var$rotatePath","angle","pA","pB","$a8b194ee5ee2de37$var$rotateCoordinate","pC","pD","poly","fillTypes","gridSize","clipTypes","largestSide","ch_w","ch_h","ch_x","ch_y","svgPath","$a8b194ee5ee2de37$var$paths2string","paths","svgpath","error","querySelector","setAttribute","cpr","subject_fillType","clip_fillType","solution_paths","cx","cy","radians","$a8b194ee5ee2de37$var$setBg","finalColor","gradAngle","dark","solidColorString","solidsArray","solidOverGrad","grayOverColor","bgStyleRand","bgState","gray1Val","gray1","gray2Val","gray2","color1R","color1G","color1B","color1","addOrSubtract","colorOffset","color2","getElementsByTagName","style","$a8b194ee5ee2de37$var$resizeEnded","onload","$a8b194ee5ee2de37$var$svg","onclick","onresize","clearTimeout","setTimeout"],"version":3,"file":"selection.js.map"} \ No newline at end of file diff --git a/index.html b/index.html index 5983ee0..a7939bf 100644 --- a/index.html +++ b/index.html @@ -1,8 +1 @@ - - - +Selection, 2024 - Jan Robert Leegte \ No newline at end of file diff --git a/src/selection.js b/src/selection.js index 1827f78..62032dd 100644 --- a/src/selection.js +++ b/src/selection.js @@ -14,18 +14,18 @@ const urlInfo = window.location.hash.substr(1).split("-"); let tokenId = parseInt(urlInfo[0]); let backgroundOffset = 0; let backgroundOverride = - window.backgroundOverride || urlInfo.length > 1 - ? parseInt(urlInfo[1]) - : false; + typeof window.backgroundOverride !== "undefined" + ? window.backgroundOverride + : urlInfo.length > 1 + ? parseInt(urlInfo[1]) + : false; +if (backgroundOverride > 3) { + backgroundOverride = false; +} if (!tokenId) { tokenId = Math.floor(Math.random() * 150) + 1; - // if (!tokenId) { - // throw new Error( - // "no token id, please add to url like https://website.domain#tokenId" - // ); - // } } -console.log({ tokenId }); +console.log({ tokenId }); // TODO: remove comments before mainnet let seed = solidityKeccak256(["uint256"], [tokenId]); if ( @@ -523,9 +523,17 @@ function setBg(seed) { const totalStyles = 4; let bgState = - ((bgStyleRand <= 7 ? 0 : bgStyleRand <= 8 ? 1 : bgStyleRand <= 9 ? 2 : 3) + - backgroundOffset) % - totalStyles; + typeof backgroundOverride !== "boolean" + ? backgroundOverride + : ((bgStyleRand <= 7 + ? 0 + : bgStyleRand <= 8 + ? 1 + : bgStyleRand <= 9 + ? 2 + : 3) + + backgroundOffset) % + totalStyles; let finalColor, gradAngle, dark; if (bgState == 0) { if (solidOverGrad) { @@ -579,6 +587,7 @@ function setBg(seed) { background-size: 8px 8px; background-position: 0 0, 0 4px, 4px -4px, -4px 0px;`; } + console.log({ bgState, finalColor }); document.getElementsByTagName("svg")[0].style = finalColor; }